Index: src/compiler/js-graph.cc |
diff --git a/src/compiler/js-graph.cc b/src/compiler/js-graph.cc |
index 8626cd1821473a58283789368de722030a8ff06d..0dfb6a61decd8314b0e65a564ecf95da34a9d4ef 100644 |
--- a/src/compiler/js-graph.cc |
+++ b/src/compiler/js-graph.cc |
@@ -31,11 +31,26 @@ Node* JSGraph::ToNumberBuiltinConstant() { |
Node* JSGraph::CEntryStubConstant(int result_size, SaveFPRegsMode save_doubles, |
ArgvMode argv_mode, bool builtin_exit_frame) { |
- if (save_doubles == kDontSaveFPRegs && argv_mode == kArgvOnStack && |
- result_size == 1) { |
+ if (save_doubles == kDontSaveFPRegs && argv_mode == kArgvOnStack) { |
+ DCHECK(result_size >= 1 && result_size <= 3); |
+ if (!builtin_exit_frame) { |
+ CachedNode key; |
+ if (result_size == 1) { |
+ key = kCEntryStub1Constant; |
+ } else if (result_size == 2) { |
+ key = kCEntryStub2Constant; |
+ } else { |
+ DCHECK(result_size == 3); |
+ key = kCEntryStub3Constant; |
+ } |
+ return CACHED( |
+ key, HeapConstant(CEntryStub(isolate(), result_size, save_doubles, |
+ argv_mode, builtin_exit_frame) |
+ .GetCode())); |
+ } |
CachedNode key = builtin_exit_frame |
- ? kCEntryStubWithBuiltinExitFrameConstant |
- : kCEntryStubConstant; |
+ ? kCEntryStub1WithBuiltinExitFrameConstant |
+ : kCEntryStub1Constant; |
return CACHED(key, |
HeapConstant(CEntryStub(isolate(), result_size, save_doubles, |
argv_mode, builtin_exit_frame) |