Print this page
rev 1072 : [mq]: meth.walker.patch

Split Close
Expand all
Collapse all
          --- old/src/share/vm/classfile/vmSymbols.hpp
          +++ new/src/share/vm/classfile/vmSymbols.hpp
↓ open down ↓ 336 lines elided ↑ open up ↑
 337  337                                                                                                    \
 338  338    /* non-intrinsic name/signature pairs: */                                                       \
 339  339    template(register_method_name,                      "register")                                 \
 340  340    do_alias(register_method_signature,         object_void_signature)                              \
 341  341                                                                                                    \
 342  342    /* name symbols needed by intrinsics */                                                         \
 343  343    VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, template, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \
 344  344                                                                                                    \
 345  345    /* common signatures names */                                                                   \
 346  346    template(void_method_signature,                     "()V")                                      \
      347 +  template(void_boolean_signature,                    "()Z")                                      \
      348 +  template(void_byte_signature,                       "()B")                                      \
      349 +  template(void_char_signature,                       "()C")                                      \
      350 +  template(void_short_signature,                      "()S")                                      \
 347  351    template(void_int_signature,                        "()I")                                      \
 348  352    template(void_long_signature,                       "()J")                                      \
 349      -  template(void_boolean_signature,                    "()Z")                                      \
      353 +  template(void_float_signature,                      "()F")                                      \
      354 +  template(void_double_signature,                     "()D")                                      \
 350  355    template(int_void_signature,                        "(I)V")                                     \
 351  356    template(int_int_signature,                         "(I)I")                                     \
 352  357    template(int_bool_signature,                        "(I)Z")                                     \
 353  358    template(float_int_signature,                       "(F)I")                                     \
 354  359    template(double_long_signature,                     "(D)J")                                     \
 355  360    template(double_double_signature,                   "(D)D")                                     \
 356  361    template(int_float_signature,                       "(I)F")                                     \
 357  362    template(long_int_signature,                        "(J)I")                                     \
 358  363    template(long_long_signature,                       "(J)J")                                     \
 359  364    template(long_double_signature,                     "(J)D")                                     \
↓ open down ↓ 453 lines elided ↑ open up ↑
 813  818      /*== LAST_COMPILER_INLINE*/                                                                                         \
 814  819      /*the compiler does have special inlining code for these; bytecode inline is just fine */                           \
 815  820                                                                                                                          \
 816  821    do_intrinsic(_fillInStackTrace,         java_lang_Throwable, fillInStackTrace_name, void_throwable_signature,  F_RNY) \
 817  822                                                                                                                          \
 818  823    do_intrinsic(_Object_init,              java_lang_Object, object_initializer_name, void_method_signature,      F_R)   \
 819  824    /*    (symbol object_initializer_name defined above) */                                                               \
 820  825                                                                                                                          \
 821  826    do_intrinsic(_invoke,                   java_lang_reflect_Method, invoke_name, object_array_object_object_signature, F_R) \
 822  827    /*   (symbols invoke_name and invoke_signature defined above) */                                                      \
      828 +  do_intrinsic(_checkSpreadArgument,      sun_dyn_MethodHandleImpl, checkSpreadArgument_name, checkSpreadArgument_signature, F_S) \
      829 +   do_name(    checkSpreadArgument_name,       "checkSpreadArgument")                                                   \
      830 +   do_name(    checkSpreadArgument_signature,  "(Ljava/lang/Object;I)V")                                                \
      831 +                                                                                                                        \
      832 +  /* unboxing methods: */                                                                                               \
      833 +  do_intrinsic(_booleanValue,             java_lang_Boolean,      booleanValue_name, void_boolean_signature, F_R)       \
      834 +   do_name(     booleanValue_name,       "booleanValue")                                                                \
      835 +  do_intrinsic(_byteValue,                java_lang_Byte,         byteValue_name, void_byte_signature, F_R)             \
      836 +   do_name(     byteValue_name,          "byteValue")                                                                   \
      837 +  do_intrinsic(_charValue,                java_lang_Character,    charValue_name, void_char_signature, F_R)             \
      838 +   do_name(     charValue_name,          "charValue")                                                                   \
      839 +  do_intrinsic(_shortValue,               java_lang_Short,        shortValue_name, void_short_signature, F_R)           \
      840 +   do_name(     shortValue_name,         "shortValue")                                                                  \
      841 +  do_intrinsic(_intValue,                 java_lang_Integer,      intValue_name, void_int_signature, F_R)               \
      842 +   do_name(     intValue_name,           "intValue")                                                                    \
      843 +  do_intrinsic(_longValue,                java_lang_Long,         longValue_name, void_long_signature, F_R)             \
      844 +   do_name(     longValue_name,          "longValue")                                                                   \
      845 +  do_intrinsic(_floatValue,               java_lang_Float,        floatValue_name, void_float_signature, F_R)           \
      846 +   do_name(     floatValue_name,         "floatValue")                                                                  \
      847 +  do_intrinsic(_doubleValue,              java_lang_Double,       doubleValue_name, void_double_signature, F_R)         \
      848 +   do_name(     doubleValue_name,        "doubleValue")                                                                 \
      849 +                                                                                                                        \
      850 +  /* boxing methods: */                                                                                                 \
      851 +   do_name(    valueOf_name,              "valueOf")                                                                    \
      852 +  do_intrinsic(_Boolean_valueOf,          java_lang_Boolean,      valueOf_name, Boolean_valueOf_signature, F_S)         \
      853 +   do_name(     Boolean_valueOf_signature,                       "(Z)Ljava/lang/Boolean;")                              \
      854 +  do_intrinsic(_Byte_valueOf,             java_lang_Byte,         valueOf_name, Byte_valueOf_signature, F_S)            \
      855 +   do_name(     Byte_valueOf_signature,                          "(B)Ljava/lang/Byte;")                                 \
      856 +  do_intrinsic(_Character_valueOf,        java_lang_Character,    valueOf_name, Character_valueOf_signature, F_S)       \
      857 +   do_name(     Character_valueOf_signature,                     "(C)Ljava/lang/Character;")                            \
      858 +  do_intrinsic(_Short_valueOf,            java_lang_Short,        valueOf_name, Short_valueOf_signature, F_S)           \
      859 +   do_name(     Short_valueOf_signature,                         "(S)Ljava/lang/Short;")                                \
      860 +  do_intrinsic(_Integer_valueOf,          java_lang_Integer,      valueOf_name, Integer_valueOf_signature, F_S)         \
      861 +   do_name(     Integer_valueOf_signature,                       "(I)Ljava/lang/Integer;")                              \
      862 +  do_intrinsic(_Long_valueOf,             java_lang_Long,         valueOf_name, Long_valueOf_signature, F_S)            \
      863 +   do_name(     Long_valueOf_signature,                          "(J)Ljava/lang/Long;")                                 \
      864 +  do_intrinsic(_Float_valueOf,            java_lang_Float,        valueOf_name, Float_valueOf_signature, F_S)           \
      865 +   do_name(     Float_valueOf_signature,                         "(F)Ljava/lang/Float;")                                \
      866 +  do_intrinsic(_Double_valueOf,           java_lang_Double,       valueOf_name, Double_valueOf_signature, F_S)          \
      867 +   do_name(     Double_valueOf_signature,                        "(D)Ljava/lang/Double;")                               \
 823  868                                                                                                                          \
 824  869      /*end*/
 825  870  
 826  871  
 827  872  
 828  873  
 829  874  // Class vmSymbols
 830  875  
 831  876  class vmSymbols: AllStatic {
 832  877   friend class vmSymbolHandles;
↓ open down ↓ 109 lines elided ↑ open up ↑
 942  987      FIRST_ID = _none + 1
 943  988    };
 944  989  
 945  990    enum Flags {
 946  991      // AccessFlags syndromes relevant to intrinsics.
 947  992      F_none = 0,
 948  993      F_R,                        // !static        !synchronized (R="regular")
 949  994      F_S,                        //  static        !synchronized
 950  995      F_RN,                       // !static native !synchronized
 951  996      F_SN,                       //  static native !synchronized
 952      -    F_RNY                       // !static native  synchronized
      997 +    F_RNY,                      // !static native  synchronized
      998 +
      999 +    FLAG_LIMIT
     1000 +  };
     1001 +  enum {
     1002 +    log2_FLAG_LIMIT = 4         // checked by an assert at start-up
 953 1003    };
 954 1004  
 955 1005  public:
 956 1006    static ID ID_from(int raw_id) {
 957 1007      assert(raw_id >= (int)_none && raw_id < (int)ID_LIMIT,
 958 1008             "must be a valid intrinsic ID");
 959 1009      return (ID)raw_id;
 960 1010    }
 961 1011  
 962 1012    static const char* name_at(ID id);
 963 1013  
 964 1014    // Given a method's class, name, signature, and access flags, report its ID.
 965 1015    static ID find_id(vmSymbols::SID holder,
 966 1016                      vmSymbols::SID name,
 967 1017                      vmSymbols::SID sig,
 968 1018                      jshort flags);
 969 1019  
 970 1020    static void verify_method(ID actual_id, methodOop m) PRODUCT_RETURN;
 971 1021  
 972      -  // No need for these in the product:
     1022 +  // Find out the symbols behind an intrinsic:
 973 1023    static vmSymbols::SID     class_for(ID id);
 974 1024    static vmSymbols::SID      name_for(ID id);
 975 1025    static vmSymbols::SID signature_for(ID id);
 976 1026    static Flags              flags_for(ID id);
 977 1027  
 978 1028    static const char* short_name_as_C_string(ID id, char* buf, int size);
 979 1029  
 980 1030    // Access to intrinsic methods:
 981 1031    static methodOop method_for(ID id);
     1032 +
     1033 +  // Wrapper object methods:
     1034 +  static ID for_boxing(BasicType type);
     1035 +  static ID for_unboxing(BasicType type);
 982 1036  };
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX