Index: src/stub-cache.cc |
diff --git a/src/stub-cache.cc b/src/stub-cache.cc |
index fcb8a4eede3e80200f3d4ab891496c9d8f94c91b..1f708b3ca63c94f6d7bf49e9c10d66e23f1de8ca 100644 |
--- a/src/stub-cache.cc |
+++ b/src/stub-cache.cc |
@@ -120,7 +120,8 @@ Handle<Code> StubCache::ComputeLoadNonexistent(Handle<String> name, |
// name specific if there are global objects involved. |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::NONEXISTENT); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*cache_name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*cache_name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
LoadStubCompiler compiler(isolate_); |
@@ -139,7 +140,8 @@ Handle<Code> StubCache::ComputeLoadField(Handle<String> name, |
PropertyIndex field_index) { |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::FIELD); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
LoadStubCompiler compiler(isolate_); |
@@ -160,7 +162,8 @@ Handle<Code> StubCache::ComputeLoadCallback(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::CALLBACKS); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
LoadStubCompiler compiler(isolate_); |
@@ -180,7 +183,8 @@ Handle<Code> StubCache::ComputeLoadViaGetter(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::CALLBACKS); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
LoadStubCompiler compiler(isolate_); |
@@ -200,7 +204,8 @@ Handle<Code> StubCache::ComputeLoadConstant(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::CONSTANT_FUNCTION); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
LoadStubCompiler compiler(isolate_); |
@@ -219,7 +224,8 @@ Handle<Code> StubCache::ComputeLoadInterceptor(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::INTERCEPTOR); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
LoadStubCompiler compiler(isolate_); |
@@ -245,7 +251,8 @@ Handle<Code> StubCache::ComputeLoadGlobal(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::LOAD_IC, Code::NORMAL); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
LoadStubCompiler compiler(isolate_); |
@@ -265,7 +272,8 @@ Handle<Code> StubCache::ComputeKeyedLoadField(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::FIELD); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedLoadStubCompiler compiler(isolate_); |
@@ -285,7 +293,8 @@ Handle<Code> StubCache::ComputeKeyedLoadConstant(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, |
Code::CONSTANT_FUNCTION); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedLoadStubCompiler compiler(isolate_); |
@@ -304,7 +313,8 @@ Handle<Code> StubCache::ComputeKeyedLoadInterceptor(Handle<String> name, |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::INTERCEPTOR); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedLoadStubCompiler compiler(isolate_); |
@@ -324,7 +334,8 @@ Handle<Code> StubCache::ComputeKeyedLoadCallback( |
ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::CALLBACKS); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedLoadStubCompiler compiler(isolate_); |
@@ -341,7 +352,8 @@ Handle<Code> StubCache::ComputeKeyedLoadArrayLength(Handle<String> name, |
Handle<JSArray> receiver) { |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::CALLBACKS); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedLoadStubCompiler compiler(isolate_); |
@@ -358,7 +370,7 @@ Handle<Code> StubCache::ComputeKeyedLoadStringLength(Handle<String> name, |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::CALLBACKS); |
Handle<Map> map(receiver->map()); |
- Handle<Object> probe(map->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(map->FindInCodeCache(*name, flags), isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedLoadStubCompiler compiler(isolate_); |
@@ -375,7 +387,8 @@ Handle<Code> StubCache::ComputeKeyedLoadFunctionPrototype( |
Handle<JSFunction> receiver) { |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC, Code::CALLBACKS); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedLoadStubCompiler compiler(isolate_); |
@@ -396,7 +409,8 @@ Handle<Code> StubCache::ComputeStoreField(Handle<String> name, |
(transition.is_null()) ? Code::FIELD : Code::MAP_TRANSITION; |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
Code::STORE_IC, type, strict_mode); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
StoreStubCompiler compiler(isolate_, strict_mode); |
@@ -438,7 +452,7 @@ Handle<Code> StubCache::ComputeKeyedLoadOrStoreElement( |
UNREACHABLE(); |
break; |
} |
- Handle<Object> probe(receiver_map->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver_map->FindInCodeCache(*name, flags), isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
Handle<Code> code; |
@@ -490,7 +504,8 @@ Handle<Code> StubCache::ComputeStoreGlobal(Handle<String> name, |
StrictModeFlag strict_mode) { |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
Code::STORE_IC, Code::NORMAL, strict_mode); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
StoreStubCompiler compiler(isolate_, strict_mode); |
@@ -510,7 +525,8 @@ Handle<Code> StubCache::ComputeStoreCallback(Handle<String> name, |
ASSERT(v8::ToCData<Address>(callback->setter()) != 0); |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
Code::STORE_IC, Code::CALLBACKS, strict_mode); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
StoreStubCompiler compiler(isolate_, strict_mode); |
@@ -530,7 +546,8 @@ Handle<Code> StubCache::ComputeStoreViaSetter(Handle<String> name, |
StrictModeFlag strict_mode) { |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
Code::STORE_IC, Code::CALLBACKS, strict_mode); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
StoreStubCompiler compiler(isolate_, strict_mode); |
@@ -548,7 +565,8 @@ Handle<Code> StubCache::ComputeStoreInterceptor(Handle<String> name, |
StrictModeFlag strict_mode) { |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
Code::STORE_IC, Code::INTERCEPTOR, strict_mode); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
StoreStubCompiler compiler(isolate_, strict_mode); |
@@ -568,7 +586,8 @@ Handle<Code> StubCache::ComputeKeyedStoreField(Handle<String> name, |
(transition.is_null()) ? Code::FIELD : Code::MAP_TRANSITION; |
Code::Flags flags = Code::ComputeMonomorphicFlags( |
Code::KEYED_STORE_IC, type, strict_mode); |
- Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
KeyedStoreStubCompiler compiler(isolate(), strict_mode, |
@@ -610,7 +629,8 @@ Handle<Code> StubCache::ComputeCallConstant(int argc, |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(kind, Code::CONSTANT_FUNCTION, extra_state, |
cache_holder, argc); |
- Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
CallStubCompiler compiler(isolate_, argc, kind, extra_state, cache_holder); |
@@ -648,7 +668,8 @@ Handle<Code> StubCache::ComputeCallField(int argc, |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(kind, Code::FIELD, extra_state, |
cache_holder, argc); |
- Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
CallStubCompiler compiler(isolate_, argc, kind, extra_state, cache_holder); |
@@ -685,7 +706,8 @@ Handle<Code> StubCache::ComputeCallInterceptor(int argc, |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(kind, Code::INTERCEPTOR, extra_state, |
cache_holder, argc); |
- Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
CallStubCompiler compiler(isolate(), argc, kind, extra_state, cache_holder); |
@@ -715,7 +737,8 @@ Handle<Code> StubCache::ComputeCallGlobal(int argc, |
Code::Flags flags = |
Code::ComputeMonomorphicFlags(kind, Code::NORMAL, extra_state, |
cache_holder, argc); |
- Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags)); |
+ Handle<Object> probe(map_holder->map()->FindInCodeCache(*name, flags), |
+ isolate_); |
if (probe->IsCode()) return Handle<Code>::cast(probe); |
CallStubCompiler compiler(isolate(), argc, kind, extra_state, cache_holder); |