Fri, 05 Sep 2014 14:39:45 -0700
8056154: JVM crash with EXCEPTION_ACCESS_VIOLATION when there are many threads running
Summary: Don't make compiled MH intrinsics not entrant when redefining classes
Reviewed-by: kvn, vlivanov
1 #
2 # Copyright (c) 2014, 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 #
25 include $(GAMMADIR)/make/altsrc.make
27 ifeq ($(INCLUDE_JVMTI), false)
28 CXXFLAGS += -DINCLUDE_JVMTI=0
29 CFLAGS += -DINCLUDE_JVMTI=0
31 Src_Files_EXCLUDE += jvmtiGetLoadedClasses.cpp jvmtiThreadState.cpp jvmtiExtensions.cpp \
32 jvmtiImpl.cpp jvmtiManageCapabilities.cpp jvmtiRawMonitor.cpp jvmtiUtil.cpp jvmtiTrace.cpp \
33 jvmtiCodeBlobEvents.cpp jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp jvmtiEnvThreadState.cpp \
34 jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp \
35 jvmtiClassFileReconstituter.cpp
36 endif
38 ifeq ($(INCLUDE_FPROF), false)
39 CXXFLAGS += -DINCLUDE_FPROF=0
40 CFLAGS += -DINCLUDE_FPROF=0
42 Src_Files_EXCLUDE += fprofiler.cpp
43 endif
45 ifeq ($(INCLUDE_VM_STRUCTS), false)
46 CXXFLAGS += -DINCLUDE_VM_STRUCTS=0
47 CFLAGS += -DINCLUDE_VM_STRUCTS=0
49 Src_Files_EXCLUDE += vmStructs.cpp
50 endif
52 ifeq ($(INCLUDE_JNI_CHECK), false)
53 CXXFLAGS += -DINCLUDE_JNI_CHECK=0
54 CFLAGS += -DINCLUDE_JNI_CHECK=0
56 Src_Files_EXCLUDE += jniCheck.cpp
57 endif
59 ifeq ($(INCLUDE_SERVICES), false)
60 CXXFLAGS += -DINCLUDE_SERVICES=0
61 CFLAGS += -DINCLUDE_SERVICES=0
63 Src_Files_EXCLUDE += heapDumper.cpp heapInspection.cpp \
64 attachListener_linux.cpp attachListener.cpp
65 endif
67 ifeq ($(INCLUDE_MANAGEMENT), false)
68 CXXFLAGS += -DINCLUDE_MANAGEMENT=0
69 CFLAGS += -DINCLUDE_MANAGEMENT=0
70 endif
72 ifeq ($(INCLUDE_CDS), false)
73 CXXFLAGS += -DINCLUDE_CDS=0
74 CFLAGS += -DINCLUDE_CDS=0
76 Src_Files_EXCLUDE += filemap.cpp metaspaceShared*.cpp sharedPathsMiscInfo.cpp \
77 systemDictionaryShared.cpp classLoaderExt.cpp sharedClassUtil.cpp
78 endif
80 ifeq ($(INCLUDE_ALL_GCS), false)
81 CXXFLAGS += -DINCLUDE_ALL_GCS=0
82 CFLAGS += -DINCLUDE_ALL_GCS=0
84 gc_impl := $(HS_COMMON_SRC)/share/vm/gc_implementation
85 gc_impl_alt := $(HS_ALT_SRC)/share/vm/gc_implementation
86 gc_subdirs := concurrentMarkSweep g1 parallelScavenge parNew
87 gc_exclude := $(foreach gc,$(gc_subdirs), \
88 $(notdir $(wildcard $(gc_impl)/$(gc)/*.cpp)) \
89 $(notdir $(wildcard $(gc_impl_alt)/$(gc)/*.cpp)))
90 Src_Files_EXCLUDE += $(gc_exclude)
92 # Exclude everything in $(gc_impl)/shared except the files listed
93 # in $(gc_shared_keep).
94 gc_shared_all := $(notdir $(wildcard $(gc_impl)/shared/*.cpp))
95 gc_shared_keep := \
96 adaptiveSizePolicy.cpp \
97 ageTable.cpp \
98 collectorCounters.cpp \
99 cSpaceCounters.cpp \
100 gcPolicyCounters.cpp \
101 gcStats.cpp \
102 gcTimer.cpp \
103 gcTrace.cpp \
104 gcTraceSend.cpp \
105 gcTraceTime.cpp \
106 gcUtil.cpp \
107 generationCounters.cpp \
108 markSweep.cpp \
109 objectCountEventSender.cpp \
110 spaceDecorator.cpp \
111 vmGCOperations.cpp
112 Src_Files_EXCLUDE += $(filter-out $(gc_shared_keep),$(gc_shared_all))
114 # src/share/vm/services
115 Src_Files_EXCLUDE += \
116 g1MemoryPool.cpp \
117 psMemoryPool.cpp
118 endif
120 ifeq ($(INCLUDE_NMT), false)
121 CXXFLAGS += -DINCLUDE_NMT=0
122 CFLAGS += -DINCLUDE_NMT=0
124 Src_Files_EXCLUDE += \
125 memBaseline.cpp memReporter.cpp mallocTracker.cpp virtualMemoryTracker.cpp nmtCommon.cpp \
126 memTracker.cpp nmtDCmd.cpp mallocSiteTable.cpp
127 endif
129 -include $(HS_ALT_MAKE)/excludeSrc.make
131 .PHONY: $(HS_ALT_MAKE)/excludeSrc.make