| Index: src/parser.h
|
| diff --git a/src/parser.h b/src/parser.h
|
| index 9624301fcdd65a1c4ef08f1cc89c60bd573c05e0..36cbe8fb39a66ca4a4cb46b122a3ffce18de7af9 100644
|
| --- a/src/parser.h
|
| +++ b/src/parser.h
|
| @@ -43,8 +43,6 @@ class FuncNameInferrer;
|
| class ParserLog;
|
| class PositionStack;
|
| class Target;
|
| -class LexicalScope;
|
| -class SaveScope;
|
|
|
| template <typename T> class ZoneListWrapper;
|
|
|
| @@ -69,30 +67,32 @@ class ParserMessage : public Malloced {
|
|
|
| class FunctionEntry BASE_EMBEDDED {
|
| public:
|
| + enum {
|
| + kStartPositionIndex,
|
| + kEndPositionIndex,
|
| + kLiteralCountIndex,
|
| + kPropertyCountIndex,
|
| + kStrictModeIndex,
|
| + kSize
|
| + };
|
| +
|
| explicit FunctionEntry(Vector<unsigned> backing) : backing_(backing) { }
|
| FunctionEntry() : backing_(Vector<unsigned>::empty()) { }
|
|
|
| - int start_pos() { return backing_[kStartPosOffset]; }
|
| - int end_pos() { return backing_[kEndPosOffset]; }
|
| - int literal_count() { return backing_[kLiteralCountOffset]; }
|
| - int property_count() { return backing_[kPropertyCountOffset]; }
|
| + int start_pos() { return backing_[kStartPositionIndex]; }
|
| + int end_pos() { return backing_[kEndPositionIndex]; }
|
| + int literal_count() { return backing_[kLiteralCountIndex]; }
|
| + int property_count() { return backing_[kPropertyCountIndex]; }
|
| StrictModeFlag strict_mode_flag() {
|
| - ASSERT(backing_[kStrictModeOffset] == kStrictMode ||
|
| - backing_[kStrictModeOffset] == kNonStrictMode);
|
| - return static_cast<StrictModeFlag>(backing_[kStrictModeOffset]);
|
| + ASSERT(backing_[kStrictModeIndex] == kStrictMode ||
|
| + backing_[kStrictModeIndex] == kNonStrictMode);
|
| + return static_cast<StrictModeFlag>(backing_[kStrictModeIndex]);
|
| }
|
|
|
| - bool is_valid() { return backing_.length() > 0; }
|
| -
|
| - static const int kSize = 5;
|
| + bool is_valid() { return !backing_.is_empty(); }
|
|
|
| private:
|
| Vector<unsigned> backing_;
|
| - static const int kStartPosOffset = 0;
|
| - static const int kEndPosOffset = 1;
|
| - static const int kLiteralCountOffset = 2;
|
| - static const int kPropertyCountOffset = 3;
|
| - static const int kStrictModeOffset = 4;
|
| };
|
|
|
|
|
| @@ -451,9 +451,7 @@ class Parser {
|
| // should be checked.
|
| static const int kMaxNumFunctionParameters = 32766;
|
| static const int kMaxNumFunctionLocals = 32767;
|
| - FunctionLiteral* ParseLazy(CompilationInfo* info,
|
| - UC16CharacterStream* source,
|
| - ZoneScope* zone_scope);
|
| +
|
| enum Mode {
|
| PARSE_LAZILY,
|
| PARSE_EAGERLY
|
| @@ -471,6 +469,13 @@ class Parser {
|
| kHasNoInitializers
|
| };
|
|
|
| + class BlockState;
|
| + class FunctionState;
|
| +
|
| + FunctionLiteral* ParseLazy(CompilationInfo* info,
|
| + UC16CharacterStream* source,
|
| + ZoneScope* zone_scope);
|
| +
|
| Isolate* isolate() { return isolate_; }
|
| Zone* zone() { return isolate_->zone(); }
|
|
|
| @@ -730,7 +735,7 @@ class Parser {
|
|
|
| Scope* top_scope_;
|
|
|
| - LexicalScope* lexical_scope_;
|
| + FunctionState* current_function_state_;
|
| Mode mode_;
|
|
|
| Target* target_stack_; // for break, continue statements
|
| @@ -747,8 +752,8 @@ class Parser {
|
| bool parenthesized_function_;
|
| bool harmony_scoping_;
|
|
|
| - friend class LexicalScope;
|
| - friend class SaveScope;
|
| + friend class BlockState;
|
| + friend class FunctionState;
|
| };
|
|
|
|
|
|
|