Index: src/stub-cache.cc |
=================================================================== |
--- src/stub-cache.cc (revision 5810) |
+++ src/stub-cache.cc (working copy) |
@@ -820,6 +820,34 @@ |
} |
+Handle<Code> StubCache::ComputeCallInitialize(int argc, InLoopFlag in_loop) { |
+ if (in_loop == IN_LOOP) { |
+ // Force the creation of the corresponding stub outside loops, |
+ // because it may be used when clearing the ICs later - it is |
+ // possible for a series of IC transitions to lose the in-loop |
+ // information, and the IC clearing code can't generate a stub |
+ // that it needs so we need to ensure it is generated already. |
+ ComputeCallInitialize(argc, NOT_IN_LOOP); |
+ } |
+ CALL_HEAP_FUNCTION(ComputeCallInitialize(argc, in_loop, Code::CALL_IC), Code); |
+} |
+ |
+ |
+Handle<Code> StubCache::ComputeKeyedCallInitialize(int argc, |
+ InLoopFlag in_loop) { |
+ if (in_loop == IN_LOOP) { |
+ // Force the creation of the corresponding stub outside loops, |
+ // because it may be used when clearing the ICs later - it is |
+ // possible for a series of IC transitions to lose the in-loop |
+ // information, and the IC clearing code can't generate a stub |
+ // that it needs so we need to ensure it is generated already. |
+ ComputeKeyedCallInitialize(argc, NOT_IN_LOOP); |
+ } |
+ CALL_HEAP_FUNCTION( |
+ ComputeCallInitialize(argc, in_loop, Code::KEYED_CALL_IC), Code); |
+} |
+ |
+ |
MaybeObject* StubCache::ComputeCallPreMonomorphic(int argc, |
InLoopFlag in_loop, |
Code::Kind kind) { |