< prev index next >

src/hotspot/share/interpreter/templateInterpreterGenerator.cpp

Print this page

158                  generate_safept_entry_for(ftos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)),
159                  generate_safept_entry_for(dtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)),
160                  generate_safept_entry_for(vtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint))
161                  );
162   }
163 
164   { CodeletMark cm(_masm, "exception handling");
165     // (Note: this is not safepoint safe because thread may return to compiled code)
166     generate_throw_exception();
167   }
168 
169   { CodeletMark cm(_masm, "throw exception entrypoints");
170     Interpreter::_throw_ArrayIndexOutOfBoundsException_entry = generate_ArrayIndexOutOfBounds_handler();
171     Interpreter::_throw_ArrayStoreException_entry            = generate_klass_exception_handler("java/lang/ArrayStoreException");
172     Interpreter::_throw_ArithmeticException_entry            = generate_exception_handler("java/lang/ArithmeticException", "/ by zero");
173     Interpreter::_throw_ClassCastException_entry             = generate_ClassCastException_handler();
174     Interpreter::_throw_NullPointerException_entry           = generate_exception_handler("java/lang/NullPointerException", nullptr);
175     Interpreter::_throw_StackOverflowError_entry             = generate_StackOverflowError_handler();
176   }
177 
178 


179 
180 #define method_entry(kind)                                                                          \
181   { CodeletMark cm(_masm, "method entry point (kind = " #kind ")");                                 \
182     Interpreter::_entry_table[Interpreter::kind] = generate_method_entry(Interpreter::kind, false); \
183   }
184 
185   // all non-native method kinds
186   method_entry(zerolocals)
187   method_entry(zerolocals_synchronized)
188   method_entry(empty)
189   method_entry(getter)
190   method_entry(setter)
191   method_entry(abstract)
192   method_entry(java_lang_math_sin  )
193   method_entry(java_lang_math_cos  )
194   method_entry(java_lang_math_tan  )
195   method_entry(java_lang_math_abs  )
196   method_entry(java_lang_math_sqrt )
197   method_entry(java_lang_math_sqrt_strict)
198   method_entry(java_lang_math_log  )

158                  generate_safept_entry_for(ftos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)),
159                  generate_safept_entry_for(dtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)),
160                  generate_safept_entry_for(vtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint))
161                  );
162   }
163 
164   { CodeletMark cm(_masm, "exception handling");
165     // (Note: this is not safepoint safe because thread may return to compiled code)
166     generate_throw_exception();
167   }
168 
169   { CodeletMark cm(_masm, "throw exception entrypoints");
170     Interpreter::_throw_ArrayIndexOutOfBoundsException_entry = generate_ArrayIndexOutOfBounds_handler();
171     Interpreter::_throw_ArrayStoreException_entry            = generate_klass_exception_handler("java/lang/ArrayStoreException");
172     Interpreter::_throw_ArithmeticException_entry            = generate_exception_handler("java/lang/ArithmeticException", "/ by zero");
173     Interpreter::_throw_ClassCastException_entry             = generate_ClassCastException_handler();
174     Interpreter::_throw_NullPointerException_entry           = generate_exception_handler("java/lang/NullPointerException", nullptr);
175     Interpreter::_throw_StackOverflowError_entry             = generate_StackOverflowError_handler();
176   }
177 
178   { CodeletMark cm(_masm, "preemption rerun adapter");
179     Interpreter::_cont_preempt_rerun_interpreter_adapter = generate_cont_preempt_rerun_interpreter_adapter();
180   }
181 
182 #define method_entry(kind)                                                                          \
183   { CodeletMark cm(_masm, "method entry point (kind = " #kind ")");                                 \
184     Interpreter::_entry_table[Interpreter::kind] = generate_method_entry(Interpreter::kind, false); \
185   }
186 
187   // all non-native method kinds
188   method_entry(zerolocals)
189   method_entry(zerolocals_synchronized)
190   method_entry(empty)
191   method_entry(getter)
192   method_entry(setter)
193   method_entry(abstract)
194   method_entry(java_lang_math_sin  )
195   method_entry(java_lang_math_cos  )
196   method_entry(java_lang_math_tan  )
197   method_entry(java_lang_math_abs  )
198   method_entry(java_lang_math_sqrt )
199   method_entry(java_lang_math_sqrt_strict)
200   method_entry(java_lang_math_log  )
< prev index next >