| 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 891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 } | 902 } |
| 903 // A store buffer update is required. | 903 // A store buffer update is required. |
| 904 if (value != R0) { | 904 if (value != R0) { |
| 905 // Preserve R0. | 905 // Preserve R0. |
| 906 Push(R0); | 906 Push(R0); |
| 907 } | 907 } |
| 908 Push(LR); | 908 Push(LR); |
| 909 if (object != R0) { | 909 if (object != R0) { |
| 910 mov(R0, object); | 910 mov(R0, object); |
| 911 } | 911 } |
| 912 ldr(TMP, Address(THR, Thread::update_store_buffer_entry_point_offset())); |
| 912 ldr(CODE_REG, Address(THR, Thread::update_store_buffer_code_offset())); | 913 ldr(CODE_REG, Address(THR, Thread::update_store_buffer_code_offset())); |
| 913 ldr(TMP, Address(THR, Thread::update_store_buffer_entry_point_offset())); | |
| 914 blr(TMP); | 914 blr(TMP); |
| 915 Pop(LR); | 915 Pop(LR); |
| 916 if (value != R0) { | 916 if (value != R0) { |
| 917 // Restore R0. | 917 // Restore R0. |
| 918 Pop(R0); | 918 Pop(R0); |
| 919 } | 919 } |
| 920 Bind(&done); | 920 Bind(&done); |
| 921 } | 921 } |
| 922 | 922 |
| 923 | 923 |
| (...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1571 str(tmp, Address(addr, 7), kUnsignedByte); | 1571 str(tmp, Address(addr, 7), kUnsignedByte); |
| 1572 if (sz == kDoubleWord) { | 1572 if (sz == kDoubleWord) { |
| 1573 return; | 1573 return; |
| 1574 } | 1574 } |
| 1575 UNIMPLEMENTED(); | 1575 UNIMPLEMENTED(); |
| 1576 } | 1576 } |
| 1577 | 1577 |
| 1578 } // namespace dart | 1578 } // namespace dart |
| 1579 | 1579 |
| 1580 #endif // defined TARGET_ARCH_ARM64 | 1580 #endif // defined TARGET_ARCH_ARM64 |
| OLD | NEW |