| OLD | NEW | 
|     1 // Copyright 2014 the V8 project authors. All rights reserved. |     1 // Copyright 2014 the V8 project authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 #include "src/compiler/code-generator.h" |     5 #include "src/compiler/code-generator.h" | 
|     6  |     6  | 
|     7 #include "src/arm/macro-assembler-arm.h" |     7 #include "src/arm/macro-assembler-arm.h" | 
|     8 #include "src/compiler/code-generator-impl.h" |     8 #include "src/compiler/code-generator-impl.h" | 
|     9 #include "src/compiler/gap-resolver.h" |     9 #include "src/compiler/gap-resolver.h" | 
|    10 #include "src/compiler/node-matchers.h" |    10 #include "src/compiler/node-matchers.h" | 
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   305   if (descriptor->IsJSFunctionCall() || stack_slots > 0) { |   305   if (descriptor->IsJSFunctionCall() || stack_slots > 0) { | 
|   306     __ LeaveFrame(StackFrame::MANUAL); |   306     __ LeaveFrame(StackFrame::MANUAL); | 
|   307   } |   307   } | 
|   308 } |   308 } | 
|   309  |   309  | 
|   310  |   310  | 
|   311 // Assembles an instruction after register allocation, producing machine code. |   311 // Assembles an instruction after register allocation, producing machine code. | 
|   312 void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |   312 void CodeGenerator::AssembleArchInstruction(Instruction* instr) { | 
|   313   ArmOperandConverter i(this, instr); |   313   ArmOperandConverter i(this, instr); | 
|   314  |   314  | 
 |   315   masm()->MaybeCheckConstPool(); | 
 |   316  | 
|   315   switch (ArchOpcodeField::decode(instr->opcode())) { |   317   switch (ArchOpcodeField::decode(instr->opcode())) { | 
|   316     case kArchCallCodeObject: { |   318     case kArchCallCodeObject: { | 
|   317       EnsureSpaceForLazyDeopt(); |   319       EnsureSpaceForLazyDeopt(); | 
|   318       if (instr->InputAt(0)->IsImmediate()) { |   320       if (instr->InputAt(0)->IsImmediate()) { | 
|   319         __ Call(Handle<Code>::cast(i.InputHeapObject(0)), |   321         __ Call(Handle<Code>::cast(i.InputHeapObject(0)), | 
|   320                 RelocInfo::CODE_TARGET); |   322                 RelocInfo::CODE_TARGET); | 
|   321       } else { |   323       } else { | 
|   322         __ add(ip, i.InputRegister(0), |   324         __ add(ip, i.InputRegister(0), | 
|   323                Operand(Code::kHeaderSize - kHeapObjectTag)); |   325                Operand(Code::kHeaderSize - kHeapObjectTag)); | 
|   324         __ Call(ip); |   326         __ Call(ip); | 
| (...skipping 941 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1266       } |  1268       } | 
|  1267     } |  1269     } | 
|  1268   } |  1270   } | 
|  1269 } |  1271 } | 
|  1270  |  1272  | 
|  1271 #undef __ |  1273 #undef __ | 
|  1272  |  1274  | 
|  1273 }  // namespace compiler |  1275 }  // namespace compiler | 
|  1274 }  // namespace internal |  1276 }  // namespace internal | 
|  1275 }  // namespace v8 |  1277 }  // namespace v8 | 
| OLD | NEW |