]> gitweb.factorcode.org Git - factor.git/commitdiff
vm: fix RT_HERE fixup on image load
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sat, 12 Jun 2010 01:54:47 +0000 (21:54 -0400)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sat, 12 Jun 2010 01:54:47 +0000 (21:54 -0400)
vm/compaction.cpp
vm/image.cpp

index 3deb0afc2f00e04bc3289b29a26b1b324a4b86c4..9d26062a5c498895b9b7ec2f527f26be4118284b 100644 (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:
index c9682ce192727cf8e3aa63ded5049b5aa6aa5126..4643d897797bee7e66325dc7683b7f6ab304284d 100755 (executable)
@@ -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: