297 } |
297 } |
298 vmIntrinsics::ID vmIntrinsics::for_unboxing(BasicType type) { |
298 vmIntrinsics::ID vmIntrinsics::for_unboxing(BasicType type) { |
299 return wrapper_intrinsic(type, true); |
299 return wrapper_intrinsic(type, true); |
300 } |
300 } |
301 |
301 |
|
302 vmIntrinsics::ID vmIntrinsics::for_raw_conversion(BasicType src, BasicType dest) { |
|
303 #define SRC_DEST(s,d) (((int)(s) << 4) + (int)(d)) |
|
304 switch (SRC_DEST(src, dest)) { |
|
305 case SRC_DEST(T_INT, T_FLOAT): return vmIntrinsics::_intBitsToFloat; |
|
306 case SRC_DEST(T_FLOAT, T_INT): return vmIntrinsics::_floatToRawIntBits; |
|
307 |
|
308 case SRC_DEST(T_LONG, T_DOUBLE): return vmIntrinsics::_longBitsToDouble; |
|
309 case SRC_DEST(T_DOUBLE, T_LONG): return vmIntrinsics::_doubleToRawLongBits; |
|
310 } |
|
311 #undef SRC_DEST |
|
312 |
|
313 return vmIntrinsics::_none; |
|
314 } |
|
315 |
302 methodOop vmIntrinsics::method_for(vmIntrinsics::ID id) { |
316 methodOop vmIntrinsics::method_for(vmIntrinsics::ID id) { |
303 if (id == _none) return NULL; |
317 if (id == _none) return NULL; |
304 symbolOop cname = vmSymbols::symbol_at(class_for(id)); |
318 symbolOop cname = vmSymbols::symbol_at(class_for(id)); |
305 symbolOop mname = vmSymbols::symbol_at(name_for(id)); |
319 symbolOop mname = vmSymbols::symbol_at(name_for(id)); |
306 symbolOop msig = vmSymbols::symbol_at(signature_for(id)); |
320 symbolOop msig = vmSymbols::symbol_at(signature_for(id)); |