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

Side by Side Diff: src/compiler/simplified-operator.cc

Issue 1943743003: Revert of [turbofan] Restore basic write barrier elimination. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 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
« no previous file with comments | « src/compiler/simplified-operator.h ('k') | src/globals.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 #include "src/compiler/simplified-operator.h" 5 #include "src/compiler/simplified-operator.h"
6 6
7 #include "src/base/lazy-instance.h" 7 #include "src/base/lazy-instance.h"
8 #include "src/compiler/opcodes.h" 8 #include "src/compiler/opcodes.h"
9 #include "src/compiler/operator.h" 9 #include "src/compiler/operator.h"
10 #include "src/types.h" 10 #include "src/types.h"
11 11
12 namespace v8 { 12 namespace v8 {
13 namespace internal { 13 namespace internal {
14 namespace compiler { 14 namespace compiler {
15 15
16 size_t hash_value(BaseTaggedness base_taggedness) {
17 return static_cast<uint8_t>(base_taggedness);
18 }
19
20 std::ostream& operator<<(std::ostream& os, BaseTaggedness base_taggedness) { 16 std::ostream& operator<<(std::ostream& os, BaseTaggedness base_taggedness) {
21 switch (base_taggedness) { 17 switch (base_taggedness) {
22 case kUntaggedBase: 18 case kUntaggedBase:
23 return os << "untagged base"; 19 return os << "untagged base";
24 case kTaggedBase: 20 case kTaggedBase:
25 return os << "tagged base"; 21 return os << "tagged base";
26 } 22 }
27 UNREACHABLE(); 23 UNREACHABLE();
28 return os; 24 return os;
29 } 25 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 77
82 78
83 BufferAccess const BufferAccessOf(const Operator* op) { 79 BufferAccess const BufferAccessOf(const Operator* op) {
84 DCHECK(op->opcode() == IrOpcode::kLoadBuffer || 80 DCHECK(op->opcode() == IrOpcode::kLoadBuffer ||
85 op->opcode() == IrOpcode::kStoreBuffer); 81 op->opcode() == IrOpcode::kStoreBuffer);
86 return OpParameter<BufferAccess>(op); 82 return OpParameter<BufferAccess>(op);
87 } 83 }
88 84
89 85
90 bool operator==(FieldAccess const& lhs, FieldAccess const& rhs) { 86 bool operator==(FieldAccess const& lhs, FieldAccess const& rhs) {
91 // On purpose we don't include the write barrier kind here, as this method is
92 // really only relevant for eliminating loads and they don't care about the
93 // write barrier mode.
94 return lhs.base_is_tagged == rhs.base_is_tagged && lhs.offset == rhs.offset && 87 return lhs.base_is_tagged == rhs.base_is_tagged && lhs.offset == rhs.offset &&
95 lhs.machine_type == rhs.machine_type; 88 lhs.machine_type == rhs.machine_type;
96 } 89 }
97 90
98 91
99 bool operator!=(FieldAccess const& lhs, FieldAccess const& rhs) { 92 bool operator!=(FieldAccess const& lhs, FieldAccess const& rhs) {
100 return !(lhs == rhs); 93 return !(lhs == rhs);
101 } 94 }
102 95
103 96
104 size_t hash_value(FieldAccess const& access) { 97 size_t hash_value(FieldAccess const& access) {
105 // On purpose we don't include the write barrier kind here, as this method is
106 // really only relevant for eliminating loads and they don't care about the
107 // write barrier mode.
108 return base::hash_combine(access.base_is_tagged, access.offset, 98 return base::hash_combine(access.base_is_tagged, access.offset,
109 access.machine_type); 99 access.machine_type);
110 } 100 }
111 101
112 102
113 std::ostream& operator<<(std::ostream& os, FieldAccess const& access) { 103 std::ostream& operator<<(std::ostream& os, FieldAccess const& access) {
114 os << "[" << access.base_is_tagged << ", " << access.offset << ", "; 104 os << "[" << access.base_is_tagged << ", " << access.offset << ", ";
115 #ifdef OBJECT_PRINT 105 #ifdef OBJECT_PRINT
116 Handle<Name> name; 106 Handle<Name> name;
117 if (access.name.ToHandle(&name)) { 107 if (access.name.ToHandle(&name)) {
118 name->Print(os); 108 name->Print(os);
119 os << ", "; 109 os << ", ";
120 } 110 }
121 #endif 111 #endif
122 access.type->PrintTo(os); 112 access.type->PrintTo(os);
123 os << ", " << access.machine_type << ", " << access.write_barrier_kind << "]"; 113 os << ", " << access.machine_type << "]";
124 return os; 114 return os;
125 } 115 }
126 116
127 117
128 bool operator==(ElementAccess const& lhs, ElementAccess const& rhs) { 118 bool operator==(ElementAccess const& lhs, ElementAccess const& rhs) {
129 // On purpose we don't include the write barrier kind here, as this method is
130 // really only relevant for eliminating loads and they don't care about the
131 // write barrier mode.
132 return lhs.base_is_tagged == rhs.base_is_tagged && 119 return lhs.base_is_tagged == rhs.base_is_tagged &&
133 lhs.header_size == rhs.header_size && 120 lhs.header_size == rhs.header_size &&
134 lhs.machine_type == rhs.machine_type; 121 lhs.machine_type == rhs.machine_type;
135 } 122 }
136 123
137 124
138 bool operator!=(ElementAccess const& lhs, ElementAccess const& rhs) { 125 bool operator!=(ElementAccess const& lhs, ElementAccess const& rhs) {
139 return !(lhs == rhs); 126 return !(lhs == rhs);
140 } 127 }
141 128
142 129
143 size_t hash_value(ElementAccess const& access) { 130 size_t hash_value(ElementAccess const& access) {
144 // On purpose we don't include the write barrier kind here, as this method is
145 // really only relevant for eliminating loads and they don't care about the
146 // write barrier mode.
147 return base::hash_combine(access.base_is_tagged, access.header_size, 131 return base::hash_combine(access.base_is_tagged, access.header_size,
148 access.machine_type); 132 access.machine_type);
149 } 133 }
150 134
151 135
152 std::ostream& operator<<(std::ostream& os, ElementAccess const& access) { 136 std::ostream& operator<<(std::ostream& os, ElementAccess const& access) {
153 os << access.base_is_tagged << ", " << access.header_size << ", "; 137 os << access.base_is_tagged << ", " << access.header_size << ", ";
154 access.type->PrintTo(os); 138 access.type->PrintTo(os);
155 os << ", " << access.machine_type << ", " << access.write_barrier_kind; 139 os << ", " << access.machine_type;
156 return os; 140 return os;
157 } 141 }
158 142
159 143
160 const FieldAccess& FieldAccessOf(const Operator* op) { 144 const FieldAccess& FieldAccessOf(const Operator* op) {
161 DCHECK_NOT_NULL(op); 145 DCHECK_NOT_NULL(op);
162 DCHECK(op->opcode() == IrOpcode::kLoadField || 146 DCHECK(op->opcode() == IrOpcode::kLoadField ||
163 op->opcode() == IrOpcode::kStoreField); 147 op->opcode() == IrOpcode::kStoreField);
164 return OpParameter<FieldAccess>(op); 148 return OpParameter<FieldAccess>(op);
165 } 149 }
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 Operator1<Type>(IrOpcode::k##Name, Operator::kNoThrow | properties, \ 318 Operator1<Type>(IrOpcode::k##Name, Operator::kNoThrow | properties, \
335 #Name, value_input_count, 1, control_input_count, \ 319 #Name, value_input_count, 1, control_input_count, \
336 output_count, 1, 0, access); \ 320 output_count, 1, 0, access); \
337 } 321 }
338 ACCESS_OP_LIST(ACCESS) 322 ACCESS_OP_LIST(ACCESS)
339 #undef ACCESS 323 #undef ACCESS
340 324
341 } // namespace compiler 325 } // namespace compiler
342 } // namespace internal 326 } // namespace internal
343 } // namespace v8 327 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/simplified-operator.h ('k') | src/globals.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698