Index: src/compiler/x64/code-generator-x64.cc |
diff --git a/src/compiler/x64/code-generator-x64.cc b/src/compiler/x64/code-generator-x64.cc |
index 443f1b1efdd4676d601da77cc02c2f5e0971cc6a..b684ab3ad1bd5159c9b8ad197b3bad4d66895fff 100644 |
--- a/src/compiler/x64/code-generator-x64.cc |
+++ b/src/compiler/x64/code-generator-x64.cc |
@@ -1464,6 +1464,12 @@ void CodeGenerator::AssembleMove(InstructionOperand* source, |
// Loading the context from the frame is way cheaper than |
// materializing the actual context heap object address. |
__ movp(dst, Operand(rbp, StandardFrameConstants::kContextOffset)); |
+ } else if (info()->IsOptimizing() && |
+ src_object.is_identical_to(info()->closure())) { |
+ // Loading the JSFunction from the frame is way cheaper than |
+ // materializing the actual JSFunction heap object address. |
+ __ movp(dst, |
+ Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); |
} else { |
__ Move(dst, src_object); |
} |