Index: src/arm64/lithium-arm64.cc |
diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc |
index a2c3a3212073a47118dee65cf5367a540857298c..03fee2a537c1bd9b4fd92f0195053cf20191dd23 100644 |
--- a/src/arm64/lithium-arm64.cc |
+++ b/src/arm64/lithium-arm64.cc |
@@ -360,6 +360,12 @@ void LChunkBuilder::Abort(BailoutReason reason) { |
} |
+void LChunkBuilder::AddDeprecationDependency(Handle<Map> map) { |
+ if (map->is_deprecated()) return Abort(kMapBecameDeprecated); |
+ chunk_->AddDeprecationDependency(map); |
+} |
+ |
+ |
LUnallocated* LChunkBuilder::ToUnallocated(Register reg) { |
return new(zone()) LUnallocated(LUnallocated::FIXED_REGISTER, |
Register::ToAllocationIndex(reg)); |
@@ -2250,6 +2256,11 @@ LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { |
temp0 = TempRegister(); |
} |
+ // Add a deprecation dependency on the transition target map. |
+ if (instr->has_transition()) { |
+ AddDeprecationDependency(instr->transition_map()); |
+ } |
+ |
LStoreNamedField* result = |
new(zone()) LStoreNamedField(object, value, temp0, temp1); |
if (instr->field_representation().IsHeapObject() && |