< prev index next >

src/share/vm/c1/c1_Runtime1.cpp

Print this page




 296   FUNCTION_CASE(entry, SharedRuntime::dcos);
 297   FUNCTION_CASE(entry, SharedRuntime::dexp);
 298   FUNCTION_CASE(entry, SharedRuntime::dlog);
 299   FUNCTION_CASE(entry, SharedRuntime::dlog10);
 300   FUNCTION_CASE(entry, SharedRuntime::dpow);
 301   FUNCTION_CASE(entry, SharedRuntime::drem);
 302   FUNCTION_CASE(entry, SharedRuntime::dsin);
 303   FUNCTION_CASE(entry, SharedRuntime::dtan);
 304   FUNCTION_CASE(entry, SharedRuntime::f2i);
 305   FUNCTION_CASE(entry, SharedRuntime::f2l);
 306   FUNCTION_CASE(entry, SharedRuntime::frem);
 307   FUNCTION_CASE(entry, SharedRuntime::l2d);
 308   FUNCTION_CASE(entry, SharedRuntime::l2f);
 309   FUNCTION_CASE(entry, SharedRuntime::ldiv);
 310   FUNCTION_CASE(entry, SharedRuntime::lmul);
 311   FUNCTION_CASE(entry, SharedRuntime::lrem);
 312   FUNCTION_CASE(entry, SharedRuntime::lrem);
 313   FUNCTION_CASE(entry, SharedRuntime::dtrace_method_entry);
 314   FUNCTION_CASE(entry, SharedRuntime::dtrace_method_exit);
 315   FUNCTION_CASE(entry, is_instance_of);

 316   FUNCTION_CASE(entry, trace_block_entry);
 317 #ifdef TRACE_HAVE_INTRINSICS
 318   FUNCTION_CASE(entry, TRACE_TIME_METHOD);
 319 #endif
 320   FUNCTION_CASE(entry, StubRoutines::updateBytesCRC32());
 321   FUNCTION_CASE(entry, StubRoutines::dexp());
 322   FUNCTION_CASE(entry, StubRoutines::dlog());
 323   FUNCTION_CASE(entry, StubRoutines::dpow());
 324   FUNCTION_CASE(entry, StubRoutines::dsin());
 325   FUNCTION_CASE(entry, StubRoutines::dcos());
 326 
 327 #undef FUNCTION_CASE
 328 
 329   // Soft float adds more runtime names.
 330   return pd_name_for_address(entry);
 331 }
 332 
 333 
 334 JRT_ENTRY(void, Runtime1::new_instance(JavaThread* thread, Klass* klass))
 335   NOT_PRODUCT(_new_instance_slowcase_cnt++;)


1469     bs->write_ref_array_pre((narrowOop*)dst, num);
1470     Copy::conjoint_oops_atomic((narrowOop*) src, (narrowOop*) dst, num);
1471   } else {
1472     bs->write_ref_array_pre((oop*)dst, num);
1473     Copy::conjoint_oops_atomic((oop*) src, (oop*) dst, num);
1474   }
1475   bs->write_ref_array(dst, num);
1476 JRT_END
1477 
1478 
1479 JRT_LEAF(int, Runtime1::is_instance_of(oopDesc* mirror, oopDesc* obj))
1480   // had to return int instead of bool, otherwise there may be a mismatch
1481   // between the C calling convention and the Java one.
1482   // e.g., on x86, GCC may clear only %al when returning a bool false, but
1483   // JVM takes the whole %eax as the return value, which may misinterpret
1484   // the return value as a boolean true.
1485 
1486   assert(mirror != NULL, "should null-check on mirror before calling");
1487   Klass* k = java_lang_Class::as_Klass(mirror);
1488   return (k != NULL && obj != NULL && obj->is_a(k)) ? 1 : 0;







1489 JRT_END
1490 
1491 JRT_ENTRY(void, Runtime1::predicate_failed_trap(JavaThread* thread))
1492   ResourceMark rm;
1493 
1494   assert(!TieredCompilation, "incompatible with tiered compilation");
1495 
1496   RegisterMap reg_map(thread, false);
1497   frame runtime_frame = thread->last_frame();
1498   frame caller_frame = runtime_frame.sender(&reg_map);
1499 
1500   nmethod* nm = CodeCache::find_nmethod(caller_frame.pc());
1501   assert (nm != NULL, "no more nmethod?");
1502   nm->make_not_entrant();
1503 
1504   methodHandle m(nm->method());
1505   MethodData* mdo = m->method_data();
1506 
1507   if (mdo == NULL && !HAS_PENDING_EXCEPTION) {
1508     // Build an MDO.  Ignore errors like OutOfMemory;




 296   FUNCTION_CASE(entry, SharedRuntime::dcos);
 297   FUNCTION_CASE(entry, SharedRuntime::dexp);
 298   FUNCTION_CASE(entry, SharedRuntime::dlog);
 299   FUNCTION_CASE(entry, SharedRuntime::dlog10);
 300   FUNCTION_CASE(entry, SharedRuntime::dpow);
 301   FUNCTION_CASE(entry, SharedRuntime::drem);
 302   FUNCTION_CASE(entry, SharedRuntime::dsin);
 303   FUNCTION_CASE(entry, SharedRuntime::dtan);
 304   FUNCTION_CASE(entry, SharedRuntime::f2i);
 305   FUNCTION_CASE(entry, SharedRuntime::f2l);
 306   FUNCTION_CASE(entry, SharedRuntime::frem);
 307   FUNCTION_CASE(entry, SharedRuntime::l2d);
 308   FUNCTION_CASE(entry, SharedRuntime::l2f);
 309   FUNCTION_CASE(entry, SharedRuntime::ldiv);
 310   FUNCTION_CASE(entry, SharedRuntime::lmul);
 311   FUNCTION_CASE(entry, SharedRuntime::lrem);
 312   FUNCTION_CASE(entry, SharedRuntime::lrem);
 313   FUNCTION_CASE(entry, SharedRuntime::dtrace_method_entry);
 314   FUNCTION_CASE(entry, SharedRuntime::dtrace_method_exit);
 315   FUNCTION_CASE(entry, is_instance_of);
 316   FUNCTION_CASE(entry, is_primitive);
 317   FUNCTION_CASE(entry, trace_block_entry);
 318 #ifdef TRACE_HAVE_INTRINSICS
 319   FUNCTION_CASE(entry, TRACE_TIME_METHOD);
 320 #endif
 321   FUNCTION_CASE(entry, StubRoutines::updateBytesCRC32());
 322   FUNCTION_CASE(entry, StubRoutines::dexp());
 323   FUNCTION_CASE(entry, StubRoutines::dlog());
 324   FUNCTION_CASE(entry, StubRoutines::dpow());
 325   FUNCTION_CASE(entry, StubRoutines::dsin());
 326   FUNCTION_CASE(entry, StubRoutines::dcos());
 327 
 328 #undef FUNCTION_CASE
 329 
 330   // Soft float adds more runtime names.
 331   return pd_name_for_address(entry);
 332 }
 333 
 334 
 335 JRT_ENTRY(void, Runtime1::new_instance(JavaThread* thread, Klass* klass))
 336   NOT_PRODUCT(_new_instance_slowcase_cnt++;)


1470     bs->write_ref_array_pre((narrowOop*)dst, num);
1471     Copy::conjoint_oops_atomic((narrowOop*) src, (narrowOop*) dst, num);
1472   } else {
1473     bs->write_ref_array_pre((oop*)dst, num);
1474     Copy::conjoint_oops_atomic((oop*) src, (oop*) dst, num);
1475   }
1476   bs->write_ref_array(dst, num);
1477 JRT_END
1478 
1479 
1480 JRT_LEAF(int, Runtime1::is_instance_of(oopDesc* mirror, oopDesc* obj))
1481   // had to return int instead of bool, otherwise there may be a mismatch
1482   // between the C calling convention and the Java one.
1483   // e.g., on x86, GCC may clear only %al when returning a bool false, but
1484   // JVM takes the whole %eax as the return value, which may misinterpret
1485   // the return value as a boolean true.
1486 
1487   assert(mirror != NULL, "should null-check on mirror before calling");
1488   Klass* k = java_lang_Class::as_Klass(mirror);
1489   return (k != NULL && obj != NULL && obj->is_a(k)) ? 1 : 0;
1490 JRT_END
1491 
1492 JRT_LEAF(int, Runtime1::is_primitive(oopDesc* mirror))
1493   // had to return int instead of bool, otherwise there may be a mismatch
1494   // between the C calling convention and the Java one.
1495   assert(mirror != NULL, "should null-check on mirror before calling");
1496   return java_lang_Class::is_primitive(mirror);
1497 JRT_END
1498 
1499 JRT_ENTRY(void, Runtime1::predicate_failed_trap(JavaThread* thread))
1500   ResourceMark rm;
1501 
1502   assert(!TieredCompilation, "incompatible with tiered compilation");
1503 
1504   RegisterMap reg_map(thread, false);
1505   frame runtime_frame = thread->last_frame();
1506   frame caller_frame = runtime_frame.sender(&reg_map);
1507 
1508   nmethod* nm = CodeCache::find_nmethod(caller_frame.pc());
1509   assert (nm != NULL, "no more nmethod?");
1510   nm->make_not_entrant();
1511 
1512   methodHandle m(nm->method());
1513   MethodData* mdo = m->method_data();
1514 
1515   if (mdo == NULL && !HAS_PENDING_EXCEPTION) {
1516     // Build an MDO.  Ignore errors like OutOfMemory;


< prev index next >