Skip to content

Commit 02d8262

Browse files
Add SVM-specific files.
1 parent e373bdb commit 02d8262

File tree

104 files changed

+30537
-0
lines changed

Some content is hidden

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

104 files changed

+30537
-0
lines changed

src/hotspot/Makefile

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
#
2+
# Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# This code is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU General Public License version 2 only, as
7+
# published by the Free Software Foundation.
8+
#
9+
# This code is distributed in the hope that it will be useful, but WITHOUT
10+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12+
# version 2 for more details (a copy is included in the LICENSE file that
13+
# accompanied this code).
14+
#
15+
# You should have received a copy of the GNU General Public License version
16+
# 2 along with this work; if not, write to the Free Software Foundation,
17+
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18+
#
19+
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20+
# or visit www.oracle.com if you need additional information or have any
21+
# questions.
22+
#
23+
24+
.PHONY: all clean_all clean_cr clean_ur build_cr build_ur \
25+
clean_product_cr_so clean_product_cr_a clean_notproduct_cr_so clean_notproduct_cr_a clean_fastdebug_cr_so clean_fastdebug_cr_a clean_debug_cr_so clean_debug_cr_a \
26+
clean_product_ur_so clean_product_ur_a clean_notproduct_ur_so clean_notproduct_ur_a clean_fastdebug_ur_so clean_fastdebug_ur_a clean_debug_ur_so clean_debug_ur_a \
27+
build_product_cr_so build_product_cr_a build_notproduct_cr_so build_notproduct_cr_a build_fastdebug_cr_so build_fastdebug_cr_a build_debug_cr_so build_debug_cr_a \
28+
build_product_ur_so build_product_ur_a build_notproduct_ur_so build_notproduct_ur_a build_fastdebug_ur_so build_fastdebug_ur_a build_debug_ur_so build_debug_ur_a \
29+
30+
uname_m := $(shell uname -m)
31+
ifeq ($(uname_m),x86_64)
32+
ARCH_SUFFIX := amd64
33+
else ifeq ($(uname_m),aarch64)
34+
ARCH_SUFFIX := aarch64
35+
else
36+
$(error Unexpected architecture $(uname_m))
37+
endif
38+
39+
MAKEFILE_PATH := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
40+
SUB_MAKEFILE := $(MAKEFILE_PATH)SubMakefile
41+
42+
all: clean_all build_all
43+
44+
clean_all: clean_cr clean_ur
45+
46+
clean_cr: clean_product_cr_so clean_product_cr_a \
47+
clean_notproduct_cr_so clean_notproduct_cr_a \
48+
clean_fastdebug_cr_so clean_fastdebug_cr_a \
49+
clean_debug_cr_so clean_debug_cr_a
50+
51+
clean_ur: clean_product_ur_so clean_product_ur_a \
52+
clean_notproduct_ur_so clean_notproduct_ur_a \
53+
clean_fastdebug_ur_so clean_fastdebug_ur_a \
54+
clean_debug_ur_so clean_debug_ur_a
55+
56+
clean_product_cr_so:
57+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=product TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
58+
59+
clean_product_cr_a:
60+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=product TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
61+
62+
clean_notproduct_cr_so:
63+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
64+
65+
clean_notproduct_cr_a:
66+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
67+
68+
clean_fastdebug_cr_so:
69+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
70+
71+
clean_fastdebug_cr_a:
72+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
73+
74+
clean_debug_cr_so:
75+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=debug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
76+
77+
clean_debug_cr_a:
78+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=debug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
79+
80+
clean_product_ur_so:
81+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=product TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
82+
83+
clean_product_ur_a:
84+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=product TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false
85+
86+
clean_notproduct_ur_so:
87+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
88+
89+
clean_notproduct_ur_a:
90+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false
91+
92+
clean_fastdebug_ur_so:
93+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
94+
95+
clean_fastdebug_ur_a:
96+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false
97+
98+
clean_debug_ur_so:
99+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=debug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
100+
101+
clean_debug_ur_a:
102+
$(MAKE) -f $(SUB_MAKEFILE) clean DEBUG_LEVEL=debug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false
103+
104+
build_all: build_cr build_ur
105+
106+
build_all_linux_amd64: build_cr build_ur
107+
108+
build_all_linux_aarch64: build_gcc_cr build_gcc_ur
109+
110+
build_gcc_cr: build_product_cr_so build_product_cr_a \
111+
build_notproduct_cr_so build_notproduct_cr_a \
112+
build_fastdebug_cr_so build_fastdebug_cr_a \
113+
build_debug_cr_so build_debug_cr_a
114+
115+
build_gcc_ur: build_product_ur_so build_product_ur_a \
116+
build_notproduct_ur_so build_notproduct_ur_a \
117+
build_fastdebug_ur_so build_fastdebug_ur_a \
118+
build_debug_ur_so build_debug_ur_a
119+
120+
build_cr: build_product_cr_so build_product_cr_a \
121+
build_notproduct_cr_so build_notproduct_cr_a \
122+
build_fastdebug_cr_so build_fastdebug_cr_a \
123+
build_debug_cr_so build_debug_cr_a
124+
125+
build_ur: build_product_ur_so build_product_ur_a \
126+
build_notproduct_ur_so build_notproduct_ur_a \
127+
build_fastdebug_ur_so build_fastdebug_ur_a \
128+
build_debug_ur_so build_debug_ur_a
129+
130+
build_product_cr_so:
131+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=product TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
132+
133+
build_product_cr_a:
134+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=product TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
135+
136+
build_notproduct_cr_so:
137+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
138+
139+
build_notproduct_cr_a:
140+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
141+
142+
build_fastdebug_cr_so:
143+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
144+
145+
build_fastdebug_cr_a:
146+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
147+
148+
build_debug_cr_so:
149+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=debug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=true
150+
151+
build_debug_cr_a:
152+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=debug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=true
153+
154+
build_product_ur_so:
155+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=product TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
156+
157+
build_product_ur_a:
158+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=product TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false
159+
160+
build_notproduct_ur_so:
161+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
162+
163+
build_notproduct_ur_a:
164+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=notproduct TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false
165+
166+
build_fastdebug_ur_so:
167+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
168+
169+
build_fastdebug_ur_a:
170+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=fastdebug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false
171+
172+
build_debug_ur_so:
173+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=debug TARGET_FILE_FORMAT=so COMPRESSED_REFERENCES=false
174+
175+
build_debug_ur_a:
176+
$(MAKE) -f $(SUB_MAKEFILE) build DEBUG_LEVEL=debug TARGET_FILE_FORMAT=a COMPRESSED_REFERENCES=false

src/hotspot/SubMakefile

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
#
2+
# Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# This code is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU General Public License version 2 only, as
7+
# published by the Free Software Foundation.
8+
#
9+
# This code is distributed in the hope that it will be useful, but WITHOUT
10+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12+
# version 2 for more details (a copy is included in the LICENSE file that
13+
# accompanied this code).
14+
#
15+
# You should have received a copy of the GNU General Public License version
16+
# 2 along with this work; if not, write to the Free Software Foundation,
17+
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18+
#
19+
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20+
# or visit www.oracle.com if you need additional information or have any
21+
# questions.
22+
#
23+
24+
.PHONY: clean build copy
25+
26+
uname_m := $(shell uname -m)
27+
ifeq ($(uname_m),x86_64)
28+
ARCH_SUFFIX := amd64
29+
else ifeq ($(uname_m),aarch64)
30+
ARCH_SUFFIX := aarch64
31+
else
32+
$(error Unexpected architecture $(uname_m))
33+
endif
34+
35+
ifndef TARGET_FILE_FORMAT
36+
$(error TARGET_FILE_FORMAT is not set)
37+
endif
38+
39+
ifndef DEBUG_LEVEL
40+
$(error DEBUG_LEVEL is not set)
41+
endif
42+
43+
ifndef COMPRESSED_REFERENCES
44+
$(error COMPRESSED_REFERENCES is not set)
45+
endif
46+
47+
# 'gmake MX_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details.
48+
QUIETLY$(MX_VERBOSE) = @
49+
50+
PROJECT_ROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
51+
BUILD_ROOT := $(CURDIR)
52+
53+
INCLUDES.amd64 := -I$(PROJECT_ROOT)cpu/x86 -I$(PROJECT_ROOT)os_cpu/linux_x86 -I$(PROJECT_ROOT)mocks/cpu/x86 -I$(PROJECT_ROOT)mocks/os_cpu/linux_x86
54+
INCLUDES.aarch64 := -I$(PROJECT_ROOT)cpu/aarch64 -I$(PROJECT_ROOT)os_cpu/linux_aarch64 -I$(PROJECT_ROOT)mocks/cpu/aarch64 -I$(PROJECT_ROOT)mocks/os_cpu/linux_aarch64
55+
INCLUDES.common := -I$(PROJECT_ROOT) -I$(PROJECT_ROOT)os/linux -I$(PROJECT_ROOT)os/posix -I$(PROJECT_ROOT)os/posix/include \
56+
-I$(PROJECT_ROOT)share -I$(PROJECT_ROOT)share/include -I$(PROJECT_ROOT)share/precompiled -I$(PROJECT_ROOT)share/utilities \
57+
-I$(PROJECT_ROOT)mocks -I$(PROJECT_ROOT)mocks/os/linux -I$(PROJECT_ROOT)mocks/os/posix -I$(PROJECT_ROOT)mocks/share -I$(PROJECT_ROOT)mocks/share/include \
58+
-I$(PROJECT_ROOT)svm -I$(PROJECT_ROOT)svm/share
59+
INCLUDES := $(INCLUDES.common) $(INCLUDES.$(ARCH_SUFFIX))
60+
61+
COMPRESSED_REFERENCE_DEFINES.true := -DSVM_COMPRESSED_REFERENCES
62+
COMPRESSED_REFERENCE_DEFINES.false :=
63+
COMPRESSED_REFERENCE_DEFINES := $(COMPRESSED_REFERENCE_DEFINES.$(COMPRESSED_REFERENCES))
64+
65+
DEFINES.amd64 := -DINCLUDE_SUFFIX_CPU=_x86 -DAMD64
66+
DEFINES.aarch64 := -DINCLUDE_SUFFIX_CPU=_aarch64 -DAARCH64
67+
DEFINES.common := -DSVM $(COMPRESSED_REFERENCE_DEFINES) -DINCLUDE_SUFFIX_OS=_linux -DINCLUDE_SUFFIX_COMPILER=_gcc -DLINUX -D_LP64=1 -DINCLUDE_JVMCI=1 -DINCLUDE_JFR=0 -DINCLUDE_G1GC=0 \
68+
-DINCLUDE_JVMTI=0 -DINCLUDE_SERVICES=0 -DINCLUDE_MANAGEMENT=0 -DINCLUDE_CDS=0 -DINCLUDE_CMSGC=0 -DINCLUDE_EPSILONGC=0 -DINCLUDE_PARALLELGC=0 -DINCLUDE_SERIALGC=0 -DINCLUDE_SHENANDOAHGC=0 -DINCLUDE_ZGC=0 -DINCLUDE_NMT=0 \
69+
-DVM_LITTLE_ENDIAN -DIGNORE_CODE_RELATED_OOPS=1 -DTARGET_COMPILER_gcc -DSUPPORTS_CLOCK_MONOTONIC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_FILE_OFFSET_BITS=64 -D_REENTRANT
70+
DEFINES := $(DEFINES.common) $(DEFINES.$(ARCH_SUFFIX))
71+
72+
# only use -fno-lifetime-dse if it is supported
73+
FNO_LIFETIME_DSE := $(shell $(CC) -fno-lifetime-dse -c /dev/null 2>/dev/null && echo -fno-lifetime-dse)
74+
75+
CPPFLAGS.product := -O3 -DPRODUCT -DDEBUG_LEVEL='"product"'
76+
CPPFLAGS.notproduct := -O3 -DDEBUG_LEVEL='"notproduct"'
77+
CPPFLAGS.fastdebug := -g -O1 -DASSERT -DDEBUG_LEVEL='"fastdebug"'
78+
CPPFLAGS.debug := -g -O0 -DASSERT -DDEBUG_LEVEL='"debug"'
79+
CPPFLAGS := -fPIC -fno-rtti -fno-exceptions -fno-strict-aliasing -fno-omit-frame-pointer -fstack-protector $(FNO_LIFETIME_DSE) -std=c++14 $(CPPFLAGS.$(DEBUG_LEVEL))
80+
81+
TARGET_SPECIFIC_CPPFLAGS.so := -fvisibility=hidden
82+
TARGET_SPECIFIC_CPPFLAGS.a :=
83+
CPPFLAGS += $(TARGET_SPECIFIC_CPPFLAGS.$(TARGET_FILE_FORMAT))
84+
85+
LDFLAGS.so := -shared -Wl,-z,noexecstack
86+
LDFLAGS.a := unused
87+
LDFLAGS := $(LDFLAGS.$(TARGET_FILE_FORMAT))
88+
89+
TARGET_EXT.so := .so
90+
TARGET_EXT.a := .a
91+
TARGET_EXT := $(TARGET_EXT.$(TARGET_FILE_FORMAT))
92+
93+
COMPRESSED_REFERENCES_SUFFIX.true := cr
94+
COMPRESSED_REFERENCES_SUFFIX.false := ur
95+
COMPRESSED_REFERENCES_SUFFIX := $(COMPRESSED_REFERENCES_SUFFIX.$(COMPRESSED_REFERENCES))
96+
97+
DEBUG_LEVEL_FILE_SUFFIX.product :=
98+
DEBUG_LEVEL_FILE_SUFFIX.notproduct := -notproduct
99+
DEBUG_LEVEL_FILE_SUFFIX.fastdebug := -fastdebug
100+
DEBUG_LEVEL_FILE_SUFFIX.debug := -debug
101+
DEBUG_LEVEL_FILE_SUFFIX := $(DEBUG_LEVEL_FILE_SUFFIX.$(DEBUG_LEVEL))
102+
103+
BUILD_DIR := $(BUILD_ROOT)/$(DEBUG_LEVEL)-$(COMPRESSED_REFERENCES_SUFFIX)$(TARGET_EXT)
104+
TARGET_FILE := $(BUILD_ROOT)/libsvmgc$(DEBUG_LEVEL_FILE_SUFFIX)-$(COMPRESSED_REFERENCES_SUFFIX)$(TARGET_EXT)
105+
106+
CPP_FILES_TO_EXCLUDE.amd64 := aarch64
107+
CPP_FILES_TO_EXCLUDE.aarch64 := x86
108+
CPP_FILES_TO_EXCLUDE := $(CPP_FILES_TO_EXCLUDE.$(ARCH_SUFFIX))
109+
110+
S_FILES_TO_EXCLUDE.amd64 := aarch64
111+
S_FILES_TO_EXCLUDE.aarch64 := x86_64
112+
S_FILES_TO_EXCLUDE := $(S_FILES_TO_EXCLUDE.$(ARCH_SUFFIX))
113+
114+
CPP_SOURCES := $(shell find $(PROJECT_ROOT) ! -name "*_$(CPP_FILES_TO_EXCLUDE).cpp" -name "*.cpp")
115+
CPP_OBJECTS := $(CPP_SOURCES:$(PROJECT_ROOT)%.cpp=$(BUILD_DIR)/%.o)
116+
CPP_DEPENDENCIES=$(CPP_OBJECTS:.o=.d)
117+
118+
ASM_SOURCES += $(shell find $(PROJECT_ROOT) ! -name "*_$(S_FILES_TO_EXCLUDE).S" -name "*.S")
119+
ASM_OBJECTS := $(ASM_SOURCES:$(PROJECT_ROOT)%.S=$(BUILD_DIR)/%.o)
120+
121+
-include $(CPP_DEPENDENCIES)
122+
123+
build: $(BUILD_DIR) $(TARGET_FILE)
124+
125+
clean:
126+
rm -rf $(BUILD_DIR)
127+
128+
$(TARGET_FILE) : $(CPP_OBJECTS) $(ASM_OBJECTS)
129+
@echo Linking $(TARGET_FILE)
130+
ifeq ($(TARGET_FILE_FORMAT),a)
131+
$(QUIETLY) $(AR) cr $(TARGET_FILE) $^
132+
else
133+
$(QUIETLY) $(CC) $^ -o $(TARGET_FILE) $(LDFLAGS)
134+
endif
135+
136+
$(CPP_OBJECTS): $(BUILD_DIR)/%.o: %.cpp
137+
$(QUIETLY) mkdir -p $(@D)
138+
$(QUIETLY) $(CC) -Wno-format-zero-length -c -MD $(CPPFLAGS) $(INCLUDES) $(DEFINES) $< -o $@
139+
140+
$(ASM_OBJECTS): $(BUILD_DIR)/%.o: %.S
141+
$(QUIETLY) mkdir -p $(@D)
142+
$(QUIETLY) $(CC) -c $(CPPFLAGS) $(INCLUDES) $(DEFINES) $< -o $@
143+
144+
$(BUILD_DIR):
145+
$(QUIETLY) mkdir -p $(BUILD_DIR)

0 commit comments

Comments
 (0)