Index: src/compiler/arm/code-generator-arm.cc |
diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc |
index bdf4c471656c5c0c03fb0bec192f8f662a9d9856..5c94ccf7c3b2d07bb6ce1b379cf99d14135080db 100644 |
--- a/src/compiler/arm/code-generator-arm.cc |
+++ b/src/compiler/arm/code-generator-arm.cc |
@@ -54,6 +54,7 @@ class ArmOperandConverter final : public InstructionOperandConverter { |
SBit OutputSBit() const { |
switch (instr_->flags_mode()) { |
case kFlags_branch: |
+ case kFlags_deoptimize: |
case kFlags_set: |
return SetCC; |
case kFlags_none: |
@@ -409,7 +410,7 @@ void CodeGenerator::AssemblePrepareTailCall(int stack_param_delta) { |
void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
ArmOperandConverter i(this, instr); |
- masm()->MaybeCheckConstPool(); |
+ __ MaybeCheckConstPool(); |
switch (ArchOpcodeField::decode(instr->opcode())) { |
case kArchCallCodeObject: { |
@@ -1155,7 +1156,11 @@ void CodeGenerator::AssembleDeoptimizerCall( |
int deoptimization_id, Deoptimizer::BailoutType bailout_type) { |
Address deopt_entry = Deoptimizer::GetDeoptimizationEntry( |
isolate(), deoptimization_id, bailout_type); |
+ // TODO(turbofan): We should be able to generate better code by sharing the |
+ // actual final call site and just bl'ing to it here, similar to what we do |
+ // in the lithium backend. |
__ Call(deopt_entry, RelocInfo::RUNTIME_ENTRY); |
+ __ CheckConstPool(false, false); |
} |