Index: src/stub-cache.cc |
diff --git a/src/stub-cache.cc b/src/stub-cache.cc |
index 96aa50f01cf34819cba71c8182a36e1633e60248..cdf3960a9d4d9b49cd6adbc6a8e91d842cd3a06b 100644 |
--- a/src/stub-cache.cc |
+++ b/src/stub-cache.cc |
@@ -125,8 +125,8 @@ Handle<Code> StubCache::ComputeLoadNonexistent(Handle<String> name, |
// Compile the stub that is either shared for all names or |
// name specific if there are global objects involved. |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::NONEXISTENT); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::LOAD_IC, Code::kNoExtraICState, Code::NONEXISTENT); |
Handle<Object> probe(receiver->map()->FindInCodeCache(*cache_name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -148,7 +148,8 @@ Handle<Code> StubCache::ComputeLoadField(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::FIELD); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::LOAD_IC, Code::kNoExtraICState, Code::FIELD); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -170,8 +171,8 @@ Handle<Code> StubCache::ComputeLoadCallback(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::CALLBACKS); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::LOAD_IC, Code::kNoExtraICState, Code::CALLBACKS); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -193,8 +194,8 @@ Handle<Code> StubCache::ComputeLoadViaGetter(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::CALLBACKS); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::LOAD_IC, Code::kNoExtraICState, Code::CALLBACKS); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -216,8 +217,8 @@ Handle<Code> StubCache::ComputeLoadConstant(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::CONSTANT_FUNCTION); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::LOAD_IC, Code::kNoExtraICState, Code::CONSTANT_FUNCTION); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -238,8 +239,8 @@ Handle<Code> StubCache::ComputeLoadInterceptor(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::INTERCEPTOR); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::LOAD_IC, Code::kNoExtraICState, Code::INTERCEPTOR); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -267,8 +268,7 @@ Handle<Code> StubCache::ComputeLoadGlobal(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::NORMAL); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -290,8 +290,8 @@ Handle<Code> StubCache::ComputeKeyedLoadField(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::FIELD); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::KEYED_LOAD_IC, Code::kNoExtraICState, Code::FIELD); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -312,8 +312,8 @@ Handle<Code> StubCache::ComputeKeyedLoadConstant(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, |
- Code::CONSTANT_FUNCTION); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::KEYED_LOAD_IC, Code::kNoExtraICState, Code::CONSTANT_FUNCTION); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -334,8 +334,8 @@ Handle<Code> StubCache::ComputeKeyedLoadInterceptor(Handle<String> name, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::INTERCEPTOR); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::KEYED_LOAD_IC, Code::kNoExtraICState, Code::INTERCEPTOR); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -357,8 +357,8 @@ Handle<Code> StubCache::ComputeKeyedLoadCallback( |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::CALLBACKS); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::KEYED_LOAD_IC, Code::kNoExtraICState, Code::CALLBACKS); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -381,7 +381,7 @@ Handle<Code> StubCache::ComputeStoreField(Handle<String> name, |
Code::StubType type = |
(transition.is_null()) ? Code::FIELD : Code::MAP_TRANSITION; |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::STORE_IC, type, strict_mode); |
+ Code::STORE_IC, strict_mode, type); |
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -397,8 +397,7 @@ Handle<Code> StubCache::ComputeStoreField(Handle<String> name, |
Handle<Code> StubCache::ComputeKeyedLoadElement(Handle<Map> receiver_map) { |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::NORMAL); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC); |
Handle<String> name = |
isolate()->factory()->KeyedLoadElementMonomorphic_symbol(); |
@@ -422,7 +421,7 @@ Handle<Code> StubCache::ComputeKeyedStoreElement( |
Code::ExtraICState extra_state = |
Code::ComputeExtraICState(grow_mode, strict_mode); |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::KEYED_STORE_IC, Code::NORMAL, extra_state); |
+ Code::KEYED_STORE_IC, extra_state); |
ASSERT(stub_kind == KeyedStoreIC::STORE_NO_TRANSITION || |
stub_kind == KeyedStoreIC::STORE_AND_GROW_NO_TRANSITION); |
@@ -455,7 +454,7 @@ Handle<Code> StubCache::ComputeStoreGlobal(Handle<String> name, |
Handle<JSGlobalPropertyCell> cell, |
StrictModeFlag strict_mode) { |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::STORE_IC, Code::NORMAL, strict_mode); |
+ Code::STORE_IC, strict_mode); |
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -476,7 +475,7 @@ Handle<Code> StubCache::ComputeStoreCallback(Handle<String> name, |
StrictModeFlag strict_mode) { |
ASSERT(v8::ToCData<Address>(callback->setter()) != 0); |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::STORE_IC, Code::CALLBACKS, strict_mode); |
+ Code::STORE_IC, strict_mode, Code::CALLBACKS); |
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -497,7 +496,7 @@ Handle<Code> StubCache::ComputeStoreViaSetter(Handle<String> name, |
Handle<JSFunction> setter, |
StrictModeFlag strict_mode) { |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::STORE_IC, Code::CALLBACKS, strict_mode); |
+ Code::STORE_IC, strict_mode, Code::CALLBACKS); |
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -516,7 +515,7 @@ Handle<Code> StubCache::ComputeStoreInterceptor(Handle<String> name, |
Handle<JSObject> receiver, |
StrictModeFlag strict_mode) { |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::STORE_IC, Code::INTERCEPTOR, strict_mode); |
+ Code::STORE_IC, strict_mode, Code::INTERCEPTOR); |
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -537,7 +536,7 @@ Handle<Code> StubCache::ComputeKeyedStoreField(Handle<String> name, |
Code::StubType type = |
(transition.is_null()) ? Code::FIELD : Code::MAP_TRANSITION; |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
- Code::KEYED_STORE_IC, type, strict_mode); |
+ Code::KEYED_STORE_IC, strict_mode, type); |
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -586,9 +585,8 @@ Handle<Code> StubCache::ComputeCallConstant(int argc, |
return Handle<Code>::null(); |
} |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(kind, Code::CONSTANT_FUNCTION, extra_state, |
- cache_holder, argc); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ kind, extra_state, Code::CONSTANT_FUNCTION, argc, cache_holder); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -625,9 +623,8 @@ Handle<Code> StubCache::ComputeCallField(int argc, |
object = holder; |
} |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(kind, Code::FIELD, extra_state, |
- cache_holder, argc); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ kind, extra_state, Code::FIELD, argc, cache_holder); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -663,9 +660,8 @@ Handle<Code> StubCache::ComputeCallInterceptor(int argc, |
object = holder; |
} |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(kind, Code::INTERCEPTOR, extra_state, |
- cache_holder, argc); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ kind, extra_state, Code::INTERCEPTOR, argc, cache_holder); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -694,9 +690,8 @@ Handle<Code> StubCache::ComputeCallGlobal(int argc, |
InlineCacheHolderFlag cache_holder = |
IC::GetCodeCacheForObject(*receiver, *holder); |
Handle<JSObject> map_holder(IC::GetCodeCacheHolder(*receiver, cache_holder)); |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(kind, Code::NORMAL, extra_state, |
- cache_holder, argc); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ kind, extra_state, Code::NORMAL, argc, cache_holder); |
Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
@@ -1526,7 +1521,8 @@ Handle<Code> LoadStubCompiler::CompileLoadViaGetter( |
Handle<Code> LoadStubCompiler::GetCode(Code::StubType type, |
Handle<String> name, |
InlineCacheState state) { |
- Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, type); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::LOAD_IC, Code::kNoExtraICState, type); |
Handle<Code> code = GetCodeWithFlags(flags, name); |
PROFILE(isolate(), CodeCreateEvent(Logger::LOAD_IC_TAG, *code, *name)); |
GDBJIT(AddCode(GDBJITInterface::LOAD_IC, *name, *code)); |
@@ -1582,8 +1578,8 @@ Handle<Code> KeyedLoadStubCompiler::CompileLoadElementPolymorphic( |
Handle<Code> StoreStubCompiler::GetCode(Code::StubType type, |
Handle<String> name) { |
- Code::Flags flags = |
- Code::ComputeMonomorphicFlags(Code::STORE_IC, type, strict_mode_); |
+ Code::Flags flags = Code::ComputeMonomorphicFlags( |
+ Code::STORE_IC, strict_mode_, type); |
Handle<Code> code = GetCodeWithFlags(flags, name); |
PROFILE(isolate(), CodeCreateEvent(Logger::STORE_IC_TAG, *code, *name)); |
GDBJIT(AddCode(GDBJITInterface::STORE_IC, *name, *code)); |
@@ -1717,10 +1713,10 @@ Handle<Code> CallStubCompiler::GetCode(Code::StubType type, |
Handle<String> name) { |
int argc = arguments_.immediate(); |
Code::Flags flags = Code::ComputeMonomorphicFlags(kind_, |
- type, |
extra_state_, |
- cache_holder_, |
- argc); |
+ type, |
+ argc, |
+ cache_holder_); |
return GetCodeWithFlags(flags, name); |
} |