| Index: src/compiler/arm64/code-generator-arm64.cc
|
| diff --git a/src/compiler/arm64/code-generator-arm64.cc b/src/compiler/arm64/code-generator-arm64.cc
|
| index 84acda4db38fac8f89304b1615ebd4e6c15ac4d2..d4d27a563bb4fcddd4a9dd6c49fa37fdb8310b23 100644
|
| --- a/src/compiler/arm64/code-generator-arm64.cc
|
| +++ b/src/compiler/arm64/code-generator-arm64.cc
|
| @@ -576,8 +576,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| case kArchCallCodeObject: {
|
| EnsureSpaceForLazyDeopt();
|
| if (instr->InputAt(0)->IsImmediate()) {
|
| - __ Call(Handle<Code>::cast(i.InputHeapObject(0)),
|
| - RelocInfo::CODE_TARGET);
|
| + Constant callee_operand = i.ToConstant(instr->InputAt(0));
|
| + if (callee_operand.type() == Constant::Type::kInt32) {
|
| + __ Call(reinterpret_cast<Address>(callee_operand.ToInt32()),
|
| + RelocInfo::WASM_DIRECT_CALL);
|
| + } else {
|
| + __ Call(Handle<Code>::cast(i.InputHeapObject(0)),
|
| + RelocInfo::CODE_TARGET);
|
| + }
|
| } else {
|
| Register target = i.InputRegister(0);
|
| __ Add(target, target, Code::kHeaderSize - kHeapObjectTag);
|
|
|