Index: src/stub-cache.h |
diff --git a/src/stub-cache.h b/src/stub-cache.h |
index 740a7c8e7f1bbf1a7781748045ac5579eb60e339..a99f5bc8fe2fc242b22200b8619bc20812305dc7 100644 |
--- a/src/stub-cache.h |
+++ b/src/stub-cache.h |
@@ -401,7 +401,6 @@ class StubCache { |
// Support functions for IC stubs for callbacks. |
-DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadCallbackProperty); |
DECLARE_RUNTIME_FUNCTION(MaybeObject*, StoreCallbackProperty); |
@@ -535,58 +534,6 @@ class StubCompiler BASE_EMBEDDED { |
MacroAssembler* masm() { return &masm_; } |
void set_failure(Failure* failure) { failure_ = failure; } |
- void GenerateLoadField(Handle<JSObject> object, |
- Handle<JSObject> holder, |
- Register receiver, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- PropertyIndex index, |
- Handle<String> name, |
- Label* miss); |
- |
- void GenerateLoadCallback(Handle<JSObject> object, |
- Handle<JSObject> holder, |
- Register receiver, |
- Register name_reg, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- Register scratch4, |
- Handle<AccessorInfo> callback, |
- Handle<String> name, |
- Label* miss); |
- |
- void GenerateDictionaryLoadCallback(Register receiver, |
- Register name_reg, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- Handle<AccessorInfo> callback, |
- Handle<String> name, |
- Label* miss); |
- |
- void GenerateLoadConstant(Handle<JSObject> object, |
- Handle<JSObject> holder, |
- Register receiver, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- Handle<JSFunction> value, |
- Handle<String> name, |
- Label* miss); |
- |
- void GenerateLoadInterceptor(Handle<JSObject> object, |
- Handle<JSObject> holder, |
- LookupResult* lookup, |
- Register receiver, |
- Register name_reg, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- Handle<String> name, |
- Label* miss); |
- |
static void LookupPostInterceptor(Handle<JSObject> holder, |
Handle<String> name, |
LookupResult* lookup); |
@@ -602,6 +549,9 @@ class StubCompiler BASE_EMBEDDED { |
}; |
+enum FrontendCheckType { PERFORM_INITIAL_CHECKS, SKIP_INITIAL_CHECKS }; |
+ |
+ |
class BaseLoadStubCompiler: public StubCompiler { |
public: |
BaseLoadStubCompiler(Isolate* isolate, Register* registers) |
@@ -628,6 +578,49 @@ class BaseLoadStubCompiler: public StubCompiler { |
Handle<String> name); |
protected: |
+ Register HandlerFrontendHeader(Handle<JSObject> object, |
+ Register object_reg, |
+ Handle<JSObject> holder, |
+ Handle<String> name, |
+ Label* success, |
+ FrontendCheckType check); |
+ void HandlerFrontendFooter(Label* success, Label* miss); |
+ |
+ Register HandlerFrontend(Handle<JSObject> object, |
+ Register object_reg, |
+ Handle<JSObject> holder, |
+ Handle<String> name, |
+ Label* success, |
+ FrontendCheckType check); |
+ Register CallbackHandlerFrontend(Handle<JSObject> object, |
+ Register object_reg, |
+ Handle<JSObject> holder, |
+ Handle<String> name, |
+ Label* success, |
+ FrontendCheckType check, |
+ Handle<AccessorInfo> callback); |
+ void NonexistentHandlerFrontend(Handle<JSObject> object, |
+ Handle<JSObject> last, |
+ Handle<String> name, |
+ Label* success, |
+ Handle<GlobalObject> global); |
+ |
+ void GenerateLoadField(Register reg, |
+ Handle<JSObject> holder, |
+ PropertyIndex index); |
+ void GenerateLoadConstant(Handle<JSFunction> value); |
+ void GenerateLoadCallback(Register reg, Handle<AccessorInfo> callback); |
+ void GenerateLoadInterceptor(Register holder_reg, |
+ Handle<JSObject> object, |
+ Handle<JSObject> holder, |
+ LookupResult* lookup, |
+ Handle<String> name); |
+ void GenerateLoadPostInterceptor(Register reg, |
+ Handle<JSObject> interceptor_holder, |
+ Handle<String> name, |
+ LookupResult* lookup); |
+ |
+ |
Register receiver() { return registers_[0]; } |
Register name() { return registers_[1]; } |
Register scratch1() { return registers_[2]; } |