Index: src/compiler/code-generator.cc |
diff --git a/src/compiler/code-generator.cc b/src/compiler/code-generator.cc |
index ae0e102485e15c2e27fe5f36691e8c425364132c..f22c479780fb1a02ab0eb2108e63ba95ffd1b71f 100644 |
--- a/src/compiler/code-generator.cc |
+++ b/src/compiler/code-generator.cc |
@@ -21,7 +21,8 @@ CodeGenerator::CodeGenerator(InstructionSequence* code) |
safepoints_(code->zone()), |
deoptimization_states_(code->zone()), |
deoptimization_literals_(code->zone()), |
- translations_(code->zone()) {} |
+ translations_(code->zone()), |
+ last_lazy_deopt_pc_(0) {} |
Handle<Code> CodeGenerator::GenerateCode() { |
@@ -242,6 +243,7 @@ void CodeGenerator::AddSafepointAndDeopt(Instruction* instr) { |
} |
if (needs_frame_state) { |
+ MarkLazyDeoptSite(); |
// If the frame state is present, it starts at argument 1 |
// (just after the code address). |
InstructionOperandConverter converter(this, instr); |
@@ -387,8 +389,7 @@ void CodeGenerator::AddTranslationForOperand(Translation* translation, |
isolate()->factory()->NewNumberFromInt(constant.ToInt32()); |
break; |
case Constant::kFloat64: |
- constant_object = |
- isolate()->factory()->NewHeapNumber(constant.ToFloat64()); |
+ constant_object = isolate()->factory()->NewNumber(constant.ToFloat64()); |
break; |
case Constant::kHeapObject: |
constant_object = constant.ToHeapObject(); |
@@ -403,6 +404,11 @@ void CodeGenerator::AddTranslationForOperand(Translation* translation, |
} |
} |
+ |
+void CodeGenerator::MarkLazyDeoptSite() { |
+ last_lazy_deopt_pc_ = masm()->pc_offset(); |
+} |
+ |
#if !V8_TURBOFAN_BACKEND |
void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |