diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-06-08 18:19:00 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-06-09 00:52:06 -0700 |
commit | 0bb47b6c975ea1c7eaedc5e80e75c9fd5063e6bc (patch) | |
tree | 943955dd13a8ac74d59019c046c5b8e1bc79e17d /deps/v8/src/codegen.cc | |
parent | de6d663a67dcec8b482e069d967ef4d1a3743c9b (diff) | |
download | node-new-0bb47b6c975ea1c7eaedc5e80e75c9fd5063e6bc.tar.gz |
Upgrade V8 to 2.2.15
Diffstat (limited to 'deps/v8/src/codegen.cc')
-rw-r--r-- | deps/v8/src/codegen.cc | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/deps/v8/src/codegen.cc b/deps/v8/src/codegen.cc index f89399a974..ff2fa0395b 100644 --- a/deps/v8/src/codegen.cc +++ b/deps/v8/src/codegen.cc @@ -254,10 +254,28 @@ Handle<Code> CodeGenerator::ComputeCallInitialize( // that it needs so we need to ensure it is generated already. ComputeCallInitialize(argc, NOT_IN_LOOP); } - CALL_HEAP_FUNCTION(StubCache::ComputeCallInitialize(argc, in_loop), Code); + CALL_HEAP_FUNCTION( + StubCache::ComputeCallInitialize(argc, in_loop, Code::CALL_IC), + Code); } +Handle<Code> CodeGenerator::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( + StubCache::ComputeCallInitialize(argc, in_loop, Code::KEYED_CALL_IC), + Code); +} + void CodeGenerator::ProcessDeclarations(ZoneList<Declaration*>* declarations) { int length = declarations->length(); int globals = 0; |