Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: src/mips/register-allocator-mips-inl.h

Issue 549079: Support for MIPS in architecture independent files.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #ifndef V8_IA32_REGISTER_ALLOCATOR_IA32_INL_H_
2 #define V8_IA32_REGISTER_ALLOCATOR_IA32_INL_H_
3
4 #include "v8.h"
5 #include "mips/assembler-mips.h"
6
7 namespace v8 {
8 namespace internal {
9
10 // -------------------------------------------------------------------------
11 // RegisterAllocator implementation.
12
13 // TODO : implement bool RegisterAllocator::IsReserved
14 bool RegisterAllocator::IsReserved(Register reg) {
15 // The code for this test relies on the order of register codes.
16 return reg.is(cp) || reg.is(s8_fp) || reg.is(sp);
17 }
18
19
20 // TODO : modifiy kNumbers for reserved registers
21 // TODO : cf other architectures code
22
23 int RegisterAllocator::ToNumber(Register reg) {
24 ASSERT(reg.is_valid() && !IsReserved(reg));
25 const int kNumbers[] = {
26 0, // zero_reg
27 1, // at
28 2, // v0
29 3, // v1
30 4, // a0
31 5, // a1
32 6, // a2
33 7, // a3
34 8, // t0
35 9, // t1
36 10, // t2
37 11, // t3
38 12, // t4
39 13, // t5
40 14, // t
41 15, // t7
42 16, // t8
43 17, // t9
44 18, // s0
45 19, // s1
46 20, // s2
47 21, // s3
48 22, // s4
49 23, // s5
50 24, // s6
51 25, // s7
52 26, // k0
53 27, // k1
54 28, // gp
55 29, // sp
56 30, // s8_fp
57 31, // ra
58 };
59 return kNumbers[reg.code()];
60 }
61
62
63 Register RegisterAllocator::ToRegister(int num) {
64 ASSERT(num >= 0 && num < kNumRegisters);
65 const Register kRegisters[] = {
66 zero_reg,
67 at,
68 v0,
69 v1,
70 a0,
71 a1,
72 a2,
73 a3,
74 t0,
75 t1,
76 t2,
77 t3,
78 t4,
79 t5,
80 t6,
81 t7,
82 s0,
83 s1,
84 s2,
85 s3,
86 s4,
87 s5,
88 s6,
89 s7,
90 t8,
91 t9,
92 k0,
93 k1,
94 gp,
95 sp,
96 s8_fp,
97 ra
98 };
99 return kRegisters[num];
100 }
101
102
103 void RegisterAllocator::Initialize() {
104 Reset();
105 // The non-reserved a1 and ra registers are live on JS function entry.
106 Use(a1); // JS function.
107 Use(ra); // Return address.
108 }
109
110
111 } } // namespace v8::internal
112
113 #endif // V8_IA32_REGISTER_ALLOCATOR_IA32_INL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698