changeset 37480 | 291ee208fb72 |
parent 37161 | e881f320966e |
child 42664 | 29142a56c193 |
37479:14a195eaf2c5 | 37480:291ee208fb72 |
---|---|
87 |
87 |
88 //------------------------------------------------------------------------------------------------------------------------ |
88 //------------------------------------------------------------------------------------------------------------------------ |
89 // Implementation of EntryPoint |
89 // Implementation of EntryPoint |
90 |
90 |
91 EntryPoint::EntryPoint() { |
91 EntryPoint::EntryPoint() { |
92 assert(number_of_states == 9, "check the code below"); |
92 assert(number_of_states == 10, "check the code below"); |
93 _entry[btos] = NULL; |
93 _entry[btos] = NULL; |
94 _entry[ztos] = NULL; |
|
94 _entry[ctos] = NULL; |
95 _entry[ctos] = NULL; |
95 _entry[stos] = NULL; |
96 _entry[stos] = NULL; |
96 _entry[atos] = NULL; |
97 _entry[atos] = NULL; |
97 _entry[itos] = NULL; |
98 _entry[itos] = NULL; |
98 _entry[ltos] = NULL; |
99 _entry[ltos] = NULL; |
100 _entry[dtos] = NULL; |
101 _entry[dtos] = NULL; |
101 _entry[vtos] = NULL; |
102 _entry[vtos] = NULL; |
102 } |
103 } |
103 |
104 |
104 |
105 |
105 EntryPoint::EntryPoint(address bentry, address centry, address sentry, address aentry, address ientry, address lentry, address fentry, address dentry, address ventry) { |
106 EntryPoint::EntryPoint(address bentry, address zentry, address centry, address sentry, address aentry, address ientry, address lentry, address fentry, address dentry, address ventry) { |
106 assert(number_of_states == 9, "check the code below"); |
107 assert(number_of_states == 10, "check the code below"); |
107 _entry[btos] = bentry; |
108 _entry[btos] = bentry; |
109 _entry[ztos] = zentry; |
|
108 _entry[ctos] = centry; |
110 _entry[ctos] = centry; |
109 _entry[stos] = sentry; |
111 _entry[stos] = sentry; |
110 _entry[atos] = aentry; |
112 _entry[atos] = aentry; |
111 _entry[itos] = ientry; |
113 _entry[itos] = ientry; |
112 _entry[ltos] = lentry; |
114 _entry[ltos] = lentry; |
153 EntryPoint DispatchTable::entry(int i) const { |
155 EntryPoint DispatchTable::entry(int i) const { |
154 assert(0 <= i && i < length, "index out of bounds"); |
156 assert(0 <= i && i < length, "index out of bounds"); |
155 return |
157 return |
156 EntryPoint( |
158 EntryPoint( |
157 _table[btos][i], |
159 _table[btos][i], |
160 _table[ztos][i], |
|
158 _table[ctos][i], |
161 _table[ctos][i], |
159 _table[stos][i], |
162 _table[stos][i], |
160 _table[atos][i], |
163 _table[atos][i], |
161 _table[itos][i], |
164 _table[itos][i], |
162 _table[ltos][i], |
165 _table[ltos][i], |
167 } |
170 } |
168 |
171 |
169 |
172 |
170 void DispatchTable::set_entry(int i, EntryPoint& entry) { |
173 void DispatchTable::set_entry(int i, EntryPoint& entry) { |
171 assert(0 <= i && i < length, "index out of bounds"); |
174 assert(0 <= i && i < length, "index out of bounds"); |
172 assert(number_of_states == 9, "check the code below"); |
175 assert(number_of_states == 10, "check the code below"); |
173 _table[btos][i] = entry.entry(btos); |
176 _table[btos][i] = entry.entry(btos); |
177 _table[ztos][i] = entry.entry(ztos); |
|
174 _table[ctos][i] = entry.entry(ctos); |
178 _table[ctos][i] = entry.entry(ctos); |
175 _table[stos][i] = entry.entry(stos); |
179 _table[stos][i] = entry.entry(stos); |
176 _table[atos][i] = entry.entry(atos); |
180 _table[atos][i] = entry.entry(atos); |
177 _table[itos][i] = entry.entry(itos); |
181 _table[itos][i] = entry.entry(itos); |
178 _table[ltos][i] = entry.entry(ltos); |
182 _table[ltos][i] = entry.entry(ltos); |