133 AllocatePrefetchStepSize = cache_line_size; // Need exact value.
134 if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 12; // Use larger blocks by default.
135 if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 2*cache_line_size; // Default is not defined?
136 } else {
137 if (cache_line_size > AllocatePrefetchStepSize) AllocatePrefetchStepSize = cache_line_size;
138 if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 3; // Optimistic value.
139 if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 3*cache_line_size; // Default is not defined?
140 }
141
142 assert(AllocatePrefetchLines > 0, "invalid value");
143 if (AllocatePrefetchLines < 1) { // Set valid value in product VM.
144 AllocatePrefetchLines = 1; // Conservative value.
145 }
146
147 if (AllocatePrefetchStyle == 3 && AllocatePrefetchDistance < cache_line_size) {
148 AllocatePrefetchStyle = 1; // Fall back if inappropriate.
149 }
150
151 assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
152
153 if (UseCRC32Intrinsics) {
154 if (!FLAG_IS_DEFAULT(UseCRC32Intrinsics))
155 warning("CRC32 intrinsics are not available on this CPU");
156 FLAG_SET_DEFAULT(UseCRC32Intrinsics, false);
157 }
158
159 // The AES intrinsic stubs require AES instruction support.
160 #if defined(VM_LITTLE_ENDIAN)
161 if (has_vcipher()) {
162 if (FLAG_IS_DEFAULT(UseAES)) {
163 UseAES = true;
164 }
165 } else if (UseAES) {
166 if (!FLAG_IS_DEFAULT(UseAES))
167 warning("AES instructions are not available on this CPU");
168 FLAG_SET_DEFAULT(UseAES, false);
169 }
170
171 if (UseAES && has_vcipher()) {
172 if (FLAG_IS_DEFAULT(UseAESIntrinsics)) {
173 UseAESIntrinsics = true;
174 }
175 } else if (UseAESIntrinsics) {
176 if (!FLAG_IS_DEFAULT(UseAESIntrinsics))
|
133 AllocatePrefetchStepSize = cache_line_size; // Need exact value.
134 if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 12; // Use larger blocks by default.
135 if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 2*cache_line_size; // Default is not defined?
136 } else {
137 if (cache_line_size > AllocatePrefetchStepSize) AllocatePrefetchStepSize = cache_line_size;
138 if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 3; // Optimistic value.
139 if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 3*cache_line_size; // Default is not defined?
140 }
141
142 assert(AllocatePrefetchLines > 0, "invalid value");
143 if (AllocatePrefetchLines < 1) { // Set valid value in product VM.
144 AllocatePrefetchLines = 1; // Conservative value.
145 }
146
147 if (AllocatePrefetchStyle == 3 && AllocatePrefetchDistance < cache_line_size) {
148 AllocatePrefetchStyle = 1; // Fall back if inappropriate.
149 }
150
151 assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
152
153 // Implementation does not use any of the vector instructions
154 // available with Power8. Their exploitation is still pending.
155 if (!UseCRC32Intrinsics) {
156 if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) {
157 FLAG_SET_DEFAULT(UseCRC32Intrinsics, true);
158 }
159 }
160
161 // The AES intrinsic stubs require AES instruction support.
162 #if defined(VM_LITTLE_ENDIAN)
163 if (has_vcipher()) {
164 if (FLAG_IS_DEFAULT(UseAES)) {
165 UseAES = true;
166 }
167 } else if (UseAES) {
168 if (!FLAG_IS_DEFAULT(UseAES))
169 warning("AES instructions are not available on this CPU");
170 FLAG_SET_DEFAULT(UseAES, false);
171 }
172
173 if (UseAES && has_vcipher()) {
174 if (FLAG_IS_DEFAULT(UseAESIntrinsics)) {
175 UseAESIntrinsics = true;
176 }
177 } else if (UseAESIntrinsics) {
178 if (!FLAG_IS_DEFAULT(UseAESIntrinsics))
|