summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/common-operator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/common-operator.cc')
-rw-r--r--deps/v8/src/compiler/common-operator.cc57
1 files changed, 37 insertions, 20 deletions
diff --git a/deps/v8/src/compiler/common-operator.cc b/deps/v8/src/compiler/common-operator.cc
index 5ef7548ce8..253a92eb84 100644
--- a/deps/v8/src/compiler/common-operator.cc
+++ b/deps/v8/src/compiler/common-operator.cc
@@ -41,6 +41,25 @@ std::ostream& operator<<(std::ostream& os, IsSafetyCheck is_safety_check) {
UNREACHABLE();
}
+std::ostream& operator<<(std::ostream& os, TrapId trap_id) {
+ switch (trap_id) {
+#define TRAP_CASE(Name) \
+ case TrapId::k##Name: \
+ return os << #Name;
+ FOREACH_WASM_TRAPREASON(TRAP_CASE)
+#undef TRAP_CASE
+ case TrapId::kInvalid:
+ return os << "Invalid";
+ }
+ UNREACHABLE();
+}
+
+TrapId TrapIdOf(const Operator* const op) {
+ DCHECK(op->opcode() == IrOpcode::kTrapIf ||
+ op->opcode() == IrOpcode::kTrapUnless);
+ return OpParameter<TrapId>(op);
+}
+
std::ostream& operator<<(std::ostream& os, BranchOperatorInfo info) {
return os << info.hint << "|" << info.is_safety_check;
}
@@ -742,35 +761,33 @@ struct CommonOperatorGlobalCache final {
CACHED_DEOPTIMIZE_UNLESS_LIST(CACHED_DEOPTIMIZE_UNLESS)
#undef CACHED_DEOPTIMIZE_UNLESS
- template <int32_t trap_id>
- struct TrapIfOperator final : public Operator1<int32_t> {
+ template <TrapId trap_id>
+ struct TrapIfOperator final : public Operator1<TrapId> {
TrapIfOperator()
- : Operator1<int32_t>( // --
+ : Operator1<TrapId>( // --
IrOpcode::kTrapIf, // opcode
Operator::kFoldable | Operator::kNoThrow, // properties
"TrapIf", // name
1, 1, 1, 0, 0, 1, // counts
trap_id) {} // parameter
};
-#define CACHED_TRAP_IF(Trap) \
- TrapIfOperator<static_cast<int32_t>(Builtins::kThrowWasm##Trap)> \
- kTrapIf##Trap##Operator;
+#define CACHED_TRAP_IF(Trap) \
+ TrapIfOperator<TrapId::k##Trap> kTrapIf##Trap##Operator;
CACHED_TRAP_IF_LIST(CACHED_TRAP_IF)
#undef CACHED_TRAP_IF
- template <int32_t trap_id>
- struct TrapUnlessOperator final : public Operator1<int32_t> {
+ template <TrapId trap_id>
+ struct TrapUnlessOperator final : public Operator1<TrapId> {
TrapUnlessOperator()
- : Operator1<int32_t>( // --
+ : Operator1<TrapId>( // --
IrOpcode::kTrapUnless, // opcode
Operator::kFoldable | Operator::kNoThrow, // properties
"TrapUnless", // name
1, 1, 1, 0, 0, 1, // counts
trap_id) {} // parameter
};
-#define CACHED_TRAP_UNLESS(Trap) \
- TrapUnlessOperator<static_cast<int32_t>(Builtins::kThrowWasm##Trap)> \
- kTrapUnless##Trap##Operator;
+#define CACHED_TRAP_UNLESS(Trap) \
+ TrapUnlessOperator<TrapId::k##Trap> kTrapUnless##Trap##Operator;
CACHED_TRAP_UNLESS_LIST(CACHED_TRAP_UNLESS)
#undef CACHED_TRAP_UNLESS
@@ -973,10 +990,10 @@ const Operator* CommonOperatorBuilder::DeoptimizeUnless(
parameter); // parameter
}
-const Operator* CommonOperatorBuilder::TrapIf(int32_t trap_id) {
+const Operator* CommonOperatorBuilder::TrapIf(TrapId trap_id) {
switch (trap_id) {
-#define CACHED_TRAP_IF(Trap) \
- case Builtins::kThrowWasm##Trap: \
+#define CACHED_TRAP_IF(Trap) \
+ case TrapId::k##Trap: \
return &cache_.kTrapIf##Trap##Operator;
CACHED_TRAP_IF_LIST(CACHED_TRAP_IF)
#undef CACHED_TRAP_IF
@@ -984,7 +1001,7 @@ const Operator* CommonOperatorBuilder::TrapIf(int32_t trap_id) {
break;
}
// Uncached
- return new (zone()) Operator1<int>( // --
+ return new (zone()) Operator1<TrapId>( // --
IrOpcode::kTrapIf, // opcode
Operator::kFoldable | Operator::kNoThrow, // properties
"TrapIf", // name
@@ -992,10 +1009,10 @@ const Operator* CommonOperatorBuilder::TrapIf(int32_t trap_id) {
trap_id); // parameter
}
-const Operator* CommonOperatorBuilder::TrapUnless(int32_t trap_id) {
+const Operator* CommonOperatorBuilder::TrapUnless(TrapId trap_id) {
switch (trap_id) {
-#define CACHED_TRAP_UNLESS(Trap) \
- case Builtins::kThrowWasm##Trap: \
+#define CACHED_TRAP_UNLESS(Trap) \
+ case TrapId::k##Trap: \
return &cache_.kTrapUnless##Trap##Operator;
CACHED_TRAP_UNLESS_LIST(CACHED_TRAP_UNLESS)
#undef CACHED_TRAP_UNLESS
@@ -1003,7 +1020,7 @@ const Operator* CommonOperatorBuilder::TrapUnless(int32_t trap_id) {
break;
}
// Uncached
- return new (zone()) Operator1<int>( // --
+ return new (zone()) Operator1<TrapId>( // --
IrOpcode::kTrapUnless, // opcode
Operator::kFoldable | Operator::kNoThrow, // properties
"TrapUnless", // name