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

Side by Side Diff: src/ast.h

Issue 160073006: Implement handling of arrow functions in the parser (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: What "git cl format" produces Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/flag-definitions.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_AST_H_ 5 #ifndef V8_AST_H_
6 #define V8_AST_H_ 6 #define V8_AST_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/assembler.h" 10 #include "src/assembler.h"
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 // True iff the expression is the null literal. 337 // True iff the expression is the null literal.
338 bool IsNullLiteral() const; 338 bool IsNullLiteral() const;
339 339
340 // True if we can prove that the expression is the undefined literal. 340 // True if we can prove that the expression is the undefined literal.
341 bool IsUndefinedLiteral(Isolate* isolate) const; 341 bool IsUndefinedLiteral(Isolate* isolate) const;
342 342
343 // Expression type bounds 343 // Expression type bounds
344 Bounds bounds() const { return bounds_; } 344 Bounds bounds() const { return bounds_; }
345 void set_bounds(Bounds bounds) { bounds_ = bounds; } 345 void set_bounds(Bounds bounds) { bounds_ = bounds; }
346 346
347 // Whether the expression is parenthesized
348 unsigned parenthesization_level() const { return parenthesization_level_; }
349 bool is_parenthesized() const { return parenthesization_level_ > 0; }
350 void increase_parenthesization_level() { ++parenthesization_level_; }
351
347 // Type feedback information for assignments and properties. 352 // Type feedback information for assignments and properties.
348 virtual bool IsMonomorphic() { 353 virtual bool IsMonomorphic() {
349 UNREACHABLE(); 354 UNREACHABLE();
350 return false; 355 return false;
351 } 356 }
352 virtual SmallMapList* GetReceiverTypes() { 357 virtual SmallMapList* GetReceiverTypes() {
353 UNREACHABLE(); 358 UNREACHABLE();
354 return NULL; 359 return NULL;
355 } 360 }
356 virtual KeyedAccessStoreMode GetStoreMode() { 361 virtual KeyedAccessStoreMode GetStoreMode() {
357 UNREACHABLE(); 362 UNREACHABLE();
358 return STANDARD_STORE; 363 return STANDARD_STORE;
359 } 364 }
360 365
361 // TODO(rossberg): this should move to its own AST node eventually. 366 // TODO(rossberg): this should move to its own AST node eventually.
362 virtual void RecordToBooleanTypeFeedback(TypeFeedbackOracle* oracle); 367 virtual void RecordToBooleanTypeFeedback(TypeFeedbackOracle* oracle);
363 byte to_boolean_types() const { return to_boolean_types_; } 368 byte to_boolean_types() const { return to_boolean_types_; }
364 369
365 BailoutId id() const { return id_; } 370 BailoutId id() const { return id_; }
366 TypeFeedbackId test_id() const { return test_id_; } 371 TypeFeedbackId test_id() const { return test_id_; }
367 372
368 protected: 373 protected:
369 Expression(Zone* zone, int pos) 374 Expression(Zone* zone, int pos)
370 : AstNode(pos), 375 : AstNode(pos),
371 zone_(zone), 376 zone_(zone),
372 bounds_(Bounds::Unbounded(zone)), 377 bounds_(Bounds::Unbounded(zone)),
378 parenthesization_level_(0),
373 id_(GetNextId(zone)), 379 id_(GetNextId(zone)),
374 test_id_(GetNextId(zone)) {} 380 test_id_(GetNextId(zone)) {}
375 void set_to_boolean_types(byte types) { to_boolean_types_ = types; } 381 void set_to_boolean_types(byte types) { to_boolean_types_ = types; }
376 382
377 Zone* zone_; 383 Zone* zone_;
378 384
379 private: 385 private:
380 Bounds bounds_; 386 Bounds bounds_;
381 byte to_boolean_types_; 387 byte to_boolean_types_;
388 unsigned parenthesization_level_;
382 389
383 const BailoutId id_; 390 const BailoutId id_;
384 const TypeFeedbackId test_id_; 391 const TypeFeedbackId test_id_;
385 }; 392 };
386 393
387 394
388 class BreakableStatement : public Statement { 395 class BreakableStatement : public Statement {
389 public: 396 public:
390 enum BreakableType { 397 enum BreakableType {
391 TARGET_FOR_ANONYMOUS, 398 TARGET_FOR_ANONYMOUS,
(...skipping 3033 matching lines...) Expand 10 before | Expand all | Expand 10 after
3425 private: 3432 private:
3426 Zone* zone_; 3433 Zone* zone_;
3427 Visitor visitor_; 3434 Visitor visitor_;
3428 AstValueFactory* ast_value_factory_; 3435 AstValueFactory* ast_value_factory_;
3429 }; 3436 };
3430 3437
3431 3438
3432 } } // namespace v8::internal 3439 } } // namespace v8::internal
3433 3440
3434 #endif // V8_AST_H_ 3441 #endif // V8_AST_H_
OLDNEW
« no previous file with comments | « no previous file | src/flag-definitions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698