OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_PARSING_PARSER_H_ | 5 #ifndef V8_PARSING_PARSER_H_ |
6 #define V8_PARSING_PARSER_H_ | 6 #define V8_PARSING_PARSER_H_ |
7 | 7 |
8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/ast/ast.h" | 9 #include "src/ast/ast.h" |
10 #include "src/ast/scopes.h" | 10 #include "src/ast/scopes.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 #define FLAG_ACCESSOR(flag, getter, setter) \ | 46 #define FLAG_ACCESSOR(flag, getter, setter) \ |
47 bool getter() const { return GetFlag(flag); } \ | 47 bool getter() const { return GetFlag(flag); } \ |
48 void setter() { SetFlag(flag); } \ | 48 void setter() { SetFlag(flag); } \ |
49 void setter(bool val) { SetFlag(flag, val); } | 49 void setter(bool val) { SetFlag(flag, val); } |
50 | 50 |
51 FLAG_ACCESSOR(kToplevel, is_toplevel, set_toplevel) | 51 FLAG_ACCESSOR(kToplevel, is_toplevel, set_toplevel) |
52 FLAG_ACCESSOR(kLazy, is_lazy, set_lazy) | 52 FLAG_ACCESSOR(kLazy, is_lazy, set_lazy) |
53 FLAG_ACCESSOR(kEval, is_eval, set_eval) | 53 FLAG_ACCESSOR(kEval, is_eval, set_eval) |
54 FLAG_ACCESSOR(kGlobal, is_global, set_global) | 54 FLAG_ACCESSOR(kGlobal, is_global, set_global) |
55 FLAG_ACCESSOR(kStrictMode, is_strict_mode, set_strict_mode) | 55 FLAG_ACCESSOR(kStrictMode, is_strict_mode, set_strict_mode) |
56 FLAG_ACCESSOR(kStrongMode, is_strong_mode, set_strong_mode) | |
57 FLAG_ACCESSOR(kNative, is_native, set_native) | 56 FLAG_ACCESSOR(kNative, is_native, set_native) |
58 FLAG_ACCESSOR(kModule, is_module, set_module) | 57 FLAG_ACCESSOR(kModule, is_module, set_module) |
59 FLAG_ACCESSOR(kAllowLazyParsing, allow_lazy_parsing, set_allow_lazy_parsing) | 58 FLAG_ACCESSOR(kAllowLazyParsing, allow_lazy_parsing, set_allow_lazy_parsing) |
60 FLAG_ACCESSOR(kAstValueFactoryOwned, ast_value_factory_owned, | 59 FLAG_ACCESSOR(kAstValueFactoryOwned, ast_value_factory_owned, |
61 set_ast_value_factory_owned) | 60 set_ast_value_factory_owned) |
62 | 61 |
63 #undef FLAG_ACCESSOR | 62 #undef FLAG_ACCESSOR |
64 | 63 |
65 void set_parse_restriction(ParseRestriction restriction) { | 64 void set_parse_restriction(ParseRestriction restriction) { |
66 SetFlag(kParseRestriction, restriction != NO_PARSE_RESTRICTION); | 65 SetFlag(kParseRestriction, restriction != NO_PARSE_RESTRICTION); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 Handle<SharedFunctionInfo> shared_info() { return shared_; } | 129 Handle<SharedFunctionInfo> shared_info() { return shared_; } |
131 Handle<Script> script() { return script_; } | 130 Handle<Script> script() { return script_; } |
132 Handle<Context> context() { return context_; } | 131 Handle<Context> context() { return context_; } |
133 void clear_script() { script_ = Handle<Script>::null(); } | 132 void clear_script() { script_ = Handle<Script>::null(); } |
134 void set_isolate(Isolate* isolate) { isolate_ = isolate; } | 133 void set_isolate(Isolate* isolate) { isolate_ = isolate; } |
135 void set_context(Handle<Context> context) { context_ = context; } | 134 void set_context(Handle<Context> context) { context_ = context; } |
136 void set_script(Handle<Script> script) { script_ = script; } | 135 void set_script(Handle<Script> script) { script_ = script; } |
137 //-------------------------------------------------------------------------- | 136 //-------------------------------------------------------------------------- |
138 | 137 |
139 LanguageMode language_mode() { | 138 LanguageMode language_mode() { |
140 return construct_language_mode(is_strict_mode(), is_strong_mode()); | 139 return construct_language_mode(is_strict_mode()); |
141 } | 140 } |
142 void set_language_mode(LanguageMode language_mode) { | 141 void set_language_mode(LanguageMode language_mode) { |
143 STATIC_ASSERT(LANGUAGE_END == 3); | 142 STATIC_ASSERT(LANGUAGE_END == 3); |
144 set_strict_mode(language_mode & STRICT_BIT); | 143 set_strict_mode(is_strict(language_mode)); |
145 set_strong_mode(language_mode & STRONG_BIT); | |
146 } | 144 } |
147 | 145 |
148 void ReopenHandlesInNewHandleScope() { | 146 void ReopenHandlesInNewHandleScope() { |
149 closure_ = Handle<JSFunction>(*closure_); | 147 closure_ = Handle<JSFunction>(*closure_); |
150 shared_ = Handle<SharedFunctionInfo>(*shared_); | 148 shared_ = Handle<SharedFunctionInfo>(*shared_); |
151 script_ = Handle<Script>(*script_); | 149 script_ = Handle<Script>(*script_); |
152 context_ = Handle<Context>(*context_); | 150 context_ = Handle<Context>(*context_); |
153 } | 151 } |
154 | 152 |
155 #ifdef DEBUG | 153 #ifdef DEBUG |
156 bool script_is_native() { return script_->type() == Script::TYPE_NATIVE; } | 154 bool script_is_native() { return script_->type() == Script::TYPE_NATIVE; } |
157 #endif // DEBUG | 155 #endif // DEBUG |
158 | 156 |
159 private: | 157 private: |
160 // Various configuration flags for parsing. | 158 // Various configuration flags for parsing. |
161 enum Flag { | 159 enum Flag { |
162 // ---------- Input flags --------------------------- | 160 // ---------- Input flags --------------------------- |
163 kToplevel = 1 << 0, | 161 kToplevel = 1 << 0, |
164 kLazy = 1 << 1, | 162 kLazy = 1 << 1, |
165 kEval = 1 << 2, | 163 kEval = 1 << 2, |
166 kGlobal = 1 << 3, | 164 kGlobal = 1 << 3, |
167 kStrictMode = 1 << 4, | 165 kStrictMode = 1 << 4, |
168 kStrongMode = 1 << 5, | 166 kNative = 1 << 5, |
169 kNative = 1 << 6, | 167 kParseRestriction = 1 << 6, |
170 kParseRestriction = 1 << 7, | 168 kModule = 1 << 7, |
171 kModule = 1 << 8, | 169 kAllowLazyParsing = 1 << 8, |
172 kAllowLazyParsing = 1 << 9, | |
173 // ---------- Output flags -------------------------- | 170 // ---------- Output flags -------------------------- |
174 kAstValueFactoryOwned = 1 << 10 | 171 kAstValueFactoryOwned = 1 << 9 |
175 }; | 172 }; |
176 | 173 |
177 //------------- Inputs to parsing and scope analysis ----------------------- | 174 //------------- Inputs to parsing and scope analysis ----------------------- |
178 Zone* zone_; | 175 Zone* zone_; |
179 unsigned flags_; | 176 unsigned flags_; |
180 ScriptCompiler::ExternalSourceStream* source_stream_; | 177 ScriptCompiler::ExternalSourceStream* source_stream_; |
181 ScriptCompiler::StreamedSource::Encoding source_stream_encoding_; | 178 ScriptCompiler::StreamedSource::Encoding source_stream_encoding_; |
182 v8::Extension* extension_; | 179 v8::Extension* extension_; |
183 ScriptCompiler::CompileOptions compile_options_; | 180 ScriptCompiler::CompileOptions compile_options_; |
184 Scope* script_scope_; | 181 Scope* script_scope_; |
(...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1033 uint32_t ComputeTemplateLiteralHash(const TemplateLiteral* lit); | 1030 uint32_t ComputeTemplateLiteralHash(const TemplateLiteral* lit); |
1034 | 1031 |
1035 ZoneList<v8::internal::Expression*>* PrepareSpreadArguments( | 1032 ZoneList<v8::internal::Expression*>* PrepareSpreadArguments( |
1036 ZoneList<v8::internal::Expression*>* list); | 1033 ZoneList<v8::internal::Expression*>* list); |
1037 Expression* SpreadCall(Expression* function, | 1034 Expression* SpreadCall(Expression* function, |
1038 ZoneList<v8::internal::Expression*>* args, int pos); | 1035 ZoneList<v8::internal::Expression*>* args, int pos); |
1039 Expression* SpreadCallNew(Expression* function, | 1036 Expression* SpreadCallNew(Expression* function, |
1040 ZoneList<v8::internal::Expression*>* args, int pos); | 1037 ZoneList<v8::internal::Expression*>* args, int pos); |
1041 | 1038 |
1042 void SetLanguageMode(Scope* scope, LanguageMode mode); | 1039 void SetLanguageMode(Scope* scope, LanguageMode mode); |
1043 void RaiseLanguageMode(LanguageMode mode); | 1040 void RaiseLanguageMode(Scope* scope, LanguageMode mode); |
1044 | 1041 |
1045 V8_INLINE void RewriteDestructuringAssignments(); | 1042 V8_INLINE void RewriteDestructuringAssignments(); |
1046 | 1043 |
1047 friend class NonPatternRewriter; | 1044 friend class NonPatternRewriter; |
1048 V8_INLINE Expression* RewriteSpreads(ArrayLiteral* lit); | 1045 V8_INLINE Expression* RewriteSpreads(ArrayLiteral* lit); |
1049 | 1046 |
1050 V8_INLINE void RewriteNonPattern(ExpressionClassifier* classifier, bool* ok); | 1047 V8_INLINE void RewriteNonPattern(ExpressionClassifier* classifier, bool* ok); |
1051 | 1048 |
1052 friend class InitializerRewriter; | 1049 friend class InitializerRewriter; |
1053 void RewriteParameterInitializer(Expression* expr, Scope* scope); | 1050 void RewriteParameterInitializer(Expression* expr, Scope* scope); |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 | 1235 |
1239 DoExpression* ParserTraits::ParseDoExpression(bool* ok) { | 1236 DoExpression* ParserTraits::ParseDoExpression(bool* ok) { |
1240 return parser_->ParseDoExpression(ok); | 1237 return parser_->ParseDoExpression(ok); |
1241 } | 1238 } |
1242 | 1239 |
1243 | 1240 |
1244 } // namespace internal | 1241 } // namespace internal |
1245 } // namespace v8 | 1242 } // namespace v8 |
1246 | 1243 |
1247 #endif // V8_PARSING_PARSER_H_ | 1244 #endif // V8_PARSING_PARSER_H_ |
OLD | NEW |