Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. |
| 6 #if defined(TARGET_ARCH_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
| 7 | 7 |
| 8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
| 9 | 9 |
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 1651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1662 | 1662 |
| 1663 LocationSummary* locs = instruction_->locs(); | 1663 LocationSummary* locs = instruction_->locs(); |
| 1664 | 1664 |
| 1665 locs->live_registers()->Remove(Location::RegisterLocation(result_)); | 1665 locs->live_registers()->Remove(Location::RegisterLocation(result_)); |
| 1666 | 1666 |
| 1667 compiler->SaveLiveRegisters(locs); | 1667 compiler->SaveLiveRegisters(locs); |
| 1668 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. | 1668 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. |
| 1669 &label, | 1669 &label, |
| 1670 RawPcDescriptors::kOther, | 1670 RawPcDescriptors::kOther, |
| 1671 locs); | 1671 locs); |
| 1672 compiler->AddStubCallTarget(stub); | |
| 1672 __ MoveRegister(result_, EAX); | 1673 __ MoveRegister(result_, EAX); |
| 1673 compiler->RestoreLiveRegisters(locs); | 1674 compiler->RestoreLiveRegisters(locs); |
| 1674 __ jmp(exit_label()); | 1675 __ jmp(exit_label()); |
| 1675 } | 1676 } |
| 1676 | 1677 |
| 1677 static void Allocate(FlowGraphCompiler* compiler, | 1678 static void Allocate(FlowGraphCompiler* compiler, |
| 1678 Instruction* instruction, | 1679 Instruction* instruction, |
| 1679 const Class& cls, | 1680 const Class& cls, |
| 1680 Register result, | 1681 Register result, |
| 1681 Register temp) { | 1682 Register temp) { |
| (...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2124 __ Bind(&done); | 2125 __ Bind(&done); |
| 2125 return; | 2126 return; |
| 2126 } | 2127 } |
| 2127 } | 2128 } |
| 2128 | 2129 |
| 2129 __ Bind(&slow_path); | 2130 __ Bind(&slow_path); |
| 2130 const ExternalLabel label(StubCode::AllocateArrayEntryPoint()); | 2131 const ExternalLabel label(StubCode::AllocateArrayEntryPoint()); |
| 2131 compiler->GenerateCall(token_pos(), | 2132 compiler->GenerateCall(token_pos(), |
| 2132 &label, | 2133 &label, |
| 2133 RawPcDescriptors::kOther, | 2134 RawPcDescriptors::kOther, |
| 2134 locs()); | 2135 locs()); |
|
Florian Schneider
2015/08/05 08:43:39
Shouldn't this call to the array allocation stub a
| |
| 2135 __ Bind(&done); | 2136 __ Bind(&done); |
| 2136 ASSERT(locs()->out(0).reg() == kResultReg); | 2137 ASSERT(locs()->out(0).reg() == kResultReg); |
| 2137 } | 2138 } |
| 2138 | 2139 |
| 2139 | 2140 |
| 2140 LocationSummary* LoadFieldInstr::MakeLocationSummary(Zone* zone, | 2141 LocationSummary* LoadFieldInstr::MakeLocationSummary(Zone* zone, |
| 2141 bool opt) const { | 2142 bool opt) const { |
| 2142 const intptr_t kNumInputs = 1; | 2143 const intptr_t kNumInputs = 1; |
| 2143 const intptr_t kNumTemps = | 2144 const intptr_t kNumTemps = |
| 2144 (IsUnboxedLoad() && opt) ? 1 : | 2145 (IsUnboxedLoad() && opt) ? 1 : |
| (...skipping 4711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6856 __ Drop(1); | 6857 __ Drop(1); |
| 6857 __ popl(result); | 6858 __ popl(result); |
| 6858 } | 6859 } |
| 6859 | 6860 |
| 6860 | 6861 |
| 6861 } // namespace dart | 6862 } // namespace dart |
| 6862 | 6863 |
| 6863 #undef __ | 6864 #undef __ |
| 6864 | 6865 |
| 6865 #endif // defined TARGET_ARCH_IA32 | 6866 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |