| 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" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_ARM64) | 6 #if defined(TARGET_ARCH_ARM64) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/code_generator.h" | 9 #include "vm/code_generator.h" |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 1606 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1617 | 1617 |
| 1618 | 1618 |
| 1619 void StubCode::GenerateThreeArgsOptimizedCheckInlineCacheStub( | 1619 void StubCode::GenerateThreeArgsOptimizedCheckInlineCacheStub( |
| 1620 Assembler* assembler) { | 1620 Assembler* assembler) { |
| 1621 GenerateOptimizedUsageCounterIncrement(assembler); | 1621 GenerateOptimizedUsageCounterIncrement(assembler); |
| 1622 GenerateNArgsCheckInlineCacheStub(assembler, 3, | 1622 GenerateNArgsCheckInlineCacheStub(assembler, 3, |
| 1623 kInlineCacheMissHandlerThreeArgsRuntimeEntry, Token::kILLEGAL); | 1623 kInlineCacheMissHandlerThreeArgsRuntimeEntry, Token::kILLEGAL); |
| 1624 } | 1624 } |
| 1625 | 1625 |
| 1626 | 1626 |
| 1627 void StubCode::GenerateClosureCallInlineCacheStub(Assembler* assembler) { | |
| 1628 GenerateNArgsCheckInlineCacheStub(assembler, 1, | |
| 1629 kInlineCacheMissHandlerOneArgRuntimeEntry, Token::kILLEGAL); | |
| 1630 } | |
| 1631 | |
| 1632 | |
| 1633 void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { | 1627 void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { |
| 1634 GenerateUsageCounterIncrement(assembler, R6); | 1628 GenerateUsageCounterIncrement(assembler, R6); |
| 1635 #if defined(DEBUG) | 1629 #if defined(DEBUG) |
| 1636 { Label ok; | 1630 { Label ok; |
| 1637 // Check that the IC data array has NumArgsTested() == 0. | 1631 // Check that the IC data array has NumArgsTested() == 0. |
| 1638 // 'NumArgsTested' is stored in the least significant bits of 'state_bits'. | 1632 // 'NumArgsTested' is stored in the least significant bits of 'state_bits'. |
| 1639 __ LoadFromOffset(R6, R5, ICData::state_bits_offset() - kHeapObjectTag, | 1633 __ LoadFromOffset(R6, R5, ICData::state_bits_offset() - kHeapObjectTag, |
| 1640 kNoPP, kUnsignedWord); | 1634 kNoPP, kUnsignedWord); |
| 1641 ASSERT(ICData::NumArgsTestedShift() == 0); // No shift needed. | 1635 ASSERT(ICData::NumArgsTestedShift() == 0); // No shift needed. |
| 1642 __ andi(R6, R6, ICData::NumArgsTestedMask()); | 1636 __ andi(R6, R6, ICData::NumArgsTestedMask()); |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2061 const Register right = R0; | 2055 const Register right = R0; |
| 2062 __ LoadFromOffset(left, SP, 1 * kWordSize, kNoPP); | 2056 __ LoadFromOffset(left, SP, 1 * kWordSize, kNoPP); |
| 2063 __ LoadFromOffset(right, SP, 0 * kWordSize, kNoPP); | 2057 __ LoadFromOffset(right, SP, 0 * kWordSize, kNoPP); |
| 2064 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp); | 2058 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp); |
| 2065 __ ret(); | 2059 __ ret(); |
| 2066 } | 2060 } |
| 2067 | 2061 |
| 2068 } // namespace dart | 2062 } // namespace dart |
| 2069 | 2063 |
| 2070 #endif // defined TARGET_ARCH_ARM64 | 2064 #endif // defined TARGET_ARCH_ARM64 |
| OLD | NEW |