summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen.cc
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2010-06-08 18:19:00 -0700
committerRyan Dahl <ry@tinyclouds.org>2010-06-09 00:52:06 -0700
commit0bb47b6c975ea1c7eaedc5e80e75c9fd5063e6bc (patch)
tree943955dd13a8ac74d59019c046c5b8e1bc79e17d /deps/v8/src/codegen.cc
parentde6d663a67dcec8b482e069d967ef4d1a3743c9b (diff)
downloadnode-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.cc20
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;