Index: src/arm64/macro-assembler-arm64.h |
diff --git a/src/arm64/macro-assembler-arm64.h b/src/arm64/macro-assembler-arm64.h |
index 320681b6afbedb35d70e7f57bf15f565173b2680..096646be2386d3c8d62c69e4b56299fb60057f16 100644 |
--- a/src/arm64/macro-assembler-arm64.h |
+++ b/src/arm64/macro-assembler-arm64.h |
@@ -89,6 +89,10 @@ inline BranchType InvertBranchType(BranchType type) { |
enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET }; |
enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK }; |
+enum PointersToHereCheck { |
+ kPointersToHereMaybeInteresting, |
+ kPointersToHereAreAlwaysInteresting |
+}; |
enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved }; |
enum TargetAddressStorageMode { |
CAN_INLINE_TARGET_ADDRESS, |
@@ -1787,7 +1791,9 @@ class MacroAssembler : public Assembler { |
LinkRegisterStatus lr_status, |
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 |
// MemOperand(reg, off). |
@@ -1799,7 +1805,9 @@ class MacroAssembler : public Assembler { |
LinkRegisterStatus lr_status, |
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, |
@@ -1807,9 +1815,17 @@ class MacroAssembler : public Assembler { |
lr_status, |
save_fp, |
remembered_set_action, |
- smi_check); |
+ smi_check, |
+ pointers_to_here_check_for_value); |
} |
+ void RecordWriteForMap( |
+ Register object, |
+ Register map, |
+ Register dst, |
+ LinkRegisterStatus lr_status, |
+ SaveFPRegsMode save_fp); |
+ |
// For a given |object| notify the garbage collector that the slot |address| |
// has been written. |value| is the object being stored. The value and |
// address registers are clobbered by the operation. |
@@ -1820,7 +1836,9 @@ class MacroAssembler : public Assembler { |
LinkRegisterStatus lr_status, |
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); |
// Checks the color of an object. If the object is already grey or black |
// then we just fall through, since it is already live. If it is white and |