51 #endif
52
53 // Comapct string intrinsics: Translate table for string inflate intrinsic. Used by trot instruction.
54 #define TROT_ALIGNMENT 8 // Required by instruction,
55 // guaranteed by jlong table element type.
56 #define TROT_COLUMN_SIZE (256*sizeof(jchar)/sizeof(jlong))
57
58 class zarch {
59 friend class StubGenerator;
60
61 public:
62 enum { nof_instance_allocators = 10 };
63
64 // allocator lock values
65 enum {
66 unlocked = 0,
67 locked = 1
68 };
69
70 private:
71 static address _handler_for_unsafe_access_entry;
72
73 static int _atomic_memory_operation_lock;
74
75 static address _partial_subtype_check;
76 static juint _crc_table[CRC32_TABLES][CRC32_COLUMN_SIZE];
77
78 // Comapct string intrinsics: Translate table for string inflate intrinsic. Used by trot instruction.
79 static address _trot_table_addr;
80 static jlong _trot_table[TROT_COLUMN_SIZE];
81
82 public:
83 // Global lock for everyone who needs to use atomic_compare_and_exchange
84 // or atomic_increment -- should probably use more locks for more
85 // scalability -- for instance one for each eden space or group of.
86
87 // Address of the lock for atomic_compare_and_exchange.
88 static int* atomic_memory_operation_lock_addr() { return &_atomic_memory_operation_lock; }
89
90 // Accessor and mutator for _atomic_memory_operation_lock.
91 static int atomic_memory_operation_lock() { return _atomic_memory_operation_lock; }
92 static void set_atomic_memory_operation_lock(int value) { _atomic_memory_operation_lock = value; }
93
94 static address handler_for_unsafe_access_entry() { return _handler_for_unsafe_access_entry; }
95
96 static address partial_subtype_check() { return _partial_subtype_check; }
97
98 static void generate_load_crc_table_addr(MacroAssembler* masm, Register table);
99
100 // Comapct string intrinsics: Translate table for string inflate intrinsic. Used by trot instruction.
101 static void generate_load_trot_table_addr(MacroAssembler* masm, Register table);
102 };
103
104 #endif // CPU_S390_VM_STUBROUTINES_ZARCH_64_64_HPP
|
51 #endif
52
53 // Comapct string intrinsics: Translate table for string inflate intrinsic. Used by trot instruction.
54 #define TROT_ALIGNMENT 8 // Required by instruction,
55 // guaranteed by jlong table element type.
56 #define TROT_COLUMN_SIZE (256*sizeof(jchar)/sizeof(jlong))
57
58 class zarch {
59 friend class StubGenerator;
60
61 public:
62 enum { nof_instance_allocators = 10 };
63
64 // allocator lock values
65 enum {
66 unlocked = 0,
67 locked = 1
68 };
69
70 private:
71 static int _atomic_memory_operation_lock;
72
73 static address _partial_subtype_check;
74 static juint _crc_table[CRC32_TABLES][CRC32_COLUMN_SIZE];
75
76 // Comapct string intrinsics: Translate table for string inflate intrinsic. Used by trot instruction.
77 static address _trot_table_addr;
78 static jlong _trot_table[TROT_COLUMN_SIZE];
79
80 public:
81 // Global lock for everyone who needs to use atomic_compare_and_exchange
82 // or atomic_increment -- should probably use more locks for more
83 // scalability -- for instance one for each eden space or group of.
84
85 // Address of the lock for atomic_compare_and_exchange.
86 static int* atomic_memory_operation_lock_addr() { return &_atomic_memory_operation_lock; }
87
88 // Accessor and mutator for _atomic_memory_operation_lock.
89 static int atomic_memory_operation_lock() { return _atomic_memory_operation_lock; }
90 static void set_atomic_memory_operation_lock(int value) { _atomic_memory_operation_lock = value; }
91
92 static address partial_subtype_check() { return _partial_subtype_check; }
93
94 static void generate_load_crc_table_addr(MacroAssembler* masm, Register table);
95
96 // Comapct string intrinsics: Translate table for string inflate intrinsic. Used by trot instruction.
97 static void generate_load_trot_table_addr(MacroAssembler* masm, Register table);
98 };
99
100 #endif // CPU_S390_VM_STUBROUTINES_ZARCH_64_64_HPP
|