Print this page
rev 1080 : [mq]: meth.walker.patch
rev 1083 : [mq]: indy.compiler.inline.patch

Split Close
Expand all
Collapse all
          --- old/src/share/vm/classfile/vmSymbols.cpp
          +++ new/src/share/vm/classfile/vmSymbols.cpp
↓ open down ↓ 291 lines elided ↑ open up ↑
 292  292    return vmIntrinsics::_none;
 293  293  }
 294  294  
 295  295  vmIntrinsics::ID vmIntrinsics::for_boxing(BasicType type) {
 296  296    return wrapper_intrinsic(type, false);
 297  297  }
 298  298  vmIntrinsics::ID vmIntrinsics::for_unboxing(BasicType type) {
 299  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  316  methodOop vmIntrinsics::method_for(vmIntrinsics::ID id) {
 303  317    if (id == _none)  return NULL;
 304  318    symbolOop cname = vmSymbols::symbol_at(class_for(id));
 305  319    symbolOop mname = vmSymbols::symbol_at(name_for(id));
 306  320    symbolOop msig  = vmSymbols::symbol_at(signature_for(id));
 307  321    if (cname == NULL || mname == NULL || msig == NULL)  return NULL;
 308  322    klassOop k = SystemDictionary::find_well_known_klass(cname);
 309  323    if (k == NULL)  return NULL;
 310  324    return instanceKlass::cast(k)->find_method(mname, msig);
 311  325  }
↓ open down ↓ 220 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX