Revision: 9733
Author:   [email protected]
Date:     Fri Oct 21 03:19:16 2011
Log:      Handlify StubCompiler::CompileCallInitialize.

CallIC::GenerateInitialize and KeyedCallIC::GenerateInitialize are
verified safe for GC.

[email protected]
BUG=
TEST=

Review URL: http://codereview.chromium.org/8361028
http://code.google.com/p/v8/source/detail?r=9733

Modified:
 /branches/bleeding_edge/src/arm/ic-arm.cc
 /branches/bleeding_edge/src/ia32/ic-ia32.cc
 /branches/bleeding_edge/src/ic.h
 /branches/bleeding_edge/src/mips/ic-mips.cc
 /branches/bleeding_edge/src/stub-cache.cc
 /branches/bleeding_edge/src/stub-cache.h
 /branches/bleeding_edge/src/x64/ic-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/ic-arm.cc   Thu Oct 20 05:36:45 2011
+++ /branches/bleeding_edge/src/arm/ic-arm.cc   Fri Oct 21 03:19:16 2011
@@ -486,10 +486,10 @@
 }


-static void GenerateCallMiss(MacroAssembler* masm,
-                             int argc,
-                             IC::UtilityId id,
-                             Code::ExtraICState extra_ic_state) {
+void CallICBase::GenerateMiss(MacroAssembler* masm,
+                              int argc,
+                              IC::UtilityId id,
+                              Code::ExtraICState extra_state) {
   // ----------- S t a t e -------------
   //  -- r2    : name
   //  -- lr    : return address
@@ -541,7 +541,7 @@
   }

   // Invoke the function.
-  CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state)
+  CallKind call_kind = CallICBase::Contextual::decode(extra_state)
       ? CALL_AS_FUNCTION
       : CALL_AS_METHOD;
   ParameterCount actual(argc);
@@ -551,18 +551,6 @@
                     NullCallWrapper(),
                     call_kind);
 }
-
-
-void CallIC::GenerateMiss(MacroAssembler* masm,
-                          int argc,
-                          Code::ExtraICState extra_ic_state) {
-  // ----------- S t a t e -------------
-  //  -- r2    : name
-  //  -- lr    : return address
-  // -----------------------------------
-
-  GenerateCallMiss(masm, argc, IC::kCallIC_Miss, extra_ic_state);
-}


 void CallIC::GenerateMegamorphic(MacroAssembler* masm,
@@ -589,16 +577,6 @@
   GenerateCallNormal(masm, argc);
   GenerateMiss(masm, argc, Code::kNoExtraICState);
 }
-
-
-void KeyedCallIC::GenerateMiss(MacroAssembler* masm, int argc) {
-  // ----------- S t a t e -------------
-  //  -- r2    : name
-  //  -- lr    : return address
-  // -----------------------------------
-
- GenerateCallMiss(masm, argc, IC::kKeyedCallIC_Miss, Code::kNoExtraICState);
-}


 void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
=======================================
--- /branches/bleeding_edge/src/ia32/ic-ia32.cc Thu Oct 20 05:36:45 2011
+++ /branches/bleeding_edge/src/ia32/ic-ia32.cc Fri Oct 21 03:19:16 2011
@@ -969,10 +969,10 @@
 }


-static void GenerateCallMiss(MacroAssembler* masm,
-                             int argc,
-                             IC::UtilityId id,
-                             Code::ExtraICState extra_ic_state) {
+void CallICBase::GenerateMiss(MacroAssembler* masm,
+                              int argc,
+                              IC::UtilityId id,
+                              Code::ExtraICState extra_state) {
   // ----------- S t a t e -------------
   //  -- ecx                 : name
   //  -- esp[0]              : return address
@@ -1029,7 +1029,7 @@
   }

   // Invoke the function.
-  CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state)
+  CallKind call_kind = CallICBase::Contextual::decode(extra_state)
       ? CALL_AS_FUNCTION
       : CALL_AS_METHOD;
   ParameterCount actual(argc);
@@ -1072,21 +1072,6 @@
   GenerateCallNormal(masm, argc);
   GenerateMiss(masm, argc, Code::kNoExtraICState);
 }
-
-
-void CallIC::GenerateMiss(MacroAssembler* masm,
-                          int argc,
-                          Code::ExtraICState extra_ic_state) {
-  // ----------- S t a t e -------------
-  //  -- ecx                 : name
-  //  -- esp[0]              : return address
-  //  -- esp[(argc - n) * 4] : arg[n] (zero-based)
-  //  -- ...
-  //  -- esp[(argc + 1) * 4] : receiver
-  // -----------------------------------
-
-  GenerateCallMiss(masm, argc, IC::kCallIC_Miss, extra_ic_state);
-}


 void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
@@ -1257,19 +1242,6 @@
   __ bind(&miss);
   GenerateMiss(masm, argc);
 }
-
-
-void KeyedCallIC::GenerateMiss(MacroAssembler* masm, int argc) {
-  // ----------- S t a t e -------------
-  //  -- ecx                 : name
-  //  -- esp[0]              : return address
-  //  -- esp[(argc - n) * 4] : arg[n] (zero-based)
-  //  -- ...
-  //  -- esp[(argc + 1) * 4] : receiver
-  // -----------------------------------
-
- GenerateCallMiss(masm, argc, IC::kKeyedCallIC_Miss, Code::kNoExtraICState);
-}


 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/ic.h    Thu Oct 20 10:08:53 2011
+++ /branches/bleeding_edge/src/ic.h    Fri Oct 21 03:19:16 2011
@@ -198,11 +198,6 @@
   class Contextual: public BitField<bool, 0, 1> {};
   class StringStubState: public BitField<StringStubFeedback, 1, 1> {};

- protected:
-  CallICBase(Code::Kind kind, Isolate* isolate)
-      : IC(EXTRA_CALL_FRAME, isolate), kind_(kind) {}
-
- public:
   // Returns a JSFunction or a Failure.
   MUST_USE_RESULT MaybeObject* LoadFunction(State state,
Code::ExtraICState extra_ic_state,
@@ -210,7 +205,8 @@
                                             Handle<String> name);

  protected:
-  Code::Kind kind_;
+  CallICBase(Code::Kind kind, Isolate* isolate)
+      : IC(EXTRA_CALL_FRAME, isolate), kind_(kind) {}

   bool TryUpdateExtraICState(LookupResult* lookup,
                              Handle<Object> object,
@@ -240,6 +236,14 @@

   static void Clear(Address address, Code* target);

+  // Platform-specific generation of misses for call and keyed call.
+  static void GenerateMiss(MacroAssembler* masm,
+                           int argc,
+                           IC::UtilityId id,
+                           Code::ExtraICState extra_state);
+
+  Code::Kind kind_;
+
   friend class IC;
 };

@@ -253,15 +257,20 @@
   // Code generator routines.
   static void GenerateInitialize(MacroAssembler* masm,
                                  int argc,
-                                 Code::ExtraICState extra_ic_state) {
-    GenerateMiss(masm, argc, extra_ic_state);
-  }
+                                 Code::ExtraICState extra_state) {
+    GenerateMiss(masm, argc, extra_state);
+  }
+
   static void GenerateMiss(MacroAssembler* masm,
                            int argc,
-                           Code::ExtraICState extra_ic_state);
+                           Code::ExtraICState extra_state) {
+    CallICBase::GenerateMiss(masm, argc, IC::kCallIC_Miss, extra_state);
+  }
+
   static void GenerateMegamorphic(MacroAssembler* masm,
                                   int argc,
                                   Code::ExtraICState extra_ic_state);
+
   static void GenerateNormal(MacroAssembler* masm, int argc);
 };

@@ -281,7 +290,12 @@
   static void GenerateInitialize(MacroAssembler* masm, int argc) {
     GenerateMiss(masm, argc);
   }
-  static void GenerateMiss(MacroAssembler* masm, int argc);
+
+  static void GenerateMiss(MacroAssembler* masm, int argc) {
+    CallICBase::GenerateMiss(masm, argc, IC::kKeyedCallIC_Miss,
+                             Code::kNoExtraICState);
+  }
+
   static void GenerateMegamorphic(MacroAssembler* masm, int argc);
   static void GenerateNormal(MacroAssembler* masm, int argc);
   static void GenerateNonStrictArguments(MacroAssembler* masm, int argc);
=======================================
--- /branches/bleeding_edge/src/mips/ic-mips.cc Wed Oct 19 04:44:38 2011
+++ /branches/bleeding_edge/src/mips/ic-mips.cc Fri Oct 21 03:19:16 2011
@@ -486,10 +486,10 @@
 }


-static void GenerateCallMiss(MacroAssembler* masm,
-                             int argc,
-                             IC::UtilityId id,
-                             Code::ExtraICState extra_ic_state) {
+void CallICBase::GenerateMiss(MacroAssembler* masm,
+                              int argc,
+                              IC::UtilityId id,
+                              Code::ExtraICState extra_state) {
   // ----------- S t a t e -------------
   //  -- a2    : name
   //  -- ra    : return address
@@ -540,7 +540,7 @@
     __ bind(&invoke);
   }
   // Invoke the function.
-  CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state)
+  CallKind call_kind = CallICBase::Contextual::decode(extra_state)
       ? CALL_AS_FUNCTION
       : CALL_AS_METHOD;
   ParameterCount actual(argc);
@@ -550,18 +550,6 @@
                     NullCallWrapper(),
                     call_kind);
 }
-
-
-void CallIC::GenerateMiss(MacroAssembler* masm,
-                          int argc,
-                          Code::ExtraICState extra_ic_state) {
-  // ----------- S t a t e -------------
-  //  -- a2    : name
-  //  -- ra    : return address
-  // -----------------------------------
-
-  GenerateCallMiss(masm, argc, IC::kCallIC_Miss, extra_ic_state);
-}


 void CallIC::GenerateMegamorphic(MacroAssembler* masm,
@@ -588,16 +576,6 @@
   GenerateCallNormal(masm, argc);
   GenerateMiss(masm, argc, Code::kNoExtraICState);
 }
-
-
-void KeyedCallIC::GenerateMiss(MacroAssembler* masm, int argc) {
-  // ----------- S t a t e -------------
-  //  -- a2    : name
-  //  -- ra    : return address
-  // -----------------------------------
-
- GenerateCallMiss(masm, argc, IC::kKeyedCallIC_Miss, Code::kNoExtraICState);
-}


 void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
=======================================
--- /branches/bleeding_edge/src/stub-cache.cc   Thu Oct 20 10:28:14 2011
+++ /branches/bleeding_edge/src/stub-cache.cc   Fri Oct 21 03:19:16 2011
@@ -1402,14 +1402,6 @@


 Handle<Code> StubCompiler::CompileCallInitialize(Code::Flags flags) {
-  CALL_HEAP_FUNCTION(isolate(),
-                     (set_failure(NULL), TryCompileCallInitialize(flags)),
-                     Code);
-}
-
-
-MaybeObject* StubCompiler::TryCompileCallInitialize(Code::Flags flags) {
-  HandleScope scope(isolate());
   int argc = Code::ExtractArgumentsCountFromFlags(flags);
   Code::Kind kind = Code::ExtractKindFromFlags(flags);
Code::ExtraICState extra_state = Code::ExtractExtraICStateFromFlags(flags);
@@ -1418,19 +1410,13 @@
   } else {
     KeyedCallIC::GenerateInitialize(masm(), argc);
   }
-  Object* result;
-  { MaybeObject* maybe_result =
-        GetCodeWithFlags(flags, "CompileCallInitialize");
-    if (!maybe_result->ToObject(&result)) return maybe_result;
-  }
+  Handle<Code> code = GetCodeWithFlags(flags, "CompileCallInitialize");
   isolate()->counters()->call_initialize_stubs()->Increment();
-  Code* code = Code::cast(result);
-  USE(code);
   PROFILE(isolate(),
           CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_INITIALIZE_TAG),
-                          code, code->arguments_count()));
-  GDBJIT(AddCode(GDBJITInterface::CALL_INITIALIZE, Code::cast(code)));
-  return result;
+                          *code, code->arguments_count()));
+  GDBJIT(AddCode(GDBJITInterface::CALL_INITIALIZE, *code));
+  return code;
 }


@@ -1455,7 +1441,7 @@
   }
   Object* result;
   { MaybeObject* maybe_result =
-        GetCodeWithFlags(flags, "CompileCallPreMonomorphic");
+        TryGetCodeWithFlags(flags, "CompileCallPreMonomorphic");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   isolate()->counters()->call_premonomorphic_stubs()->Increment();
@@ -1489,7 +1475,7 @@
     KeyedCallIC::GenerateNormal(masm(), argc);
   }
   Object* result;
- { MaybeObject* maybe_result = GetCodeWithFlags(flags, "CompileCallNormal"); + { MaybeObject* maybe_result = TryGetCodeWithFlags(flags, "CompileCallNormal");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   isolate()->counters()->call_normal_stubs()->Increment();
@@ -1522,7 +1508,7 @@
   }
   Object* result;
   { MaybeObject* maybe_result =
-        GetCodeWithFlags(flags, "CompileCallMegamorphic");
+        TryGetCodeWithFlags(flags, "CompileCallMegamorphic");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   isolate()->counters()->call_megamorphic_stubs()->Increment();
@@ -1550,7 +1536,7 @@
   Code::Kind kind = Code::ExtractKindFromFlags(flags);
   Object* result;
   { MaybeObject* maybe_result =
-        GetCodeWithFlags(flags, "CompileCallArguments");
+        TryGetCodeWithFlags(flags, "CompileCallArguments");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   Code* code = Code::cast(result);
@@ -1581,7 +1567,7 @@
     KeyedCallIC::GenerateMiss(masm(), argc);
   }
   Object* result;
-  { MaybeObject* maybe_result = GetCodeWithFlags(flags, "CompileCallMiss");
+ { MaybeObject* maybe_result = TryGetCodeWithFlags(flags, "CompileCallMiss");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   isolate()->counters()->call_megamorphic_stubs()->Increment();
@@ -1608,7 +1594,7 @@
   Debug::GenerateCallICDebugBreak(masm());
   Object* result;
   { MaybeObject* maybe_result =
-        GetCodeWithFlags(flags, "CompileCallDebugBreak");
+        TryGetCodeWithFlags(flags, "CompileCallDebugBreak");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   Code* code = Code::cast(result);
@@ -1644,7 +1630,7 @@
   }
   Object* result;
   { MaybeObject* maybe_result =
-        GetCodeWithFlags(flags, "CompileCallDebugPrepareStepIn");
+        TryGetCodeWithFlags(flags, "CompileCallDebugPrepareStepIn");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   Code* code = Code::cast(result);
@@ -1660,8 +1646,21 @@

 #undef CALL_LOGGER_TAG

-MaybeObject* StubCompiler::GetCodeWithFlags(Code::Flags flags,
+Handle<Code> StubCompiler::GetCodeWithFlags(Code::Flags flags,
                                             const char* name) {
+  // Create code object in the heap.
+  CodeDesc desc;
+  masm_.GetCode(&desc);
+  Handle<Code> code = factory()->NewCode(desc, flags, masm_.CodeObject());
+#ifdef ENABLE_DISASSEMBLER
+  if (FLAG_print_code_stubs) code->Disassemble(name);
+#endif
+  return code;
+}
+
+
+MaybeObject* StubCompiler::TryGetCodeWithFlags(Code::Flags flags,
+                                               const char* name) {
   // Check for allocation failures during stub compilation.
   if (failure_->IsFailure()) return failure_;

@@ -1678,11 +1677,12 @@
 }


-MaybeObject* StubCompiler::GetCodeWithFlags(Code::Flags flags, String* name) {
+MaybeObject* StubCompiler::TryGetCodeWithFlags(Code::Flags flags,
+                                               String* name) {
   if (FLAG_print_code_stubs && (name != NULL)) {
-    return GetCodeWithFlags(flags, *name->ToCString());
-  }
-  return GetCodeWithFlags(flags, reinterpret_cast<char*>(NULL));
+    return TryGetCodeWithFlags(flags, *name->ToCString());
+  }
+  return TryGetCodeWithFlags(flags, reinterpret_cast<char*>(NULL));
 }


@@ -1703,7 +1703,7 @@

 MaybeObject* LoadStubCompiler::GetCode(PropertyType type, String* name) {
   Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, type);
-  MaybeObject* result = GetCodeWithFlags(flags, name);
+  MaybeObject* result = TryGetCodeWithFlags(flags, name);
   if (!result->IsFailure()) {
     PROFILE(isolate(),
             CodeCreateEvent(Logger::LOAD_IC_TAG,
@@ -1722,7 +1722,7 @@
                                             InlineCacheState state) {
   Code::Flags flags = Code::ComputeFlags(
       Code::KEYED_LOAD_IC, state, Code::kNoExtraICState, type);
-  MaybeObject* result = GetCodeWithFlags(flags, name);
+  MaybeObject* result = TryGetCodeWithFlags(flags, name);
   if (!result->IsFailure()) {
     PROFILE(isolate(),
             CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG,
@@ -1739,7 +1739,7 @@
 MaybeObject* StoreStubCompiler::GetCode(PropertyType type, String* name) {
   Code::Flags flags =
       Code::ComputeMonomorphicFlags(Code::STORE_IC, type, strict_mode_);
-  MaybeObject* result = GetCodeWithFlags(flags, name);
+  MaybeObject* result = TryGetCodeWithFlags(flags, name);
   if (!result->IsFailure()) {
     PROFILE(isolate(),
             CodeCreateEvent(Logger::STORE_IC_TAG,
@@ -1758,7 +1758,7 @@
                                              InlineCacheState state) {
   Code::Flags flags =
       Code::ComputeFlags(Code::KEYED_STORE_IC, state, strict_mode_, type);
-  MaybeObject* result = GetCodeWithFlags(flags, name);
+  MaybeObject* result = TryGetCodeWithFlags(flags, name);
   if (!result->IsFailure()) {
     PROFILE(isolate(),
             CodeCreateEvent(Logger::KEYED_STORE_IC_TAG,
@@ -1846,7 +1846,7 @@
                                                     extra_state_,
                                                     cache_holder_,
                                                     argc);
-  return GetCodeWithFlags(flags, name);
+  return TryGetCodeWithFlags(flags, name);
 }


@@ -1862,7 +1862,7 @@
 MaybeObject* ConstructStubCompiler::GetCode() {
   Code::Flags flags = Code::ComputeFlags(Code::STUB);
   Object* result;
-  { MaybeObject* maybe_result = GetCodeWithFlags(flags, "ConstructStub");
+ { MaybeObject* maybe_result = TryGetCodeWithFlags(flags, "ConstructStub");
     if (!maybe_result->ToObject(&result)) return maybe_result;
   }
   Code* code = Code::cast(result);
=======================================
--- /branches/bleeding_edge/src/stub-cache.h    Thu Oct 20 10:08:53 2011
+++ /branches/bleeding_edge/src/stub-cache.h    Fri Oct 21 03:19:16 2011
@@ -378,35 +378,32 @@
 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadPropertyWithInterceptor);


-// The stub compiler compiles stubs for the stub cache.
+// The stub compilers compile stubs for the stub cache.
 class StubCompiler BASE_EMBEDDED {
  public:
   explicit StubCompiler(Isolate* isolate)
       : isolate_(isolate), masm_(isolate, NULL, 256), failure_(NULL) { }

+  // Functions to compile either CallIC or KeyedCallIC.  The specific kind
+  // is extracted from the code flags.
   Handle<Code> CompileCallInitialize(Code::Flags flags);
-  MUST_USE_RESULT MaybeObject* TryCompileCallInitialize(Code::Flags flags);
-
   Handle<Code> CompileCallPreMonomorphic(Code::Flags flags);
- MUST_USE_RESULT MaybeObject* TryCompileCallPreMonomorphic(Code::Flags flags);
-
   Handle<Code> CompileCallNormal(Code::Flags flags);
-  MUST_USE_RESULT MaybeObject* TryCompileCallNormal(Code::Flags flags);
-
   Handle<Code> CompileCallMegamorphic(Code::Flags flags);
- MUST_USE_RESULT MaybeObject* TryCompileCallMegamorphic(Code::Flags flags);
-
   Handle<Code> CompileCallArguments(Code::Flags flags);
-  MUST_USE_RESULT MaybeObject* TryCompileCallArguments(Code::Flags flags);
-
   Handle<Code> CompileCallMiss(Code::Flags flags);
+
+ MUST_USE_RESULT MaybeObject* TryCompileCallPreMonomorphic(Code::Flags flags);
+  MUST_USE_RESULT MaybeObject* TryCompileCallNormal(Code::Flags flags);
+ MUST_USE_RESULT MaybeObject* TryCompileCallMegamorphic(Code::Flags flags);
+  MUST_USE_RESULT MaybeObject* TryCompileCallArguments(Code::Flags flags);
   MUST_USE_RESULT MaybeObject* TryCompileCallMiss(Code::Flags flags);

 #ifdef ENABLE_DEBUGGER_SUPPORT
   Handle<Code> CompileCallDebugBreak(Code::Flags flags);
-  MUST_USE_RESULT MaybeObject* TryCompileCallDebugBreak(Code::Flags flags);
-
   Handle<Code> CompileCallDebugPrepareStepIn(Code::Flags flags);
+
+  MUST_USE_RESULT MaybeObject* TryCompileCallDebugBreak(Code::Flags flags);
   MUST_USE_RESULT MaybeObject* TryCompileCallDebugPrepareStepIn(
       Code::Flags flags);
 #endif
@@ -502,8 +499,12 @@
                            Label* miss);

  protected:
-  MaybeObject* GetCodeWithFlags(Code::Flags flags, const char* name);
-  MaybeObject* GetCodeWithFlags(Code::Flags flags, String* name);
+  Handle<Code> GetCodeWithFlags(Code::Flags flags, const char* name);
+
+  MUST_USE_RESULT MaybeObject* TryGetCodeWithFlags(Code::Flags flags,
+                                                   const char* name);
+  MUST_USE_RESULT MaybeObject* TryGetCodeWithFlags(Code::Flags flags,
+                                                   String* name);

   MacroAssembler* masm() { return &masm_; }
   void set_failure(Failure* failure) { failure_ = failure; }
=======================================
--- /branches/bleeding_edge/src/x64/ic-x64.cc   Thu Oct 20 05:36:45 2011
+++ /branches/bleeding_edge/src/x64/ic-x64.cc   Fri Oct 21 03:19:16 2011
@@ -848,10 +848,10 @@
 }


-static void GenerateCallMiss(MacroAssembler* masm,
-                             int argc,
-                             IC::UtilityId id,
-                             Code::ExtraICState extra_ic_state) {
+void CallICBase::GenerateMiss(MacroAssembler* masm,
+                              int argc,
+                              IC::UtilityId id,
+                              Code::ExtraICState extra_state) {
   // ----------- S t a t e -------------
   // rcx                      : function name
   // rsp[0]                   : return address
@@ -909,7 +909,7 @@
   }

   // Invoke the function.
-  CallKind call_kind = CallICBase::Contextual::decode(extra_ic_state)
+  CallKind call_kind = CallICBase::Contextual::decode(extra_state)
       ? CALL_AS_FUNCTION
       : CALL_AS_METHOD;
   ParameterCount actual(argc);
@@ -955,23 +955,6 @@
   GenerateCallNormal(masm, argc);
   GenerateMiss(masm, argc, Code::kNoExtraICState);
 }
-
-
-void CallIC::GenerateMiss(MacroAssembler* masm,
-                          int argc,
-                          Code::ExtraICState extra_ic_state) {
-  // ----------- S t a t e -------------
-  // rcx                      : function name
-  // rsp[0]                   : return address
-  // rsp[8]                   : argument argc
-  // rsp[16]                  : argument argc - 1
-  // ...
-  // rsp[argc * 8]            : argument 1
-  // rsp[(argc + 1) * 8]      : argument 0 = receiver
-  // -----------------------------------
-
-  GenerateCallMiss(masm, argc, IC::kCallIC_Miss, extra_ic_state);
-}


 void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
@@ -1105,21 +1088,6 @@
   __ bind(&miss);
   GenerateMiss(masm, argc);
 }
-
-
-void KeyedCallIC::GenerateMiss(MacroAssembler* masm, int argc) {
-  // ----------- S t a t e -------------
-  // rcx                      : function name
-  // rsp[0]                   : return address
-  // rsp[8]                   : argument argc
-  // rsp[16]                  : argument argc - 1
-  // ...
-  // rsp[argc * 8]            : argument 1
-  // rsp[(argc + 1) * 8]      : argument 0 = receiver
-  // -----------------------------------
-
- GenerateCallMiss(masm, argc, IC::kKeyedCallIC_Miss, Code::kNoExtraICState);
-}


 static Operand GenerateMappedArgumentsLookup(MacroAssembler* masm,

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to