Index: src/x64/macro-assembler-x64.h |
diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h |
index ca2eba99841f780093f83bca311995df90ba8cd4..45c05b9809ad246448d683451015e801a624a1c4 100644 |
--- a/src/x64/macro-assembler-x64.h |
+++ b/src/x64/macro-assembler-x64.h |
@@ -29,6 +29,10 @@ typedef Operand MemOperand; |
enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET }; |
enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK }; |
+enum PointersToHereCheck { |
+ kPointersToHereMaybeInteresting, |
+ kPointersToHereAreAlwaysInteresting |
+}; |
enum SmiOperationConstraint { |
PRESERVE_SOURCE_REGISTER, |
@@ -220,7 +224,9 @@ class MacroAssembler: public Assembler { |
Register scratch, |
SaveFPRegsMode save_fp, |
RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
- SmiCheck smi_check = INLINE_SMI_CHECK); |
+ SmiCheck smi_check = INLINE_SMI_CHECK, |
+ PointersToHereCheck pointers_to_here_check_for_value = |
+ kPointersToHereMaybeInteresting); |
// As above, but the offset has the tag presubtracted. For use with |
// Operand(reg, off). |
@@ -231,14 +237,17 @@ class MacroAssembler: public Assembler { |
Register scratch, |
SaveFPRegsMode save_fp, |
RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
- SmiCheck smi_check = INLINE_SMI_CHECK) { |
+ SmiCheck smi_check = INLINE_SMI_CHECK, |
+ PointersToHereCheck pointers_to_here_check_for_value = |
+ kPointersToHereMaybeInteresting) { |
RecordWriteField(context, |
offset + kHeapObjectTag, |
value, |
scratch, |
save_fp, |
remembered_set_action, |
- smi_check); |
+ smi_check, |
+ pointers_to_here_check_for_value); |
} |
// Notify the garbage collector that we wrote a pointer into a fixed array. |
@@ -253,7 +262,15 @@ class MacroAssembler: public Assembler { |
Register index, |
SaveFPRegsMode save_fp, |
RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
- SmiCheck smi_check = INLINE_SMI_CHECK); |
+ SmiCheck smi_check = INLINE_SMI_CHECK, |
+ PointersToHereCheck pointers_to_here_check_for_value = |
+ kPointersToHereMaybeInteresting); |
+ |
+ void RecordWriteForMap( |
+ Register object, |
+ Register map, |
+ Register dst, |
+ SaveFPRegsMode save_fp); |
// For page containing |object| mark region covering |address| |
// dirty. |object| is the object being stored into, |value| is the |
@@ -266,7 +283,9 @@ class MacroAssembler: public Assembler { |
Register value, |
SaveFPRegsMode save_fp, |
RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
- SmiCheck smi_check = INLINE_SMI_CHECK); |
+ SmiCheck smi_check = INLINE_SMI_CHECK, |
+ PointersToHereCheck pointers_to_here_check_for_value = |
+ kPointersToHereMaybeInteresting); |
// --------------------------------------------------------------------------- |
// Debugger Support |