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_MIPS. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS. |
6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
7 | 7 |
8 #include "vm/intrinsifier.h" | 8 #include "vm/intrinsifier.h" |
9 | 9 |
10 #include "vm/assembler.h" | 10 #include "vm/assembler.h" |
(...skipping 1647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1658 __ sw(T2, Address(T1, Isolate::user_tag_offset())); | 1658 __ sw(T2, Address(T1, Isolate::user_tag_offset())); |
1659 __ Ret(); | 1659 __ Ret(); |
1660 __ delay_slot()->sw(T2, Address(T1, Isolate::user_tag_offset())); | 1660 __ delay_slot()->sw(T2, Address(T1, Isolate::user_tag_offset())); |
1661 } | 1661 } |
1662 | 1662 |
1663 | 1663 |
1664 void Intrinsifier::UserTag_defaultTag(Assembler* assembler) { | 1664 void Intrinsifier::UserTag_defaultTag(Assembler* assembler) { |
1665 Isolate* isolate = Isolate::Current(); | 1665 Isolate* isolate = Isolate::Current(); |
1666 // V0: Address of default tag. | 1666 // V0: Address of default tag. |
1667 __ LoadImmediate(V0, | 1667 __ LoadImmediate(V0, |
1668 reinterpret_cast<uword>(isolate->object_store()) + | 1668 reinterpret_cast<uword>(isolate) + Isolate::default_tag_offset()); |
1669 ObjectStore::default_tag_offset()); | |
1670 __ Ret(); | 1669 __ Ret(); |
1671 __ delay_slot()->lw(V0, Address(V0, 0)); | 1670 __ delay_slot()->lw(V0, Address(V0, 0)); |
1672 } | 1671 } |
1673 | 1672 |
1674 | 1673 |
1675 void Intrinsifier::Profiler_getCurrentTag(Assembler* assembler) { | 1674 void Intrinsifier::Profiler_getCurrentTag(Assembler* assembler) { |
1676 // V0: Isolate. | 1675 // V0: Isolate. |
1677 Isolate* isolate = Isolate::Current(); | 1676 Isolate* isolate = Isolate::Current(); |
1678 __ LoadImmediate(V0, reinterpret_cast<uword>(isolate)); | 1677 __ LoadImmediate(V0, reinterpret_cast<uword>(isolate)); |
1679 // Set return value. | 1678 // Set return value. |
1680 __ Ret(); | 1679 __ Ret(); |
1681 __ delay_slot()->lw(V0, Address(V0, Isolate::current_tag_offset())); | 1680 __ delay_slot()->lw(V0, Address(V0, Isolate::current_tag_offset())); |
1682 } | 1681 } |
1683 | 1682 |
1684 } // namespace dart | 1683 } // namespace dart |
1685 | 1684 |
1686 #endif // defined TARGET_ARCH_MIPS | 1685 #endif // defined TARGET_ARCH_MIPS |
OLD | NEW |