< prev index next >

src/hotspot/share/opto/runtime.hpp

Print this page

118   // define stubs
119   static address generate_stub(ciEnv* ci_env, TypeFunc_generator gen, address C_function, const char* name, int is_fancy_jump, bool pass_tls, bool return_pc);
120 
121   // References to generated stubs
122   static address _new_instance_Java;
123   static address _new_array_Java;
124   static address _new_array_nozero_Java;
125   static address _multianewarray2_Java;
126   static address _multianewarray3_Java;
127   static address _multianewarray4_Java;
128   static address _multianewarray5_Java;
129   static address _multianewarrayN_Java;
130   static address _vtable_must_compile_Java;
131   static address _complete_monitor_locking_Java;
132   static address _rethrow_Java;
133   static address _monitor_notify_Java;
134   static address _monitor_notifyAll_Java;
135 
136   static address _slow_arraycopy_Java;
137   static address _register_finalizer_Java;

138 #if INCLUDE_JVMTI
139   static address _notify_jvmti_vthread_start;
140   static address _notify_jvmti_vthread_end;
141   static address _notify_jvmti_vthread_mount;
142   static address _notify_jvmti_vthread_unmount;
143 #endif
144 
145   //
146   // Implementation of runtime methods
147   // =================================
148 
149   // Allocate storage for a Java instance.
150   static void new_instance_C(Klass* instance_klass, JavaThread* current);
151 
152   // Allocate storage for a objArray or typeArray
153   static void new_array_C(Klass* array_klass, int len, JavaThread* current);
154   static void new_array_nozero_C(Klass* array_klass, int len, JavaThread* current);
155 
156   // Allocate storage for a multi-dimensional arrays
157   // Note: needs to be fixed for arbitrary number of dimensions
158   static void multianewarray2_C(Klass* klass, int len1, int len2, JavaThread* current);
159   static void multianewarray3_C(Klass* klass, int len1, int len2, int len3, JavaThread* current);
160   static void multianewarray4_C(Klass* klass, int len1, int len2, int len3, int len4, JavaThread* current);
161   static void multianewarray5_C(Klass* klass, int len1, int len2, int len3, int len4, int len5, JavaThread* current);
162   static void multianewarrayN_C(Klass* klass, arrayOopDesc* dims, JavaThread* current);
163 
164 public:
165   static void monitor_notify_C(oopDesc* obj, JavaThread* current);
166   static void monitor_notifyAll_C(oopDesc* obj, JavaThread* current);
167 
168 private:
169 
170   // Implicit exception support

197 
198   // Returns the name of a stub
199   static const char* stub_name(address entry);
200 
201   // access to runtime stubs entry points for java code
202   static address new_instance_Java()                     { return _new_instance_Java; }
203   static address new_array_Java()                        { return _new_array_Java; }
204   static address new_array_nozero_Java()                 { return _new_array_nozero_Java; }
205   static address multianewarray2_Java()                  { return _multianewarray2_Java; }
206   static address multianewarray3_Java()                  { return _multianewarray3_Java; }
207   static address multianewarray4_Java()                  { return _multianewarray4_Java; }
208   static address multianewarray5_Java()                  { return _multianewarray5_Java; }
209   static address multianewarrayN_Java()                  { return _multianewarrayN_Java; }
210   static address vtable_must_compile_stub()              { return _vtable_must_compile_Java; }
211   static address complete_monitor_locking_Java()         { return _complete_monitor_locking_Java; }
212   static address monitor_notify_Java()                   { return _monitor_notify_Java; }
213   static address monitor_notifyAll_Java()                { return _monitor_notifyAll_Java; }
214 
215   static address slow_arraycopy_Java()                   { return _slow_arraycopy_Java; }
216   static address register_finalizer_Java()               { return _register_finalizer_Java; }

217 #if INCLUDE_JVMTI
218   static address notify_jvmti_vthread_start()            { return _notify_jvmti_vthread_start; }
219   static address notify_jvmti_vthread_end()              { return _notify_jvmti_vthread_end; }
220   static address notify_jvmti_vthread_mount()            { return _notify_jvmti_vthread_mount; }
221   static address notify_jvmti_vthread_unmount()          { return _notify_jvmti_vthread_unmount; }
222 #endif
223 
224   static ExceptionBlob*    exception_blob()                      { return _exception_blob; }
225 
226   // Implicit exception support
227   static void throw_div0_exception_C      (JavaThread* thread);
228   static void throw_stack_overflow_error_C(JavaThread* thread);
229 
230   // Exception handling
231   static address rethrow_stub()             { return _rethrow_Java; }
232 
233 
234   // Type functions
235   // ======================================================
236 

299 
300   static const TypeFunc* updateBytesCRC32_Type();
301   static const TypeFunc* updateBytesCRC32C_Type();
302 
303   static const TypeFunc* updateBytesAdler32_Type();
304 
305   // leaf on stack replacement interpreter accessor types
306   static const TypeFunc* osr_end_Type();
307 
308   static const TypeFunc* register_finalizer_Type();
309 
310   JFR_ONLY(static const TypeFunc* class_id_load_barrier_Type();)
311 #if INCLUDE_JVMTI
312   static const TypeFunc* notify_jvmti_vthread_Type();
313 #endif
314 
315   // Dtrace support
316   static const TypeFunc* dtrace_method_entry_exit_Type();
317   static const TypeFunc* dtrace_object_alloc_Type();
318 








319  private:
320  static NamedCounter * volatile _named_counters;
321 
322  public:
323  // helper function which creates a named counter labeled with the
324  // if they are available
325  static NamedCounter* new_named_counter(JVMState* jvms, NamedCounter::CounterTag tag);
326 
327  // dumps all the named counters
328  static void          print_named_counters();
329 
330 };
331 
332 #endif // SHARE_OPTO_RUNTIME_HPP

118   // define stubs
119   static address generate_stub(ciEnv* ci_env, TypeFunc_generator gen, address C_function, const char* name, int is_fancy_jump, bool pass_tls, bool return_pc);
120 
121   // References to generated stubs
122   static address _new_instance_Java;
123   static address _new_array_Java;
124   static address _new_array_nozero_Java;
125   static address _multianewarray2_Java;
126   static address _multianewarray3_Java;
127   static address _multianewarray4_Java;
128   static address _multianewarray5_Java;
129   static address _multianewarrayN_Java;
130   static address _vtable_must_compile_Java;
131   static address _complete_monitor_locking_Java;
132   static address _rethrow_Java;
133   static address _monitor_notify_Java;
134   static address _monitor_notifyAll_Java;
135 
136   static address _slow_arraycopy_Java;
137   static address _register_finalizer_Java;
138   static address _load_unknown_inline;
139 #if INCLUDE_JVMTI
140   static address _notify_jvmti_vthread_start;
141   static address _notify_jvmti_vthread_end;
142   static address _notify_jvmti_vthread_mount;
143   static address _notify_jvmti_vthread_unmount;
144 #endif
145 
146   //
147   // Implementation of runtime methods
148   // =================================
149 
150   // Allocate storage for a Java instance.
151   static void new_instance_C(Klass* instance_klass, bool is_larval, JavaThread* current);
152 
153   // Allocate storage for a objArray or typeArray
154   static void new_array_C(Klass* array_klass, int len, JavaThread* current);
155   static void new_array_nozero_C(Klass* array_klass, int len, JavaThread* current);
156 
157   // Allocate storage for a multi-dimensional arrays
158   // Note: needs to be fixed for arbitrary number of dimensions
159   static void multianewarray2_C(Klass* klass, int len1, int len2, JavaThread* current);
160   static void multianewarray3_C(Klass* klass, int len1, int len2, int len3, JavaThread* current);
161   static void multianewarray4_C(Klass* klass, int len1, int len2, int len3, int len4, JavaThread* current);
162   static void multianewarray5_C(Klass* klass, int len1, int len2, int len3, int len4, int len5, JavaThread* current);
163   static void multianewarrayN_C(Klass* klass, arrayOopDesc* dims, JavaThread* current);
164 
165 public:
166   static void monitor_notify_C(oopDesc* obj, JavaThread* current);
167   static void monitor_notifyAll_C(oopDesc* obj, JavaThread* current);
168 
169 private:
170 
171   // Implicit exception support

198 
199   // Returns the name of a stub
200   static const char* stub_name(address entry);
201 
202   // access to runtime stubs entry points for java code
203   static address new_instance_Java()                     { return _new_instance_Java; }
204   static address new_array_Java()                        { return _new_array_Java; }
205   static address new_array_nozero_Java()                 { return _new_array_nozero_Java; }
206   static address multianewarray2_Java()                  { return _multianewarray2_Java; }
207   static address multianewarray3_Java()                  { return _multianewarray3_Java; }
208   static address multianewarray4_Java()                  { return _multianewarray4_Java; }
209   static address multianewarray5_Java()                  { return _multianewarray5_Java; }
210   static address multianewarrayN_Java()                  { return _multianewarrayN_Java; }
211   static address vtable_must_compile_stub()              { return _vtable_must_compile_Java; }
212   static address complete_monitor_locking_Java()         { return _complete_monitor_locking_Java; }
213   static address monitor_notify_Java()                   { return _monitor_notify_Java; }
214   static address monitor_notifyAll_Java()                { return _monitor_notifyAll_Java; }
215 
216   static address slow_arraycopy_Java()                   { return _slow_arraycopy_Java; }
217   static address register_finalizer_Java()               { return _register_finalizer_Java; }
218   static address load_unknown_inline_Java()              { return _load_unknown_inline; }
219 #if INCLUDE_JVMTI
220   static address notify_jvmti_vthread_start()            { return _notify_jvmti_vthread_start; }
221   static address notify_jvmti_vthread_end()              { return _notify_jvmti_vthread_end; }
222   static address notify_jvmti_vthread_mount()            { return _notify_jvmti_vthread_mount; }
223   static address notify_jvmti_vthread_unmount()          { return _notify_jvmti_vthread_unmount; }
224 #endif
225 
226   static ExceptionBlob*    exception_blob()                      { return _exception_blob; }
227 
228   // Implicit exception support
229   static void throw_div0_exception_C      (JavaThread* thread);
230   static void throw_stack_overflow_error_C(JavaThread* thread);
231 
232   // Exception handling
233   static address rethrow_stub()             { return _rethrow_Java; }
234 
235 
236   // Type functions
237   // ======================================================
238 

301 
302   static const TypeFunc* updateBytesCRC32_Type();
303   static const TypeFunc* updateBytesCRC32C_Type();
304 
305   static const TypeFunc* updateBytesAdler32_Type();
306 
307   // leaf on stack replacement interpreter accessor types
308   static const TypeFunc* osr_end_Type();
309 
310   static const TypeFunc* register_finalizer_Type();
311 
312   JFR_ONLY(static const TypeFunc* class_id_load_barrier_Type();)
313 #if INCLUDE_JVMTI
314   static const TypeFunc* notify_jvmti_vthread_Type();
315 #endif
316 
317   // Dtrace support
318   static const TypeFunc* dtrace_method_entry_exit_Type();
319   static const TypeFunc* dtrace_object_alloc_Type();
320 
321   static const TypeFunc* store_inline_type_fields_Type();
322   static const TypeFunc* pack_inline_type_Type();
323 
324   static void load_unknown_inline(flatArrayOopDesc* array, int index, JavaThread* current);
325   static const TypeFunc* load_unknown_inline_type();
326   static void store_unknown_inline(instanceOopDesc* buffer, flatArrayOopDesc* array, int index);
327   static const TypeFunc* store_unknown_inline_type();
328 
329  private:
330  static NamedCounter * volatile _named_counters;
331 
332  public:
333  // helper function which creates a named counter labeled with the
334  // if they are available
335  static NamedCounter* new_named_counter(JVMState* jvms, NamedCounter::CounterTag tag);
336 
337  // dumps all the named counters
338  static void          print_named_counters();
339 
340 };
341 
342 #endif // SHARE_OPTO_RUNTIME_HPP
< prev index next >