159 StubRoutines::_jshort_disjoint_arraycopy;
160 StubRoutines::_arrayof_jshort_arraycopy =
161 StubRoutines::_jshort_arraycopy;
162
163 StubRoutines::_arrayof_jint_disjoint_arraycopy =
164 StubRoutines::_jint_disjoint_arraycopy;
165 StubRoutines::_arrayof_jint_arraycopy =
166 StubRoutines::_jint_arraycopy;
167
168 StubRoutines::_arrayof_jlong_disjoint_arraycopy =
169 StubRoutines::_jlong_disjoint_arraycopy;
170 StubRoutines::_arrayof_jlong_arraycopy =
171 StubRoutines::_jlong_arraycopy;
172
173 StubRoutines::_arrayof_oop_disjoint_arraycopy =
174 StubRoutines::_oop_disjoint_arraycopy;
175 StubRoutines::_arrayof_oop_arraycopy =
176 StubRoutines::_oop_arraycopy;
177 }
178
179 static int SafeFetch32(int *adr, int errValue) {
180 int value = errValue;
181 value = *adr;
182 return value;
183 }
184
185 static intptr_t SafeFetchN(intptr_t *adr, intptr_t errValue) {
186 intptr_t value = errValue;
187 value = *adr;
188 return value;
189 }
190
191
192 void generate_initial() {
193 // Generates all stubs and initializes the entry points
194
195 // entry points that exist in all platforms Note: This is code
196 // that could be shared among different platforms - however the
197 // benefit seems to be smaller than the disadvantage of having a
198 // much more complicated generator structure. See also comment in
199 // stubRoutines.hpp.
200
201 StubRoutines::_forward_exception_entry = ShouldNotCallThisStub();
202 StubRoutines::_call_stub_entry = (address) call_stub;
203 StubRoutines::_catch_exception_entry = ShouldNotCallThisStub();
204
205 // atomic calls
206 StubRoutines::_atomic_xchg_entry = ShouldNotCallThisStub();
207 StubRoutines::_atomic_xchg_ptr_entry = ShouldNotCallThisStub();
208 StubRoutines::_atomic_cmpxchg_entry = ShouldNotCallThisStub();
209 StubRoutines::_atomic_cmpxchg_ptr_entry = ShouldNotCallThisStub();
210 StubRoutines::_atomic_cmpxchg_byte_entry = ShouldNotCallThisStub();
211 StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();
224 // These entry points require SharedInfo::stack0 to be set up in
225 // non-core builds and need to be relocatable, so they each
226 // fabricate a RuntimeStub internally.
227 StubRoutines::_throw_AbstractMethodError_entry =
228 ShouldNotCallThisStub();
229
230 StubRoutines::_throw_NullPointerException_at_call_entry =
231 ShouldNotCallThisStub();
232
233 StubRoutines::_throw_StackOverflowError_entry =
234 ShouldNotCallThisStub();
235
236 // support for verify_oop (must happen after universe_init)
237 StubRoutines::_verify_oop_subroutine_entry =
238 ShouldNotCallThisStub();
239
240 // arraycopy stubs used by compilers
241 generate_arraycopy_stubs();
242
243 // Safefetch stubs.
244 StubRoutines::_safefetch32_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetch32);
245 StubRoutines::_safefetch32_fault_pc = NULL;
246 StubRoutines::_safefetch32_continuation_pc = NULL;
247
248 StubRoutines::_safefetchN_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetchN);
249 StubRoutines::_safefetchN_fault_pc = NULL;
250 StubRoutines::_safefetchN_continuation_pc = NULL;
251 }
252
253 public:
254 StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {
255 if (all) {
256 generate_all();
257 } else {
258 generate_initial();
259 }
260 }
261 };
262
263 void StubGenerator_generate(CodeBuffer* code, bool all) {
264 StubGenerator g(code, all);
265 }
266
267 EntryFrame *EntryFrame::build(const intptr_t* parameters,
268 int parameter_words,
|
159 StubRoutines::_jshort_disjoint_arraycopy;
160 StubRoutines::_arrayof_jshort_arraycopy =
161 StubRoutines::_jshort_arraycopy;
162
163 StubRoutines::_arrayof_jint_disjoint_arraycopy =
164 StubRoutines::_jint_disjoint_arraycopy;
165 StubRoutines::_arrayof_jint_arraycopy =
166 StubRoutines::_jint_arraycopy;
167
168 StubRoutines::_arrayof_jlong_disjoint_arraycopy =
169 StubRoutines::_jlong_disjoint_arraycopy;
170 StubRoutines::_arrayof_jlong_arraycopy =
171 StubRoutines::_jlong_arraycopy;
172
173 StubRoutines::_arrayof_oop_disjoint_arraycopy =
174 StubRoutines::_oop_disjoint_arraycopy;
175 StubRoutines::_arrayof_oop_arraycopy =
176 StubRoutines::_oop_arraycopy;
177 }
178
179 void generate_initial() {
180 // Generates all stubs and initializes the entry points
181
182 // entry points that exist in all platforms Note: This is code
183 // that could be shared among different platforms - however the
184 // benefit seems to be smaller than the disadvantage of having a
185 // much more complicated generator structure. See also comment in
186 // stubRoutines.hpp.
187
188 StubRoutines::_forward_exception_entry = ShouldNotCallThisStub();
189 StubRoutines::_call_stub_entry = (address) call_stub;
190 StubRoutines::_catch_exception_entry = ShouldNotCallThisStub();
191
192 // atomic calls
193 StubRoutines::_atomic_xchg_entry = ShouldNotCallThisStub();
194 StubRoutines::_atomic_xchg_ptr_entry = ShouldNotCallThisStub();
195 StubRoutines::_atomic_cmpxchg_entry = ShouldNotCallThisStub();
196 StubRoutines::_atomic_cmpxchg_ptr_entry = ShouldNotCallThisStub();
197 StubRoutines::_atomic_cmpxchg_byte_entry = ShouldNotCallThisStub();
198 StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();
211 // These entry points require SharedInfo::stack0 to be set up in
212 // non-core builds and need to be relocatable, so they each
213 // fabricate a RuntimeStub internally.
214 StubRoutines::_throw_AbstractMethodError_entry =
215 ShouldNotCallThisStub();
216
217 StubRoutines::_throw_NullPointerException_at_call_entry =
218 ShouldNotCallThisStub();
219
220 StubRoutines::_throw_StackOverflowError_entry =
221 ShouldNotCallThisStub();
222
223 // support for verify_oop (must happen after universe_init)
224 StubRoutines::_verify_oop_subroutine_entry =
225 ShouldNotCallThisStub();
226
227 // arraycopy stubs used by compilers
228 generate_arraycopy_stubs();
229
230 // Safefetch stubs.
231 StubRoutines::_safefetch32_entry = NULL;
232 StubRoutines::_safefetch32_fault_pc = NULL;
233 StubRoutines::_safefetch32_continuation_pc = NULL;
234
235 StubRoutines::_safefetchN_entry = NULL;
236 StubRoutines::_safefetchN_fault_pc = NULL;
237 StubRoutines::_safefetchN_continuation_pc = NULL;
238 }
239
240 public:
241 StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {
242 if (all) {
243 generate_all();
244 } else {
245 generate_initial();
246 }
247 }
248 };
249
250 void StubGenerator_generate(CodeBuffer* code, bool all) {
251 StubGenerator g(code, all);
252 }
253
254 EntryFrame *EntryFrame::build(const intptr_t* parameters,
255 int parameter_words,
|