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

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

Issue 2370693002: [compiler] Properly guard the speculative optimizations for instanceof. (Closed)
Patch Set: Fix registers on arm/arm64. Created 4 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/effect-control-linearizer.cc ('k') | src/compiler/js-operator.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_COMPILER_JS_OPERATOR_H_ 5 #ifndef V8_COMPILER_JS_OPERATOR_H_
6 #define V8_COMPILER_JS_OPERATOR_H_ 6 #define V8_COMPILER_JS_OPERATOR_H_
7 7
8 #include "src/runtime/runtime.h" 8 #include "src/runtime/runtime.h"
9 #include "src/type-hints.h" 9 #include "src/type-hints.h"
10 10
(...skipping 24 matching lines...) Expand all
35 private: 35 private:
36 const Handle<TypeFeedbackVector> vector_; 36 const Handle<TypeFeedbackVector> vector_;
37 const FeedbackVectorSlot slot_; 37 const FeedbackVectorSlot slot_;
38 }; 38 };
39 39
40 bool operator==(VectorSlotPair const&, VectorSlotPair const&); 40 bool operator==(VectorSlotPair const&, VectorSlotPair const&);
41 bool operator!=(VectorSlotPair const&, VectorSlotPair const&); 41 bool operator!=(VectorSlotPair const&, VectorSlotPair const&);
42 42
43 size_t hash_value(VectorSlotPair const&); 43 size_t hash_value(VectorSlotPair const&);
44 44
45 std::ostream& operator<<(std::ostream&, VectorSlotPair const&);
45 46
46 // The ConvertReceiverMode is used as parameter by JSConvertReceiver operators. 47 // The ConvertReceiverMode is used as parameter by JSConvertReceiver operators.
47 ConvertReceiverMode ConvertReceiverModeOf(Operator const* op); 48 ConvertReceiverMode ConvertReceiverModeOf(Operator const* op);
48 49
49 50
50 // The ToBooleanHints are used as parameter by JSToBoolean operators. 51 // The ToBooleanHints are used as parameter by JSToBoolean operators.
51 ToBooleanHints ToBooleanHintsOf(Operator const* op); 52 ToBooleanHints ToBooleanHintsOf(Operator const* op);
52 53
53 54
54 // Defines the arity and the feedback for a JavaScript constructor call. This is 55 // Defines the arity and the feedback for a JavaScript constructor call. This is
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 size_t hash_value(CreateLiteralParameters const&); 407 size_t hash_value(CreateLiteralParameters const&);
407 408
408 std::ostream& operator<<(std::ostream&, CreateLiteralParameters const&); 409 std::ostream& operator<<(std::ostream&, CreateLiteralParameters const&);
409 410
410 const CreateLiteralParameters& CreateLiteralParametersOf(const Operator* op); 411 const CreateLiteralParameters& CreateLiteralParametersOf(const Operator* op);
411 412
412 BinaryOperationHint BinaryOperationHintOf(const Operator* op); 413 BinaryOperationHint BinaryOperationHintOf(const Operator* op);
413 414
414 CompareOperationHint CompareOperationHintOf(const Operator* op); 415 CompareOperationHint CompareOperationHintOf(const Operator* op);
415 416
417 VectorSlotPair const& VectorSlotPairOf(const Operator* op) WARN_UNUSED_RESULT;
418
416 // Interface for building JavaScript-level operators, e.g. directly from the 419 // Interface for building JavaScript-level operators, e.g. directly from the
417 // AST. Most operators have no parameters, thus can be globally shared for all 420 // AST. Most operators have no parameters, thus can be globally shared for all
418 // graphs. 421 // graphs.
419 class JSOperatorBuilder final : public ZoneObject { 422 class JSOperatorBuilder final : public ZoneObject {
420 public: 423 public:
421 explicit JSOperatorBuilder(Zone* zone); 424 explicit JSOperatorBuilder(Zone* zone);
422 425
423 const Operator* Equal(CompareOperationHint hint); 426 const Operator* Equal(CompareOperationHint hint);
424 const Operator* NotEqual(CompareOperationHint hint); 427 const Operator* NotEqual(CompareOperationHint hint);
425 const Operator* StrictEqual(CompareOperationHint hint); 428 const Operator* StrictEqual(CompareOperationHint hint);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 const VectorSlotPair& feedback, 496 const VectorSlotPair& feedback,
494 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF); 497 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF);
495 const Operator* StoreGlobal(LanguageMode language_mode, 498 const Operator* StoreGlobal(LanguageMode language_mode,
496 const Handle<Name>& name, 499 const Handle<Name>& name,
497 const VectorSlotPair& feedback); 500 const VectorSlotPair& feedback);
498 501
499 const Operator* LoadContext(size_t depth, size_t index, bool immutable); 502 const Operator* LoadContext(size_t depth, size_t index, bool immutable);
500 const Operator* StoreContext(size_t depth, size_t index); 503 const Operator* StoreContext(size_t depth, size_t index);
501 504
502 const Operator* TypeOf(); 505 const Operator* TypeOf();
503 const Operator* InstanceOf(); 506 const Operator* InstanceOf(VectorSlotPair const& feedback);
504 507
505 const Operator* ForInNext(); 508 const Operator* ForInNext();
506 const Operator* ForInPrepare(); 509 const Operator* ForInPrepare();
507 510
508 const Operator* LoadMessage(); 511 const Operator* LoadMessage();
509 const Operator* StoreMessage(); 512 const Operator* StoreMessage();
510 513
511 // Used to implement Ignition's SuspendGenerator bytecode. 514 // Used to implement Ignition's SuspendGenerator bytecode.
512 const Operator* GeneratorStore(int register_count); 515 const Operator* GeneratorStore(int register_count);
513 516
(...skipping 18 matching lines...) Expand all
532 Zone* const zone_; 535 Zone* const zone_;
533 536
534 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); 537 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder);
535 }; 538 };
536 539
537 } // namespace compiler 540 } // namespace compiler
538 } // namespace internal 541 } // namespace internal
539 } // namespace v8 542 } // namespace v8
540 543
541 #endif // V8_COMPILER_JS_OPERATOR_H_ 544 #endif // V8_COMPILER_JS_OPERATOR_H_
OLDNEW
« no previous file with comments | « src/compiler/effect-control-linearizer.cc ('k') | src/compiler/js-operator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698