| 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/ast/scopes.h" | 7 #include "src/ast/scopes.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 1561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1572 | 1572 |
| 1573 void CodeGenerator::AssembleDeoptimizerCall( | 1573 void CodeGenerator::AssembleDeoptimizerCall( |
| 1574 int deoptimization_id, Deoptimizer::BailoutType bailout_type) { | 1574 int deoptimization_id, Deoptimizer::BailoutType bailout_type) { |
| 1575 Address deopt_entry = Deoptimizer::GetDeoptimizationEntry( | 1575 Address deopt_entry = Deoptimizer::GetDeoptimizationEntry( |
| 1576 isolate(), deoptimization_id, bailout_type); | 1576 isolate(), deoptimization_id, bailout_type); |
| 1577 __ Call(deopt_entry, RelocInfo::RUNTIME_ENTRY); | 1577 __ Call(deopt_entry, RelocInfo::RUNTIME_ENTRY); |
| 1578 } | 1578 } |
| 1579 | 1579 |
| 1580 | 1580 |
| 1581 void CodeGenerator::AssemblePrologue() { | 1581 void CodeGenerator::AssemblePrologue() { |
| 1582 CallDescriptor* descriptor = linkage()->GetIncomingDescriptor(); | 1582 const CallDescriptor* descriptor = linkage()->GetIncomingDescriptor(); |
| 1583 if (descriptor->IsCFunctionCall()) { | 1583 if (descriptor->IsCFunctionCall()) { |
| 1584 __ function_descriptor(); | 1584 __ function_descriptor(); |
| 1585 __ mflr(r0); | 1585 __ mflr(r0); |
| 1586 if (FLAG_enable_embedded_constant_pool) { | 1586 if (FLAG_enable_embedded_constant_pool) { |
| 1587 __ Push(r0, fp, kConstantPoolRegister); | 1587 __ Push(r0, fp, kConstantPoolRegister); |
| 1588 // Adjust FP to point to saved FP. | 1588 // Adjust FP to point to saved FP. |
| 1589 __ subi(fp, sp, Operand(StandardFrameConstants::kConstantPoolOffset)); | 1589 __ subi(fp, sp, Operand(StandardFrameConstants::kConstantPoolOffset)); |
| 1590 } else { | 1590 } else { |
| 1591 __ Push(r0, fp); | 1591 __ Push(r0, fp); |
| 1592 __ mr(fp, sp); | 1592 __ mr(fp, sp); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1646 // register save area does not include the fp or constant pool pointer. | 1646 // register save area does not include the fp or constant pool pointer. |
| 1647 const int num_saves = | 1647 const int num_saves = |
| 1648 kNumCalleeSaved - 1 - (FLAG_enable_embedded_constant_pool ? 1 : 0); | 1648 kNumCalleeSaved - 1 - (FLAG_enable_embedded_constant_pool ? 1 : 0); |
| 1649 DCHECK(num_saves == base::bits::CountPopulation32(saves)); | 1649 DCHECK(num_saves == base::bits::CountPopulation32(saves)); |
| 1650 frame()->AllocateSavedCalleeRegisterSlots(num_saves); | 1650 frame()->AllocateSavedCalleeRegisterSlots(num_saves); |
| 1651 } | 1651 } |
| 1652 } | 1652 } |
| 1653 | 1653 |
| 1654 | 1654 |
| 1655 void CodeGenerator::AssembleReturn() { | 1655 void CodeGenerator::AssembleReturn() { |
| 1656 CallDescriptor* descriptor = linkage()->GetIncomingDescriptor(); | 1656 const CallDescriptor* descriptor = linkage()->GetIncomingDescriptor(); |
| 1657 int pop_count = static_cast<int>(descriptor->StackParameterCount()); | 1657 int pop_count = static_cast<int>(descriptor->StackParameterCount()); |
| 1658 | 1658 |
| 1659 // Restore registers. | 1659 // Restore registers. |
| 1660 const RegList saves = | 1660 const RegList saves = |
| 1661 FLAG_enable_embedded_constant_pool | 1661 FLAG_enable_embedded_constant_pool |
| 1662 ? descriptor->CalleeSavedRegisters() & ~kConstantPoolRegister.bit() | 1662 ? descriptor->CalleeSavedRegisters() & ~kConstantPoolRegister.bit() |
| 1663 : descriptor->CalleeSavedRegisters(); | 1663 : descriptor->CalleeSavedRegisters(); |
| 1664 if (saves != 0) { | 1664 if (saves != 0) { |
| 1665 __ MultiPop(saves); | 1665 __ MultiPop(saves); |
| 1666 } | 1666 } |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1892 padding_size -= v8::internal::Assembler::kInstrSize; | 1892 padding_size -= v8::internal::Assembler::kInstrSize; |
| 1893 } | 1893 } |
| 1894 } | 1894 } |
| 1895 } | 1895 } |
| 1896 | 1896 |
| 1897 #undef __ | 1897 #undef __ |
| 1898 | 1898 |
| 1899 } // namespace compiler | 1899 } // namespace compiler |
| 1900 } // namespace internal | 1900 } // namespace internal |
| 1901 } // namespace v8 | 1901 } // namespace v8 |
| OLD | NEW |