| 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"  // NOLINT | 5 #include "vm/globals.h"  // NOLINT | 
| 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/cpu.h" | 9 #include "vm/cpu.h" | 
| 10 #include "vm/longjump.h" | 10 #include "vm/longjump.h" | 
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 377     // If the raw smi does not fit into a 32-bit signed int, then we'll keep | 377     // If the raw smi does not fit into a 32-bit signed int, then we'll keep | 
| 378     // the raw value in the object pool. | 378     // the raw value in the object pool. | 
| 379     return !Utils::IsInt(32, reinterpret_cast<int64_t>(object.raw())); | 379     return !Utils::IsInt(32, reinterpret_cast<int64_t>(object.raw())); | 
| 380   } | 380   } | 
| 381   ASSERT(object.IsNotTemporaryScopedHandle()); | 381   ASSERT(object.IsNotTemporaryScopedHandle()); | 
| 382   ASSERT(object.IsOld()); | 382   ASSERT(object.IsOld()); | 
| 383   return true; | 383   return true; | 
| 384 } | 384 } | 
| 385 | 385 | 
| 386 | 386 | 
| 387 void Assembler::LoadExternalLabel(Register dst, const ExternalLabel* label) { |  | 
| 388   if (constant_pool_allowed()) { |  | 
| 389     const int32_t offset = ObjectPool::element_offset( |  | 
| 390         object_pool_wrapper_.FindExternalLabel(label, kNotPatchable)); |  | 
| 391     LoadWordFromPoolOffset(dst, offset); |  | 
| 392   } else { |  | 
| 393     const int64_t target = static_cast<int64_t>(label->address()); |  | 
| 394     LoadImmediate(dst, target); |  | 
| 395   } |  | 
| 396 } |  | 
| 397 |  | 
| 398 |  | 
| 399 void Assembler::LoadNativeEntry(Register dst, | 387 void Assembler::LoadNativeEntry(Register dst, | 
| 400                                 const ExternalLabel* label) { | 388                                 const ExternalLabel* label) { | 
| 401   const int32_t offset = ObjectPool::element_offset( | 389   const int32_t offset = ObjectPool::element_offset( | 
| 402       object_pool_wrapper_.FindNativeEntry(label, kNotPatchable)); | 390       object_pool_wrapper_.FindNativeEntry(label, kNotPatchable)); | 
| 403   LoadWordFromPoolOffset(dst, offset); | 391   LoadWordFromPoolOffset(dst, offset); | 
| 404 } | 392 } | 
| 405 | 393 | 
| 406 | 394 | 
| 407 void Assembler::LoadExternalLabelFixed(Register dst, |  | 
| 408                                        const ExternalLabel* label, |  | 
| 409                                        Patchability patchable) { |  | 
| 410   const int32_t offset = ObjectPool::element_offset( |  | 
| 411       object_pool_wrapper_.FindExternalLabel(label, patchable)); |  | 
| 412   LoadWordFromPoolOffsetFixed(dst, offset); |  | 
| 413 } |  | 
| 414 |  | 
| 415 |  | 
| 416 void Assembler::LoadIsolate(Register dst) { | 395 void Assembler::LoadIsolate(Register dst) { | 
| 417   ldr(dst, Address(THR, Thread::isolate_offset())); | 396   ldr(dst, Address(THR, Thread::isolate_offset())); | 
| 418 } | 397 } | 
| 419 | 398 | 
| 420 | 399 | 
| 421 void Assembler::LoadObjectHelper(Register dst, | 400 void Assembler::LoadObjectHelper(Register dst, | 
| 422                                  const Object& object, | 401                                  const Object& object, | 
| 423                                  bool is_unique) { | 402                                  bool is_unique) { | 
| 424   if (Thread::CanLoadFromThread(object)) { | 403   if (Thread::CanLoadFromThread(object)) { | 
| 425     ldr(dst, Address(THR, Thread::OffsetFromThread(object))); | 404     ldr(dst, Address(THR, Thread::OffsetFromThread(object))); | 
| (...skipping 1055 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1481     add(base, array, Operand(index, LSL, shift)); | 1460     add(base, array, Operand(index, LSL, shift)); | 
| 1482   } | 1461   } | 
| 1483   const OperandSize size = Address::OperandSizeFor(cid); | 1462   const OperandSize size = Address::OperandSizeFor(cid); | 
| 1484   ASSERT(Address::CanHoldOffset(offset, Address::Offset, size)); | 1463   ASSERT(Address::CanHoldOffset(offset, Address::Offset, size)); | 
| 1485   return Address(base, offset, Address::Offset, size); | 1464   return Address(base, offset, Address::Offset, size); | 
| 1486 } | 1465 } | 
| 1487 | 1466 | 
| 1488 }  // namespace dart | 1467 }  // namespace dart | 
| 1489 | 1468 | 
| 1490 #endif  // defined TARGET_ARCH_ARM64 | 1469 #endif  // defined TARGET_ARCH_ARM64 | 
| OLD | NEW | 
|---|