Skip to content

Commit ae0f27d

Browse files
committed
Add support for mixed references mode in CMake builds
Create new CMake spec files for mixed references mode Update CMakeLists.txt for GC libs to support mixed refs mode Update GC library selection to support mixed references static Add configure documentation for --with-mixedrefs=[static|dynamic] Add pipeline changes to build CMake mixed references mode Set OMR_MIXED_REFERENCES_MODE_STATIC in mxdptrs.cmake Declare the two glue interface libraries before adding omr Signed-off-by: Sharon Wang <[email protected]>
1 parent bff22d2 commit ae0f27d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+940
-75
lines changed

buildenv/jenkins/jobs/pipelines/Pipeline-Build-Test-All.groovy

+16
Original file line numberDiff line numberDiff line change
@@ -74,37 +74,43 @@ SPECS = ['ppc64_aix' : CURRENT_RELEASES,
7474
'ppc64_aix_xl' : CURRENT_RELEASES,
7575
'ppc64_aix_xl_cm' : CURRENT_RELEASES,
7676
'ppc64_aix_xl_uma' : CURRENT_RELEASES,
77+
'ppc64_aix_mixed_cm' : CURRENT_RELEASES,
7778
'ppc64le_linux' : CURRENT_RELEASES,
7879
'ppc64le_linux_cm' : CURRENT_RELEASES - '11',
7980
'ppc64le_linux_uma' : CURRENT_RELEASES,
8081
'ppc64le_linux_jit' : CURRENT_RELEASES,
8182
'ppc64le_linux_xl' : CURRENT_RELEASES,
8283
'ppc64le_linux_xl_cm' : CURRENT_RELEASES - '11',
8384
'ppc64le_linux_xl_uma' : CURRENT_RELEASES,
85+
'ppc64le_linux_mixed_cm' : CURRENT_RELEASES,
8486
's390x_linux' : CURRENT_RELEASES,
8587
's390x_linux_cm' : CURRENT_RELEASES - '11',
8688
's390x_linux_uma' : CURRENT_RELEASES,
8789
's390x_linux_jit' : CURRENT_RELEASES,
8890
's390x_linux_xl' : CURRENT_RELEASES,
8991
's390x_linux_xl_cm' : CURRENT_RELEASES - '11',
9092
's390x_linux_xl_uma' : CURRENT_RELEASES,
93+
's390x_linux_mixed_cm' : CURRENT_RELEASES,
9194
's390x_zos' : ['11'],
9295
's390x_zos_cm' : ['11'],
9396
's390x_zos_uma' : ['11'],
9497
's390x_zos_xl' : ['11'],
9598
's390x_zos_xl_cm' : ['11'],
99+
's390x_zos_mixed_cm' : ['11'],
96100
'x86-64_linux' : CURRENT_RELEASES,
97101
'x86-64_linux_cm': CURRENT_RELEASES - '11',
98102
'x86-64_linux_uma' : CURRENT_RELEASES,
99103
'x86-64_linux_xl': CURRENT_RELEASES,
100104
'x86-64_linux_xl_cm': CURRENT_RELEASES - '11',
101105
'x86-64_linux_xl_uma' : CURRENT_RELEASES,
106+
'x86-64_linux_mixed_cm' : CURRENT_RELEASES,
102107
'x86-64_linux_jit' : CURRENT_RELEASES,
103108
'x86-64_linux_valhalla' : ['next'],
104109
'x86-64_mac_xl' : CURRENT_RELEASES,
105110
'x86-64_mac' : CURRENT_RELEASES,
106111
'x86-64_mac_cm' : CURRENT_RELEASES - '11',
107112
'x86-64_mac_xl_cm' : CURRENT_RELEASES - '11',
113+
'x86-64_mac_mixed_cm' : CURRENT_RELEASES,
108114
'x86-64_mac_uma' : CURRENT_RELEASES,
109115
'x86-64_mac_xl_uma' : CURRENT_RELEASES,
110116
'x86-32_windows' : ['8'],
@@ -116,12 +122,14 @@ SPECS = ['ppc64_aix' : CURRENT_RELEASES,
116122
'x86-64_windows_xl' : CURRENT_RELEASES,
117123
'x86-64_windows_xl_cm': CURRENT_RELEASES,
118124
'x86-64_windows_xl_uma' : CURRENT_RELEASES,
125+
'x86-64_windows_mixed_cm' : CURRENT_RELEASES,
119126
'aarch64_linux' : CURRENT_RELEASES,
120127
'aarch64_linux_cm': CURRENT_RELEASES,
121128
'aarch64_linux_uma': CURRENT_RELEASES,
122129
'aarch64_linux_xl' : CURRENT_RELEASES,
123130
'aarch64_linux_xl_cm': CURRENT_RELEASES,
124131
'aarch64_linux_xl_uma': CURRENT_RELEASES,
132+
'aarch64_linux_mixed_cm' : CURRENT_RELEASES,
125133
'ppc64_aix_ojdk292' : CURRENT_RELEASES,
126134
'ppc64_aix_xl_ojdk292' : CURRENT_RELEASES,
127135
'ppc64le_linux_ojdk292' : CURRENT_RELEASES,
@@ -150,6 +158,7 @@ SHORT_NAMES = ['all' : ['ppc64le_linux','ppc64le_linux_xl','s390x_linux','s390x_
150158
'aixxl' : ['ppc64_aix_xl'],
151159
'aixxlcm' : ['ppc64_aix_xl_cm'],
152160
'aixxluma' : ['ppc64_aix_xl_uma'],
161+
'aixmxdcm' : ['ppc64_aix_mixed_cm'],
153162
'zlinux' : ['s390x_linux'],
154163
'zlinuxcm' : ['s390x_linux_cm'],
155164
'zlinuxuma' : ['s390x_linux_uma'],
@@ -158,6 +167,7 @@ SHORT_NAMES = ['all' : ['ppc64le_linux','ppc64le_linux_xl','s390x_linux','s390x_
158167
'zlinuxxl' : ['s390x_linux_xl'],
159168
'zlinuxxlcm' : ['s390x_linux_xl_cm'],
160169
'zlinuxxluma' : ['s390x_linux_xl_uma'],
170+
'zlinuxmxdcm' : ['s390x_linux_mixed_cm'],
161171
'plinux' : ['ppc64le_linux'],
162172
'plinuxcmake' : ['ppc64le_linux_cm'],
163173
'plinuxcm' : ['ppc64le_linux_cm'],
@@ -167,6 +177,7 @@ SHORT_NAMES = ['all' : ['ppc64le_linux','ppc64le_linux_xl','s390x_linux','s390x_
167177
'plinuxxl' : ['ppc64le_linux_xl'],
168178
'plinuxxlcm' : ['ppc64le_linux_xl_cm'],
169179
'plinuxxluma' : ['ppc64le_linux_xl_uma'],
180+
'plinuxmxdcm' : ['ppc64le_linux_mixed_cm'],
170181
'xlinuxlargeheap' : ['x86-64_linux_xl'],
171182
'xlinuxxl' : ['x86-64_linux_xl'],
172183
'xlinux' : ['x86-64_linux'],
@@ -175,6 +186,7 @@ SHORT_NAMES = ['all' : ['ppc64le_linux','ppc64le_linux_xl','s390x_linux','s390x_
175186
'xlinuxuma' : ['x86-64_linux_uma'],
176187
'xlinuxxlcm' : ['x86-64_linux_xl_cm'],
177188
'xlinuxxluma' : ['x86-64_linux_xl_uma'],
189+
'xlinuxmxdcm' : ['x86-64_linux_mixed_cm'],
178190
'xlinuxjit' : ['x86-64_linux_jit'],
179191
'xlinuxval' : ['x86-64_linux_valhalla'],
180192
'win32' : ['x86-32_windows'],
@@ -187,6 +199,7 @@ SHORT_NAMES = ['all' : ['ppc64le_linux','ppc64le_linux_xl','s390x_linux','s390x_
187199
'winxl' : ['x86-64_windows_xl'],
188200
'winxlcm' : ['x86-64_windows_xl_cm'],
189201
'winxluma' : ['x86-64_windows_xl_uma'],
202+
'winmxdcm' : ['x86-64_windows_mixed_cm'],
190203
'osx' : ['x86-64_mac'],
191204
'osxlargeheap' : ['x86-64_mac_xl'],
192205
'osxxl' : ['x86-64_mac_xl'],
@@ -195,19 +208,22 @@ SHORT_NAMES = ['all' : ['ppc64le_linux','ppc64le_linux_xl','s390x_linux','s390x_
195208
'osxxlcm': ['x86-64_mac_xl_cm'],
196209
'osxuma': ['x86-64_mac_uma'],
197210
'osxxluma': ['x86-64_mac_xl_uma'],
211+
'osxmxdcm': ['x86-64_mac_mixed_cm'],
198212
'alinux64' : ['aarch64_linux'],
199213
'alinux64cm' : ['aarch64_linux_cm'],
200214
'alinux64uma' : ['aarch64_linux_uma'],
201215
'alinux64xl' : ['aarch64_linux_xl'],
202216
'alinux64xlcm' : ['aarch64_linux_xl_cm'],
203217
'alinux64xluma' : ['aarch64_linux_xl_uma'],
204218
'alinux64largeheap' : ['aarch64_linux_xl'],
219+
'alinux64mxdcm' : ['aarch64_linux_mixed_cm'],
205220
'zos' : ['s390x_zos'],
206221
'zoscm' : ['s390x_zos_cm'],
207222
'zosuma' : ['s390x_zos_uma'],
208223
'zosxl' : ['s390x_zos_xl'],
209224
'zoslargeheap' : ['s390x_zos_xl'],
210225
'zosxlcm' : ['s390x_zos_xl_cm'],
226+
'zosmxdcm' : ['s390x_zos_mixed_cm'],
211227
'aixojdk292' : ['ppc64_aix_ojdk292'],
212228
'aixxlojdk292' : ['ppc64_aix_xl_ojdk292'],
213229
'aixlargeheapojdk292' : ['ppc64_aix_xl_ojdk292'],

buildenv/jenkins/variables/defaults.yml

+91
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ debuginfo:
124124
largeheap:
125125
extra_configure_options: '--with-noncompressedrefs'
126126
#========================================#
127+
# Mixed references build
128+
#========================================#
129+
mixedrefs:
130+
extra_configure_options: '--with-mixedrefs'
131+
#========================================#
127132
# Build with cmake
128133
#========================================#
129134
cmake:
@@ -250,6 +255,21 @@ ppc64le_linux_xl_cm:
250255
ppc64le_linux_xl_uma:
251256
extends: ['ppc64le_linux_xl', 'uma']
252257
#========================================#
258+
# Linux PPCLE 64bits Mixed References
259+
#========================================#
260+
ppc64le_linux_mixed:
261+
extends: ['ppc64le_linux', 'mixedrefs']
262+
excluded_tests:
263+
8:
264+
- special.system
265+
11:
266+
- special.system
267+
#========================================#
268+
# Linux PPCLE 64bits Mixed References /w CMake
269+
#========================================#
270+
ppc64le_linux_mixed_cm:
271+
extends: ['ppc64le_linux_mixed', 'cmake']
272+
#========================================#
253273
# Linux PPCLE 64bits Compressed Pointers /w JITSERVER
254274
#========================================#
255275
ppc64le_linux_jit:
@@ -303,6 +323,19 @@ s390x_linux_xl_cm:
303323
s390x_linux_xl_uma:
304324
extends: ['s390x_linux_xl', 'uma']
305325
#========================================#
326+
# Linux S390 64bits Mixed References
327+
#========================================#
328+
s390x_linux_mixed:
329+
extends: ['s390x_linux', 'mixedrefs']
330+
excluded_tests:
331+
11:
332+
- special.system
333+
#========================================#
334+
# Linux S390 64bits Mixed References /w CMake
335+
#========================================#
336+
s390x_linux_mixed_cm:
337+
extends: ['s390x_linux_mixed', 'cmake']
338+
#========================================#
306339
# Linux S390 64bits Compressed Pointers /w JITSERVER
307340
#========================================#
308341
s390x_linux_jit:
@@ -362,6 +395,16 @@ ppc64_aix_xl_cm:
362395
ppc64_aix_xl_uma:
363396
extends: ['ppc64_aix_xl', 'uma']
364397
#========================================#
398+
# AIX PPC 64bits Mixed References
399+
#========================================#
400+
ppc64_aix_mixed:
401+
extends: ['ppc64_aix', 'mixedrefs']
402+
#========================================#
403+
# AIX PPC 64bits Mixed References /w CMake
404+
#========================================#
405+
ppc64_aix_mixed_cm:
406+
extends: ['ppc64_aix_mixed', 'cmake']
407+
#========================================#
365408
# Linux x86 64bits Compressed Pointers
366409
#========================================#
367410
x86-64_linux:
@@ -432,6 +475,21 @@ x86-64_linux_xl:
432475
8:
433476
- special.system
434477
#========================================#
478+
# Linux x86 64bits Mixed References
479+
#========================================#
480+
x86-64_linux_mixed:
481+
extends: ['x86-64_linux', 'mixedrefs']
482+
excluded_tests:
483+
- extended.functional
484+
- sanity.system
485+
- extended.system
486+
- special.system
487+
#========================================#
488+
# Linux x86 64bits Mixed References /w CMake
489+
#========================================#
490+
x86-64_linux_mixed_cm:
491+
extends: ['x86-64_linux_mixed', 'cmake']
492+
#========================================#
435493
# Linux x86 64bits Compressed Pointers / Valhalla
436494
#========================================#
437495
x86-64_linux_valhalla:
@@ -477,6 +535,16 @@ aarch64_linux_xl_cm:
477535
aarch64_linux_xl_uma:
478536
extends: ['aarch64_linux_xl', 'uma']
479537
#========================================#
538+
# Linux Aarch 64bits Mixed References
539+
#========================================#
540+
aarch64_linux_mixed:
541+
extends: ['aarch64_linux', 'mixedrefs']
542+
#========================================#
543+
# Linux Aarch 64bits Mixed References /w CMake
544+
#========================================#
545+
aarch64_linux_mixed_cm:
546+
extends: ['aarch64_linux_mixed', 'cmake']
547+
#========================================#
480548
# Windows x86 64bits Compressed Pointers
481549
#========================================#
482550
x86-64_windows:
@@ -531,6 +599,16 @@ x86-64_windows_xl_cm:
531599
x86-64_windows_xl_uma:
532600
extends: ['x86-64_windows_xl', 'uma']
533601
#========================================#
602+
# Windows x86 64bits Mixed References
603+
#========================================#
604+
x86-64_windows_mixed:
605+
extends: ['x86-64_windows', 'mixedrefs']
606+
#========================================#
607+
# Windows x86 64bits Mixed References /w CMake
608+
#========================================#
609+
x86-64_windows_mixed_cm:
610+
extends: ['x86-64_windows_mixed', 'cmake']
611+
#========================================#
534612
# Windows x86 32bits
535613
#========================================#
536614
x86-32_windows:
@@ -598,6 +676,14 @@ x86-64_mac_xl:
598676
8:
599677
- special.system
600678
#========================================#
679+
# OSX x86 64bits Mixed References
680+
#========================================#
681+
x86-64_mac_mixed:
682+
extends: ['x86-64_mac', 'mixedrefs']
683+
excluded_tests:
684+
8:
685+
- special.system
686+
#========================================#
601687
# OSX x86 64bits Compressed Pointers /w CMake
602688
#========================================#
603689
x86-64_mac_cm:
@@ -608,6 +694,11 @@ x86-64_mac_cm:
608694
x86-64_mac_xl_cm:
609695
extends: ['x86-64_mac_xl', 'cmake']
610696
#========================================#
697+
# OSX x86 64bits Mixed References /w CMake
698+
#========================================#
699+
x86-64_mac_mixed_cm:
700+
extends: ['x86-64_mac_mixed', 'cmake']
701+
#========================================#
611702
# OSX x86 64bits Compressed Pointers /w UMA
612703
#========================================#
613704
x86-64_mac_uma:

doc/build-instructions/Build_Instructions_V11.md

+10
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ bash configure --with-freemarker-jar=/<my_home_dir>/freemarker.jar --with-boot-j
155155

156156
:pencil: **Non-compressed references support:** If you require a heap size greater than 57GB, enable a noncompressedrefs build with the `--with-noncompressedrefs` option during this step.
157157

158+
:pencil: **Mixed references support:** If you require a single build with both compressed references and non-compressed references available, enable a mixedrefs build with the `--with-mixedrefs` option during this step. Specify `--with-mixedrefs=static` for the VM to determine the reference mode statically (at compile time), or `--with-mixedrefs=dynamic` for the VM to determine the reference mode dynamically (at run time). The option defaults to determine the reference mode statically, if neither `static` nor `dynamic` is provided. _Note that `--with-cmake` must be used with this option, as it is only available with CMake enabled at this time._
159+
158160
:pencil: **OpenSSL support:** If you want to build an OpenJDK that includes OpenSSL, you must specify `--with-openssl={fetched|system|path_to_library}`
159161

160162
where:
@@ -282,6 +284,8 @@ where `<my_home_dir>` is the location where you stored **freemarker.jar** and `<
282284

283285
:pencil: **Non-compressed references support:** If you require a heap size greater than 57GB, enable a noncompressedrefs build with the `--with-noncompressedrefs` option during this step.
284286

287+
:pencil: **Mixed references support:** If you require a single build with both compressed references and non-compressed references available, enable a mixedrefs build with the `--with-mixedrefs` option during this step. Specify `--with-mixedrefs=static` for the VM to determine the reference mode statically (at compile time), or `--with-mixedrefs=dynamic` for the VM to determine the reference mode dynamically (at run time). The option defaults to determine the reference mode statically, if neither `static` nor `dynamic` is provided. _Note that `--with-cmake` must be used with this option, as it is only available with CMake enabled at this time._
288+
285289
:pencil: **OpenSSL support:** If you want to build an OpenJDK that includes OpenSSL, you must specify `--with-openssl={fetched|system|path_to_library}`
286290

287291
where:
@@ -441,6 +445,8 @@ Note: there is no need to specify --with-toolchain-version for 2017 as it will b
441445

442446
:pencil: **Non-compressed references support:** If you require a heap size greater than 57GB, enable a noncompressedrefs build with the `--with-noncompressedrefs` option during this step.
443447

448+
:pencil: **Mixed references support:** If you require a single build with both compressed references and non-compressed references available, enable a mixedrefs build with the `--with-mixedrefs` option during this step. Specify `--with-mixedrefs=static` for the VM to determine the reference mode statically (at compile time), or `--with-mixedrefs=dynamic` for the VM to determine the reference mode dynamically (at run time). The option defaults to determine the reference mode statically, if neither `static` nor `dynamic` is provided. _Note that `--with-cmake` must be used with this option, as it is only available with CMake enabled at this time._
449+
444450
:pencil: **OpenSSL support:** If you want to build an OpenJDK that includes OpenSSL, you must specify `--with-openssl=path_to_library`, where `path_to_library` specifies the path to the prebuilt OpenSSL library that you obtained in **2. Get the source**. If you want to include the OpenSSL cryptographic library in the OpenJDK binary, you must also include `--enable-openssl-bundling`.
445451

446452
### 4. build
@@ -559,6 +565,8 @@ bash configure --with-boot-jdk=<path_to_boot_JDK11>
559565

560566
:pencil: **Non-compressed references support:** If you require a heap size greater than 57GB, enable a noncompressedrefs build with the `--with-noncompressedrefs` option during this step.
561567

568+
:pencil: **Mixed references support:** If you require a single build with both compressed references and non-compressed references available, enable a mixedrefs build with the `--with-mixedrefs` option during this step. Specify `--with-mixedrefs=static` for the VM to determine the reference mode statically (at compile time), or `--with-mixedrefs=dynamic` for the VM to determine the reference mode dynamically (at run time). The option defaults to determine the reference mode statically, if neither `static` nor `dynamic` is provided. _Note that `--with-cmake` must be used with this option, as it is only available with CMake enabled at this time._
569+
562570
:pencil: **OpenSSL support:** If you want to build an OpenJDK that includes OpenSSL, you must specify `--with-openssl=path_to_library`, where `path_to_library` specifies the path to the prebuilt OpenSSL library that you obtained in **2. Get the source**. If you want to include the OpenSSL cryptographic library in the OpenJDK binary, you must also include `--enable-openssl-bundling`.
563571

564572
### 4. build
@@ -701,6 +709,8 @@ bash configure --openjdk-target=${OPENJ9_CC_PREFIX} \
701709

702710
:pencil: **Non-compressed references support:** If you require a heap size greater than 57GB, enable a noncompressedrefs build with the `--with-noncompressedrefs` option during this step.
703711

712+
:pencil: **Mixed references support:** If you require a single build with both compressed references and non-compressed references available, enable a mixedrefs build with the `--with-mixedrefs` option during this step. Specify `--with-mixedrefs=static` for the VM to determine the reference mode statically (at compile time), or `--with-mixedrefs=dynamic` for the VM to determine the reference mode dynamically (at run time). The option defaults to determine the reference mode statically, if neither `static` nor `dynamic` is provided. _Note that `--with-cmake` must be used with this option, as it is only available with CMake enabled at this time._
713+
704714
:pencil: **OpenSSL support:** If you want to build an OpenJDK that uses OpenSSL, you must specify `--with-openssl={system|path_to_library}`
705715

706716
where:

0 commit comments

Comments
 (0)