| Index: src/ic/handler-compiler.h
|
| diff --git a/src/ic/handler-compiler.h b/src/ic/handler-compiler.h
|
| index bd3f788e38cb6918cdacef5887af06e7f68e8fa3..077db923076e76a7095cdf16744469354ccece3b 100644
|
| --- a/src/ic/handler-compiler.h
|
| +++ b/src/ic/handler-compiler.h
|
| @@ -14,6 +14,7 @@ namespace internal {
|
| class CallOptimization;
|
|
|
| enum PrototypeCheckType { CHECK_ALL_MAPS, SKIP_RECEIVER };
|
| +enum ReturnHolder { RETURN_HOLDER, DONT_RETURN_ANYTHING };
|
|
|
| class PropertyHandlerCompiler : public PropertyAccessCompiler {
|
| public:
|
| @@ -30,7 +31,7 @@ class PropertyHandlerCompiler : public PropertyAccessCompiler {
|
| virtual ~PropertyHandlerCompiler() {}
|
|
|
| virtual Register FrontendHeader(Register object_reg, Handle<Name> name,
|
| - Label* miss) {
|
| + Label* miss, ReturnHolder return_what) {
|
| UNREACHABLE();
|
| return receiver();
|
| }
|
| @@ -95,7 +96,7 @@ class PropertyHandlerCompiler : public PropertyAccessCompiler {
|
| Register CheckPrototypes(Register object_reg, Register holder_reg,
|
| Register scratch1, Register scratch2,
|
| Handle<Name> name, Label* miss,
|
| - PrototypeCheckType check = CHECK_ALL_MAPS);
|
| + PrototypeCheckType check, ReturnHolder return_what);
|
|
|
| Handle<Code> GetCode(Code::Kind kind, Code::StubType type, Handle<Name> name);
|
| void set_holder(Handle<JSObject> holder) { holder_ = holder; }
|
| @@ -172,7 +173,7 @@ class NamedLoadHandlerCompiler : public PropertyHandlerCompiler {
|
|
|
| protected:
|
| virtual Register FrontendHeader(Register object_reg, Handle<Name> name,
|
| - Label* miss);
|
| + Label* miss, ReturnHolder return_what);
|
|
|
| virtual void FrontendFooter(Handle<Name> name, Label* miss);
|
|
|
| @@ -246,7 +247,7 @@ class NamedStoreHandlerCompiler : public PropertyHandlerCompiler {
|
|
|
| protected:
|
| virtual Register FrontendHeader(Register object_reg, Handle<Name> name,
|
| - Label* miss);
|
| + Label* miss, ReturnHolder return_what);
|
|
|
| virtual void FrontendFooter(Handle<Name> name, Label* miss);
|
| void GenerateRestoreName(Label* label, Handle<Name> name);
|
|
|