Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1652)

Side by Side Diff: src/preparser.h

Issue 1143813002: Reland "[strong] Object literals create strong objects" (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix handlification bug Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/parser.cc ('k') | src/runtime/runtime.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_PREPARSER_H 5 #ifndef V8_PREPARSER_H
6 #define V8_PREPARSER_H 6 #define V8_PREPARSER_H
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/bailout-reason.h" 10 #include "src/bailout-reason.h"
(...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 int pos) { 1365 int pos) {
1366 return PreParserExpression::Default(); 1366 return PreParserExpression::Default();
1367 } 1367 }
1368 PreParserExpression NewNumberLiteral(double number, 1368 PreParserExpression NewNumberLiteral(double number,
1369 int pos) { 1369 int pos) {
1370 return PreParserExpression::Default(); 1370 return PreParserExpression::Default();
1371 } 1371 }
1372 PreParserExpression NewRegExpLiteral(PreParserIdentifier js_pattern, 1372 PreParserExpression NewRegExpLiteral(PreParserIdentifier js_pattern,
1373 PreParserIdentifier js_flags, 1373 PreParserIdentifier js_flags,
1374 int literal_index, 1374 int literal_index,
1375 bool is_strong,
1375 int pos) { 1376 int pos) {
1376 return PreParserExpression::Default(); 1377 return PreParserExpression::Default();
1377 } 1378 }
1378 PreParserExpression NewArrayLiteral(PreParserExpressionList values, 1379 PreParserExpression NewArrayLiteral(PreParserExpressionList values,
1379 int literal_index, 1380 int literal_index,
1381 bool is_strong,
1380 int pos) { 1382 int pos) {
1381 return PreParserExpression::Default(); 1383 return PreParserExpression::Default();
1382 } 1384 }
1383 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, 1385 PreParserExpression NewObjectLiteralProperty(PreParserExpression key,
1384 PreParserExpression value, 1386 PreParserExpression value,
1385 ObjectLiteralProperty::Kind kind, 1387 ObjectLiteralProperty::Kind kind,
1386 bool is_static, 1388 bool is_static,
1387 bool is_computed_name) { 1389 bool is_computed_name) {
1388 return PreParserExpression::Default(); 1390 return PreParserExpression::Default();
1389 } 1391 }
1390 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, 1392 PreParserExpression NewObjectLiteralProperty(PreParserExpression key,
1391 PreParserExpression value, 1393 PreParserExpression value,
1392 bool is_static, 1394 bool is_static,
1393 bool is_computed_name) { 1395 bool is_computed_name) {
1394 return PreParserExpression::Default(); 1396 return PreParserExpression::Default();
1395 } 1397 }
1396 PreParserExpression NewObjectLiteral(PreParserExpressionList properties, 1398 PreParserExpression NewObjectLiteral(PreParserExpressionList properties,
1397 int literal_index, 1399 int literal_index,
1398 int boilerplate_properties, 1400 int boilerplate_properties,
1399 bool has_function, 1401 bool has_function,
1402 bool is_strong,
1400 int pos) { 1403 int pos) {
1401 return PreParserExpression::Default(); 1404 return PreParserExpression::Default();
1402 } 1405 }
1403 PreParserExpression NewVariableProxy(void* variable) { 1406 PreParserExpression NewVariableProxy(void* variable) {
1404 return PreParserExpression::Default(); 1407 return PreParserExpression::Default();
1405 } 1408 }
1406 PreParserExpression NewProperty(PreParserExpression obj, 1409 PreParserExpression NewProperty(PreParserExpression obj,
1407 PreParserExpression key, 1410 PreParserExpression key,
1408 int pos) { 1411 int pos) {
1409 if (obj.IsThis()) { 1412 if (obj.IsThis()) {
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after
2243 2246
2244 IdentifierT js_pattern = this->GetNextSymbol(scanner()); 2247 IdentifierT js_pattern = this->GetNextSymbol(scanner());
2245 if (!scanner()->ScanRegExpFlags()) { 2248 if (!scanner()->ScanRegExpFlags()) {
2246 Next(); 2249 Next();
2247 ReportMessage(MessageTemplate::kMalformedRegExpFlags); 2250 ReportMessage(MessageTemplate::kMalformedRegExpFlags);
2248 *ok = false; 2251 *ok = false;
2249 return Traits::EmptyExpression(); 2252 return Traits::EmptyExpression();
2250 } 2253 }
2251 IdentifierT js_flags = this->GetNextSymbol(scanner()); 2254 IdentifierT js_flags = this->GetNextSymbol(scanner());
2252 Next(); 2255 Next();
2253 return factory()->NewRegExpLiteral(js_pattern, js_flags, literal_index, pos); 2256 return factory()->NewRegExpLiteral(js_pattern, js_flags, literal_index,
2257 is_strong(language_mode()), pos);
2254 } 2258 }
2255 2259
2256 2260
2257 #define CHECK_OK ok); \ 2261 #define CHECK_OK ok); \
2258 if (!*ok) return this->EmptyExpression(); \ 2262 if (!*ok) return this->EmptyExpression(); \
2259 ((void)0 2263 ((void)0
2260 #define DUMMY ) // to make indentation work 2264 #define DUMMY ) // to make indentation work
2261 #undef DUMMY 2265 #undef DUMMY
2262 2266
2263 // Used in functions where the return type is not ExpressionT. 2267 // Used in functions where the return type is not ExpressionT.
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
2508 values->Add(elem, zone_); 2512 values->Add(elem, zone_);
2509 if (peek() != Token::RBRACK) { 2513 if (peek() != Token::RBRACK) {
2510 Expect(Token::COMMA, CHECK_OK); 2514 Expect(Token::COMMA, CHECK_OK);
2511 } 2515 }
2512 } 2516 }
2513 Expect(Token::RBRACK, CHECK_OK); 2517 Expect(Token::RBRACK, CHECK_OK);
2514 2518
2515 // Update the scope information before the pre-parsing bailout. 2519 // Update the scope information before the pre-parsing bailout.
2516 int literal_index = function_state_->NextMaterializedLiteralIndex(); 2520 int literal_index = function_state_->NextMaterializedLiteralIndex();
2517 2521
2518 return factory()->NewArrayLiteral(values, literal_index, pos); 2522 return factory()->NewArrayLiteral(values, literal_index,
2523 is_strong(language_mode()), pos);
2519 } 2524 }
2520 2525
2521 2526
2522 template <class Traits> 2527 template <class Traits>
2523 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParsePropertyName( 2528 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParsePropertyName(
2524 IdentifierT* name, bool* is_get, bool* is_set, bool* is_static, 2529 IdentifierT* name, bool* is_get, bool* is_set, bool* is_static,
2525 bool* is_computed_name, ExpressionClassifier* classifier, bool* ok) { 2530 bool* is_computed_name, ExpressionClassifier* classifier, bool* ok) {
2526 Token::Value token = peek(); 2531 Token::Value token = peek();
2527 int pos = peek_position(); 2532 int pos = peek_position();
2528 2533
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
2777 } 2782 }
2778 Expect(Token::RBRACE, CHECK_OK); 2783 Expect(Token::RBRACE, CHECK_OK);
2779 2784
2780 // Computation of literal_index must happen before pre parse bailout. 2785 // Computation of literal_index must happen before pre parse bailout.
2781 int literal_index = function_state_->NextMaterializedLiteralIndex(); 2786 int literal_index = function_state_->NextMaterializedLiteralIndex();
2782 2787
2783 return factory()->NewObjectLiteral(properties, 2788 return factory()->NewObjectLiteral(properties,
2784 literal_index, 2789 literal_index,
2785 number_of_boilerplate_properties, 2790 number_of_boilerplate_properties,
2786 has_function, 2791 has_function,
2792 is_strong(language_mode()),
2787 pos); 2793 pos);
2788 } 2794 }
2789 2795
2790 2796
2791 template <class Traits> 2797 template <class Traits>
2792 typename Traits::Type::ExpressionList ParserBase<Traits>::ParseArguments( 2798 typename Traits::Type::ExpressionList ParserBase<Traits>::ParseArguments(
2793 Scanner::Location* first_spread_arg_loc, ExpressionClassifier* classifier, 2799 Scanner::Location* first_spread_arg_loc, ExpressionClassifier* classifier,
2794 bool* ok) { 2800 bool* ok) {
2795 // Arguments :: 2801 // Arguments ::
2796 // '(' (AssignmentExpression)*[','] ')' 2802 // '(' (AssignmentExpression)*[','] ')'
(...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after
3999 *ok = false; 4005 *ok = false;
4000 return; 4006 return;
4001 } 4007 }
4002 has_seen_constructor_ = true; 4008 has_seen_constructor_ = true;
4003 return; 4009 return;
4004 } 4010 }
4005 } 4011 }
4006 } } // v8::internal 4012 } } // v8::internal
4007 4013
4008 #endif // V8_PREPARSER_H 4014 #endif // V8_PREPARSER_H
OLDNEW
« no previous file with comments | « src/parser.cc ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698