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

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

Issue 1418993002: [turbofan] Unify NamedAccess and PropertyAccess operator parameters. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 2 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/js-operator.h ('k') | src/compiler/js-type-feedback.cc » ('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 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 << access.context_access(); 198 << access.context_access();
199 } 199 }
200 200
201 201
202 DynamicContextAccess const& DynamicContextAccessOf(Operator const* op) { 202 DynamicContextAccess const& DynamicContextAccessOf(Operator const* op) {
203 DCHECK_EQ(IrOpcode::kJSLoadDynamicContext, op->opcode()); 203 DCHECK_EQ(IrOpcode::kJSLoadDynamicContext, op->opcode());
204 return OpParameter<DynamicContextAccess>(op); 204 return OpParameter<DynamicContextAccess>(op);
205 } 205 }
206 206
207 207
208 bool operator==(LoadNamedParameters const& lhs, 208 bool operator==(NamedAccess const& lhs, NamedAccess const& rhs) {
209 LoadNamedParameters const& rhs) {
210 return lhs.name().location() == rhs.name().location() && 209 return lhs.name().location() == rhs.name().location() &&
211 lhs.language_mode() == rhs.language_mode() && 210 lhs.language_mode() == rhs.language_mode() &&
212 lhs.feedback() == rhs.feedback(); 211 lhs.feedback() == rhs.feedback();
213 } 212 }
214 213
215 214
216 bool operator!=(LoadNamedParameters const& lhs, 215 bool operator!=(NamedAccess const& lhs, NamedAccess const& rhs) {
217 LoadNamedParameters const& rhs) {
218 return !(lhs == rhs); 216 return !(lhs == rhs);
219 } 217 }
220 218
221 219
222 size_t hash_value(LoadNamedParameters const& p) { 220 size_t hash_value(NamedAccess const& p) {
223 return base::hash_combine(p.name().location(), p.language_mode(), 221 return base::hash_combine(p.name().location(), p.language_mode(),
224 p.feedback()); 222 p.feedback());
225 } 223 }
226 224
227 225
228 std::ostream& operator<<(std::ostream& os, LoadNamedParameters const& p) { 226 std::ostream& operator<<(std::ostream& os, NamedAccess const& p) {
229 return os << Brief(*p.name()) << ", " << p.language_mode(); 227 return os << Brief(*p.name()) << ", " << p.language_mode();
230 } 228 }
231 229
232 230
233 std::ostream& operator<<(std::ostream& os, LoadPropertyParameters const& p) { 231 NamedAccess const& NamedAccessOf(const Operator* op) {
232 DCHECK(op->opcode() == IrOpcode::kJSLoadNamed ||
233 op->opcode() == IrOpcode::kJSStoreNamed);
234 return OpParameter<NamedAccess>(op);
235 }
236
237
238 std::ostream& operator<<(std::ostream& os, PropertyAccess const& p) {
234 return os << p.language_mode(); 239 return os << p.language_mode();
235 } 240 }
236 241
237 242
238 bool operator==(LoadPropertyParameters const& lhs, 243 bool operator==(PropertyAccess const& lhs, PropertyAccess const& rhs) {
239 LoadPropertyParameters const& rhs) {
240 return lhs.language_mode() == rhs.language_mode() && 244 return lhs.language_mode() == rhs.language_mode() &&
241 lhs.feedback() == rhs.feedback(); 245 lhs.feedback() == rhs.feedback();
242 } 246 }
243 247
244 248
245 bool operator!=(LoadPropertyParameters const& lhs, 249 bool operator!=(PropertyAccess const& lhs, PropertyAccess const& rhs) {
246 LoadPropertyParameters const& rhs) {
247 return !(lhs == rhs); 250 return !(lhs == rhs);
248 } 251 }
249 252
250 253
251 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op) { 254 PropertyAccess const& PropertyAccessOf(const Operator* op) {
252 DCHECK_EQ(IrOpcode::kJSLoadProperty, op->opcode()); 255 DCHECK(op->opcode() == IrOpcode::kJSLoadProperty ||
253 return OpParameter<LoadPropertyParameters>(op); 256 op->opcode() == IrOpcode::kJSStoreProperty);
257 return OpParameter<PropertyAccess>(op);
254 } 258 }
255 259
256 260
257 size_t hash_value(LoadPropertyParameters const& p) { 261 size_t hash_value(PropertyAccess const& p) {
258 return base::hash_combine(p.language_mode(), p.feedback()); 262 return base::hash_combine(p.language_mode(), p.feedback());
259 } 263 }
260 264
261 265
262 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op) {
263 DCHECK_EQ(IrOpcode::kJSLoadNamed, op->opcode());
264 return OpParameter<LoadNamedParameters>(op);
265 }
266
267
268 bool operator==(LoadGlobalParameters const& lhs, 266 bool operator==(LoadGlobalParameters const& lhs,
269 LoadGlobalParameters const& rhs) { 267 LoadGlobalParameters const& rhs) {
270 return lhs.name().location() == rhs.name().location() && 268 return lhs.name().location() == rhs.name().location() &&
271 lhs.feedback() == rhs.feedback() && 269 lhs.feedback() == rhs.feedback() &&
272 lhs.typeof_mode() == rhs.typeof_mode() && 270 lhs.typeof_mode() == rhs.typeof_mode() &&
273 lhs.slot_index() == rhs.slot_index(); 271 lhs.slot_index() == rhs.slot_index();
274 } 272 }
275 273
276 274
277 bool operator!=(LoadGlobalParameters const& lhs, 275 bool operator!=(LoadGlobalParameters const& lhs,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 << ", slot: " << p.slot_index(); 322 << ", slot: " << p.slot_index();
325 } 323 }
326 324
327 325
328 const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op) { 326 const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op) {
329 DCHECK_EQ(IrOpcode::kJSStoreGlobal, op->opcode()); 327 DCHECK_EQ(IrOpcode::kJSStoreGlobal, op->opcode());
330 return OpParameter<StoreGlobalParameters>(op); 328 return OpParameter<StoreGlobalParameters>(op);
331 } 329 }
332 330
333 331
334 bool operator==(StoreNamedParameters const& lhs,
335 StoreNamedParameters const& rhs) {
336 return lhs.language_mode() == rhs.language_mode() &&
337 lhs.name().location() == rhs.name().location() &&
338 lhs.feedback() == rhs.feedback();
339 }
340
341
342 bool operator!=(StoreNamedParameters const& lhs,
343 StoreNamedParameters const& rhs) {
344 return !(lhs == rhs);
345 }
346
347
348 size_t hash_value(StoreNamedParameters const& p) {
349 return base::hash_combine(p.language_mode(), p.name().location(),
350 p.feedback());
351 }
352
353
354 std::ostream& operator<<(std::ostream& os, StoreNamedParameters const& p) {
355 return os << p.language_mode() << ", " << Brief(*p.name());
356 }
357
358
359 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op) {
360 DCHECK_EQ(IrOpcode::kJSStoreNamed, op->opcode());
361 return OpParameter<StoreNamedParameters>(op);
362 }
363
364
365 bool operator==(StorePropertyParameters const& lhs,
366 StorePropertyParameters const& rhs) {
367 return lhs.language_mode() == rhs.language_mode() &&
368 lhs.feedback() == rhs.feedback();
369 }
370
371
372 bool operator!=(StorePropertyParameters const& lhs,
373 StorePropertyParameters const& rhs) {
374 return !(lhs == rhs);
375 }
376
377
378 size_t hash_value(StorePropertyParameters const& p) {
379 return base::hash_combine(p.language_mode(), p.feedback());
380 }
381
382
383 std::ostream& operator<<(std::ostream& os, StorePropertyParameters const& p) {
384 return os << p.language_mode();
385 }
386
387
388 const StorePropertyParameters& StorePropertyParametersOf(const Operator* op) {
389 DCHECK_EQ(IrOpcode::kJSStoreProperty, op->opcode());
390 return OpParameter<StorePropertyParameters>(op);
391 }
392
393
394 bool operator==(CreateArgumentsParameters const& lhs, 332 bool operator==(CreateArgumentsParameters const& lhs,
395 CreateArgumentsParameters const& rhs) { 333 CreateArgumentsParameters const& rhs) {
396 return lhs.type() == rhs.type() && lhs.start_index() == rhs.start_index(); 334 return lhs.type() == rhs.type() && lhs.start_index() == rhs.start_index();
397 } 335 }
398 336
399 337
400 bool operator!=(CreateArgumentsParameters const& lhs, 338 bool operator!=(CreateArgumentsParameters const& lhs,
401 CreateArgumentsParameters const& rhs) { 339 CreateArgumentsParameters const& rhs) {
402 return !(lhs == rhs); 340 return !(lhs == rhs);
403 } 341 }
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 531
594 const Operator* JSOperatorBuilder::CallConstruct(int arguments) { 532 const Operator* JSOperatorBuilder::CallConstruct(int arguments) {
595 return new (zone()) Operator1<int>( // -- 533 return new (zone()) Operator1<int>( // --
596 IrOpcode::kJSCallConstruct, Operator::kNoProperties, // opcode 534 IrOpcode::kJSCallConstruct, Operator::kNoProperties, // opcode
597 "JSCallConstruct", // name 535 "JSCallConstruct", // name
598 arguments, 1, 1, 1, 1, 2, // counts 536 arguments, 1, 1, 1, 1, 2, // counts
599 arguments); // parameter 537 arguments); // parameter
600 } 538 }
601 539
602 540
603 const Operator* JSOperatorBuilder::LoadNamed(const Handle<Name>& name, 541 const Operator* JSOperatorBuilder::LoadNamed(LanguageMode language_mode,
604 const VectorSlotPair& feedback, 542 Handle<Name> name,
605 LanguageMode language_mode) { 543 const VectorSlotPair& feedback) {
606 LoadNamedParameters parameters(name, feedback, language_mode); 544 NamedAccess access(language_mode, name, feedback);
607 return new (zone()) Operator1<LoadNamedParameters>( // -- 545 return new (zone()) Operator1<NamedAccess>( // --
608 IrOpcode::kJSLoadNamed, Operator::kNoProperties, // opcode 546 IrOpcode::kJSLoadNamed, Operator::kNoProperties, // opcode
609 "JSLoadNamed", // name 547 "JSLoadNamed", // name
610 2, 1, 1, 1, 1, 2, // counts 548 2, 1, 1, 1, 1, 2, // counts
611 parameters); // parameter 549 access); // parameter
612 } 550 }
613 551
614 552
615 const Operator* JSOperatorBuilder::LoadProperty(const VectorSlotPair& feedback, 553 const Operator* JSOperatorBuilder::LoadProperty(
616 LanguageMode language_mode) { 554 LanguageMode language_mode, VectorSlotPair const& feedback) {
617 LoadPropertyParameters parameters(feedback, language_mode); 555 PropertyAccess access(language_mode, feedback);
618 return new (zone()) Operator1<LoadPropertyParameters>( // -- 556 return new (zone()) Operator1<PropertyAccess>( // --
619 IrOpcode::kJSLoadProperty, Operator::kNoProperties, // opcode 557 IrOpcode::kJSLoadProperty, Operator::kNoProperties, // opcode
620 "JSLoadProperty", // name 558 "JSLoadProperty", // name
621 3, 1, 1, 1, 1, 2, // counts 559 3, 1, 1, 1, 1, 2, // counts
622 parameters); // parameter 560 access); // parameter
623 } 561 }
624 562
625 563
626 const Operator* JSOperatorBuilder::StoreNamed(LanguageMode language_mode, 564 const Operator* JSOperatorBuilder::StoreNamed(LanguageMode language_mode,
627 const Handle<Name>& name, 565 Handle<Name> name,
628 const VectorSlotPair& feedback) { 566 VectorSlotPair const& feedback) {
629 StoreNamedParameters parameters(language_mode, feedback, name); 567 NamedAccess access(language_mode, name, feedback);
630 return new (zone()) Operator1<StoreNamedParameters>( // -- 568 return new (zone()) Operator1<NamedAccess>( // --
631 IrOpcode::kJSStoreNamed, Operator::kNoProperties, // opcode 569 IrOpcode::kJSStoreNamed, Operator::kNoProperties, // opcode
632 "JSStoreNamed", // name 570 "JSStoreNamed", // name
633 3, 1, 1, 0, 1, 2, // counts 571 3, 1, 1, 0, 1, 2, // counts
634 parameters); // parameter 572 access); // parameter
635 } 573 }
636 574
637 575
638 const Operator* JSOperatorBuilder::StoreProperty( 576 const Operator* JSOperatorBuilder::StoreProperty(
639 LanguageMode language_mode, const VectorSlotPair& feedback) { 577 LanguageMode language_mode, VectorSlotPair const& feedback) {
640 StorePropertyParameters parameters(language_mode, feedback); 578 PropertyAccess access(language_mode, feedback);
641 return new (zone()) Operator1<StorePropertyParameters>( // -- 579 return new (zone()) Operator1<PropertyAccess>( // --
642 IrOpcode::kJSStoreProperty, Operator::kNoProperties, // opcode 580 IrOpcode::kJSStoreProperty, Operator::kNoProperties, // opcode
643 "JSStoreProperty", // name 581 "JSStoreProperty", // name
644 4, 1, 1, 0, 1, 2, // counts 582 4, 1, 1, 0, 1, 2, // counts
645 parameters); // parameter 583 access); // parameter
646 } 584 }
647 585
648 586
649 const Operator* JSOperatorBuilder::DeleteProperty(LanguageMode language_mode) { 587 const Operator* JSOperatorBuilder::DeleteProperty(LanguageMode language_mode) {
650 return new (zone()) Operator1<LanguageMode>( // -- 588 return new (zone()) Operator1<LanguageMode>( // --
651 IrOpcode::kJSDeleteProperty, Operator::kNoProperties, // opcode 589 IrOpcode::kJSDeleteProperty, Operator::kNoProperties, // opcode
652 "JSDeleteProperty", // name 590 "JSDeleteProperty", // name
653 2, 1, 1, 1, 1, 2, // counts 591 2, 1, 1, 1, 1, 2, // counts
654 language_mode); // parameter 592 language_mode); // parameter
655 } 593 }
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 Handle<ScopeInfo>::hash>( // -- 745 Handle<ScopeInfo>::hash>( // --
808 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode 746 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode
809 "JSCreateScriptContext", // name 747 "JSCreateScriptContext", // name
810 1, 1, 1, 1, 1, 2, // counts 748 1, 1, 1, 1, 1, 2, // counts
811 scpope_info); // parameter 749 scpope_info); // parameter
812 } 750 }
813 751
814 } // namespace compiler 752 } // namespace compiler
815 } // namespace internal 753 } // namespace internal
816 } // namespace v8 754 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-operator.h ('k') | src/compiler/js-type-feedback.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698