Index: src/arm64/code-stubs-arm64.cc |
diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc |
index 5feefe0d6d36a16cd02eae4a7d545317a47ca415..59912af8f5f46a7bc6eb604083635e784ca6369d 100644 |
--- a/src/arm64/code-stubs-arm64.cc |
+++ b/src/arm64/code-stubs-arm64.cc |
@@ -1544,6 +1544,14 @@ void InstanceofStub::Generate(MacroAssembler* masm) { |
// We have a cell, so need another level of dereferencing. |
__ Ldr(scratch1, MemOperand(scratch1)); |
__ Str(map, FieldMemOperand(scratch1, Cell::kValueOffset)); |
+ |
+ __ Mov(x14, map); |
+ // |scratch1| points at the beginning of the cell. Calculate the |
+ // field containing the map. |
+ __ Add(function, scratch1, Operand(Cell::kValueOffset - 1)); |
+ __ RecordWriteField(scratch1, Cell::kValueOffset, x14, function, |
+ kLRHasNotBeenSaved, kDontSaveFPRegs, |
+ OMIT_REMEMBERED_SET, OMIT_SMI_CHECK); |
} else { |
__ StoreRoot(function, Heap::kInstanceofCacheFunctionRootIndex); |
__ StoreRoot(map, Heap::kInstanceofCacheMapRootIndex); |