| Index: src/compiler/arm/instruction-selector-arm.cc
|
| diff --git a/src/compiler/arm/instruction-selector-arm.cc b/src/compiler/arm/instruction-selector-arm.cc
|
| index 47511a1ebf35406c3ea2d97a804ce37d4aa62a24..e08226d5f3e44eed89f623d0882c4cf487ef24f6 100644
|
| --- a/src/compiler/arm/instruction-selector-arm.cc
|
| +++ b/src/compiler/arm/instruction-selector-arm.cc
|
| @@ -1018,7 +1018,7 @@ void InstructionSelector::VisitFloat64RoundTiesAway(Node* node) {
|
| }
|
|
|
|
|
| -void InstructionSelector::VisitCall(Node* node) {
|
| +void InstructionSelector::VisitCall(Node* node, BasicBlock* handler) {
|
| ArmOperandGenerator g(this);
|
| const CallDescriptor* descriptor = OpParameter<const CallDescriptor*>(node);
|
|
|
| @@ -1043,6 +1043,13 @@ void InstructionSelector::VisitCall(Node* node) {
|
| Emit(kArmPush, g.NoOutput(), g.UseRegister(*i));
|
| }
|
|
|
| + // Pass label of exception handler block.
|
| + CallDescriptor::Flags flags = descriptor->flags();
|
| + if (handler != nullptr) {
|
| + flags |= CallDescriptor::kHasExceptionHandler;
|
| + buffer.instruction_args.push_back(g.Label(handler));
|
| + }
|
| +
|
| // Select the appropriate opcode based on the call type.
|
| InstructionCode opcode;
|
| switch (descriptor->kind()) {
|
| @@ -1057,7 +1064,7 @@ void InstructionSelector::VisitCall(Node* node) {
|
| UNREACHABLE();
|
| return;
|
| }
|
| - opcode |= MiscField::encode(descriptor->flags());
|
| + opcode |= MiscField::encode(flags);
|
|
|
| // Emit the call instruction.
|
| InstructionOperand* first_output =
|
|
|