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 |