| 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) {
|
|
|