ffi: fix recording of foreign function names
The internal change to a curried mode caused a generic name to be used.
This commit is contained in:
parent
0f6cd01489
commit
ab9a5d261e
|
@ -3549,7 +3549,7 @@ static Scheme_Object *ffi_do_call(int argc, Scheme_Object *argv[], Scheme_Object
|
||||||
{
|
{
|
||||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||||
int curried = !SCHEME_VEC_ELS(data)[1] && !SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]);
|
int curried = !SCHEME_VEC_ELS(data)[1] && !SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]);
|
||||||
const char *name = SCHEME_BYTE_STR_VAL(SCHEME_VEC_ELS(data)[0]);
|
const char *name = ((Scheme_Primitive_Closure *)self)->p.name;
|
||||||
void *c_func = (curried
|
void *c_func = (curried
|
||||||
? (void*)SCHEME_PRIM_CLOSURE_ELS(self)[1]
|
? (void*)SCHEME_PRIM_CLOSURE_ELS(self)[1]
|
||||||
: (void*)(SCHEME_VEC_ELS(data)[1]));
|
: (void*)(SCHEME_VEC_ELS(data)[1]));
|
||||||
|
@ -3724,6 +3724,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
||||||
{
|
{
|
||||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||||
Scheme_Object *a[3], *name, *itypes, *obj, *cp;
|
Scheme_Object *a[3], *name, *itypes, *obj, *cp;
|
||||||
|
const char *name_str;
|
||||||
intptr_t ooff;
|
intptr_t ooff;
|
||||||
int nargs;
|
int nargs;
|
||||||
|
|
||||||
|
@ -3737,7 +3738,9 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
||||||
|
|
||||||
name = SCHEME_VEC_ELS(data)[0];
|
name = SCHEME_VEC_ELS(data)[0];
|
||||||
if (SCHEME_FFIOBJP(cp))
|
if (SCHEME_FFIOBJP(cp))
|
||||||
name = scheme_make_byte_string(((ffi_obj_struct*)(cp))->name);
|
name_str = ((ffi_obj_struct*)(cp))->name;
|
||||||
|
else
|
||||||
|
name_str = SCHEME_BYTE_STR_VAL(name);
|
||||||
|
|
||||||
itypes = SCHEME_VEC_ELS(data)[2];
|
itypes = SCHEME_VEC_ELS(data)[2];
|
||||||
|
|
||||||
|
@ -3749,7 +3752,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
||||||
|
|
||||||
return scheme_make_prim_closure_w_arity(ffi_do_call_after_stack_check,
|
return scheme_make_prim_closure_w_arity(ffi_do_call_after_stack_check,
|
||||||
3, a,
|
3, a,
|
||||||
SCHEME_BYTE_STR_VAL(name),
|
name_str,
|
||||||
nargs, nargs);
|
nargs, nargs);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2720,7 +2720,7 @@ static Scheme_Object *ffi_do_call(int argc, Scheme_Object *argv[], Scheme_Object
|
||||||
{
|
{
|
||||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||||
int curried = !SCHEME_VEC_ELS(data)[1] && !SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]);
|
int curried = !SCHEME_VEC_ELS(data)[1] && !SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]);
|
||||||
const char *name = SCHEME_BYTE_STR_VAL(SCHEME_VEC_ELS(data)[0]);
|
const char *name = ((Scheme_Primitive_Closure *)self)->p.name;
|
||||||
void *c_func = (curried
|
void *c_func = (curried
|
||||||
? (void*)SCHEME_PRIM_CLOSURE_ELS(self)[1]
|
? (void*)SCHEME_PRIM_CLOSURE_ELS(self)[1]
|
||||||
: (void*)(SCHEME_VEC_ELS(data)[1]));
|
: (void*)(SCHEME_VEC_ELS(data)[1]));
|
||||||
|
@ -2895,6 +2895,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
||||||
{
|
{
|
||||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||||
Scheme_Object *a[3], *name, *itypes, *obj, *cp;
|
Scheme_Object *a[3], *name, *itypes, *obj, *cp;
|
||||||
|
const char *name_str;
|
||||||
intptr_t ooff;
|
intptr_t ooff;
|
||||||
int nargs;
|
int nargs;
|
||||||
|
|
||||||
|
@ -2908,7 +2909,9 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
||||||
|
|
||||||
name = SCHEME_VEC_ELS(data)[0];
|
name = SCHEME_VEC_ELS(data)[0];
|
||||||
if (SCHEME_FFIOBJP(cp))
|
if (SCHEME_FFIOBJP(cp))
|
||||||
name = scheme_make_byte_string(((ffi_obj_struct*)(cp))->name);
|
name_str = ((ffi_obj_struct*)(cp))->name;
|
||||||
|
else
|
||||||
|
name_str = SCHEME_BYTE_STR_VAL(name);
|
||||||
|
|
||||||
itypes = SCHEME_VEC_ELS(data)[2];
|
itypes = SCHEME_VEC_ELS(data)[2];
|
||||||
|
|
||||||
|
@ -2920,7 +2923,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
||||||
|
|
||||||
return scheme_make_prim_closure_w_arity(ffi_do_call_after_stack_check,
|
return scheme_make_prim_closure_w_arity(ffi_do_call_after_stack_check,
|
||||||
3, a,
|
3, a,
|
||||||
SCHEME_BYTE_STR_VAL(name),
|
name_str,
|
||||||
nargs, nargs);
|
nargs, nargs);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user