version 1.60, 2002/03/22 10:41:39
|
version 1.61, 2002/03/22 20:36:26
|
Line 498 void check_prims(Label symbols1[])
|
Line 498 void check_prims(Label symbols1[])
|
|
|
Label compile_prim(Label prim) |
Label compile_prim(Label prim) |
{ |
{ |
#ifdef DOUBLY_INDIRECT |
#if defined(DOUBLY_INDIRECT) |
if (prim<((Label)(xts+DOESJUMP)) || prim>((Label)(xts+npriminfos))) { |
if (prim<((Label)(xts+DOESJUMP)) || prim>((Label)(xts+npriminfos))) { |
fprintf(stderr,"compile_prim encountered xt %p\n", prim); |
fprintf(stderr,"compile_prim encountered xt %p\n", prim); |
return prim; |
return prim; |
} else |
} else |
return prim-((Label)xts)+((Label)vm_prims); |
return prim-((Label)xts)+((Label)vm_prims); |
#else /* !defined(DOUBLY_INDIRECT) */ |
#elif defined(IND_JUMP_LENGTH) && !defined(VM_PROFILING) && !defined(INDIRECT_THREADED) |
#if defined(IND_JUMP_LENGTH) && !defined(VM_PROFILING) |
|
unsigned i; |
unsigned i; |
Address old_code_here=code_here; |
Address old_code_here=code_here; |
static Address last_jump=0; |
static Address last_jump=0; |
Line 528 Label compile_prim(Label prim)
|
Line 527 Label compile_prim(Label prim)
|
code_here += priminfos[i].length; |
code_here += priminfos[i].length; |
last_jump = (priminfos[i].super_end) ? 0 : (prim+priminfos[i].length); |
last_jump = (priminfos[i].super_end) ? 0 : (prim+priminfos[i].length); |
return (Label)old_code_here; |
return (Label)old_code_here; |
#else |
#else /* !defined(DOUBLY_INDIRECT), no code replication */ |
|
#if !defined(INDIRECT_THREADED) |
prim = *(Xt)prim; |
prim = *(Xt)prim; |
return prim; |
|
#endif |
#endif |
|
return prim; |
#endif /* !defined(DOUBLY_INDIRECT) */ |
#endif /* !defined(DOUBLY_INDIRECT) */ |
} |
} |
|
|