1671 trace_exception_counter++; 1672 stringStream tempst; 1673 1674 tempst.print("%d [Exception (%s): ", trace_exception_counter, msg); 1675 exception_oop->print_value_on(&tempst); 1676 tempst.print(" in "); 1677 CodeBlob* blob = CodeCache::find_blob(exception_pc); 1678 if (blob->is_compiled()) { 1679 CompiledMethod* cm = blob->as_compiled_method_or_null(); 1680 cm->method()->print_value_on(&tempst); 1681 } else if (blob->is_runtime_stub()) { 1682 tempst.print("<runtime-stub>"); 1683 } else { 1684 tempst.print("<unknown>"); 1685 } 1686 tempst.print(" at " INTPTR_FORMAT, p2i(exception_pc)); 1687 tempst.print("]"); 1688 1689 st->print_raw_cr(tempst.as_string()); 1690 } | 1671 trace_exception_counter++; 1672 stringStream tempst; 1673 1674 tempst.print("%d [Exception (%s): ", trace_exception_counter, msg); 1675 exception_oop->print_value_on(&tempst); 1676 tempst.print(" in "); 1677 CodeBlob* blob = CodeCache::find_blob(exception_pc); 1678 if (blob->is_compiled()) { 1679 CompiledMethod* cm = blob->as_compiled_method_or_null(); 1680 cm->method()->print_value_on(&tempst); 1681 } else if (blob->is_runtime_stub()) { 1682 tempst.print("<runtime-stub>"); 1683 } else { 1684 tempst.print("<unknown>"); 1685 } 1686 tempst.print(" at " INTPTR_FORMAT, p2i(exception_pc)); 1687 tempst.print("]"); 1688 1689 st->print_raw_cr(tempst.as_string()); 1690 } 1691 1692 const TypeFunc *OptoRuntime::store_value_type_fields_Type() { 1693 // create input type (domain) 1694 uint total = SharedRuntime::java_return_convention_max_int + SharedRuntime::java_return_convention_max_float*2; 1695 const Type **fields = TypeTuple::fields(total); 1696 // We don't know the number of returned values and their 1697 // types. Assume all registers available to the return convention 1698 // are used. 1699 fields[TypeFunc::Parms] = TypePtr::BOTTOM; 1700 uint i = 1; 1701 for (; i < SharedRuntime::java_return_convention_max_int; i++) { 1702 fields[TypeFunc::Parms+i] = TypeInt::INT; 1703 } 1704 for (; i < total; i+=2) { 1705 fields[TypeFunc::Parms+i] = Type::DOUBLE; 1706 fields[TypeFunc::Parms+i+1] = Type::HALF; 1707 } 1708 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms + total, fields); 1709 1710 // create result type (range) 1711 fields = TypeTuple::fields(1); 1712 fields[TypeFunc::Parms+0] = TypeValueTypePtr::NOTNULL; 1713 1714 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+1,fields); 1715 1716 return TypeFunc::make(domain, range); 1717 } |