Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index 85f025594f9cfb6e7e533ab872a2ed23c51a1ed2..eebb2842f02f508db4edbbc8b577311fa1e3ce3e 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -3906,6 +3906,14 @@ void LCodeGen::DoCallRuntime(LCallRuntime* instr) { |
} |
+void LCodeGen::DoStoreCodeEntry(LStoreCodeEntry* instr) { |
+ Register js_function = ToRegister(instr->js_function()); |
+ Register code_object = ToRegister(instr->code_object()); |
+ __ lea(code_object, FieldOperand(code_object, Code::kHeaderSize)); |
+ __ movq(FieldOperand(js_function, JSFunction::kCodeEntryOffset), code_object); |
+} |
+ |
+ |
void LCodeGen::DoInnerAllocatedObject(LInnerAllocatedObject* instr) { |
Register result = ToRegister(instr->result()); |
Register base = ToRegister(instr->base_object()); |
@@ -5167,7 +5175,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) { |
if (!pretenure && instr->hydrogen()->has_no_literals()) { |
FastNewClosureStub stub(instr->hydrogen()->language_mode(), |
instr->hydrogen()->is_generator()); |
- __ Push(instr->hydrogen()->shared_info()); |
+ __ Move(rbx, instr->hydrogen()->shared_info()); |
CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); |
} else { |
__ push(rsi); |