| Index: src/code-stubs.h
|
| ===================================================================
|
| --- src/code-stubs.h (revision 7254)
|
| +++ src/code-stubs.h (working copy)
|
| @@ -277,12 +277,17 @@
|
|
|
| class FastNewClosureStub : public CodeStub {
|
| public:
|
| + explicit FastNewClosureStub(StrictModeFlag strict_mode)
|
| + : strict_mode_(strict_mode) { }
|
| +
|
| void Generate(MacroAssembler* masm);
|
|
|
| private:
|
| const char* GetName() { return "FastNewClosureStub"; }
|
| Major MajorKey() { return FastNewClosure; }
|
| - int MinorKey() { return 0; }
|
| + int MinorKey() { return strict_mode_; }
|
| +
|
| + StrictModeFlag strict_mode_;
|
| };
|
|
|
|
|
| @@ -654,7 +659,8 @@
|
| public:
|
| enum Type {
|
| READ_ELEMENT,
|
| - NEW_OBJECT
|
| + NEW_NON_STRICT,
|
| + NEW_STRICT
|
| };
|
|
|
| explicit ArgumentsAccessStub(Type type) : type_(type) { }
|
| @@ -669,6 +675,19 @@
|
| void GenerateReadElement(MacroAssembler* masm);
|
| void GenerateNewObject(MacroAssembler* masm);
|
|
|
| + int GetArgumentsBoilerplateIndex() const {
|
| + return (type_ == NEW_STRICT)
|
| + ? Context::STRICT_MODE_ARGUMENTS_BOILERPLATE_INDEX
|
| + : Context::ARGUMENTS_BOILERPLATE_INDEX;
|
| + }
|
| +
|
| + int GetArgumentsObjectSize() const {
|
| + if (type_ == NEW_STRICT)
|
| + return Heap::kArgumentsObjectSizeStrict;
|
| + else
|
| + return Heap::kArgumentsObjectSize;
|
| + }
|
| +
|
| const char* GetName() { return "ArgumentsAccessStub"; }
|
|
|
| #ifdef DEBUG
|
|
|