hotspot/src/share/vm/classfile/javaClasses.hpp
changeset 9630 d6419e4395e3
parent 9321 c29711c6ae35
child 10008 d84de97ad847
equal deleted inserted replaced
9629:1f4dc6af5ad8 9630:d6419e4395e3
   947     OP_RETYPE_ONLY   = 0x0, // no argument changes; straight retype
   947     OP_RETYPE_ONLY   = 0x0, // no argument changes; straight retype
   948     OP_RETYPE_RAW    = 0x1, // straight retype, trusted (void->int, Object->T)
   948     OP_RETYPE_RAW    = 0x1, // straight retype, trusted (void->int, Object->T)
   949     OP_CHECK_CAST    = 0x2, // ref-to-ref conversion; requires a Class argument
   949     OP_CHECK_CAST    = 0x2, // ref-to-ref conversion; requires a Class argument
   950     OP_PRIM_TO_PRIM  = 0x3, // converts from one primitive to another
   950     OP_PRIM_TO_PRIM  = 0x3, // converts from one primitive to another
   951     OP_REF_TO_PRIM   = 0x4, // unboxes a wrapper to produce a primitive
   951     OP_REF_TO_PRIM   = 0x4, // unboxes a wrapper to produce a primitive
   952     OP_PRIM_TO_REF   = 0x5, // boxes a primitive into a wrapper (NYI)
   952     OP_PRIM_TO_REF   = 0x5, // boxes a primitive into a wrapper
   953     OP_SWAP_ARGS     = 0x6, // swap arguments (vminfo is 2nd arg)
   953     OP_SWAP_ARGS     = 0x6, // swap arguments (vminfo is 2nd arg)
   954     OP_ROT_ARGS      = 0x7, // rotate arguments (vminfo is displaced arg)
   954     OP_ROT_ARGS      = 0x7, // rotate arguments (vminfo is displaced arg)
   955     OP_DUP_ARGS      = 0x8, // duplicates one or more arguments (at TOS)
   955     OP_DUP_ARGS      = 0x8, // duplicates one or more arguments (at TOS)
   956     OP_DROP_ARGS     = 0x9, // remove one or more argument slots
   956     OP_DROP_ARGS     = 0x9, // remove one or more argument slots
   957     OP_COLLECT_ARGS  = 0xA, // combine one or more arguments into a varargs (NYI)
   957     OP_COLLECT_ARGS  = 0xA, // combine arguments using an auxiliary function
   958     OP_SPREAD_ARGS   = 0xB, // expand in place a varargs array (of known size)
   958     OP_SPREAD_ARGS   = 0xB, // expand in place a varargs array (of known size)
   959     OP_FLYBY         = 0xC, // operate first on reified argument list (NYI)
   959     OP_FOLD_ARGS     = 0xC, // combine but do not remove arguments; prepend result
   960     OP_RICOCHET      = 0xD, // run an adapter chain on the return value (NYI)
   960     //OP_UNUSED_13   = 0xD, // unused code, perhaps for reified argument lists
   961     CONV_OP_LIMIT    = 0xE, // limit of CONV_OP enumeration
   961     CONV_OP_LIMIT    = 0xE, // limit of CONV_OP enumeration
   962 
   962 
   963     CONV_OP_MASK     = 0xF00, // this nybble contains the conversion op field
   963     CONV_OP_MASK     = 0xF00, // this nybble contains the conversion op field
       
   964     CONV_TYPE_MASK   = 0x0F,  // fits T_ADDRESS and below
   964     CONV_VMINFO_MASK = 0x0FF, // LSB is reserved for JVM use
   965     CONV_VMINFO_MASK = 0x0FF, // LSB is reserved for JVM use
   965     CONV_VMINFO_SHIFT     =  0, // position of bits in CONV_VMINFO_MASK
   966     CONV_VMINFO_SHIFT     =  0, // position of bits in CONV_VMINFO_MASK
   966     CONV_OP_SHIFT         =  8, // position of bits in CONV_OP_MASK
   967     CONV_OP_SHIFT         =  8, // position of bits in CONV_OP_MASK
   967     CONV_DEST_TYPE_SHIFT  = 12, // byte 2 has the adapter BasicType (if needed)
   968     CONV_DEST_TYPE_SHIFT  = 12, // byte 2 has the adapter BasicType (if needed)
   968     CONV_SRC_TYPE_SHIFT   = 16, // byte 2 has the source BasicType (if needed)
   969     CONV_SRC_TYPE_SHIFT   = 16, // byte 2 has the source BasicType (if needed)
  1087 class java_lang_invoke_MethodTypeForm: AllStatic {
  1088 class java_lang_invoke_MethodTypeForm: AllStatic {
  1088   friend class JavaClasses;
  1089   friend class JavaClasses;
  1089 
  1090 
  1090  private:
  1091  private:
  1091   static int _vmslots_offset;           // number of argument slots needed
  1092   static int _vmslots_offset;           // number of argument slots needed
       
  1093   static int _vmlayout_offset;          // object describing internal calling sequence
  1092   static int _erasedType_offset;        // erasedType = canonical MethodType
  1094   static int _erasedType_offset;        // erasedType = canonical MethodType
  1093   static int _genericInvoker_offset;    // genericInvoker = adapter for invokeGeneric
  1095   static int _genericInvoker_offset;    // genericInvoker = adapter for invokeGeneric
  1094 
  1096 
  1095   static void compute_offsets();
  1097   static void compute_offsets();
  1096 
  1098 
  1098   // Accessors
  1100   // Accessors
  1099   static int            vmslots(oop mtform);
  1101   static int            vmslots(oop mtform);
  1100   static oop            erasedType(oop mtform);
  1102   static oop            erasedType(oop mtform);
  1101   static oop            genericInvoker(oop mtform);
  1103   static oop            genericInvoker(oop mtform);
  1102 
  1104 
       
  1105   static oop            vmlayout(oop mtform);
       
  1106   static oop       init_vmlayout(oop mtform, oop cookie);
       
  1107 
  1103   // Accessors for code generation:
  1108   // Accessors for code generation:
  1104   static int vmslots_offset_in_bytes()          { return _vmslots_offset; }
  1109   static int vmslots_offset_in_bytes()          { return _vmslots_offset; }
       
  1110   static int vmlayout_offset_in_bytes()         { return _vmlayout_offset; }
  1105   static int erasedType_offset_in_bytes()       { return _erasedType_offset; }
  1111   static int erasedType_offset_in_bytes()       { return _erasedType_offset; }
  1106   static int genericInvoker_offset_in_bytes()   { return _genericInvoker_offset; }
  1112   static int genericInvoker_offset_in_bytes()   { return _genericInvoker_offset; }
  1107 };
  1113 };
  1108 
  1114 
  1109 
  1115