| 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());
|
| + ASSERT(IC::GetCodeCacheForObject(*receiver, *holder) == OWN_MAP);
|
| + // Note: map holder = receiver, CheckType = RECEIVER_MAP_CHECK;
|
| + 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,
|
|
|