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

Unified Diff: src/compiler/instruction-selector.cc

Issue 989123003: [turbofan] Project exception value out of calls. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix IrOpcodeTest. Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: src/compiler/instruction-selector.cc
diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc
index 97fa9214f668524e81cd937681923b7ea1a6c1f4..20d09bb5bee8ce83ec314f8751444096c487dad6 100644
--- a/src/compiler/instruction-selector.cc
+++ b/src/compiler/instruction-selector.cc
@@ -730,7 +730,6 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kIfTrue:
case IrOpcode::kIfFalse:
case IrOpcode::kIfSuccess:
- case IrOpcode::kIfException:
case IrOpcode::kSwitch:
case IrOpcode::kIfValue:
case IrOpcode::kIfDefault:
@@ -738,6 +737,8 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kMerge:
// No code needed for these graph artifacts.
return;
+ case IrOpcode::kIfException:
+ return VisitIfException(node);
Benedikt Meurer 2015/03/10 09:42:08 MarkAsReference is missing.
Michael Starzinger 2015/03/31 11:58:44 Done.
case IrOpcode::kFinish:
return MarkAsReference(node), VisitFinish(node);
case IrOpcode::kParameter: {
@@ -1042,6 +1043,16 @@ void InstructionSelector::VisitParameter(Node* node) {
}
+void InstructionSelector::VisitIfException(Node* node) {
+ OperandGenerator g(this);
+ Node* call = node->InputAt(0);
+ DCHECK_EQ(IrOpcode::kCall, call->opcode());
+ const CallDescriptor* descriptor = OpParameter<const CallDescriptor*>(call);
+ Emit(kArchNop, g.DefineAsLocation(node, descriptor->GetReturnLocation(0),
+ descriptor->GetReturnType(0)));
+}
+
+
void InstructionSelector::VisitOsrValue(Node* node) {
OperandGenerator g(this);
int index = OpParameter<int>(node);

Powered by Google App Engine
This is Rietveld 408576698