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