< prev index next >

src/hotspot/share/c1/c1_Runtime1.hpp

Print this page


  93   friend class VMStructs;
  94   friend class ArrayCopyStub;
  95 
  96  public:
  97   enum StubID {
  98     RUNTIME1_STUBS(DECLARE_STUB_ID, DECLARE_LAST_STUB_ID)
  99   };
 100 
 101   // statistics
 102 #ifndef PRODUCT
 103   static int _resolve_invoke_cnt;
 104   static int _handle_wrong_method_cnt;
 105   static int _ic_miss_cnt;
 106   static int _generic_arraycopy_cnt;
 107   static int _generic_arraycopystub_cnt;
 108   static int _arraycopy_slowcase_cnt;
 109   static int _arraycopy_checkcast_cnt;
 110   static int _arraycopy_checkcast_attempt_cnt;
 111   static int _new_type_array_slowcase_cnt;
 112   static int _new_object_array_slowcase_cnt;

 113   static int _new_instance_slowcase_cnt;
 114   static int _new_multi_array_slowcase_cnt;
 115   static int _load_flattened_array_slowcase_cnt;
 116   static int _store_flattened_array_slowcase_cnt;
 117   static int _buffer_value_args_slowcase_cnt;
 118   static int _buffer_value_args_no_receiver_slowcase_cnt;
 119   static int _monitorenter_slowcase_cnt;
 120   static int _monitorexit_slowcase_cnt;
 121   static int _patch_code_slowcase_cnt;
 122   static int _throw_range_check_exception_count;
 123   static int _throw_index_exception_count;
 124   static int _throw_div0_exception_count;
 125   static int _throw_null_pointer_exception_count;
 126   static int _throw_class_cast_exception_count;
 127   static int _throw_incompatible_class_change_error_count;
 128   static int _throw_illegal_monitor_state_exception_count;
 129   static int _throw_array_store_exception_count;
 130   static int _throw_count;
 131 #endif
 132 


 136   static void buffer_value_args_impl(JavaThread* thread, Method* m, bool allocate_receiver);
 137 
 138   // stub generation
 139  public:
 140   static CodeBlob*  generate_blob(BufferBlob* buffer_blob, int stub_id, const char* name, bool expect_oop_map, StubAssemblerCodeGenClosure *cl);
 141   static void       generate_blob_for(BufferBlob* blob, StubID id);
 142   static OopMapSet* generate_code_for(StubID id, StubAssembler* sasm);
 143  private:
 144   static OopMapSet* generate_exception_throw(StubAssembler* sasm, address target, bool has_argument);
 145   static OopMapSet* generate_handle_exception(StubID id, StubAssembler* sasm);
 146   static void       generate_unwind_exception(StubAssembler *sasm);
 147   static OopMapSet* generate_patching(StubAssembler* sasm, address target);
 148 
 149   static OopMapSet* generate_stub_call(StubAssembler* sasm, Register result, address entry,
 150                                        Register arg1 = noreg, Register arg2 = noreg, Register arg3 = noreg);
 151 
 152   // runtime entry points
 153   static void new_instance    (JavaThread* thread, Klass* klass);
 154   static void new_type_array  (JavaThread* thread, Klass* klass, jint length);
 155   static void new_object_array(JavaThread* thread, Klass* klass, jint length);

 156   static void new_multi_array (JavaThread* thread, Klass* klass, int rank, jint* dims);
 157   static void load_flattened_array(JavaThread* thread, valueArrayOopDesc* array, int index);
 158   static void store_flattened_array(JavaThread* thread, valueArrayOopDesc* array, int index, oopDesc* value);
 159   static void buffer_value_args(JavaThread* thread, Method* method);
 160   static void buffer_value_args_no_receiver(JavaThread* thread, Method* method);
 161 
 162   static address counter_overflow(JavaThread* thread, int bci, Method* method);
 163 
 164   static void unimplemented_entry   (JavaThread* thread, StubID id);
 165 
 166   static address exception_handler_for_pc(JavaThread* thread);
 167 
 168   static void throw_range_check_exception(JavaThread* thread, int index, arrayOopDesc* a);
 169   static void throw_index_exception(JavaThread* thread, int index);
 170   static void throw_div0_exception(JavaThread* thread);
 171   static void throw_null_pointer_exception(JavaThread* thread);
 172   static void throw_class_cast_exception(JavaThread* thread, oopDesc* object);
 173   static void throw_incompatible_class_change_error(JavaThread* thread);
 174   static void throw_illegal_monitor_state_exception(JavaThread* thread);
 175   static void throw_array_store_exception(JavaThread* thread, oopDesc* object);




  93   friend class VMStructs;
  94   friend class ArrayCopyStub;
  95 
  96  public:
  97   enum StubID {
  98     RUNTIME1_STUBS(DECLARE_STUB_ID, DECLARE_LAST_STUB_ID)
  99   };
 100 
 101   // statistics
 102 #ifndef PRODUCT
 103   static int _resolve_invoke_cnt;
 104   static int _handle_wrong_method_cnt;
 105   static int _ic_miss_cnt;
 106   static int _generic_arraycopy_cnt;
 107   static int _generic_arraycopystub_cnt;
 108   static int _arraycopy_slowcase_cnt;
 109   static int _arraycopy_checkcast_cnt;
 110   static int _arraycopy_checkcast_attempt_cnt;
 111   static int _new_type_array_slowcase_cnt;
 112   static int _new_object_array_slowcase_cnt;
 113   static int _new_value_array_slowcase_cnt;
 114   static int _new_instance_slowcase_cnt;
 115   static int _new_multi_array_slowcase_cnt;
 116   static int _load_flattened_array_slowcase_cnt;
 117   static int _store_flattened_array_slowcase_cnt;
 118   static int _buffer_value_args_slowcase_cnt;
 119   static int _buffer_value_args_no_receiver_slowcase_cnt;
 120   static int _monitorenter_slowcase_cnt;
 121   static int _monitorexit_slowcase_cnt;
 122   static int _patch_code_slowcase_cnt;
 123   static int _throw_range_check_exception_count;
 124   static int _throw_index_exception_count;
 125   static int _throw_div0_exception_count;
 126   static int _throw_null_pointer_exception_count;
 127   static int _throw_class_cast_exception_count;
 128   static int _throw_incompatible_class_change_error_count;
 129   static int _throw_illegal_monitor_state_exception_count;
 130   static int _throw_array_store_exception_count;
 131   static int _throw_count;
 132 #endif
 133 


 137   static void buffer_value_args_impl(JavaThread* thread, Method* m, bool allocate_receiver);
 138 
 139   // stub generation
 140  public:
 141   static CodeBlob*  generate_blob(BufferBlob* buffer_blob, int stub_id, const char* name, bool expect_oop_map, StubAssemblerCodeGenClosure *cl);
 142   static void       generate_blob_for(BufferBlob* blob, StubID id);
 143   static OopMapSet* generate_code_for(StubID id, StubAssembler* sasm);
 144  private:
 145   static OopMapSet* generate_exception_throw(StubAssembler* sasm, address target, bool has_argument);
 146   static OopMapSet* generate_handle_exception(StubID id, StubAssembler* sasm);
 147   static void       generate_unwind_exception(StubAssembler *sasm);
 148   static OopMapSet* generate_patching(StubAssembler* sasm, address target);
 149 
 150   static OopMapSet* generate_stub_call(StubAssembler* sasm, Register result, address entry,
 151                                        Register arg1 = noreg, Register arg2 = noreg, Register arg3 = noreg);
 152 
 153   // runtime entry points
 154   static void new_instance    (JavaThread* thread, Klass* klass);
 155   static void new_type_array  (JavaThread* thread, Klass* klass, jint length);
 156   static void new_object_array(JavaThread* thread, Klass* klass, jint length);
 157   static void new_value_array (JavaThread* thread, Klass* klass, jint length);
 158   static void new_multi_array (JavaThread* thread, Klass* klass, int rank, jint* dims);
 159   static void load_flattened_array(JavaThread* thread, valueArrayOopDesc* array, int index);
 160   static void store_flattened_array(JavaThread* thread, valueArrayOopDesc* array, int index, oopDesc* value);
 161   static void buffer_value_args(JavaThread* thread, Method* method);
 162   static void buffer_value_args_no_receiver(JavaThread* thread, Method* method);
 163 
 164   static address counter_overflow(JavaThread* thread, int bci, Method* method);
 165 
 166   static void unimplemented_entry   (JavaThread* thread, StubID id);
 167 
 168   static address exception_handler_for_pc(JavaThread* thread);
 169 
 170   static void throw_range_check_exception(JavaThread* thread, int index, arrayOopDesc* a);
 171   static void throw_index_exception(JavaThread* thread, int index);
 172   static void throw_div0_exception(JavaThread* thread);
 173   static void throw_null_pointer_exception(JavaThread* thread);
 174   static void throw_class_cast_exception(JavaThread* thread, oopDesc* object);
 175   static void throw_incompatible_class_change_error(JavaThread* thread);
 176   static void throw_illegal_monitor_state_exception(JavaThread* thread);
 177   static void throw_array_store_exception(JavaThread* thread, oopDesc* object);


< prev index next >