| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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_ARM64. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. |
| 6 #if defined(TARGET_ARCH_ARM64) | 6 #if defined(TARGET_ARCH_ARM64) |
| 7 | 7 |
| 8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
| 9 | 9 |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 5541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5552 return bias; | 5552 return bias; |
| 5553 } | 5553 } |
| 5554 | 5554 |
| 5555 | 5555 |
| 5556 LocationSummary* CheckClassIdInstr::MakeLocationSummary(Zone* zone, | 5556 LocationSummary* CheckClassIdInstr::MakeLocationSummary(Zone* zone, |
| 5557 bool opt) const { | 5557 bool opt) const { |
| 5558 const intptr_t kNumInputs = 1; | 5558 const intptr_t kNumInputs = 1; |
| 5559 const intptr_t kNumTemps = 0; | 5559 const intptr_t kNumTemps = 0; |
| 5560 LocationSummary* summary = new (zone) | 5560 LocationSummary* summary = new (zone) |
| 5561 LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 5561 LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| 5562 summary->set_in(0, Location::RequiresRegister()); | 5562 summary->set_in(0, cids_.IsSingleCid() ? Location::RequiresRegister() |
| 5563 : Location::WritableRegister()); |
| 5563 return summary; | 5564 return summary; |
| 5564 } | 5565 } |
| 5565 | 5566 |
| 5566 | 5567 |
| 5567 void CheckClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 5568 void CheckClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 5568 Register value = locs()->in(0).reg(); | 5569 Register value = locs()->in(0).reg(); |
| 5569 Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckClass); | 5570 Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckClass); |
| 5570 __ CompareImmediate(value, Smi::RawValue(cid_)); | 5571 if (cids_.IsSingleCid()) { |
| 5571 __ b(deopt, NE); | 5572 __ CompareImmediate(value, Smi::RawValue(cids_.cid_start)); |
| 5573 __ b(deopt, NE); |
| 5574 } else { |
| 5575 __ AddImmediate(value, -Smi::RawValue(cids_.cid_start)); |
| 5576 __ CompareImmediate(value, Smi::RawValue(cids_.cid_end - cids_.cid_start)); |
| 5577 __ b(deopt, HI); // Unsigned higher. |
| 5578 } |
| 5572 } | 5579 } |
| 5573 | 5580 |
| 5574 | 5581 |
| 5575 LocationSummary* CheckSmiInstr::MakeLocationSummary(Zone* zone, | 5582 LocationSummary* CheckSmiInstr::MakeLocationSummary(Zone* zone, |
| 5576 bool opt) const { | 5583 bool opt) const { |
| 5577 const intptr_t kNumInputs = 1; | 5584 const intptr_t kNumInputs = 1; |
| 5578 const intptr_t kNumTemps = 0; | 5585 const intptr_t kNumTemps = 0; |
| 5579 LocationSummary* summary = new (zone) | 5586 LocationSummary* summary = new (zone) |
| 5580 LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 5587 LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| 5581 summary->set_in(0, Location::RequiresRegister()); | 5588 summary->set_in(0, Location::RequiresRegister()); |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6090 compiler->GenerateRuntimeCall(TokenPosition::kNoSource, deopt_id(), | 6097 compiler->GenerateRuntimeCall(TokenPosition::kNoSource, deopt_id(), |
| 6091 kGrowRegExpStackRuntimeEntry, 1, locs()); | 6098 kGrowRegExpStackRuntimeEntry, 1, locs()); |
| 6092 __ Drop(1); | 6099 __ Drop(1); |
| 6093 __ Pop(result); | 6100 __ Pop(result); |
| 6094 } | 6101 } |
| 6095 | 6102 |
| 6096 | 6103 |
| 6097 } // namespace dart | 6104 } // namespace dart |
| 6098 | 6105 |
| 6099 #endif // defined TARGET_ARCH_ARM64 | 6106 #endif // defined TARGET_ARCH_ARM64 |
| OLD | NEW |