src/share/vm/classfile/vmSymbols.hpp

changeset 1568
aa62b9388fce
parent 1515
7c57aead6d3e
child 1570
e66fd840cb6b
     1.1 --- a/src/share/vm/classfile/vmSymbols.hpp	Mon Jan 04 00:22:57 2010 -0800
     1.2 +++ b/src/share/vm/classfile/vmSymbols.hpp	Mon Jan 04 15:52:40 2010 +0100
     1.3 @@ -346,9 +346,14 @@
     1.4                                                                                                    \
     1.5    /* common signatures names */                                                                   \
     1.6    template(void_method_signature,                     "()V")                                      \
     1.7 +  template(void_boolean_signature,                    "()Z")                                      \
     1.8 +  template(void_byte_signature,                       "()B")                                      \
     1.9 +  template(void_char_signature,                       "()C")                                      \
    1.10 +  template(void_short_signature,                      "()S")                                      \
    1.11    template(void_int_signature,                        "()I")                                      \
    1.12    template(void_long_signature,                       "()J")                                      \
    1.13 -  template(void_boolean_signature,                    "()Z")                                      \
    1.14 +  template(void_float_signature,                      "()F")                                      \
    1.15 +  template(void_double_signature,                     "()D")                                      \
    1.16    template(int_void_signature,                        "(I)V")                                     \
    1.17    template(int_int_signature,                         "(I)I")                                     \
    1.18    template(int_bool_signature,                        "(I)Z")                                     \
    1.19 @@ -853,6 +858,46 @@
    1.20                                                                                                                            \
    1.21    do_intrinsic(_invoke,                   java_lang_reflect_Method, invoke_name, object_array_object_object_signature, F_R) \
    1.22    /*   (symbols invoke_name and invoke_signature defined above) */                                                      \
    1.23 +  do_intrinsic(_checkSpreadArgument,      sun_dyn_MethodHandleImpl, checkSpreadArgument_name, checkSpreadArgument_signature, F_S) \
    1.24 +   do_name(    checkSpreadArgument_name,       "checkSpreadArgument")                                                   \
    1.25 +   do_name(    checkSpreadArgument_signature,  "(Ljava/lang/Object;I)V")                                                \
    1.26 +                                                                                                                        \
    1.27 +  /* unboxing methods: */                                                                                               \
    1.28 +  do_intrinsic(_booleanValue,             java_lang_Boolean,      booleanValue_name, void_boolean_signature, F_R)       \
    1.29 +   do_name(     booleanValue_name,       "booleanValue")                                                                \
    1.30 +  do_intrinsic(_byteValue,                java_lang_Byte,         byteValue_name, void_byte_signature, F_R)             \
    1.31 +   do_name(     byteValue_name,          "byteValue")                                                                   \
    1.32 +  do_intrinsic(_charValue,                java_lang_Character,    charValue_name, void_char_signature, F_R)             \
    1.33 +   do_name(     charValue_name,          "charValue")                                                                   \
    1.34 +  do_intrinsic(_shortValue,               java_lang_Short,        shortValue_name, void_short_signature, F_R)           \
    1.35 +   do_name(     shortValue_name,         "shortValue")                                                                  \
    1.36 +  do_intrinsic(_intValue,                 java_lang_Integer,      intValue_name, void_int_signature, F_R)               \
    1.37 +   do_name(     intValue_name,           "intValue")                                                                    \
    1.38 +  do_intrinsic(_longValue,                java_lang_Long,         longValue_name, void_long_signature, F_R)             \
    1.39 +   do_name(     longValue_name,          "longValue")                                                                   \
    1.40 +  do_intrinsic(_floatValue,               java_lang_Float,        floatValue_name, void_float_signature, F_R)           \
    1.41 +   do_name(     floatValue_name,         "floatValue")                                                                  \
    1.42 +  do_intrinsic(_doubleValue,              java_lang_Double,       doubleValue_name, void_double_signature, F_R)         \
    1.43 +   do_name(     doubleValue_name,        "doubleValue")                                                                 \
    1.44 +                                                                                                                        \
    1.45 +  /* boxing methods: */                                                                                                 \
    1.46 +   do_name(    valueOf_name,              "valueOf")                                                                    \
    1.47 +  do_intrinsic(_Boolean_valueOf,          java_lang_Boolean,      valueOf_name, Boolean_valueOf_signature, F_S)         \
    1.48 +   do_name(     Boolean_valueOf_signature,                       "(Z)Ljava/lang/Boolean;")                              \
    1.49 +  do_intrinsic(_Byte_valueOf,             java_lang_Byte,         valueOf_name, Byte_valueOf_signature, F_S)            \
    1.50 +   do_name(     Byte_valueOf_signature,                          "(B)Ljava/lang/Byte;")                                 \
    1.51 +  do_intrinsic(_Character_valueOf,        java_lang_Character,    valueOf_name, Character_valueOf_signature, F_S)       \
    1.52 +   do_name(     Character_valueOf_signature,                     "(C)Ljava/lang/Character;")                            \
    1.53 +  do_intrinsic(_Short_valueOf,            java_lang_Short,        valueOf_name, Short_valueOf_signature, F_S)           \
    1.54 +   do_name(     Short_valueOf_signature,                         "(S)Ljava/lang/Short;")                                \
    1.55 +  do_intrinsic(_Integer_valueOf,          java_lang_Integer,      valueOf_name, Integer_valueOf_signature, F_S)         \
    1.56 +   do_name(     Integer_valueOf_signature,                       "(I)Ljava/lang/Integer;")                              \
    1.57 +  do_intrinsic(_Long_valueOf,             java_lang_Long,         valueOf_name, Long_valueOf_signature, F_S)            \
    1.58 +   do_name(     Long_valueOf_signature,                          "(J)Ljava/lang/Long;")                                 \
    1.59 +  do_intrinsic(_Float_valueOf,            java_lang_Float,        valueOf_name, Float_valueOf_signature, F_S)           \
    1.60 +   do_name(     Float_valueOf_signature,                         "(F)Ljava/lang/Float;")                                \
    1.61 +  do_intrinsic(_Double_valueOf,           java_lang_Double,       valueOf_name, Double_valueOf_signature, F_S)          \
    1.62 +   do_name(     Double_valueOf_signature,                        "(D)Ljava/lang/Double;")                               \
    1.63                                                                                                                          \
    1.64      /*end*/
    1.65  
    1.66 @@ -983,7 +1028,12 @@
    1.67      F_Y,                        // !static ?native  synchronized
    1.68      F_RN,                       // !static  native !synchronized
    1.69      F_SN,                       //  static  native !synchronized
    1.70 -    F_RNY                       // !static  native  synchronized
    1.71 +    F_RNY,                      // !static  native  synchronized
    1.72 +
    1.73 +    FLAG_LIMIT
    1.74 +  };
    1.75 +  enum {
    1.76 +    log2_FLAG_LIMIT = 4         // checked by an assert at start-up
    1.77    };
    1.78  
    1.79  public:
    1.80 @@ -995,15 +1045,32 @@
    1.81  
    1.82    static const char* name_at(ID id);
    1.83  
    1.84 +private:
    1.85 +  static ID find_id_impl(vmSymbols::SID holder,
    1.86 +                         vmSymbols::SID name,
    1.87 +                         vmSymbols::SID sig,
    1.88 +                         jshort flags);
    1.89 +
    1.90 +public:
    1.91    // Given a method's class, name, signature, and access flags, report its ID.
    1.92    static ID find_id(vmSymbols::SID holder,
    1.93                      vmSymbols::SID name,
    1.94                      vmSymbols::SID sig,
    1.95 -                    jshort flags);
    1.96 +                    jshort flags) {
    1.97 +    ID id = find_id_impl(holder, name, sig, flags);
    1.98 +#ifdef ASSERT
    1.99 +    // ID _none does not hold the following asserts.
   1.100 +    if (id == _none)  return id;
   1.101 +#endif
   1.102 +    assert(    class_for(id) == holder, "correct id");
   1.103 +    assert(     name_for(id) == name,   "correct id");
   1.104 +    assert(signature_for(id) == sig,    "correct id");
   1.105 +    return id;
   1.106 +  }
   1.107  
   1.108    static void verify_method(ID actual_id, methodOop m) PRODUCT_RETURN;
   1.109  
   1.110 -  // No need for these in the product:
   1.111 +  // Find out the symbols behind an intrinsic:
   1.112    static vmSymbols::SID     class_for(ID id);
   1.113    static vmSymbols::SID      name_for(ID id);
   1.114    static vmSymbols::SID signature_for(ID id);
   1.115 @@ -1013,4 +1080,8 @@
   1.116  
   1.117    // Access to intrinsic methods:
   1.118    static methodOop method_for(ID id);
   1.119 +
   1.120 +  // Wrapper object methods:
   1.121 +  static ID for_boxing(BasicType type);
   1.122 +  static ID for_unboxing(BasicType type);
   1.123  };

mercurial