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

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

Issue 1424943008: [turbofan] Desugar lookup slot optimization in graph builder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comment. Created 5 years, 1 month 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/js-operator.h ('k') | src/compiler/js-typed-lowering.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/js-operator.h" 5 #include "src/compiler/js-operator.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/lazy-instance.h" 9 #include "src/base/lazy-instance.h"
10 #include "src/compiler/opcodes.h" 10 #include "src/compiler/opcodes.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 } 139 }
140 140
141 141
142 ContextAccess const& ContextAccessOf(Operator const* op) { 142 ContextAccess const& ContextAccessOf(Operator const* op) {
143 DCHECK(op->opcode() == IrOpcode::kJSLoadContext || 143 DCHECK(op->opcode() == IrOpcode::kJSLoadContext ||
144 op->opcode() == IrOpcode::kJSStoreContext); 144 op->opcode() == IrOpcode::kJSStoreContext);
145 return OpParameter<ContextAccess>(op); 145 return OpParameter<ContextAccess>(op);
146 } 146 }
147 147
148 148
149 DynamicGlobalAccess::DynamicGlobalAccess(const Handle<String>& name, 149 DynamicAccess::DynamicAccess(const Handle<String>& name, TypeofMode typeof_mode)
150 uint32_t check_bitset, 150 : name_(name), typeof_mode_(typeof_mode) {}
151 const VectorSlotPair& feedback,
152 TypeofMode typeof_mode)
153 : name_(name),
154 check_bitset_(check_bitset),
155 feedback_(feedback),
156 typeof_mode_(typeof_mode) {
157 DCHECK(check_bitset == kFullCheckRequired || check_bitset < 0x80000000U);
158 }
159 151
160 152
161 bool operator==(DynamicGlobalAccess const& lhs, 153 bool operator==(DynamicAccess const& lhs, DynamicAccess const& rhs) {
162 DynamicGlobalAccess const& rhs) {
163 UNIMPLEMENTED(); 154 UNIMPLEMENTED();
164 return true; 155 return true;
165 } 156 }
166 157
167 158
168 bool operator!=(DynamicGlobalAccess const& lhs, 159 bool operator!=(DynamicAccess const& lhs, DynamicAccess const& rhs) {
169 DynamicGlobalAccess const& rhs) {
170 return !(lhs == rhs); 160 return !(lhs == rhs);
171 } 161 }
172 162
173 163
174 size_t hash_value(DynamicGlobalAccess const& access) { 164 size_t hash_value(DynamicAccess const& access) {
175 UNIMPLEMENTED(); 165 UNIMPLEMENTED();
176 return 0; 166 return 0;
177 } 167 }
178 168
179 169
180 std::ostream& operator<<(std::ostream& os, DynamicGlobalAccess const& access) { 170 std::ostream& operator<<(std::ostream& os, DynamicAccess const& access) {
181 return os << Brief(*access.name()) << ", " << access.check_bitset() << ", " 171 return os << Brief(*access.name()) << ", " << access.typeof_mode();
182 << access.typeof_mode();
183 } 172 }
184 173
185 174
186 DynamicGlobalAccess const& DynamicGlobalAccessOf(Operator const* op) { 175 DynamicAccess const& DynamicAccessOf(Operator const* op) {
187 DCHECK_EQ(IrOpcode::kJSLoadDynamicGlobal, op->opcode()); 176 DCHECK_EQ(IrOpcode::kJSLoadDynamic, op->opcode());
188 return OpParameter<DynamicGlobalAccess>(op); 177 return OpParameter<DynamicAccess>(op);
189 } 178 }
190 179
191 180
192 DynamicContextAccess::DynamicContextAccess(const Handle<String>& name,
193 uint32_t check_bitset,
194 const ContextAccess& context_access)
195 : name_(name),
196 check_bitset_(check_bitset),
197 context_access_(context_access) {
198 DCHECK(check_bitset == kFullCheckRequired || check_bitset < 0x80000000U);
199 }
200
201
202 bool operator==(DynamicContextAccess const& lhs,
203 DynamicContextAccess const& rhs) {
204 UNIMPLEMENTED();
205 return true;
206 }
207
208
209 bool operator!=(DynamicContextAccess const& lhs,
210 DynamicContextAccess const& rhs) {
211 return !(lhs == rhs);
212 }
213
214
215 size_t hash_value(DynamicContextAccess const& access) {
216 UNIMPLEMENTED();
217 return 0;
218 }
219
220
221 std::ostream& operator<<(std::ostream& os, DynamicContextAccess const& access) {
222 return os << Brief(*access.name()) << ", " << access.check_bitset() << ", "
223 << access.context_access();
224 }
225
226
227 DynamicContextAccess const& DynamicContextAccessOf(Operator const* op) {
228 DCHECK_EQ(IrOpcode::kJSLoadDynamicContext, op->opcode());
229 return OpParameter<DynamicContextAccess>(op);
230 }
231
232
233 bool operator==(NamedAccess const& lhs, NamedAccess const& rhs) { 181 bool operator==(NamedAccess const& lhs, NamedAccess const& rhs) {
234 return lhs.name().location() == rhs.name().location() && 182 return lhs.name().location() == rhs.name().location() &&
235 lhs.language_mode() == rhs.language_mode() && 183 lhs.language_mode() == rhs.language_mode() &&
236 lhs.feedback() == rhs.feedback(); 184 lhs.feedback() == rhs.feedback();
237 } 185 }
238 186
239 187
240 bool operator!=(NamedAccess const& lhs, NamedAccess const& rhs) { 188 bool operator!=(NamedAccess const& lhs, NamedAccess const& rhs) {
241 return !(lhs == rhs); 189 return !(lhs == rhs);
242 } 190 }
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 ContextAccess access(depth, index, false); 610 ContextAccess access(depth, index, false);
663 return new (zone()) Operator1<ContextAccess>( // -- 611 return new (zone()) Operator1<ContextAccess>( // --
664 IrOpcode::kJSStoreContext, // opcode 612 IrOpcode::kJSStoreContext, // opcode
665 Operator::kNoRead | Operator::kNoThrow, // flags 613 Operator::kNoRead | Operator::kNoThrow, // flags
666 "JSStoreContext", // name 614 "JSStoreContext", // name
667 2, 1, 1, 0, 1, 0, // counts 615 2, 1, 1, 0, 1, 0, // counts
668 access); // parameter 616 access); // parameter
669 } 617 }
670 618
671 619
672 const Operator* JSOperatorBuilder::LoadDynamicGlobal( 620 const Operator* JSOperatorBuilder::LoadDynamic(const Handle<String>& name,
673 const Handle<String>& name, uint32_t check_bitset, 621 TypeofMode typeof_mode) {
674 const VectorSlotPair& feedback, TypeofMode typeof_mode) { 622 DynamicAccess access(name, typeof_mode);
675 DynamicGlobalAccess access(name, check_bitset, feedback, typeof_mode); 623 return new (zone()) Operator1<DynamicAccess>( // --
676 return new (zone()) Operator1<DynamicGlobalAccess>( // -- 624 IrOpcode::kJSLoadDynamic, Operator::kNoProperties, // opcode
677 IrOpcode::kJSLoadDynamicGlobal, Operator::kNoProperties, // opcode 625 "JSLoadDynamic", // name
678 "JSLoadDynamicGlobal", // name 626 2, 1, 1, 1, 1, 2, // counts
679 2, 1, 1, 1, 1, 2, // counts 627 access); // parameter
680 access); // parameter
681 } 628 }
682 629
683 630
684 const Operator* JSOperatorBuilder::LoadDynamicContext(
685 const Handle<String>& name, uint32_t check_bitset, size_t depth,
686 size_t index) {
687 ContextAccess context_access(depth, index, false);
688 DynamicContextAccess access(name, check_bitset, context_access);
689 return new (zone()) Operator1<DynamicContextAccess>( // --
690 IrOpcode::kJSLoadDynamicContext, Operator::kNoProperties, // opcode
691 "JSLoadDynamicContext", // name
692 1, 1, 1, 1, 1, 2, // counts
693 access); // parameter
694 }
695
696
697 const Operator* JSOperatorBuilder::CreateArguments( 631 const Operator* JSOperatorBuilder::CreateArguments(
698 CreateArgumentsParameters::Type type, int start_index) { 632 CreateArgumentsParameters::Type type, int start_index) {
699 DCHECK_IMPLIES(start_index, type == CreateArgumentsParameters::kRestArray); 633 DCHECK_IMPLIES(start_index, type == CreateArgumentsParameters::kRestArray);
700 CreateArgumentsParameters parameters(type, start_index); 634 CreateArgumentsParameters parameters(type, start_index);
701 return new (zone()) Operator1<CreateArgumentsParameters>( // -- 635 return new (zone()) Operator1<CreateArgumentsParameters>( // --
702 IrOpcode::kJSCreateArguments, Operator::kNoThrow, // opcode 636 IrOpcode::kJSCreateArguments, Operator::kNoThrow, // opcode
703 "JSCreateArguments", // name 637 "JSCreateArguments", // name
704 1, 1, 1, 1, 1, 0, // counts 638 1, 1, 1, 1, 1, 0, // counts
705 parameters); // parameter 639 parameters); // parameter
706 } 640 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 Handle<ScopeInfo>::hash>( // -- 706 Handle<ScopeInfo>::hash>( // --
773 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode 707 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode
774 "JSCreateScriptContext", // name 708 "JSCreateScriptContext", // name
775 1, 1, 1, 1, 1, 2, // counts 709 1, 1, 1, 1, 1, 2, // counts
776 scpope_info); // parameter 710 scpope_info); // parameter
777 } 711 }
778 712
779 } // namespace compiler 713 } // namespace compiler
780 } // namespace internal 714 } // namespace internal
781 } // namespace v8 715 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-operator.h ('k') | src/compiler/js-typed-lowering.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698