/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpint.c,v 1.42 1992/02/12 15:48:40 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpint.c,v 1.43 1992/02/18 17:28:19 jinx Exp $
Copyright (c) 1989-1992 Massachusetts Institute of Technology
while ((--sections) >= 0)
{
- header = (block_address[last_header_offset]);
+ SCHEME_OBJECT * scan = &(block_address[last_header_offset]);
+ header = (*scan);
kind = (READ_LINKAGE_KIND (header));
switch (kind)
handle_operator:
execute_p = true;
entry_size = EXECUTE_CACHE_ENTRY_SIZE;
+ START_OPERATOR_RELOCATION (scan);
count = (READ_OPERATOR_LINKAGE_COUNT (header));
break;
else
{
total_count = count;
+ if (execute_p)
+ offset += (FIRST_OPERATOR_LINKAGE_OFFSET - 1);
}
\f
block_address[last_header_offset] =
SCHEME_OBJECT name;
if (!execute_p)
- {
name = (block_address[offset]);
- }
else
- {
EXTRACT_EXECUTE_CACHE_SYMBOL(name, &(block_address[offset]));
- }
- result = ((*cache_handler)(name, block, offset));
+ result = ((*cache_handler)(name, block, offset));
if (result != PRIM_DONE)
{
/* Save enough state to continue.
*/
back_out:
+ if (execute_p)
+ END_OPERATOR_RELOCATION (&(block_address[offset]));
STACK_PUSH (ENTRY_TO_OBJECT (ret_add));
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (sections + 1));
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (last_header_offset));
goto exit_proc;
}
}
+ if (execute_p)
+ END_OPERATOR_RELOCATION (&(block_address[offset - 1]));
last_header_offset = offset;
}
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/cmpint.c,v 1.42 1992/02/12 15:48:40 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/cmpint.c,v 1.43 1992/02/18 17:28:19 jinx Exp $
Copyright (c) 1989-1992 Massachusetts Institute of Technology
while ((--sections) >= 0)
{
- header = (block_address[last_header_offset]);
+ SCHEME_OBJECT * scan = &(block_address[last_header_offset]);
+ header = (*scan);
kind = (READ_LINKAGE_KIND (header));
switch (kind)
handle_operator:
execute_p = true;
entry_size = EXECUTE_CACHE_ENTRY_SIZE;
+ START_OPERATOR_RELOCATION (scan);
count = (READ_OPERATOR_LINKAGE_COUNT (header));
break;
else
{
total_count = count;
+ if (execute_p)
+ offset += (FIRST_OPERATOR_LINKAGE_OFFSET - 1);
}
\f
block_address[last_header_offset] =
SCHEME_OBJECT name;
if (!execute_p)
- {
name = (block_address[offset]);
- }
else
- {
EXTRACT_EXECUTE_CACHE_SYMBOL(name, &(block_address[offset]));
- }
- result = ((*cache_handler)(name, block, offset));
+ result = ((*cache_handler)(name, block, offset));
if (result != PRIM_DONE)
{
/* Save enough state to continue.
*/
back_out:
+ if (execute_p)
+ END_OPERATOR_RELOCATION (&(block_address[offset]));
STACK_PUSH (ENTRY_TO_OBJECT (ret_add));
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (sections + 1));
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (last_header_offset));
goto exit_proc;
}
}
+ if (execute_p)
+ END_OPERATOR_RELOCATION (&(block_address[offset - 1]));
last_header_offset = offset;
}