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_AST_H_ | 5 #ifndef V8_AST_H_ |
6 #define V8_AST_H_ | 6 #define V8_AST_H_ |
7 | 7 |
8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
9 #include "src/ast-value-factory.h" | 9 #include "src/ast-value-factory.h" |
10 #include "src/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
(...skipping 1964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1975 class CallNew final : public Expression { | 1975 class CallNew final : public Expression { |
1976 public: | 1976 public: |
1977 DECLARE_NODE_TYPE(CallNew) | 1977 DECLARE_NODE_TYPE(CallNew) |
1978 | 1978 |
1979 Expression* expression() const { return expression_; } | 1979 Expression* expression() const { return expression_; } |
1980 ZoneList<Expression*>* arguments() const { return arguments_; } | 1980 ZoneList<Expression*>* arguments() const { return arguments_; } |
1981 | 1981 |
1982 // Type feedback information. | 1982 // Type feedback information. |
1983 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1983 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
1984 Isolate* isolate, const ICSlotCache* cache) override { | 1984 Isolate* isolate, const ICSlotCache* cache) override { |
1985 return FeedbackVectorRequirements(FLAG_pretenuring_call_new ? 2 : 1, 0); | 1985 return FeedbackVectorRequirements(1, 0); |
1986 } | 1986 } |
1987 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) override { | 1987 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) override { |
1988 callnew_feedback_slot_ = slot; | 1988 callnew_feedback_slot_ = slot; |
1989 } | 1989 } |
1990 | 1990 |
1991 FeedbackVectorSlot CallNewFeedbackSlot() { | 1991 FeedbackVectorSlot CallNewFeedbackSlot() { |
1992 DCHECK(!callnew_feedback_slot_.IsInvalid()); | 1992 DCHECK(!callnew_feedback_slot_.IsInvalid()); |
1993 return callnew_feedback_slot_; | 1993 return callnew_feedback_slot_; |
1994 } | 1994 } |
1995 FeedbackVectorSlot AllocationSiteFeedbackSlot() { | |
1996 DCHECK(FLAG_pretenuring_call_new); | |
1997 return CallNewFeedbackSlot().next(); | |
1998 } | |
1999 | 1995 |
2000 bool IsMonomorphic() override { return is_monomorphic_; } | 1996 bool IsMonomorphic() override { return is_monomorphic_; } |
2001 Handle<JSFunction> target() const { return target_; } | 1997 Handle<JSFunction> target() const { return target_; } |
2002 Handle<AllocationSite> allocation_site() const { | 1998 Handle<AllocationSite> allocation_site() const { |
2003 return allocation_site_; | 1999 return allocation_site_; |
2004 } | 2000 } |
2005 | 2001 |
2006 static int num_ids() { return parent_num_ids() + 1; } | 2002 static int num_ids() { return parent_num_ids() + 1; } |
2007 static int feedback_slots() { return 1; } | 2003 static int feedback_slots() { return 1; } |
2008 BailoutId ReturnId() const { return BailoutId(local_id(0)); } | 2004 BailoutId ReturnId() const { return BailoutId(local_id(0)); } |
(...skipping 1694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3703 // ZoneObjects which need to persist until scope analysis must be allocated in | 3699 // ZoneObjects which need to persist until scope analysis must be allocated in |
3704 // the parser-level zone. | 3700 // the parser-level zone. |
3705 Zone* parser_zone_; | 3701 Zone* parser_zone_; |
3706 AstValueFactory* ast_value_factory_; | 3702 AstValueFactory* ast_value_factory_; |
3707 }; | 3703 }; |
3708 | 3704 |
3709 | 3705 |
3710 } } // namespace v8::internal | 3706 } } // namespace v8::internal |
3711 | 3707 |
3712 #endif // V8_AST_H_ | 3708 #endif // V8_AST_H_ |
OLD | NEW |