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

Side by Side Diff: src/ast.h

Issue 1129853002: Removing FLAG_vector_ics. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: REBASE. 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
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 1589 matching lines...) Expand 10 before | Expand all | Expand 10 after
1600 void set_is_resolved() { 1600 void set_is_resolved() {
1601 bit_field_ = IsResolvedField::update(bit_field_, true); 1601 bit_field_ = IsResolvedField::update(bit_field_, true);
1602 } 1602 }
1603 1603
1604 int end_position() const { return end_position_; } 1604 int end_position() const { return end_position_; }
1605 1605
1606 // Bind this proxy to the variable var. 1606 // Bind this proxy to the variable var.
1607 void BindTo(Variable* var); 1607 void BindTo(Variable* var);
1608 1608
1609 bool UsesVariableFeedbackSlot() const { 1609 bool UsesVariableFeedbackSlot() const {
1610 return FLAG_vector_ics && (var()->IsUnallocated() || var()->IsLookupSlot()); 1610 return var()->IsUnallocated() || var()->IsLookupSlot();
1611 } 1611 }
1612 1612
1613 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( 1613 virtual FeedbackVectorRequirements ComputeFeedbackRequirements(
1614 Isolate* isolate, const ICSlotCache* cache) override; 1614 Isolate* isolate, const ICSlotCache* cache) override;
1615 1615
1616 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, 1616 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot,
1617 ICSlotCache* cache) override; 1617 ICSlotCache* cache) override;
1618 Code::Kind FeedbackICSlotKind(int index) override { return Code::LOAD_IC; } 1618 Code::Kind FeedbackICSlotKind(int index) override { return Code::LOAD_IC; }
1619 FeedbackVectorICSlot VariableFeedbackSlot() { 1619 FeedbackVectorICSlot VariableFeedbackSlot() {
1620 DCHECK(!UsesVariableFeedbackSlot() || !variable_feedback_slot_.IsInvalid()); 1620 DCHECK(!UsesVariableFeedbackSlot() || !variable_feedback_slot_.IsInvalid());
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 bit_field_ = IsForCallField::update(bit_field_, true); 1699 bit_field_ = IsForCallField::update(bit_field_, true);
1700 } 1700 }
1701 bool is_for_call() const { return IsForCallField::decode(bit_field_); } 1701 bool is_for_call() const { return IsForCallField::decode(bit_field_); }
1702 1702
1703 bool IsSuperAccess() { 1703 bool IsSuperAccess() {
1704 return obj()->IsSuperReference(); 1704 return obj()->IsSuperReference();
1705 } 1705 }
1706 1706
1707 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( 1707 virtual FeedbackVectorRequirements ComputeFeedbackRequirements(
1708 Isolate* isolate, const ICSlotCache* cache) override { 1708 Isolate* isolate, const ICSlotCache* cache) override {
1709 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); 1709 return FeedbackVectorRequirements(0, 1);
1710 } 1710 }
1711 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, 1711 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot,
1712 ICSlotCache* cache) override { 1712 ICSlotCache* cache) override {
1713 property_feedback_slot_ = slot; 1713 property_feedback_slot_ = slot;
1714 } 1714 }
1715 Code::Kind FeedbackICSlotKind(int index) override { 1715 Code::Kind FeedbackICSlotKind(int index) override {
1716 return key()->IsPropertyName() ? Code::LOAD_IC : Code::KEYED_LOAD_IC; 1716 return key()->IsPropertyName() ? Code::LOAD_IC : Code::KEYED_LOAD_IC;
1717 } 1717 }
1718 1718
1719 FeedbackVectorICSlot PropertyFeedbackSlot() const { 1719 FeedbackVectorICSlot PropertyFeedbackSlot() const {
1720 DCHECK(!FLAG_vector_ics || !property_feedback_slot_.IsInvalid()); 1720 DCHECK(!property_feedback_slot_.IsInvalid());
1721 return property_feedback_slot_; 1721 return property_feedback_slot_;
1722 } 1722 }
1723 1723
1724 protected: 1724 protected:
1725 Property(Zone* zone, Expression* obj, Expression* key, int pos) 1725 Property(Zone* zone, Expression* obj, Expression* key, int pos)
1726 : Expression(zone, pos), 1726 : Expression(zone, pos),
1727 bit_field_(IsForCallField::encode(false) | 1727 bit_field_(IsForCallField::encode(false) |
1728 IsStringAccessField::encode(false) | 1728 IsStringAccessField::encode(false) |
1729 InlineCacheStateField::encode(UNINITIALIZED)), 1729 InlineCacheStateField::encode(UNINITIALIZED)),
1730 property_feedback_slot_(FeedbackVectorICSlot::Invalid()), 1730 property_feedback_slot_(FeedbackVectorICSlot::Invalid()),
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 public: 1947 public:
1948 DECLARE_NODE_TYPE(CallRuntime) 1948 DECLARE_NODE_TYPE(CallRuntime)
1949 1949
1950 Handle<String> name() const { return raw_name_->string(); } 1950 Handle<String> name() const { return raw_name_->string(); }
1951 const AstRawString* raw_name() const { return raw_name_; } 1951 const AstRawString* raw_name() const { return raw_name_; }
1952 const Runtime::Function* function() const { return function_; } 1952 const Runtime::Function* function() const { return function_; }
1953 ZoneList<Expression*>* arguments() const { return arguments_; } 1953 ZoneList<Expression*>* arguments() const { return arguments_; }
1954 bool is_jsruntime() const { return function_ == NULL; } 1954 bool is_jsruntime() const { return function_ == NULL; }
1955 1955
1956 // Type feedback information. 1956 // Type feedback information.
1957 bool HasCallRuntimeFeedbackSlot() const { 1957 bool HasCallRuntimeFeedbackSlot() const { return is_jsruntime(); }
1958 return FLAG_vector_ics && is_jsruntime();
1959 }
1960 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( 1958 virtual FeedbackVectorRequirements ComputeFeedbackRequirements(
1961 Isolate* isolate, const ICSlotCache* cache) override { 1959 Isolate* isolate, const ICSlotCache* cache) override {
1962 return FeedbackVectorRequirements(0, HasCallRuntimeFeedbackSlot() ? 1 : 0); 1960 return FeedbackVectorRequirements(0, HasCallRuntimeFeedbackSlot() ? 1 : 0);
1963 } 1961 }
1964 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, 1962 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot,
1965 ICSlotCache* cache) override { 1963 ICSlotCache* cache) override {
1966 callruntime_feedback_slot_ = slot; 1964 callruntime_feedback_slot_ = slot;
1967 } 1965 }
1968 Code::Kind FeedbackICSlotKind(int index) override { return Code::LOAD_IC; } 1966 Code::Kind FeedbackICSlotKind(int index) override { return Code::LOAD_IC; }
1969 1967
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
2339 int index() const { 2337 int index() const {
2340 DCHECK_EQ(kDelegating, yield_kind()); 2338 DCHECK_EQ(kDelegating, yield_kind());
2341 return index_; 2339 return index_;
2342 } 2340 }
2343 void set_index(int index) { 2341 void set_index(int index) {
2344 DCHECK_EQ(kDelegating, yield_kind()); 2342 DCHECK_EQ(kDelegating, yield_kind());
2345 index_ = index; 2343 index_ = index;
2346 } 2344 }
2347 2345
2348 // Type feedback information. 2346 // Type feedback information.
2349 bool HasFeedbackSlots() const { 2347 bool HasFeedbackSlots() const { return yield_kind() == kDelegating; }
2350 return FLAG_vector_ics && (yield_kind() == kDelegating);
2351 }
2352 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( 2348 virtual FeedbackVectorRequirements ComputeFeedbackRequirements(
2353 Isolate* isolate, const ICSlotCache* cache) override { 2349 Isolate* isolate, const ICSlotCache* cache) override {
2354 return FeedbackVectorRequirements(0, HasFeedbackSlots() ? 3 : 0); 2350 return FeedbackVectorRequirements(0, HasFeedbackSlots() ? 3 : 0);
2355 } 2351 }
2356 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, 2352 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot,
2357 ICSlotCache* cache) override { 2353 ICSlotCache* cache) override {
2358 yield_first_feedback_slot_ = slot; 2354 yield_first_feedback_slot_ = slot;
2359 } 2355 }
2360 Code::Kind FeedbackICSlotKind(int index) override { 2356 Code::Kind FeedbackICSlotKind(int index) override {
2361 return index == 0 ? Code::KEYED_LOAD_IC : Code::LOAD_IC; 2357 return index == 0 ? Code::KEYED_LOAD_IC : Code::LOAD_IC;
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
2699 DECLARE_NODE_TYPE(SuperReference) 2695 DECLARE_NODE_TYPE(SuperReference)
2700 2696
2701 VariableProxy* this_var() const { return this_var_; } 2697 VariableProxy* this_var() const { return this_var_; }
2702 2698
2703 static int num_ids() { return parent_num_ids() + 1; } 2699 static int num_ids() { return parent_num_ids() + 1; }
2704 TypeFeedbackId HomeObjectFeedbackId() { return TypeFeedbackId(local_id(0)); } 2700 TypeFeedbackId HomeObjectFeedbackId() { return TypeFeedbackId(local_id(0)); }
2705 2701
2706 // Type feedback information. 2702 // Type feedback information.
2707 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( 2703 virtual FeedbackVectorRequirements ComputeFeedbackRequirements(
2708 Isolate* isolate, const ICSlotCache* cache) override { 2704 Isolate* isolate, const ICSlotCache* cache) override {
2709 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); 2705 return FeedbackVectorRequirements(0, 1);
2710 } 2706 }
2711 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, 2707 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot,
2712 ICSlotCache* cache) override { 2708 ICSlotCache* cache) override {
2713 homeobject_feedback_slot_ = slot; 2709 homeobject_feedback_slot_ = slot;
2714 } 2710 }
2715 Code::Kind FeedbackICSlotKind(int index) override { return Code::LOAD_IC; } 2711 Code::Kind FeedbackICSlotKind(int index) override { return Code::LOAD_IC; }
2716 2712
2717 FeedbackVectorICSlot HomeObjectFeedbackSlot() { 2713 FeedbackVectorICSlot HomeObjectFeedbackSlot() {
2718 DCHECK(!FLAG_vector_ics || !homeobject_feedback_slot_.IsInvalid()); 2714 DCHECK(!homeobject_feedback_slot_.IsInvalid());
2719 return homeobject_feedback_slot_; 2715 return homeobject_feedback_slot_;
2720 } 2716 }
2721 2717
2722 protected: 2718 protected:
2723 SuperReference(Zone* zone, VariableProxy* this_var, int pos) 2719 SuperReference(Zone* zone, VariableProxy* this_var, int pos)
2724 : Expression(zone, pos), 2720 : Expression(zone, pos),
2725 this_var_(this_var), 2721 this_var_(this_var),
2726 homeobject_feedback_slot_(FeedbackVectorICSlot::Invalid()) { 2722 homeobject_feedback_slot_(FeedbackVectorICSlot::Invalid()) {
2727 DCHECK(this_var->is_this()); 2723 DCHECK(this_var->is_this());
2728 } 2724 }
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
3502 3498
3503 private: 3499 private:
3504 Zone* zone_; 3500 Zone* zone_;
3505 AstValueFactory* ast_value_factory_; 3501 AstValueFactory* ast_value_factory_;
3506 }; 3502 };
3507 3503
3508 3504
3509 } } // namespace v8::internal 3505 } } // namespace v8::internal
3510 3506
3511 #endif // V8_AST_H_ 3507 #endif // V8_AST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698