| Index: src/stub-cache.h
|
| diff --git a/src/stub-cache.h b/src/stub-cache.h
|
| index daa1e6e966042c6a0294384afb1cd8129cbbe9dc..f55c440ea4e7c753f51bb55fe5d80dcd8630b977 100644
|
| --- a/src/stub-cache.h
|
| +++ b/src/stub-cache.h
|
| @@ -567,6 +567,7 @@ class LoadStubCompiler: public BaseLoadStoreStubCompiler {
|
| Handle<JSFunction> getter);
|
|
|
| static void GenerateLoadViaGetter(MacroAssembler* masm,
|
| + Handle<HeapType> type,
|
| Register receiver,
|
| Handle<JSFunction> getter);
|
|
|
| @@ -611,7 +612,8 @@ class LoadStubCompiler: public BaseLoadStoreStubCompiler {
|
| void GenerateLoadConstant(Handle<Object> value);
|
| void GenerateLoadCallback(Register reg,
|
| Handle<ExecutableAccessorInfo> callback);
|
| - void GenerateLoadCallback(const CallOptimization& call_optimization);
|
| + void GenerateLoadCallback(const CallOptimization& call_optimization,
|
| + Handle<Map> receiver_map);
|
| void GenerateLoadInterceptor(Register holder_reg,
|
| Handle<Object> object,
|
| Handle<JSObject> holder,
|
| @@ -711,6 +713,7 @@ class StoreStubCompiler: public BaseLoadStoreStubCompiler {
|
| const CallOptimization& call_optimization);
|
|
|
| static void GenerateStoreViaSetter(MacroAssembler* masm,
|
| + Handle<HeapType> type,
|
| Handle<JSFunction> setter);
|
|
|
| Handle<Code> CompileStoreViaSetter(Handle<JSObject> object,
|
| @@ -827,11 +830,9 @@ class CallOptimization BASE_EMBEDDED {
|
| Handle<Map> receiver_map,
|
| HolderLookup* holder_lookup) const;
|
|
|
| - bool IsCompatibleReceiver(Object* receiver) {
|
| - ASSERT(is_simple_api_call());
|
| - if (expected_receiver_type_.is_null()) return true;
|
| - return expected_receiver_type_->IsTemplateFor(receiver);
|
| - }
|
| + // Check if the api holder is between the receiver and the holder.
|
| + bool IsCompatibleReceiver(Handle<Object> receiver,
|
| + Handle<JSObject> holder) const;
|
|
|
| private:
|
| void Initialize(Handle<JSFunction> function);
|
|
|