1470 do_name(vector_test_name, "test") \
1471 \
1472 do_intrinsic(_VectorBlend, jdk_incubator_vector_VectorIntrinsics, vector_blend_name, vector_blend_sig, F_S) \
1473 do_signature(vector_blend_sig, "(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;I" \
1474 "Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector$Mask;" \
1475 "Ljdk/incubator/vector/VectorIntrinsics$VectorBlendOp;)Ljdk/incubator/vector/Vector;") \
1476 do_name(vector_blend_name, "blend") \
1477 \
1478 do_intrinsic(_VectorCompare, jdk_incubator_vector_VectorIntrinsics, vector_compare_name, vector_compare_sig, F_S) \
1479 do_signature(vector_compare_sig, "(ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;I" \
1480 "Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;" \
1481 "Ljdk/incubator/vector/VectorIntrinsics$VectorCompareOp;)Ljdk/incubator/vector/Vector$Mask;") \
1482 do_name(vector_compare_name, "compare") \
1483 \
1484 do_intrinsic(_VectorBroadcastInt, jdk_incubator_vector_VectorIntrinsics, vector_broadcast_int_name, vector_broadcast_int_sig, F_S) \
1485 do_signature(vector_broadcast_int_sig, "(ILjava/lang/Class;Ljava/lang/Class;I" \
1486 "Ljdk/incubator/vector/Vector;I" \
1487 "Ljdk/incubator/vector/VectorIntrinsics$VectorBroadcastIntOp;)Ljdk/incubator/vector/Vector;") \
1488 do_name(vector_broadcast_int_name, "broadcastInt") \
1489 \
1490 do_intrinsic(_VectorRebracket, jdk_incubator_vector_VectorIntrinsics, vector_rebracket_name, vector_rebracket_sig, F_S) \
1491 do_signature(vector_rebracket_sig, "(Ljava/lang/Class;Ljava/lang/Class;I" \
1492 "Ljava/lang/Class;Ljava/lang/Object;" \
1493 "Ljdk/incubator/vector/VectorIntrinsics$VectorRebracketOp;)Ljava/lang/Object;") \
1494 do_name(vector_rebracket_name, "rebracket") \
1495 \
1496 do_intrinsic(_VectorRebox, jdk_incubator_vector_VectorIntrinsics, vector_rebox_name, vector_rebox_sig, F_S) \
1497 do_alias(vector_rebox_sig, object_object_signature) \
1498 do_name(vector_rebox_name, "maybeRebox") \
1499 \
1500 \
1501 /* (2) Bytecode intrinsics */ \
1502 \
1503 do_intrinsic(_park, jdk_internal_misc_Unsafe, park_name, park_signature, F_R) \
1504 do_name( park_name, "park") \
1505 do_signature(park_signature, "(ZJ)V") \
1506 do_intrinsic(_unpark, jdk_internal_misc_Unsafe, unpark_name, unpark_signature, F_R) \
1507 do_name( unpark_name, "unpark") \
1508 do_alias( unpark_signature, /*(LObject;)V*/ object_void_signature) \
1509 \
1510 do_intrinsic(_StringBuilder_void, java_lang_StringBuilder, object_initializer_name, void_method_signature, F_R) \
1511 do_intrinsic(_StringBuilder_int, java_lang_StringBuilder, object_initializer_name, int_void_signature, F_R) \
1512 do_intrinsic(_StringBuilder_String, java_lang_StringBuilder, object_initializer_name, string_void_signature, F_R) \
1513 \
1514 do_intrinsic(_StringBuilder_append_char, java_lang_StringBuilder, append_name, char_StringBuilder_signature, F_R) \
1666 static const char* name_for(SID sid);
1667 #endif //PRODUCT
1668 };
1669
1670 // VM Intrinsic ID's uniquely identify some very special methods
1671 class vmIntrinsics: AllStatic {
1672 friend class vmSymbols;
1673 friend class ciObjectFactory;
1674
1675 public:
1676 // Accessing
1677 enum ID {
1678 _none = 0, // not an intrinsic (default answer)
1679
1680 #define VM_INTRINSIC_ENUM(id, klass, name, sig, flags) id,
1681 VM_INTRINSICS_DO(VM_INTRINSIC_ENUM,
1682 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE)
1683 #undef VM_INTRINSIC_ENUM
1684
1685 ID_LIMIT,
1686 LAST_COMPILER_INLINE = _VectorRebracket,
1687 FIRST_VECTOR_API = _VectorUnaryOp,
1688 LAST_VECTOR_API = _VectorRebox,
1689 FIRST_MH_SIG_POLY = _invokeGeneric,
1690 FIRST_MH_STATIC = _linkToVirtual,
1691 LAST_MH_SIG_POLY = _linkToInterface,
1692
1693 FIRST_ID = _none + 1
1694 };
1695
1696 enum Flags {
1697 // AccessFlags syndromes relevant to intrinsics.
1698 F_none = 0,
1699 F_R, // !static ?native !synchronized (R="regular")
1700 F_S, // static ?native !synchronized
1701 F_Y, // !static ?native synchronized
1702 F_RN, // !static native !synchronized
1703 F_SN, // static native !synchronized
1704 F_RNY, // !static native synchronized
1705
1706 FLAG_LIMIT
|
1470 do_name(vector_test_name, "test") \
1471 \
1472 do_intrinsic(_VectorBlend, jdk_incubator_vector_VectorIntrinsics, vector_blend_name, vector_blend_sig, F_S) \
1473 do_signature(vector_blend_sig, "(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;I" \
1474 "Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector$Mask;" \
1475 "Ljdk/incubator/vector/VectorIntrinsics$VectorBlendOp;)Ljdk/incubator/vector/Vector;") \
1476 do_name(vector_blend_name, "blend") \
1477 \
1478 do_intrinsic(_VectorCompare, jdk_incubator_vector_VectorIntrinsics, vector_compare_name, vector_compare_sig, F_S) \
1479 do_signature(vector_compare_sig, "(ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;I" \
1480 "Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;" \
1481 "Ljdk/incubator/vector/VectorIntrinsics$VectorCompareOp;)Ljdk/incubator/vector/Vector$Mask;") \
1482 do_name(vector_compare_name, "compare") \
1483 \
1484 do_intrinsic(_VectorBroadcastInt, jdk_incubator_vector_VectorIntrinsics, vector_broadcast_int_name, vector_broadcast_int_sig, F_S) \
1485 do_signature(vector_broadcast_int_sig, "(ILjava/lang/Class;Ljava/lang/Class;I" \
1486 "Ljdk/incubator/vector/Vector;I" \
1487 "Ljdk/incubator/vector/VectorIntrinsics$VectorBroadcastIntOp;)Ljdk/incubator/vector/Vector;") \
1488 do_name(vector_broadcast_int_name, "broadcastInt") \
1489 \
1490 do_intrinsic(_VectorReinterpret, jdk_incubator_vector_VectorIntrinsics, vector_reinterpret_name, vector_reinterpret_sig, F_S) \
1491 do_signature(vector_reinterpret_sig, "(Ljava/lang/Class;Ljava/lang/Class;I" \
1492 "Ljava/lang/Class;ILjava/lang/Object;" \
1493 "Ljdk/incubator/vector/VectorIntrinsics$VectorReinterpretOp;)Ljava/lang/Object;") \
1494 do_name(vector_reinterpret_name, "reinterpret") \
1495 \
1496 do_intrinsic(_VectorRebox, jdk_incubator_vector_VectorIntrinsics, vector_rebox_name, vector_rebox_sig, F_S) \
1497 do_alias(vector_rebox_sig, object_object_signature) \
1498 do_name(vector_rebox_name, "maybeRebox") \
1499 \
1500 \
1501 /* (2) Bytecode intrinsics */ \
1502 \
1503 do_intrinsic(_park, jdk_internal_misc_Unsafe, park_name, park_signature, F_R) \
1504 do_name( park_name, "park") \
1505 do_signature(park_signature, "(ZJ)V") \
1506 do_intrinsic(_unpark, jdk_internal_misc_Unsafe, unpark_name, unpark_signature, F_R) \
1507 do_name( unpark_name, "unpark") \
1508 do_alias( unpark_signature, /*(LObject;)V*/ object_void_signature) \
1509 \
1510 do_intrinsic(_StringBuilder_void, java_lang_StringBuilder, object_initializer_name, void_method_signature, F_R) \
1511 do_intrinsic(_StringBuilder_int, java_lang_StringBuilder, object_initializer_name, int_void_signature, F_R) \
1512 do_intrinsic(_StringBuilder_String, java_lang_StringBuilder, object_initializer_name, string_void_signature, F_R) \
1513 \
1514 do_intrinsic(_StringBuilder_append_char, java_lang_StringBuilder, append_name, char_StringBuilder_signature, F_R) \
1666 static const char* name_for(SID sid);
1667 #endif //PRODUCT
1668 };
1669
1670 // VM Intrinsic ID's uniquely identify some very special methods
1671 class vmIntrinsics: AllStatic {
1672 friend class vmSymbols;
1673 friend class ciObjectFactory;
1674
1675 public:
1676 // Accessing
1677 enum ID {
1678 _none = 0, // not an intrinsic (default answer)
1679
1680 #define VM_INTRINSIC_ENUM(id, klass, name, sig, flags) id,
1681 VM_INTRINSICS_DO(VM_INTRINSIC_ENUM,
1682 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE)
1683 #undef VM_INTRINSIC_ENUM
1684
1685 ID_LIMIT,
1686 LAST_COMPILER_INLINE = _VectorReinterpret,
1687 FIRST_VECTOR_API = _VectorUnaryOp,
1688 LAST_VECTOR_API = _VectorRebox,
1689 FIRST_MH_SIG_POLY = _invokeGeneric,
1690 FIRST_MH_STATIC = _linkToVirtual,
1691 LAST_MH_SIG_POLY = _linkToInterface,
1692
1693 FIRST_ID = _none + 1
1694 };
1695
1696 enum Flags {
1697 // AccessFlags syndromes relevant to intrinsics.
1698 F_none = 0,
1699 F_R, // !static ?native !synchronized (R="regular")
1700 F_S, // static ?native !synchronized
1701 F_Y, // !static ?native synchronized
1702 F_RN, // !static native !synchronized
1703 F_SN, // static native !synchronized
1704 F_RNY, // !static native synchronized
1705
1706 FLAG_LIMIT
|