Commit b29d6d49 authored by titzer's avatar titzer Committed by Commit bot

[turbofan] Pass Runtime::FunctionId to TrapIf and TrapUnless isel methods.

This also fixes UBSAN failures due to improper OpParameter<> calls.

R=machenbach@chromium.org, clemensh@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2587763003
Cr-Commit-Position: refs/heads/master@{#41790}
parent e669816e
......@@ -2043,16 +2043,16 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) {
FlagsContinuation cont = FlagsContinuation::ForTrap(
kNotEqual, OpParameter<Runtime::FunctionId>(node->op()),
node->InputAt(1));
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
FlagsContinuation cont =
FlagsContinuation::ForTrap(kNotEqual, func_id, node->InputAt(1));
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapUnless(Node* node) {
FlagsContinuation cont = FlagsContinuation::ForTrap(
kEqual, OpParameter<Runtime::FunctionId>(node->op()), node->InputAt(1));
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
FlagsContinuation cont =
FlagsContinuation::ForTrap(kEqual, func_id, node->InputAt(1));
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
......
......@@ -2546,9 +2546,14 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitTrapUnless(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) {
Arm64OperandGenerator g(this);
......
......@@ -1507,16 +1507,16 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) {
FlagsContinuation cont = FlagsContinuation::ForTrap(
kNotEqual, OpParameter<Runtime::FunctionId>(node->op()),
node->InputAt(1));
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
FlagsContinuation cont =
FlagsContinuation::ForTrap(kNotEqual, func_id, node->InputAt(1));
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapUnless(Node* node) {
FlagsContinuation cont = FlagsContinuation::ForTrap(
kEqual, OpParameter<Runtime::FunctionId>(node->op()), node->InputAt(1));
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
FlagsContinuation cont =
FlagsContinuation::ForTrap(kEqual, func_id, node->InputAt(1));
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
......
......@@ -1041,9 +1041,11 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kDeoptimizeUnless:
return VisitDeoptimizeUnless(node);
case IrOpcode::kTrapIf:
return VisitTrapIf(node);
return VisitTrapIf(node, static_cast<Runtime::FunctionId>(
OpParameter<int32_t>(node->op())));
case IrOpcode::kTrapUnless:
return VisitTrapUnless(node);
return VisitTrapUnless(node, static_cast<Runtime::FunctionId>(
OpParameter<int32_t>(node->op())));
case IrOpcode::kFrameState:
case IrOpcode::kStateValues:
case IrOpcode::kObjectState:
......
......@@ -334,8 +334,8 @@ class V8_EXPORT_PRIVATE InstructionSelector final {
void VisitCall(Node* call, BasicBlock* handler = nullptr);
void VisitDeoptimizeIf(Node* node);
void VisitDeoptimizeUnless(Node* node);
void VisitTrapIf(Node* node);
void VisitTrapUnless(Node* node);
void VisitTrapIf(Node* node, Runtime::FunctionId func_id);
void VisitTrapUnless(Node* node, Runtime::FunctionId func_id);
void VisitTailCall(Node* call);
void VisitGoto(BasicBlock* target);
void VisitBranch(Node* input, BasicBlock* tbranch, BasicBlock* fbranch);
......
......@@ -1605,9 +1605,14 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitTrapUnless(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) {
MipsOperandGenerator g(this);
......
......@@ -2283,9 +2283,14 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitTrapUnless(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) {
Mips64OperandGenerator g(this);
......
......@@ -1787,9 +1787,14 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWord32CompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitTrapUnless(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) {
PPCOperandGenerator g(this);
......
......@@ -1786,9 +1786,14 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWord32CompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitTrapUnless(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) {
S390OperandGenerator g(this);
......
......@@ -2076,16 +2076,16 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) {
FlagsContinuation cont = FlagsContinuation::ForTrap(
kNotEqual, OpParameter<Runtime::FunctionId>(node->op()),
node->InputAt(1));
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
FlagsContinuation cont =
FlagsContinuation::ForTrap(kNotEqual, func_id, node->InputAt(1));
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapUnless(Node* node) {
FlagsContinuation cont = FlagsContinuation::ForTrap(
kEqual, OpParameter<Runtime::FunctionId>(node->op()), node->InputAt(1));
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
FlagsContinuation cont =
FlagsContinuation::ForTrap(kEqual, func_id, node->InputAt(1));
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
......
......@@ -1547,9 +1547,14 @@ void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
VisitWordCompareZero(this, node, node->InputAt(0), &cont);
}
void InstructionSelector::VisitTrapIf(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitTrapUnless(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitTrapUnless(Node* node,
Runtime::FunctionId func_id) {
UNREACHABLE();
}
void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) {
X87OperandGenerator g(this);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment