Chromium Code Reviews| Index: src/stub-cache.cc |
| diff --git a/src/stub-cache.cc b/src/stub-cache.cc |
| index bd7163a2f1da676ad36bed0d8b24bd53e79e1887..b75ac8df4f106c9a29d44acf79eb73ae5654d203 100644 |
| --- a/src/stub-cache.cc |
| +++ b/src/stub-cache.cc |
| @@ -171,6 +171,27 @@ Handle<Code> StubCache::ComputeLoadCallback(Handle<String> name, |
| } |
| +Handle<Code> StubCache::ComputeLoadViaGetter(Handle<String> name, |
| + Handle<JSObject> receiver, |
| + Handle<JSObject> holder, |
| + Handle<JSFunction> getter) { |
| + ASSERT(getter->IsSpecFunction()); |
|
Michael Starzinger
2012/06/08 07:58:33
Shouldn't that be getter->IsJSFunction() here, or
Sven Panne
2012/06/08 08:47:52
This was just a leftover of a previous weaker typi
|
| + ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP); |
| + // Note: map holder = receiver, CheckType = RECEIVER_MAP_CHECK; |
|
Michael Starzinger
2012/06/08 07:58:33
I don't understand this comment. Can we either tur
Sven Panne
2012/06/08 08:47:52
And this was just a leftover when trying to make s
|
| + Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, CALLBACKS); |
| + Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags)); |
| + if (probe->IsCode()) return Handle<Code>::cast(probe); |
| + |
| + LoadStubCompiler compiler(isolate_); |
| + Handle<Code> code = |
| + compiler.CompileLoadViaGetter(name, receiver, holder, getter); |
| + PROFILE(isolate_, CodeCreateEvent(Logger::LOAD_IC_TAG, *code, *name)); |
| + GDBJIT(AddCode(GDBJITInterface::LOAD_IC, *name, *code)); |
| + JSObject::UpdateMapCodeCache(receiver, name, code); |
| + return code; |
| +} |
| + |
| + |
| Handle<Code> StubCache::ComputeLoadConstant(Handle<String> name, |
| Handle<JSObject> receiver, |
| Handle<JSObject> holder, |