< prev index next >

src/hotspot/cpu/zero/stubGenerator_zero.cpp

Print this page

161       StubRoutines::_jshort_disjoint_arraycopy;
162     StubRoutines::_arrayof_jshort_arraycopy =
163       StubRoutines::_jshort_arraycopy;
164 
165     StubRoutines::_arrayof_jint_disjoint_arraycopy =
166       StubRoutines::_jint_disjoint_arraycopy;
167     StubRoutines::_arrayof_jint_arraycopy =
168       StubRoutines::_jint_arraycopy;
169 
170     StubRoutines::_arrayof_jlong_disjoint_arraycopy =
171       StubRoutines::_jlong_disjoint_arraycopy;
172     StubRoutines::_arrayof_jlong_arraycopy =
173       StubRoutines::_jlong_arraycopy;
174 
175     StubRoutines::_arrayof_oop_disjoint_arraycopy =
176       StubRoutines::_oop_disjoint_arraycopy;
177     StubRoutines::_arrayof_oop_arraycopy =
178       StubRoutines::_oop_arraycopy;
179   }
180 








181   void generate_initial_stubs() {
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_cmpxchg_entry      = ShouldNotCallThisStub();
195     StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();
196     StubRoutines::_atomic_add_entry          = ShouldNotCallThisStub();
197     StubRoutines::_fence_entry               = ShouldNotCallThisStub();
198   }
199 
200   void generate_continuation_stubs() {
201     // do nothing
202   }
203 
204   void generate_compiler_stubs() {
205     // do nothing
206   }
207 
208   void generate_final_stubs() {
209     // arraycopy stubs used by compilers
210     generate_arraycopy_stubs();
211 
212   }
213 
214  public:
215   StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
216     switch(blob_id) {



217     case initial_id:
218       generate_initial_stubs();
219       break;
220      case continuation_id:
221        generate_continuation_stubs();
222       break;
223     case compiler_id:
224        // do nothing
225       break;
226     case final_id:
227       generate_final_stubs();
228       break;
229     default:
230       fatal("unexpected blob id: %d", blob_id);
231       break;
232     };
233   }
234 };
235 
236 void StubGenerator_generate(CodeBuffer* code, StubGenBlobId blob_id) {

161       StubRoutines::_jshort_disjoint_arraycopy;
162     StubRoutines::_arrayof_jshort_arraycopy =
163       StubRoutines::_jshort_arraycopy;
164 
165     StubRoutines::_arrayof_jint_disjoint_arraycopy =
166       StubRoutines::_jint_disjoint_arraycopy;
167     StubRoutines::_arrayof_jint_arraycopy =
168       StubRoutines::_jint_arraycopy;
169 
170     StubRoutines::_arrayof_jlong_disjoint_arraycopy =
171       StubRoutines::_jlong_disjoint_arraycopy;
172     StubRoutines::_arrayof_jlong_arraycopy =
173       StubRoutines::_jlong_arraycopy;
174 
175     StubRoutines::_arrayof_oop_disjoint_arraycopy =
176       StubRoutines::_oop_disjoint_arraycopy;
177     StubRoutines::_arrayof_oop_arraycopy =
178       StubRoutines::_oop_arraycopy;
179   }
180 
181   void generate_preuniverse_stubs() {
182     StubRoutines::_fence_entry               = ShouldNotCallThisStub();
183     StubRoutines::_atomic_xchg_entry         = ShouldNotCallThisStub();
184     StubRoutines::_atomic_cmpxchg_entry      = ShouldNotCallThisStub();
185     StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();
186     StubRoutines::_atomic_add_entry          = ShouldNotCallThisStub();
187   }
188 
189   void generate_initial_stubs() {
190     // entry points that exist in all platforms Note: This is code
191     // that could be shared among different platforms - however the
192     // benefit seems to be smaller than the disadvantage of having a
193     // much more complicated generator structure. See also comment in
194     // stubRoutines.hpp.
195 
196     StubRoutines::_forward_exception_entry   = ShouldNotCallThisStub();
197     StubRoutines::_call_stub_entry           = (address) call_stub;
198     StubRoutines::_catch_exception_entry     = ShouldNotCallThisStub();







199   }
200 
201   void generate_continuation_stubs() {
202     // do nothing
203   }
204 
205   void generate_compiler_stubs() {
206     // do nothing
207   }
208 
209   void generate_final_stubs() {
210     // arraycopy stubs used by compilers
211     generate_arraycopy_stubs();
212 
213   }
214 
215  public:
216   StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
217     switch(blob_id) {
218     case preuniverse_id:
219       generate_preuniverse_stubs();
220       break;
221     case initial_id:
222       generate_initial_stubs();
223       break;
224      case continuation_id:
225        generate_continuation_stubs();
226       break;
227     case compiler_id:
228        // do nothing
229       break;
230     case final_id:
231       generate_final_stubs();
232       break;
233     default:
234       fatal("unexpected blob id: %d", blob_id);
235       break;
236     };
237   }
238 };
239 
240 void StubGenerator_generate(CodeBuffer* code, StubGenBlobId blob_id) {
< prev index next >