vm: fix RT_HERE fixup on image load

db4
Slava Pestov 2010-06-11 21:54:47 -04:00
parent 8ed4760b51
commit 4405a66f99
2 changed files with 6 additions and 4 deletions

View File

@ -117,8 +117,9 @@ struct code_block_compaction_relocation_visitor {
case RT_HERE: case RT_HERE:
{ {
cell value = op.load_value(old_offset); cell value = op.load_value(old_offset);
cell offset = value & (data_alignment - 1); cell offset = TAG(value);
op.store_value((cell)fixup.fixup_code((code_block *)value) + offset); code_block *compiled = (code_block *)UNTAG(value);
op.store_value((cell)fixup.fixup_code(compiled) + offset);
break; break;
} }
case RT_THIS: case RT_THIS:

View File

@ -180,8 +180,9 @@ struct startup_code_block_relocation_visitor {
case RT_HERE: case RT_HERE:
{ {
cell value = op.load_value(old_offset); cell value = op.load_value(old_offset);
cell offset = value & (data_alignment - 1); cell offset = TAG(value);
op.store_value((cell)fixup.fixup_code((code_block *)value) + offset); code_block *compiled = (code_block *)UNTAG(value);
op.store_value((cell)fixup.fixup_code(compiled) + offset);
break; break;
} }
case RT_UNTAGGED: case RT_UNTAGGED: