src/share/vm/interpreter/templateInterpreter.cpp

Print this page
rev 3227 : 7133857: exp() and pow() should use the x87 ISA on x86
Summary: use x87 instructions to implement exp() and pow() in interpreter/c1/c2.
Reviewed-by:


 353 
 354 #define method_entry(kind)                                                                    \
 355   { CodeletMark cm(_masm, "method entry point (kind = " #kind ")");                    \
 356     Interpreter::_entry_table[Interpreter::kind] = generate_method_entry(Interpreter::kind);  \
 357   }
 358 
 359   // all non-native method kinds
 360   method_entry(zerolocals)
 361   method_entry(zerolocals_synchronized)
 362   method_entry(empty)
 363   method_entry(accessor)
 364   method_entry(abstract)
 365   method_entry(method_handle)
 366   method_entry(java_lang_math_sin  )
 367   method_entry(java_lang_math_cos  )
 368   method_entry(java_lang_math_tan  )
 369   method_entry(java_lang_math_abs  )
 370   method_entry(java_lang_math_sqrt )
 371   method_entry(java_lang_math_log  )
 372   method_entry(java_lang_math_log10)


 373   method_entry(java_lang_ref_reference_get)
 374 
 375   // all native method kinds (must be one contiguous block)
 376   Interpreter::_native_entry_begin = Interpreter::code()->code_end();
 377   method_entry(native)
 378   method_entry(native_synchronized)
 379   Interpreter::_native_entry_end = Interpreter::code()->code_end();
 380 
 381 #undef method_entry
 382 
 383   // Bytecodes
 384   set_entry_points_for_all_bytes();
 385   set_safepoints_for_all_bytes();
 386 }
 387 
 388 //------------------------------------------------------------------------------------------------------------------------
 389 
 390 address TemplateInterpreterGenerator::generate_error_exit(const char* msg) {
 391   address entry = __ pc();
 392   __ stop(msg);




 353 
 354 #define method_entry(kind)                                                                    \
 355   { CodeletMark cm(_masm, "method entry point (kind = " #kind ")");                    \
 356     Interpreter::_entry_table[Interpreter::kind] = generate_method_entry(Interpreter::kind);  \
 357   }
 358 
 359   // all non-native method kinds
 360   method_entry(zerolocals)
 361   method_entry(zerolocals_synchronized)
 362   method_entry(empty)
 363   method_entry(accessor)
 364   method_entry(abstract)
 365   method_entry(method_handle)
 366   method_entry(java_lang_math_sin  )
 367   method_entry(java_lang_math_cos  )
 368   method_entry(java_lang_math_tan  )
 369   method_entry(java_lang_math_abs  )
 370   method_entry(java_lang_math_sqrt )
 371   method_entry(java_lang_math_log  )
 372   method_entry(java_lang_math_log10)
 373   method_entry(java_lang_math_exp  )
 374   method_entry(java_lang_math_pow  )
 375   method_entry(java_lang_ref_reference_get)
 376 
 377   // all native method kinds (must be one contiguous block)
 378   Interpreter::_native_entry_begin = Interpreter::code()->code_end();
 379   method_entry(native)
 380   method_entry(native_synchronized)
 381   Interpreter::_native_entry_end = Interpreter::code()->code_end();
 382 
 383 #undef method_entry
 384 
 385   // Bytecodes
 386   set_entry_points_for_all_bytes();
 387   set_safepoints_for_all_bytes();
 388 }
 389 
 390 //------------------------------------------------------------------------------------------------------------------------
 391 
 392 address TemplateInterpreterGenerator::generate_error_exit(const char* msg) {
 393   address entry = __ pc();
 394   __ stop(msg);