| 1 << ((sizebyte >> 5) & 3)); |
1 << ((sizebyte >> 5) & 3)); |
| } |
} |
| |
|
| |
#ifndef NO_DYNAMIC |
| typedef struct { |
typedef struct { |
| Label start; |
Label start; |
| Cell length; /* excluding the jump */ |
Cell length; /* excluding the jump */ |
| } PrimInfo; |
} PrimInfo; |
| |
|
| PrimInfo *priminfos; |
PrimInfo *priminfos; |
| |
#endif /* defined(NO_DYNAMIC) */ |
| Cell npriminfos=0; |
Cell npriminfos=0; |
| |
|
| |
|
| void check_prims(Label symbols1[]) |
void check_prims(Label symbols1[]) |
| { |
{ |
| int i; |
int i; |
| ; |
; |
| npriminfos = i; |
npriminfos = i; |
| |
|
| #if defined(IS_NEXT_JUMP) && !defined(DOUBLY_INDIRECT) |
#if defined(IS_NEXT_JUMP) && !defined(NO_DYNAMIC) |
| if (no_dynamic) |
if (no_dynamic) |
| return; |
return; |
| symbols2=engine2(0,0,0,0,0); |
symbols2=engine2(0,0,0,0,0); |
| return prim; |
return prim; |
| } else |
} else |
| return prim-((Label)xts)+((Label)vm_prims); |
return prim-((Label)xts)+((Label)vm_prims); |
| #elif defined(IND_JUMP_LENGTH) && !defined(VM_PROFILING) && !defined(INDIRECT_THREADED) |
#elif defined(IND_JUMP_LENGTH) && !defined(NO_DYNAMIC) |
| 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; |
| #endif /* !defined(DOUBLY_INDIRECT) */ |
#endif /* !defined(DOUBLY_INDIRECT) */ |
| } |
} |
| |
|
| #ifdef PRINT_SUPER_LENGTHS |
#if defined(PRINT_SUPER_LENGTHS) && !defined(NO_DYNAMIC) |
| Cell prim_length(Cell prim) |
Cell prim_length(Cell prim) |
| { |
{ |
| return priminfos[prim+DOESJUMP+1].length; |
return priminfos[prim+DOESJUMP+1].length; |