summaryrefslogtreecommitdiffstats
path: root/recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-shark-build-common.patch
diff options
context:
space:
mode:
authorRichard Leitner <richard.leitner@skidata.com>2019-12-30 15:35:59 +0100
committerRichard Leitner <richard.leitner@skidata.com>2020-01-28 15:09:31 +0100
commit7d30e6ff7b8a54d67256ce528e8c4fd7e63f6b14 (patch)
tree398a12e3addb7470622d4cb2f98e7ad2dda02c5c /recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-shark-build-common.patch
parent19b569281cc30e3aa94e772d6885cd340b1d1724 (diff)
downloadmeta-java-7d30e6ff7b8a54d67256ce528e8c4fd7e63f6b14.tar.gz
openjdk-8: update to latest ga version 242
As OpenJDK-8 is now tagging "ga" versions in addition to the "build" version the recipes are adapted to use those "ga" versions. All existing patches got re-applied and renamed. For better handling Hotspot patches now start at patch number 1001 and jdk patches at 2001. Furthermore architecture dependent patches are prefixed with the architecture they apply on. Following patches/hunks were completely dropped: - 0002-hotspot-fix-compilation-with-security-flags-enabled.patch got backported to hotspot jdk8u https://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/c40a28e54185 - 0011-hotspot-backport-patch-to-fix-misuses-of-strncpy-str.patch ostream.cpp:112 got fixed in hotspot jdk8u https://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/f3108e56b502 - 0014-hotspot-zero-fix-undefined-behaviour-gcc-v8-fix.patch got backported to hotspot jdk8u https://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/ca4663e58916 - 0018-hotspot-Fix-debug-build-after-8062808-Turn-on-the-Wr.patch fixed in hotspot jdk8u https://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/32bc598624bd - 0020-Enable-HotSpot-builds-on-5.x-Linux-kernels.patch fixed in hotspot jdk8u https://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/5af8ec63c21c - openjdk8-add-missing-linker-flags.patch fixed in hotspot jdk8u https://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/f175513c2c3a - openjdk8-fix-shark-stdc++11.patch fixed in hotspot jdk8u - openjdk8-fix-libpng-neon-build.patch fixed in jdk https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/5d57817931e1 - aarch64-hotspot-fix-undefined-behaviour-gcc-v8-fix.patch got backported to hotspot jdk8u Following patches were newly added: - 0011-autoconf-fix-CC-with-arguments-detection.patch needed because of jdk8u commit "8038340: Cleanup and fix sysroot and devkit handling on Linux and Solaris" - 0012-autoconf-NativeCompilation-remove-sysroot.patch needed because of jdk8u commit "8038340: Cleanup and fix sysroot and devkit handling on Linux and Solaris" Additionally add UPDATING.md which describes the openjdk8 update process for this layer and update8checksums.sh, a script that updates the openjdk8 source archive checksums in the corresponding .inc files. Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Diffstat (limited to 'recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-shark-build-common.patch')
-rw-r--r--recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-shark-build-common.patch416
1 files changed, 0 insertions, 416 deletions
diff --git a/recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-shark-build-common.patch b/recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-shark-build-common.patch
deleted file mode 100644
index ece7f14..0000000
--- a/recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-shark-build-common.patch
+++ /dev/null
@@ -1,416 +0,0 @@
1--- hotspot/make/Makefile.orig
2+++ hotspot/make/Makefile
3@@ -525,7 +525,7 @@ $(EXPORT_INCLUDE_DIR)/%: $(SHARK_BUILD
4 # Unix
5 $(EXPORT_JRE_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(SHARK_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
6 $(install-file)
7-$(EXPORT_JRE_LIB_ARCH_DIR)/%.debuginfo): $(SHARK_BUILD_DIR)/%.debuginfo
8+$(EXPORT_JRE_LIB_ARCH_DIR)/%.debuginfo: $(SHARK_BUILD_DIR)/%.debuginfo
9 $(install-file)
10 $(EXPORT_JRE_LIB_ARCH_DIR)/%.diz: $(SHARK_BUILD_DIR)/%.diz
11 $(install-file)
12--- hotspot/src/share/vm/ci/ciTypeFlow.cpp.orig
13+++ hotspot/src/share/vm/ci/ciTypeFlow.cpp
14@@ -35,8 +35,10 @@
15 #include "interpreter/bytecode.hpp"
16 #include "interpreter/bytecodes.hpp"
17 #include "memory/allocation.inline.hpp"
18+#ifdef COMPILER2
19 #include "opto/compile.hpp"
20 #include "opto/node.hpp"
21+#endif
22 #include "runtime/deoptimization.hpp"
23 #include "utilities/growableArray.hpp"
24
25@@ -2648,6 +2650,7 @@ void ciTypeFlow::df_flow_types(Block* st
26 assert (!blk->has_pre_order(), "");
27 blk->set_next_pre_order();
28
29+#ifdef COMPILER2
30 if (_next_pre_order >= (int)Compile::current()->max_node_limit() / 2) {
31 // Too many basic blocks. Bail out.
32 // This can happen when try/finally constructs are nested to depth N,
33@@ -2657,6 +2660,7 @@ void ciTypeFlow::df_flow_types(Block* st
34 record_failure("too many basic blocks");
35 return;
36 }
37+#endif
38 if (do_flow) {
39 flow_block(blk, temp_vector, temp_set);
40 if (failing()) return; // Watch for bailouts.
41--- hotspot/src/share/vm/classfile/systemDictionary.cpp.orig
42+++ hotspot/src/share/vm/classfile/systemDictionary.cpp
43@@ -2289,6 +2289,7 @@ methodHandle SystemDictionary::find_meth
44 spe = NULL;
45 // Must create lots of stuff here, but outside of the SystemDictionary lock.
46 m = Method::make_method_handle_intrinsic(iid, signature, CHECK_(empty));
47+#ifndef SHARK
48 if (!Arguments::is_interpreter_only()) {
49 // Generate a compiled form of the MH intrinsic.
50 AdapterHandlerLibrary::create_native_wrapper(m);
51@@ -2298,6 +2299,7 @@ methodHandle SystemDictionary::find_meth
52 "out of space in CodeCache for method handle intrinsic", empty);
53 }
54 }
55+#endif
56 // Now grab the lock. We might have to throw away the new method,
57 // if a racing thread has managed to install one at the same time.
58 {
59@@ -2311,9 +2313,11 @@ methodHandle SystemDictionary::find_meth
60 }
61
62 assert(spe != NULL && spe->method() != NULL, "");
63+#ifndef SHARK
64 assert(Arguments::is_interpreter_only() || (spe->method()->has_compiled_code() &&
65 spe->method()->code()->entry_point() == spe->method()->from_compiled_entry()),
66 "MH intrinsic invariant");
67+#endif
68 return spe->method();
69 }
70
71--- hotspot/src/share/vm/runtime/handles.inline.hpp.orig
72+++ hotspot/src/share/vm/runtime/handles.inline.hpp
73@@ -51,6 +51,12 @@ inline Handle::Handle(Thread* thread, oo
74 }
75 #endif // ASSERT
76
77+#ifdef SHARK
78+#define assert_on_stack(expr) (void)(expr)
79+#else
80+#define assert_on_stack(expr) assert((expr), "not on stack?")
81+#endif
82+
83 // Constructors for metadata handles
84 #define DEF_METADATA_HANDLE_FN(name, type) \
85 inline name##Handle::name##Handle(type* obj) : _value(obj), _thread(NULL) { \
86@@ -79,7 +85,7 @@ inline name##Handle::name##Handle(const
87 } else { \
88 _thread = Thread::current(); \
89 } \
90- assert (_thread->is_in_stack((address)this), "not on stack?"); \
91+ assert_on_stack (_thread->is_in_stack((address)this)); \
92 _thread->metadata_handles()->push((Metadata*)_value); \
93 } else { \
94 _thread = NULL; \
95--- hotspot/src/share/vm/shark/sharkEntry.hpp.orig
96+++ hotspot/src/share/vm/shark/sharkEntry.hpp
97@@ -27,6 +27,7 @@
98 #define SHARE_VM_SHARK_SHARKENTRY_HPP
99
100 #include "shark/llvmHeaders.hpp"
101+#include "entry_zero.hpp"
102
103 class SharkContext;
104
105--- hotspot/src/share/vm/shark/llvmHeaders.hpp.orig
106+++ hotspot/src/share/vm/shark/llvmHeaders.hpp
107@@ -35,7 +35,11 @@
108 #undef DEBUG
109 #endif
110
111+#if SHARK_LLVM_VERSION <= 34
112 #include <llvm/Analysis/Verifier.h>
113+#else
114+#include <llvm-c/Analysis.h>
115+#endif
116 #include <llvm/ExecutionEngine/ExecutionEngine.h>
117
118 // includes specific to each version
119--- common/autoconf/libraries.m4.orig
120+++ common/autoconf/libraries.m4
121@@ -834,8 +834,9 @@ AC_DEFUN_ONCE([LIB_SETUP_STATIC_LINK_LIB
122 fi
123 fi
124 done
125- llvm_version=$("${LLVM_CONFIG}" --version | sed 's/\.//; s/svn.*//')
126+ llvm_version=$("${LLVM_CONFIG}" --version | sed 's/\.//; s/svn.*//; s/\..*$//')
127 LLVM_CFLAGS="${LLVM_CFLAGS} -DSHARK_LLVM_VERSION=${llvm_version}"
128+ AS_IF([test $llvm_version -ge 34], [LLVM_CFLAGS="${LLVM_CFLAGS} -std=gnu++11"])
129
130 unset LLVM_LDFLAGS
131 for flag in $("${LLVM_CONFIG}" --ldflags); do
132@@ -848,7 +849,7 @@ AC_DEFUN_ONCE([LIB_SETUP_STATIC_LINK_LIB
133 done
134
135 unset LLVM_LIBS
136- for flag in $("${LLVM_CONFIG}" --libs ${llvm_components}); do
137+ for flag in $("${LLVM_CONFIG}" --libs --system-libs ${llvm_components}); do
138 if echo "${flag}" | grep -q '^-l'; then
139 if test "${LLVM_LIBS}" != ""; then
140 LLVM_LIBS="${LLVM_LIBS} "
141--- hotspot/src/share/vm/shark/sharkIntrinsics.cpp.orig
142+++ hotspot/src/share/vm/shark/sharkIntrinsics.cpp
143@@ -265,7 +265,11 @@ void SharkIntrinsics::do_Unsafe_compareA
144 "addr");
145
146 // Perform the operation
147+#if SHARK_LLVM_VERSION <= 34
148 Value *result = builder()->CreateAtomicCmpXchg(addr, e, x, llvm::SequentiallyConsistent);
149+#else
150+ Value *result = builder()->CreateAtomicCmpXchg(addr, e, x, llvm::SequentiallyConsistent, llvm::SequentiallyConsistent);
151+ #endif
152 // Push the result
153 state()->push(
154 SharkValue::create_jint(
155--- hotspot/src/share/vm/shark/sharkRuntime.cpp.orig
156+++ hotspot/src/share/vm/shark/sharkRuntime.cpp
157@@ -32,6 +32,7 @@
158 #ifdef TARGET_ARCH_zero
159 # include "stack_zero.inline.hpp"
160 #endif
161+#include "memory/oopFactory.hpp"
162
163 using namespace llvm;
164
165--- hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp.orig
166+++ hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
167@@ -1732,7 +1732,11 @@ void SharkTopLevelBlock::do_new() {
168 heap_object = builder()->CreateIntToPtr(
169 old_top, SharkType::oop_type(), "heap_object");
170
171+#if SHARK_LLVM_VERSION <= 34
172 Value *check = builder()->CreateAtomicCmpXchg(top_addr, old_top, new_top, llvm::SequentiallyConsistent);
173+#else
174+ Value *check = builder()->CreateAtomicCmpXchg(top_addr, old_top, new_top, llvm::SequentiallyConsistent, llvm::SequentiallyConsistent);
175+#endif
176 builder()->CreateCondBr(
177 builder()->CreateICmpEQ(old_top, check),
178 initialize, retry);
179@@ -1933,7 +1937,11 @@ void SharkTopLevelBlock::acquire_lock(Va
180
181 Value *lock = builder()->CreatePtrToInt(
182 monitor_header_addr, SharkType::intptr_type());
183+#if SHARK_LLVM_VERSION <= 34
184 Value *check = builder()->CreateAtomicCmpXchg(mark_addr, disp, lock, llvm::Acquire);
185+#else
186+ Value *check = builder()->CreateAtomicCmpXchg(mark_addr, disp, lock, llvm::Acquire, llvm::Acquire);
187+#endif
188 builder()->CreateCondBr(
189 builder()->CreateICmpEQ(disp, check),
190 acquired_fast, try_recursive);
191@@ -2018,7 +2026,11 @@ void SharkTopLevelBlock::release_lock(in
192 PointerType::getUnqual(SharkType::intptr_type()),
193 "mark_addr");
194
195+#if SHARK_LLVM_VERSION <= 34
196 Value *check = builder()->CreateAtomicCmpXchg(mark_addr, lock, disp, llvm::Release);
197+#else
198+ Value *check = builder()->CreateAtomicCmpXchg(mark_addr, lock, disp, llvm::Release, llvm::Monotonic);
199+#endif
200 builder()->CreateCondBr(
201 builder()->CreateICmpEQ(lock, check),
202 released_fast, slow_path);
203--- hotspot/src/cpu/zero/vm/interpreter_zero.cpp.orig
204+++ hotspot/src/cpu/zero/vm/interpreter_zero.cpp
205@@ -49,7 +49,7 @@
206 #ifdef COMPILER1
207 #include "c1/c1_Runtime1.hpp"
208 #endif
209-#ifdef CC_INTERP
210+#if defined(CC_INTERP) || defined(SHARK)
211 #include "interpreter/cppInterpreter.hpp"
212 #endif
213
214--- hotspot/src/share/vm/shark/sharkCompiler.hpp.orig
215+++ hotspot/src/share/vm/shark/sharkCompiler.hpp
216@@ -40,6 +40,8 @@ class SharkCompiler : public AbstractCom
217 // Creation
218 SharkCompiler();
219
220+ void init_llvm();
221+
222 // Name of this compiler
223 const char *name() { return "shark"; }
224
225--- hotspot/src/share/vm/shark/sharkCompiler.cpp.orig
226+++ hotspot/src/share/vm/shark/sharkCompiler.cpp
227@@ -61,11 +61,25 @@ SharkCompiler::SharkCompiler()
228 : AbstractCompiler() {
229 // Create the lock to protect the memory manager and execution engine
230 _execution_engine_lock = new Monitor(Mutex::leaf, "SharkExecutionEngineLock");
231- MutexLocker locker(execution_engine_lock());
232+ {
233+ MutexLocker locker(execution_engine_lock());
234+ init_llvm();
235+ }
236+ // All done
237+ set_state(initialized);
238+}
239
240+void SharkCompiler::init_llvm() {
241+ // with llvm 3.5, Multi-threading can only be enabled/disabled with the
242+ // compile time define LLVM_ENABLE_THREADS
243+#if SHARK_LLVM_VERSION <= 34
244 // Make LLVM safe for multithreading
245 if (!llvm_start_multithreaded())
246 fatal("llvm_start_multithreaded() failed");
247+#else
248+ if (!llvm_is_multithreaded())
249+ fatal("llvm_is_multithreaded() tells no multithreading support in llvm");
250+#endif
251
252 // Initialize the native target
253 InitializeNativeTarget();
254@@ -83,7 +97,7 @@ SharkCompiler::SharkCompiler()
255 // Finetune LLVM for the current host CPU.
256 StringMap<bool> Features;
257 bool gotCpuFeatures = llvm::sys::getHostCPUFeatures(Features);
258- std::string cpu("-mcpu=" + llvm::sys::getHostCPUName());
259+ std::string cpu("-mcpu=" + std::string(llvm::sys::getHostCPUName()));
260
261 std::vector<const char*> args;
262 args.push_back(""); // program name
263@@ -112,6 +126,9 @@ SharkCompiler::SharkCompiler()
264 builder.setMAttrs(MAttrs);
265 builder.setJITMemoryManager(memory_manager());
266 builder.setEngineKind(EngineKind::JIT);
267+#if SHARK_LLVM_VERSION > 34
268+ builder.setUseMCJIT(true);
269+#endif
270 builder.setErrorStr(&ErrorMsg);
271 if (! fnmatch(SharkOptimizationLevel, "None", 0)) {
272 tty->print_cr("Shark optimization level set to: None");
273@@ -133,10 +150,11 @@ SharkCompiler::SharkCompiler()
274 exit(1);
275 }
276
277+#if SHARK_LLVM_VERSION > 34
278+ _native_context->execution_engine(_execution_engine);
279+ _normal_context->execution_engine(_execution_engine);
280+#endif
281 execution_engine()->addModule(_native_context->module());
282-
283- // All done
284- set_state(initialized);
285 }
286
287 void SharkCompiler::initialize() {
288@@ -165,7 +183,7 @@ void SharkCompiler::compile_method(ciEnv
289 }
290
291 // Create the recorders
292- Arena arena;
293+ Arena arena(mtCompiler);
294 env->set_oop_recorder(new OopRecorder(&arena));
295 OopMapSet oopmaps;
296 env->set_debug_info(new DebugInformationRecorder(env->oop_recorder()));
297@@ -268,7 +286,12 @@ void SharkCompiler::generate_native_code
298
299 if (SharkVerifyFunction != NULL) {
300 if (!fnmatch(SharkVerifyFunction, name, 0)) {
301+#if SHARK_LLVM_VERSION <= 34
302 verifyFunction(*function);
303+#else
304+ LLVMValueRef F = wrap(function);
305+ LLVMVerifyFunction(F, LLVMAbortProcessAction);
306+#endif
307 }
308 }
309
310@@ -298,7 +321,11 @@ void SharkCompiler::generate_native_code
311 #endif
312 #endif // !NDEBUG
313 memory_manager()->set_entry_for_function(function, entry);
314+#if SHARK_LLVM_VERSION <= 34
315 code = (address) execution_engine()->getPointerToFunction(function);
316+#else
317+ code = (address) execution_engine()->getFunctionAddress(name);
318+#endif
319 }
320 assert(code != NULL, "code must be != NULL");
321 entry->set_entry_point(code);
322--- hotspot/src/share/vm/shark/sharkContext.cpp.orig
323+++ hotspot/src/share/vm/shark/sharkContext.cpp
324@@ -34,8 +34,13 @@
325 using namespace llvm;
326
327 SharkContext::SharkContext(const char* name)
328- : LLVMContext(),
329- _free_queue(NULL) {
330+ : LLVMContext()
331+ , _free_queue(0)
332+#if SHARK_LLVM_VERSION > 34
333+ , _ee(0)
334+ , func_mod_map()
335+#endif
336+{
337 // Create a module to build our functions into
338 _module = new Module(name, *this);
339
340--- hotspot/src/share/vm/shark/sharkContext.hpp.orig
341+++ hotspot/src/share/vm/shark/sharkContext.hpp
342@@ -29,6 +29,8 @@
343 #include "shark/llvmHeaders.hpp"
344 #include "shark/sharkCompiler.hpp"
345
346+#include <map>
347+
348 // The LLVMContext class allows multiple instances of LLVM to operate
349 // independently of each other in a multithreaded context. We extend
350 // this here to store things in Shark that are LLVMContext-specific.
351@@ -41,12 +43,28 @@ class SharkContext : public llvm::LLVMCo
352
353 private:
354 llvm::Module* _module;
355+#if SHARK_LLVM_VERSION > 34
356+ llvm::ExecutionEngine *_ee;
357+ std::map<std::string, llvm::Module *> func_mod_map;
358+#endif
359
360 public:
361 llvm::Module* module() const {
362 return _module;
363 }
364
365+#if SHARK_LLVM_VERSION > 34
366+ llvm::ExecutionEngine *execution_engine(llvm::ExecutionEngine *ee) {
367+ llvm::ExecutionEngine *oee = _ee;
368+ _ee = ee;
369+ return oee;
370+ }
371+
372+ llvm::ExecutionEngine *execution_engine() const {
373+ return _ee;
374+ }
375+#endif
376+
377 // Get this thread's SharkContext
378 public:
379 static SharkContext& current() {
380@@ -55,12 +73,35 @@ class SharkContext : public llvm::LLVMCo
381
382 // Module accessors
383 public:
384- void add_function(llvm::Function* function) const {
385+ void add_function(llvm::Function* function) {
386+#if SHARK_LLVM_VERSION <= 34
387 module()->getFunctionList().push_back(function);
388+#else
389+ // shark compiles modules, not functions
390+ std::map<std::string, llvm::Module *>::iterator i = func_mod_map.find(function->getName().str());
391+ if(func_mod_map.end() == i) {
392+ llvm::Module *mod4fun = new llvm::Module(function->getName(), *this);
393+ func_mod_map.insert(std::pair<std::string, llvm::Module *>(function->getName().str(), mod4fun));
394+ mod4fun->getFunctionList().push_back(function);
395+ _ee->addModule(mod4fun);
396+ }
397+#endif
398 }
399 llvm::Constant* get_external(const char* name,
400 llvm::FunctionType* sig) {
401+ // XXX see whether we need additional module map, too
402+#if SHARK_LLVM_VERSION <= 34
403 return module()->getOrInsertFunction(name, sig);
404+#else
405+ // shark compiles modules, not functions
406+ std::map<std::string, llvm::Module *>::iterator i = func_mod_map.find(name);
407+ if(func_mod_map.end() == i) {
408+ llvm::Module *mod4fun = new llvm::Module(name, *this);
409+ func_mod_map.insert(std::pair<std::string, llvm::Module *>(name, mod4fun));
410+ mod4fun->getOrInsertFunction(name, sig);
411+ _ee->addModule(mod4fun);
412+ }
413+#endif
414 }
415
416 // Basic types