21 |
call_or_link(object sym, void **link ) |
call_or_link(object sym, void **link ) |
22 |
{object fun; |
{object fun; |
23 |
fun = sym->s.s_gfdef; |
fun = sym->s.s_gfdef; |
24 |
|
#if 0 |
25 |
|
fprintf ( stderr, "call_or_link: fun %x\n", fun ); |
26 |
|
#endif |
27 |
if (fun == OBJNULL) {FEinvalid_function(sym); return;} |
if (fun == OBJNULL) {FEinvalid_function(sym); return;} |
28 |
if (type_of(fun) == t_cclosure |
if (type_of(fun) == t_cclosure |
29 |
&& (fun->cc.cc_turbo)) |
&& (fun->cc.cc_turbo)) |
36 |
{ (void) vpush_extend( link,sLAlink_arrayA->s.s_dbind); |
{ (void) vpush_extend( link,sLAlink_arrayA->s.s_dbind); |
37 |
(void) vpush_extend( *link,sLAlink_arrayA->s.s_dbind); |
(void) vpush_extend( *link,sLAlink_arrayA->s.s_dbind); |
38 |
*link = (void *) (fun->cf.cf_self); |
*link = (void *) (fun->cf.cf_self); |
39 |
|
#if 0 |
40 |
|
fprintf ( stderr, "call_or_link: cf %x\n", fun->cf ); |
41 |
|
fprintf ( stderr, "call_or_link: cf_name %x\n", fun->cf.cf_name ); |
42 |
|
fprintf ( stderr, "call_or_link: cf_data %x\n", fun->cf.cf_data ); |
43 |
|
fprintf ( stderr, "call_or_link: cf_self %x\n", fun->cf.cf_self ); |
44 |
|
fflush ( stderr ); |
45 |
|
fprintf ( stderr, "call_or_link: staddr %x\n", fun->cf.cf_name->st.st_self ); |
46 |
|
fprintf ( stderr, "call_or_link: ststring %s\n", fun->cf.cf_name->st.st_self ); |
47 |
|
fflush ( stderr ); |
48 |
|
#endif |
49 |
(*(void (*)())(fun->cf.cf_self))(); |
(*(void (*)())(fun->cf.cf_self))(); |
50 |
} |
} |
51 |
else funcall(fun);} |
else funcall(fun);} |