src/share/vm/classfile/vmSymbols.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6894206 Sdiff src/share/vm/classfile

src/share/vm/classfile/vmSymbols.hpp

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


 327   template(vmslots_name,                              "vmslots")                                  \
 328   template(vmindex_name,                              "vmindex")                                  \
 329   template(vmargslot_name,                            "vmargslot")                                \
 330   template(flags_name,                                "flags")                                    \
 331   template(argument_name,                             "argument")                                 \
 332   template(conversion_name,                           "conversion")                               \
 333   template(rtype_name,                                "rtype")                                    \
 334   template(ptypes_name,                               "ptypes")                                   \
 335   template(form_name,                                 "form")                                     \
 336   template(erasedType_name,                           "erasedType")                               \
 337                                                                                                   \
 338   /* non-intrinsic name/signature pairs: */                                                       \
 339   template(register_method_name,                      "register")                                 \
 340   do_alias(register_method_signature,         object_void_signature)                              \
 341                                                                                                   \
 342   /* name symbols needed by intrinsics */                                                         \
 343   VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, template, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \
 344                                                                                                   \
 345   /* common signatures names */                                                                   \
 346   template(void_method_signature,                     "()V")                                      \




 347   template(void_int_signature,                        "()I")                                      \
 348   template(void_long_signature,                       "()J")                                      \
 349   template(void_boolean_signature,                    "()Z")                                      \

 350   template(int_void_signature,                        "(I)V")                                     \
 351   template(int_int_signature,                         "(I)I")                                     \
 352   template(int_bool_signature,                        "(I)Z")                                     \
 353   template(float_int_signature,                       "(F)I")                                     \
 354   template(double_long_signature,                     "(D)J")                                     \
 355   template(double_double_signature,                   "(D)D")                                     \
 356   template(int_float_signature,                       "(I)F")                                     \
 357   template(long_int_signature,                        "(J)I")                                     \
 358   template(long_long_signature,                       "(J)J")                                     \
 359   template(long_double_signature,                     "(J)D")                                     \
 360   template(byte_signature,                            "B")                                        \
 361   template(char_signature,                            "C")                                        \
 362   template(double_signature,                          "D")                                        \
 363   template(float_signature,                           "F")                                        \
 364   template(int_signature,                             "I")                                        \
 365   template(long_signature,                            "J")                                        \
 366   template(short_signature,                           "S")                                        \
 367   template(bool_signature,                            "Z")                                        \
 368   template(void_signature,                            "V")                                        \
 369   template(byte_array_signature,                      "[B")                                       \


 803   do_signature( prefetch_signature,        "(Ljava/lang/Object;J)V")                                                    \
 804                                                                                                                         \
 805   do_intrinsic(_prefetchRead,             sun_misc_Unsafe,        prefetchRead_name, prefetch_signature,         F_RN)  \
 806    do_name(     prefetchRead_name,                               "prefetchRead")                                        \
 807   do_intrinsic(_prefetchWrite,            sun_misc_Unsafe,        prefetchWrite_name, prefetch_signature,        F_RN)  \
 808    do_name(     prefetchWrite_name,                              "prefetchWrite")                                       \
 809   do_intrinsic(_prefetchReadStatic,       sun_misc_Unsafe,        prefetchReadStatic_name, prefetch_signature,   F_SN)  \
 810    do_name(     prefetchReadStatic_name,                         "prefetchReadStatic")                                  \
 811   do_intrinsic(_prefetchWriteStatic,      sun_misc_Unsafe,        prefetchWriteStatic_name, prefetch_signature,  F_SN)  \
 812    do_name(     prefetchWriteStatic_name,                        "prefetchWriteStatic")                                 \
 813     /*== LAST_COMPILER_INLINE*/                                                                                         \
 814     /*the compiler does have special inlining code for these; bytecode inline is just fine */                           \
 815                                                                                                                         \
 816   do_intrinsic(_fillInStackTrace,         java_lang_Throwable, fillInStackTrace_name, void_throwable_signature,  F_RNY) \
 817                                                                                                                         \
 818   do_intrinsic(_Object_init,              java_lang_Object, object_initializer_name, void_method_signature,      F_R)   \
 819   /*    (symbol object_initializer_name defined above) */                                                               \
 820                                                                                                                         \
 821   do_intrinsic(_invoke,                   java_lang_reflect_Method, invoke_name, object_array_object_object_signature, F_R) \
 822   /*   (symbols invoke_name and invoke_signature defined above) */                                                      \








































 823                                                                                                                         \
 824     /*end*/
 825 
 826 
 827 
 828 
 829 // Class vmSymbols
 830 
 831 class vmSymbols: AllStatic {
 832  friend class vmSymbolHandles;
 833  friend class vmIntrinsics;
 834  public:
 835   // enum for figuring positions and size of array holding symbolOops
 836   enum SID {
 837     NO_SID = 0,
 838 
 839     #define VM_SYMBOL_ENUM(name, string) VM_SYMBOL_ENUM_NAME(name),
 840     VM_SYMBOLS_DO(VM_SYMBOL_ENUM, VM_ALIAS_IGNORE)
 841     #undef VM_SYMBOL_ENUM
 842 


 932   enum ID {
 933     _none = 0,                      // not an intrinsic (default answer)
 934 
 935     #define VM_INTRINSIC_ENUM(id, klass, name, sig, flags)  id,
 936     VM_INTRINSICS_DO(VM_INTRINSIC_ENUM,
 937                      VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE)
 938     #undef VM_INTRINSIC_ENUM
 939 
 940     ID_LIMIT,
 941     LAST_COMPILER_INLINE = _prefetchWriteStatic,
 942     FIRST_ID = _none + 1
 943   };
 944 
 945   enum Flags {
 946     // AccessFlags syndromes relevant to intrinsics.
 947     F_none = 0,
 948     F_R,                        // !static        !synchronized (R="regular")
 949     F_S,                        //  static        !synchronized
 950     F_RN,                       // !static native !synchronized
 951     F_SN,                       //  static native !synchronized
 952     F_RNY                       // !static native  synchronized





 953   };
 954 
 955 public:
 956   static ID ID_from(int raw_id) {
 957     assert(raw_id >= (int)_none && raw_id < (int)ID_LIMIT,
 958            "must be a valid intrinsic ID");
 959     return (ID)raw_id;
 960   }
 961 
 962   static const char* name_at(ID id);
 963 
 964   // Given a method's class, name, signature, and access flags, report its ID.
 965   static ID find_id(vmSymbols::SID holder,
 966                     vmSymbols::SID name,
 967                     vmSymbols::SID sig,
 968                     jshort flags);
 969 
 970   static void verify_method(ID actual_id, methodOop m) PRODUCT_RETURN;
 971 
 972   // No need for these in the product:
 973   static vmSymbols::SID     class_for(ID id);
 974   static vmSymbols::SID      name_for(ID id);
 975   static vmSymbols::SID signature_for(ID id);
 976   static Flags              flags_for(ID id);
 977 
 978   static const char* short_name_as_C_string(ID id, char* buf, int size);
 979 
 980   // Access to intrinsic methods:
 981   static methodOop method_for(ID id);




 982 };


 327   template(vmslots_name,                              "vmslots")                                  \
 328   template(vmindex_name,                              "vmindex")                                  \
 329   template(vmargslot_name,                            "vmargslot")                                \
 330   template(flags_name,                                "flags")                                    \
 331   template(argument_name,                             "argument")                                 \
 332   template(conversion_name,                           "conversion")                               \
 333   template(rtype_name,                                "rtype")                                    \
 334   template(ptypes_name,                               "ptypes")                                   \
 335   template(form_name,                                 "form")                                     \
 336   template(erasedType_name,                           "erasedType")                               \
 337                                                                                                   \
 338   /* non-intrinsic name/signature pairs: */                                                       \
 339   template(register_method_name,                      "register")                                 \
 340   do_alias(register_method_signature,         object_void_signature)                              \
 341                                                                                                   \
 342   /* name symbols needed by intrinsics */                                                         \
 343   VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, template, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \
 344                                                                                                   \
 345   /* common signatures names */                                                                   \
 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")                                      \
 351   template(void_int_signature,                        "()I")                                      \
 352   template(void_long_signature,                       "()J")                                      \
 353   template(void_float_signature,                      "()F")                                      \
 354   template(void_double_signature,                     "()D")                                      \
 355   template(int_void_signature,                        "(I)V")                                     \
 356   template(int_int_signature,                         "(I)I")                                     \
 357   template(int_bool_signature,                        "(I)Z")                                     \
 358   template(float_int_signature,                       "(F)I")                                     \
 359   template(double_long_signature,                     "(D)J")                                     \
 360   template(double_double_signature,                   "(D)D")                                     \
 361   template(int_float_signature,                       "(I)F")                                     \
 362   template(long_int_signature,                        "(J)I")                                     \
 363   template(long_long_signature,                       "(J)J")                                     \
 364   template(long_double_signature,                     "(J)D")                                     \
 365   template(byte_signature,                            "B")                                        \
 366   template(char_signature,                            "C")                                        \
 367   template(double_signature,                          "D")                                        \
 368   template(float_signature,                           "F")                                        \
 369   template(int_signature,                             "I")                                        \
 370   template(long_signature,                            "J")                                        \
 371   template(short_signature,                           "S")                                        \
 372   template(bool_signature,                            "Z")                                        \
 373   template(void_signature,                            "V")                                        \
 374   template(byte_array_signature,                      "[B")                                       \


 808   do_signature( prefetch_signature,        "(Ljava/lang/Object;J)V")                                                    \
 809                                                                                                                         \
 810   do_intrinsic(_prefetchRead,             sun_misc_Unsafe,        prefetchRead_name, prefetch_signature,         F_RN)  \
 811    do_name(     prefetchRead_name,                               "prefetchRead")                                        \
 812   do_intrinsic(_prefetchWrite,            sun_misc_Unsafe,        prefetchWrite_name, prefetch_signature,        F_RN)  \
 813    do_name(     prefetchWrite_name,                              "prefetchWrite")                                       \
 814   do_intrinsic(_prefetchReadStatic,       sun_misc_Unsafe,        prefetchReadStatic_name, prefetch_signature,   F_SN)  \
 815    do_name(     prefetchReadStatic_name,                         "prefetchReadStatic")                                  \
 816   do_intrinsic(_prefetchWriteStatic,      sun_misc_Unsafe,        prefetchWriteStatic_name, prefetch_signature,  F_SN)  \
 817    do_name(     prefetchWriteStatic_name,                        "prefetchWriteStatic")                                 \
 818     /*== LAST_COMPILER_INLINE*/                                                                                         \
 819     /*the compiler does have special inlining code for these; bytecode inline is just fine */                           \
 820                                                                                                                         \
 821   do_intrinsic(_fillInStackTrace,         java_lang_Throwable, fillInStackTrace_name, void_throwable_signature,  F_RNY) \
 822                                                                                                                         \
 823   do_intrinsic(_Object_init,              java_lang_Object, object_initializer_name, void_method_signature,      F_R)   \
 824   /*    (symbol object_initializer_name defined above) */                                                               \
 825                                                                                                                         \
 826   do_intrinsic(_invoke,                   java_lang_reflect_Method, invoke_name, object_array_object_object_signature, F_R) \
 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;")                               \
 868                                                                                                                         \
 869     /*end*/
 870 
 871 
 872 
 873 
 874 // Class vmSymbols
 875 
 876 class vmSymbols: AllStatic {
 877  friend class vmSymbolHandles;
 878  friend class vmIntrinsics;
 879  public:
 880   // enum for figuring positions and size of array holding symbolOops
 881   enum SID {
 882     NO_SID = 0,
 883 
 884     #define VM_SYMBOL_ENUM(name, string) VM_SYMBOL_ENUM_NAME(name),
 885     VM_SYMBOLS_DO(VM_SYMBOL_ENUM, VM_ALIAS_IGNORE)
 886     #undef VM_SYMBOL_ENUM
 887 


 977   enum ID {
 978     _none = 0,                      // not an intrinsic (default answer)
 979 
 980     #define VM_INTRINSIC_ENUM(id, klass, name, sig, flags)  id,
 981     VM_INTRINSICS_DO(VM_INTRINSIC_ENUM,
 982                      VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE)
 983     #undef VM_INTRINSIC_ENUM
 984 
 985     ID_LIMIT,
 986     LAST_COMPILER_INLINE = _prefetchWriteStatic,
 987     FIRST_ID = _none + 1
 988   };
 989 
 990   enum Flags {
 991     // AccessFlags syndromes relevant to intrinsics.
 992     F_none = 0,
 993     F_R,                        // !static        !synchronized (R="regular")
 994     F_S,                        //  static        !synchronized
 995     F_RN,                       // !static native !synchronized
 996     F_SN,                       //  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
1003   };
1004 
1005 public:
1006   static ID ID_from(int raw_id) {
1007     assert(raw_id >= (int)_none && raw_id < (int)ID_LIMIT,
1008            "must be a valid intrinsic ID");
1009     return (ID)raw_id;
1010   }
1011 
1012   static const char* name_at(ID id);
1013 
1014   // Given a method's class, name, signature, and access flags, report its ID.
1015   static ID find_id(vmSymbols::SID holder,
1016                     vmSymbols::SID name,
1017                     vmSymbols::SID sig,
1018                     jshort flags);
1019 
1020   static void verify_method(ID actual_id, methodOop m) PRODUCT_RETURN;
1021 
1022   // Find out the symbols behind an intrinsic:
1023   static vmSymbols::SID     class_for(ID id);
1024   static vmSymbols::SID      name_for(ID id);
1025   static vmSymbols::SID signature_for(ID id);
1026   static Flags              flags_for(ID id);
1027 
1028   static const char* short_name_as_C_string(ID id, char* buf, int size);
1029 
1030   // Access to intrinsic methods:
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);
1036 };
src/share/vm/classfile/vmSymbols.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File