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_BASE_H | 5 #ifndef V8_PARSING_PARSER_BASE_H |
6 #define V8_PARSING_PARSER_BASE_H | 6 #define V8_PARSING_PARSER_BASE_H |
7 | 7 |
8 #include "src/ast/ast.h" | 8 #include "src/ast/ast.h" |
9 #include "src/ast/scopes.h" | 9 #include "src/ast/scopes.h" |
10 #include "src/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
(...skipping 3097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3108 if (spread_pos.IsValid()) { | 3108 if (spread_pos.IsValid()) { |
3109 args = impl()->PrepareSpreadArguments(args); | 3109 args = impl()->PrepareSpreadArguments(args); |
3110 result = impl()->SpreadCall(result, args, pos); | 3110 result = impl()->SpreadCall(result, args, pos); |
3111 } else { | 3111 } else { |
3112 result = factory()->NewCall(result, args, pos, is_possibly_eval); | 3112 result = factory()->NewCall(result, args, pos, is_possibly_eval); |
3113 } | 3113 } |
3114 | 3114 |
3115 // Explicit calls to the super constructor using super() perform an | 3115 // Explicit calls to the super constructor using super() perform an |
3116 // implicit binding assignment to the 'this' variable. | 3116 // implicit binding assignment to the 'this' variable. |
3117 if (is_super_call) { | 3117 if (is_super_call) { |
| 3118 result = impl()->RewriteSuperCall(result); |
3118 ExpressionT this_expr = impl()->ThisExpression(pos); | 3119 ExpressionT this_expr = impl()->ThisExpression(pos); |
3119 result = | 3120 result = |
3120 factory()->NewAssignment(Token::INIT, this_expr, result, pos); | 3121 factory()->NewAssignment(Token::INIT, this_expr, result, pos); |
3121 } | 3122 } |
3122 | 3123 |
3123 if (fni_ != NULL) fni_->RemoveLastFunction(); | 3124 if (fni_ != NULL) fni_->RemoveLastFunction(); |
3124 break; | 3125 break; |
3125 } | 3126 } |
3126 | 3127 |
3127 case Token::PERIOD: { | 3128 case Token::PERIOD: { |
(...skipping 1179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4307 has_seen_constructor_ = true; | 4308 has_seen_constructor_ = true; |
4308 return; | 4309 return; |
4309 } | 4310 } |
4310 } | 4311 } |
4311 | 4312 |
4312 | 4313 |
4313 } // namespace internal | 4314 } // namespace internal |
4314 } // namespace v8 | 4315 } // namespace v8 |
4315 | 4316 |
4316 #endif // V8_PARSING_PARSER_BASE_H | 4317 #endif // V8_PARSING_PARSER_BASE_H |
OLD | NEW |