Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index ef30b68effd384cf6106fd8b3463e8be0724306b..2bcb664c47edfed74515dbaf2d812ceec142b4ca 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -43,20 +43,16 @@ class SafepointGenerator : public PostCallGenerator { |
public: |
SafepointGenerator(LCodeGen* codegen, |
LPointerMap* pointers, |
- int deoptimization_index, |
- bool ensure_reloc_space = false) |
+ int deoptimization_index) |
: codegen_(codegen), |
pointers_(pointers), |
- deoptimization_index_(deoptimization_index), |
- ensure_reloc_space_(ensure_reloc_space) { } |
+ deoptimization_index_(deoptimization_index) {} |
virtual ~SafepointGenerator() { } |
virtual void Generate() { |
// Ensure that we have enough space in the reloc info to patch |
// this with calls when doing deoptimization. |
- if (ensure_reloc_space_) { |
- codegen_->EnsureRelocSpaceForDeoptimization(); |
- } |
+ codegen_->EnsureRelocSpaceForDeoptimization(); |
codegen_->RecordSafepoint(pointers_, deoptimization_index_); |
} |
@@ -64,7 +60,6 @@ class SafepointGenerator : public PostCallGenerator { |
LCodeGen* codegen_; |
LPointerMap* pointers_; |
int deoptimization_index_; |
- bool ensure_reloc_space_; |
}; |
@@ -386,10 +381,10 @@ void LCodeGen::WriteTranslation(LEnvironment* environment, |
void LCodeGen::EnsureRelocSpaceForDeoptimization() { |
- // Since we patch the reloc info with RUNTIME_ENTRY calls every patch |
- // site will take up 2 bytes + any pc-jumps. |
- // We are conservative and always reserver 6 bytes in case where a |
- // simple pc-jump is not enough. |
+ // Since we patch the reloc info with RUNTIME_ENTRY calls every |
+ // patch site will take up 2 bytes + any pc-jumps. We are |
+ // conservative and always reserve 6 bytes in case a simple pc-jump |
+ // is not enough. |
uint32_t pc_delta = |
masm()->pc_offset() - deoptimization_reloc_size.last_pc_offset; |
if (is_uintn(pc_delta, 6)) { |
@@ -479,6 +474,7 @@ void LCodeGen::CallRuntime(const Runtime::Function* fun, |
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); |
} |
__ CallRuntime(fun, argc); |
+ EnsureRelocSpaceForDeoptimization(); |
RegisterLazyDeoptimization(instr); |
} |
@@ -2370,8 +2366,7 @@ void LCodeGen::DoApplyArguments(LApplyArguments* instr) { |
RegisterEnvironmentForDeoptimization(env); |
SafepointGenerator safepoint_generator(this, |
pointers, |
- env->deoptimization_index(), |
- true); |
+ env->deoptimization_index()); |
v8::internal::ParameterCount actual(eax); |
__ InvokeFunction(function, actual, CALL_FUNCTION, &safepoint_generator); |
} |
@@ -2443,8 +2438,8 @@ void LCodeGen::CallKnownFunction(Handle<JSFunction> function, |
__ CallSelf(); |
} else { |
__ call(FieldOperand(edi, JSFunction::kCodeEntryOffset)); |
- EnsureRelocSpaceForDeoptimization(); |
} |
+ EnsureRelocSpaceForDeoptimization(); |
// Setup deoptimization. |
RegisterLazyDeoptimization(instr); |
@@ -3973,8 +3968,7 @@ void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) { |
// builtin) |
SafepointGenerator safepoint_generator(this, |
pointers, |
- env->deoptimization_index(), |
- true); |
+ env->deoptimization_index()); |
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); |
__ push(Immediate(Smi::FromInt(strict_mode_flag()))); |
__ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, &safepoint_generator); |