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

Side by Side Diff: src/ast.h

Issue 661433002: Implement the new semantics for 'super(...)' (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: CR feedback Created 6 years, 2 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 | « src/arm64/full-codegen-arm64.cc ('k') | src/ast.cc » ('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 1833 matching lines...) Expand 10 before | Expand all | Expand 10 after
1844 bool ComputeGlobalTarget(Handle<GlobalObject> global, LookupIterator* it); 1844 bool ComputeGlobalTarget(Handle<GlobalObject> global, LookupIterator* it);
1845 1845
1846 BailoutId ReturnId() const { return BailoutId(base_id() + 0); } 1846 BailoutId ReturnId() const { return BailoutId(base_id() + 0); }
1847 BailoutId EvalOrLookupId() const { return BailoutId(base_id() + 1); } 1847 BailoutId EvalOrLookupId() const { return BailoutId(base_id() + 1); }
1848 1848
1849 enum CallType { 1849 enum CallType {
1850 POSSIBLY_EVAL_CALL, 1850 POSSIBLY_EVAL_CALL,
1851 GLOBAL_CALL, 1851 GLOBAL_CALL,
1852 LOOKUP_SLOT_CALL, 1852 LOOKUP_SLOT_CALL,
1853 PROPERTY_CALL, 1853 PROPERTY_CALL,
1854 SUPER_CALL,
1854 OTHER_CALL 1855 OTHER_CALL
1855 }; 1856 };
1856 1857
1857 // Helpers to determine how to handle the call. 1858 // Helpers to determine how to handle the call.
1858 CallType GetCallType(Isolate* isolate) const; 1859 CallType GetCallType(Isolate* isolate) const;
1859 bool IsUsingCallFeedbackSlot(Isolate* isolate) const; 1860 bool IsUsingCallFeedbackSlot(Isolate* isolate) const;
1860 1861
1861 #ifdef DEBUG 1862 #ifdef DEBUG
1862 // Used to assert that the FullCodeGenerator records the return site. 1863 // Used to assert that the FullCodeGenerator records the return site.
1863 bool return_is_recorded_; 1864 bool return_is_recorded_;
(...skipping 1603 matching lines...) Expand 10 before | Expand all | Expand 10 after
3467 } 3468 }
3468 3469
3469 Property* NewProperty(Expression* obj, Expression* key, int pos) { 3470 Property* NewProperty(Expression* obj, Expression* key, int pos) {
3470 Property* prop = new (zone_) Property(zone_, obj, key, pos, id_gen_); 3471 Property* prop = new (zone_) Property(zone_, obj, key, pos, id_gen_);
3471 VISIT_AND_RETURN(Property, prop) 3472 VISIT_AND_RETURN(Property, prop)
3472 } 3473 }
3473 3474
3474 Call* NewCall(Expression* expression, 3475 Call* NewCall(Expression* expression,
3475 ZoneList<Expression*>* arguments, 3476 ZoneList<Expression*>* arguments,
3476 int pos) { 3477 int pos) {
3477 SuperReference* super_ref = expression->AsSuperReference(); 3478 Call* call = new (zone_) Call(zone_, expression, arguments, pos, id_gen_);
3478 Call* call;
3479 if (super_ref != NULL) {
3480 Literal* constructor =
3481 NewStringLiteral(ast_value_factory_->constructor_string(), pos);
3482 Property* superConstructor = NewProperty(super_ref, constructor, pos);
3483 call = new (zone_) Call(zone_, superConstructor, arguments, pos, id_gen_);
3484 } else {
3485 call = new (zone_) Call(zone_, expression, arguments, pos, id_gen_);
3486 }
3487 VISIT_AND_RETURN(Call, call) 3479 VISIT_AND_RETURN(Call, call)
3488 } 3480 }
3489 3481
3490 CallNew* NewCallNew(Expression* expression, 3482 CallNew* NewCallNew(Expression* expression,
3491 ZoneList<Expression*>* arguments, 3483 ZoneList<Expression*>* arguments,
3492 int pos) { 3484 int pos) {
3493 CallNew* call = 3485 CallNew* call =
3494 new (zone_) CallNew(zone_, expression, arguments, pos, id_gen_); 3486 new (zone_) CallNew(zone_, expression, arguments, pos, id_gen_);
3495 VISIT_AND_RETURN(CallNew, call) 3487 VISIT_AND_RETURN(CallNew, call)
3496 } 3488 }
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
3629 Zone* zone_; 3621 Zone* zone_;
3630 Visitor visitor_; 3622 Visitor visitor_;
3631 AstValueFactory* ast_value_factory_; 3623 AstValueFactory* ast_value_factory_;
3632 AstNode::IdGen* id_gen_; 3624 AstNode::IdGen* id_gen_;
3633 }; 3625 };
3634 3626
3635 3627
3636 } } // namespace v8::internal 3628 } } // namespace v8::internal
3637 3629
3638 #endif // V8_AST_H_ 3630 #endif // V8_AST_H_
OLDNEW
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/ast.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698