Index: src/arm/deoptimizer-arm.cc |
diff --git a/src/arm/deoptimizer-arm.cc b/src/arm/deoptimizer-arm.cc |
index 6031499dbd1724df63317670c8de32d61359e58f..9b5f6e2ef0b1546709b88dfcf551baceec8b6856 100644 |
--- a/src/arm/deoptimizer-arm.cc |
+++ b/src/arm/deoptimizer-arm.cc |
@@ -50,6 +50,26 @@ void Deoptimizer::PatchCodeForDeoptimization(Isolate* isolate, Code* code) { |
// code patching below, and is not needed any more. |
code->InvalidateRelocation(); |
+ if (FLAG_zap_code_space) { |
+ // Fail hard and early if we enter this code object again. |
+ byte* pointer = code->FindCodeAgeSequence(); |
+ if (pointer != NULL) { |
+ pointer += kNoCodeAgeSequenceLength; |
+ } else { |
+ pointer = code->instruction_start(); |
+ } |
+ CodePatcher patcher(pointer, 1); |
+ patcher.masm()->bkpt(0); |
+ |
+ DeoptimizationInputData* data = |
+ DeoptimizationInputData::cast(code->deoptimization_data()); |
+ int osr_offset = data->OsrPcOffset()->value(); |
+ if (osr_offset > 0) { |
+ CodePatcher osr_patcher(code->instruction_start() + osr_offset, 1); |
+ osr_patcher.masm()->bkpt(0); |
+ } |
+ } |
+ |
// For each LLazyBailout instruction insert a call to the corresponding |
// deoptimization entry. |
DeoptimizationInputData* deopt_data = |