Index: src/stub-cache.cc |
diff --git a/src/stub-cache.cc b/src/stub-cache.cc |
index 404da44e2b7f6cf18fb7b4bb289081321d9ddc04..55963303c441dbb08e56e2e43d2489e46ba2d0ad 100644 |
--- a/src/stub-cache.cc |
+++ b/src/stub-cache.cc |
@@ -652,7 +652,6 @@ MaybeObject* StubCache::ComputeKeyedStoreField(String* name, |
(kind == Code::CALL_IC ? Logger::type : Logger::KEYED_##type) |
MaybeObject* StubCache::ComputeCallConstant(int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state, |
String* name, |
@@ -678,7 +677,6 @@ MaybeObject* StubCache::ComputeCallConstant(int argc, |
CONSTANT_FUNCTION, |
extra_ic_state, |
cache_holder, |
- in_loop, |
argc); |
Object* code = map_holder->map()->FindInCodeCache(name, flags); |
if (code->IsUndefined()) { |
@@ -688,8 +686,7 @@ MaybeObject* StubCache::ComputeCallConstant(int argc, |
// caches. |
if (!function->is_compiled()) return Failure::InternalError(); |
// Compile the stub - only create stubs for fully compiled functions. |
- CallStubCompiler compiler( |
- argc, in_loop, kind, extra_ic_state, cache_holder); |
+ CallStubCompiler compiler(argc, kind, extra_ic_state, cache_holder); |
{ MaybeObject* maybe_code = |
compiler.CompileCallConstant(object, holder, function, name, check); |
if (!maybe_code->ToObject(&code)) return maybe_code; |
@@ -711,7 +708,6 @@ MaybeObject* StubCache::ComputeCallConstant(int argc, |
MaybeObject* StubCache::ComputeCallField(int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state, |
String* name, |
@@ -734,12 +730,10 @@ MaybeObject* StubCache::ComputeCallField(int argc, |
FIELD, |
extra_ic_state, |
cache_holder, |
- in_loop, |
argc); |
Object* code = map_holder->map()->FindInCodeCache(name, flags); |
if (code->IsUndefined()) { |
- CallStubCompiler compiler( |
- argc, in_loop, kind, extra_ic_state, cache_holder); |
+ CallStubCompiler compiler(argc, kind, extra_ic_state, cache_holder); |
{ MaybeObject* maybe_code = |
compiler.CompileCallField(JSObject::cast(object), |
holder, |
@@ -785,12 +779,10 @@ MaybeObject* StubCache::ComputeCallInterceptor( |
INTERCEPTOR, |
extra_ic_state, |
cache_holder, |
- NOT_IN_LOOP, |
argc); |
Object* code = map_holder->map()->FindInCodeCache(name, flags); |
if (code->IsUndefined()) { |
- CallStubCompiler compiler( |
- argc, NOT_IN_LOOP, kind, extra_ic_state, cache_holder); |
+ CallStubCompiler compiler(argc, kind, extra_ic_state, cache_holder); |
{ MaybeObject* maybe_code = |
compiler.CompileCallInterceptor(JSObject::cast(object), holder, name); |
if (!maybe_code->ToObject(&code)) return maybe_code; |
@@ -811,14 +803,12 @@ MaybeObject* StubCache::ComputeCallInterceptor( |
MaybeObject* StubCache::ComputeCallNormal(int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state, |
String* name, |
JSObject* receiver) { |
Object* code; |
- { MaybeObject* maybe_code = |
- ComputeCallNormal(argc, in_loop, kind, extra_ic_state); |
+ { MaybeObject* maybe_code = ComputeCallNormal(argc, kind, extra_ic_state); |
if (!maybe_code->ToObject(&code)) return maybe_code; |
} |
return code; |
@@ -826,7 +816,6 @@ MaybeObject* StubCache::ComputeCallNormal(int argc, |
MaybeObject* StubCache::ComputeCallGlobal(int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state, |
String* name, |
@@ -841,7 +830,6 @@ MaybeObject* StubCache::ComputeCallGlobal(int argc, |
NORMAL, |
extra_ic_state, |
cache_holder, |
- in_loop, |
argc); |
Object* code = map_holder->map()->FindInCodeCache(name, flags); |
if (code->IsUndefined()) { |
@@ -850,8 +838,7 @@ MaybeObject* StubCache::ComputeCallGlobal(int argc, |
// internal error which will make sure we do not update any |
// caches. |
if (!function->is_compiled()) return Failure::InternalError(); |
- CallStubCompiler compiler( |
- argc, in_loop, kind, extra_ic_state, cache_holder); |
+ CallStubCompiler compiler(argc, kind, extra_ic_state, cache_holder); |
{ MaybeObject* maybe_code = |
compiler.CompileCallGlobal(receiver, holder, cell, function, name); |
if (!maybe_code->ToObject(&code)) return maybe_code; |
@@ -920,14 +907,12 @@ static MaybeObject* FillCache(Isolate* isolate, MaybeObject* maybe_code) { |
Code* StubCache::FindCallInitialize(int argc, |
- InLoopFlag in_loop, |
RelocInfo::Mode mode, |
Code::Kind kind) { |
Code::ExtraICState extra_state = |
CallICBase::StringStubState::encode(DEFAULT_STRING_STUB) | |
CallICBase::Contextual::encode(mode == RelocInfo::CODE_TARGET_CONTEXT); |
Code::Flags flags = Code::ComputeFlags(kind, |
- in_loop, |
UNINITIALIZED, |
extra_state, |
NORMAL, |
@@ -941,14 +926,12 @@ Code* StubCache::FindCallInitialize(int argc, |
MaybeObject* StubCache::ComputeCallInitialize(int argc, |
- InLoopFlag in_loop, |
RelocInfo::Mode mode, |
Code::Kind kind) { |
Code::ExtraICState extra_state = |
CallICBase::StringStubState::encode(DEFAULT_STRING_STUB) | |
CallICBase::Contextual::encode(mode == RelocInfo::CODE_TARGET_CONTEXT); |
Code::Flags flags = Code::ComputeFlags(kind, |
- in_loop, |
UNINITIALIZED, |
extra_state, |
NORMAL, |
@@ -964,49 +947,26 @@ MaybeObject* StubCache::ComputeCallInitialize(int argc, |
Handle<Code> StubCache::ComputeCallInitialize(int argc, |
- InLoopFlag in_loop, |
RelocInfo::Mode mode) { |
- 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, mode); |
- } |
CALL_HEAP_FUNCTION(isolate_, |
- ComputeCallInitialize(argc, in_loop, mode, Code::CALL_IC), |
+ ComputeCallInitialize(argc, mode, 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); |
- } |
+Handle<Code> StubCache::ComputeKeyedCallInitialize(int argc) { |
CALL_HEAP_FUNCTION( |
isolate_, |
- ComputeCallInitialize(argc, |
- in_loop, |
- RelocInfo::CODE_TARGET, |
- Code::KEYED_CALL_IC), |
+ ComputeCallInitialize(argc, RelocInfo::CODE_TARGET, Code::KEYED_CALL_IC), |
Code); |
} |
MaybeObject* StubCache::ComputeCallPreMonomorphic( |
int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state) { |
Code::Flags flags = Code::ComputeFlags(kind, |
- in_loop, |
PREMONOMORPHIC, |
extra_ic_state, |
NORMAL, |
@@ -1022,11 +982,9 @@ MaybeObject* StubCache::ComputeCallPreMonomorphic( |
MaybeObject* StubCache::ComputeCallNormal(int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state) { |
Code::Flags flags = Code::ComputeFlags(kind, |
- in_loop, |
MONOMORPHIC, |
extra_ic_state, |
NORMAL, |
@@ -1041,12 +999,9 @@ MaybeObject* StubCache::ComputeCallNormal(int argc, |
} |
-MaybeObject* StubCache::ComputeCallArguments(int argc, |
- InLoopFlag in_loop, |
- Code::Kind kind) { |
+MaybeObject* StubCache::ComputeCallArguments(int argc, Code::Kind kind) { |
ASSERT(kind == Code::KEYED_CALL_IC); |
Code::Flags flags = Code::ComputeFlags(kind, |
- in_loop, |
MEGAMORPHIC, |
Code::kNoExtraICState, |
NORMAL, |
@@ -1063,11 +1018,9 @@ MaybeObject* StubCache::ComputeCallArguments(int argc, |
MaybeObject* StubCache::ComputeCallMegamorphic( |
int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state) { |
Code::Flags flags = Code::ComputeFlags(kind, |
- in_loop, |
MEGAMORPHIC, |
extra_ic_state, |
NORMAL, |
@@ -1088,7 +1041,6 @@ MaybeObject* StubCache::ComputeCallMiss(int argc, |
// MONOMORPHIC_PROTOTYPE_FAILURE state is used to make sure that miss stubs |
// and monomorphic stubs are not mixed up together in the stub cache. |
Code::Flags flags = Code::ComputeFlags(kind, |
- NOT_IN_LOOP, |
MONOMORPHIC_PROTOTYPE_FAILURE, |
extra_ic_state, |
NORMAL, |
@@ -1111,7 +1063,6 @@ MaybeObject* StubCache::ComputeCallDebugBreak( |
// Extra IC state is irrelevant for debug break ICs. They jump to |
// the actual call ic to carry out the work. |
Code::Flags flags = Code::ComputeFlags(kind, |
- NOT_IN_LOOP, |
DEBUG_BREAK, |
Code::kNoExtraICState, |
NORMAL, |
@@ -1132,7 +1083,6 @@ MaybeObject* StubCache::ComputeCallDebugPrepareStepIn( |
// Extra IC state is irrelevant for debug break ICs. They jump to |
// the actual call ic to carry out the work. |
Code::Flags flags = Code::ComputeFlags(kind, |
- NOT_IN_LOOP, |
DEBUG_PREPARE_STEP_IN, |
Code::kNoExtraICState, |
NORMAL, |
@@ -1672,7 +1622,7 @@ MaybeObject* KeyedLoadStubCompiler::GetCode(PropertyType type, |
String* name, |
InlineCacheState state) { |
Code::Flags flags = Code::ComputeFlags( |
- Code::KEYED_LOAD_IC, NOT_IN_LOOP, state, Code::kNoExtraICState, type); |
+ Code::KEYED_LOAD_IC, state, Code::kNoExtraICState, type); |
MaybeObject* result = GetCodeWithFlags(flags, name); |
if (!result->IsFailure()) { |
PROFILE(isolate(), |
@@ -1688,8 +1638,8 @@ MaybeObject* KeyedLoadStubCompiler::GetCode(PropertyType type, |
MaybeObject* StoreStubCompiler::GetCode(PropertyType type, String* name) { |
- Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::STORE_IC, type, strict_mode_); |
+ Code::Flags flags = |
+ Code::ComputeMonomorphicFlags(Code::STORE_IC, type, strict_mode_); |
MaybeObject* result = GetCodeWithFlags(flags, name); |
if (!result->IsFailure()) { |
PROFILE(isolate(), |
@@ -1707,8 +1657,8 @@ MaybeObject* StoreStubCompiler::GetCode(PropertyType type, String* name) { |
MaybeObject* KeyedStoreStubCompiler::GetCode(PropertyType type, |
String* name, |
InlineCacheState state) { |
- Code::Flags flags = Code::ComputeFlags( |
- Code::KEYED_STORE_IC, NOT_IN_LOOP, state, strict_mode_, type); |
+ Code::Flags flags = |
+ Code::ComputeFlags(Code::KEYED_STORE_IC, state, strict_mode_, type); |
MaybeObject* result = GetCodeWithFlags(flags, name); |
if (!result->IsFailure()) { |
PROFILE(isolate(), |
@@ -1730,12 +1680,10 @@ void KeyedStoreStubCompiler::GenerateStoreDictionaryElement( |
CallStubCompiler::CallStubCompiler(int argc, |
- InLoopFlag in_loop, |
Code::Kind kind, |
Code::ExtraICState extra_ic_state, |
InlineCacheHolderFlag cache_holder) |
: arguments_(argc), |
- in_loop_(in_loop), |
kind_(kind), |
extra_ic_state_(extra_ic_state), |
cache_holder_(cache_holder) { |
@@ -1796,7 +1744,6 @@ MaybeObject* CallStubCompiler::GetCode(PropertyType type, String* name) { |
type, |
extra_ic_state_, |
cache_holder_, |
- in_loop_, |
argc); |
return GetCodeWithFlags(flags, name); |
} |