diff options
Diffstat (limited to 'chromium/v8/src/compiler/instruction-selector-impl.h')
-rw-r--r-- | chromium/v8/src/compiler/instruction-selector-impl.h | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/chromium/v8/src/compiler/instruction-selector-impl.h b/chromium/v8/src/compiler/instruction-selector-impl.h index 8334d1751ac..7c7a2708c51 100644 --- a/chromium/v8/src/compiler/instruction-selector-impl.h +++ b/chromium/v8/src/compiler/instruction-selector-impl.h @@ -251,6 +251,23 @@ class OperandGenerator { return Constant(OpParameter<ExternalReference>(node)); case IrOpcode::kHeapConstant: return Constant(OpParameter<Handle<HeapObject>>(node)); + case IrOpcode::kDeadValue: { + switch (DeadValueRepresentationOf(node->op())) { + case MachineRepresentation::kBit: + case MachineRepresentation::kWord32: + case MachineRepresentation::kTagged: + case MachineRepresentation::kTaggedSigned: + case MachineRepresentation::kTaggedPointer: + return Constant(static_cast<int32_t>(0)); + case MachineRepresentation::kFloat64: + return Constant(static_cast<double>(0)); + case MachineRepresentation::kFloat32: + return Constant(static_cast<float>(0)); + default: + UNREACHABLE(); + } + break; + } default: break; } @@ -350,8 +367,9 @@ class FlagsContinuation final { static FlagsContinuation ForDeoptimize(FlagsCondition condition, DeoptimizeKind kind, DeoptimizeReason reason, + VectorSlotPair const& feedback, Node* frame_state) { - return FlagsContinuation(condition, kind, reason, frame_state); + return FlagsContinuation(condition, kind, reason, feedback, frame_state); } // Creates a new flags continuation for a boolean value. @@ -382,6 +400,10 @@ class FlagsContinuation final { DCHECK(IsDeoptimize()); return reason_; } + VectorSlotPair const& feedback() const { + DCHECK(IsDeoptimize()); + return feedback_; + } Node* frame_state() const { DCHECK(IsDeoptimize()); return frame_state_or_result_; @@ -452,11 +474,13 @@ class FlagsContinuation final { private: FlagsContinuation(FlagsCondition condition, DeoptimizeKind kind, - DeoptimizeReason reason, Node* frame_state) + DeoptimizeReason reason, VectorSlotPair const& feedback, + Node* frame_state) : mode_(kFlags_deoptimize), condition_(condition), kind_(kind), reason_(reason), + feedback_(feedback), frame_state_or_result_(frame_state) { DCHECK_NOT_NULL(frame_state); } @@ -480,6 +504,7 @@ class FlagsContinuation final { FlagsCondition condition_; DeoptimizeKind kind_; // Only valid if mode_ == kFlags_deoptimize DeoptimizeReason reason_; // Only valid if mode_ == kFlags_deoptimize + VectorSlotPair feedback_; // Only valid if mode_ == kFlags_deoptimize Node* frame_state_or_result_; // Only valid if mode_ == kFlags_deoptimize // or mode_ == kFlags_set. BasicBlock* true_block_; // Only valid if mode_ == kFlags_branch. |