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:
{
cell value = op.load_value(old_offset);
cell offset = value & (data_alignment - 1);
op.store_value((cell)fixup.fixup_code((code_block *)value) + offset);
cell offset = TAG(value);
code_block *compiled = (code_block *)UNTAG(value);
op.store_value((cell)fixup.fixup_code(compiled) + offset);
break;
}
case RT_THIS:

View File

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