diff --git a/JDK-8210416-RHBZ-1624122-fdlibm-opt-fix.patch b/JDK-8210416-RHBZ-1624122-fdlibm-opt-fix.patch
new file mode 100644
index 0000000..85428db
--- /dev/null
+++ b/JDK-8210416-RHBZ-1624122-fdlibm-opt-fix.patch
@@ -0,0 +1,84 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1536142767 -7200
+#      Wed Sep 05 12:19:27 2018 +0200
+# Node ID 7ea57274e55054579d1532e757edb21e67beed83
+# Parent  3ee91722550680c18b977f0e00b1013323b5c9ef
+8210416: [linux] Poor StrictMath performance due to non-optimized compilation
+Summary: Compile fdlibm with -O2 -ffp-contract=off on gcc/clang arches.
+Reviewed-by: aph, erikj, dholmes, darcy
+
+diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4
+--- a/make/autoconf/flags-cflags.m4
++++ b/make/autoconf/flags-cflags.m4
+@@ -373,6 +373,18 @@
+ 
+   FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
+ 
++  COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off"
++  # Check that the compiler supports -ffp-contract=off flag
++  # Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty
++  # otherwise.
++  # These flags are required for GCC-based builds of
++  # fdlibm with optimization without losing precision.
++  # Notably, -ffp-contract=off needs to be added for GCC >= 4.6.
++  FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}],
++      IF_TRUE: [FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}],
++      IF_FALSE: [FDLIBM_CFLAGS=""])
++  AC_SUBST(FDLIBM_CFLAGS)
++
+   # Tests are only ever compiled for TARGET
+   CFLAGS_TESTLIB="$CFLAGS_JDKLIB"
+   CXXFLAGS_TESTLIB="$CXXFLAGS_JDKLIB"
+diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in
+--- a/make/autoconf/spec.gmk.in
++++ b/make/autoconf/spec.gmk.in
+@@ -450,6 +450,7 @@
+ LIBJSIG_HASHSTYLE_LDFLAGS := @LIBJSIG_HASHSTYLE_LDFLAGS@
+ LIBJSIG_NOEXECSTACK_LDFLAGS := @LIBJSIG_NOEXECSTACK_LDFLAGS@
+ 
++FDLIBM_CFLAGS := @FDLIBM_CFLAGS@
+ JVM_CFLAGS := @JVM_CFLAGS@
+ JVM_LDFLAGS := @JVM_LDFLAGS@
+ JVM_ASFLAGS := @JVM_ASFLAGS@
+diff --git a/make/lib/CoreLibraries.gmk b/make/lib/CoreLibraries.gmk
+--- a/make/lib/CoreLibraries.gmk
++++ b/make/lib/CoreLibraries.gmk
+@@ -39,20 +39,15 @@
+   BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
+ endif
+ 
+-ifeq ($(OPENJDK_TARGET_OS), linux)
+-  ifeq ($(OPENJDK_TARGET_CPU), ppc64)
+-    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
+-  else ifeq ($(OPENJDK_TARGET_CPU), ppc64le)
+-    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
+-  else ifeq ($(OPENJDK_TARGET_CPU), s390x)
+-    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
+-  else ifeq ($(OPENJDK_TARGET_CPU), aarch64)
+-    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
+-  endif
++# If FDLIBM_CFLAGS is non-empty we know that we can optimize
++# fdlibm by adding those extra C flags. Currently GCC,
++# and clang only.
++ifneq ($(FDLIBM_CFLAGS), )
++  BUILD_LIBFDLIBM_OPTIMIZATION := LOW
+ endif
+ 
+ LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm
+-LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC)
++LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC) $(FDLIBM_CFLAGS)
+ 
+ ifneq ($(OPENJDK_TARGET_OS), macosx)
+   $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
+@@ -64,10 +59,6 @@
+       CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
+       CFLAGS_windows_debug := -DLOGGING, \
+       CFLAGS_aix := -qfloat=nomaf, \
+-      CFLAGS_linux_ppc64 := -ffp-contract=off, \
+-      CFLAGS_linux_ppc64le := -ffp-contract=off, \
+-      CFLAGS_linux_s390x := -ffp-contract=off, \
+-      CFLAGS_linux_aarch64 := -ffp-contract=off, \
+       DISABLED_WARNINGS_gcc := sign-compare misleading-indentation, \
+       DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
+       ARFLAGS := $(ARFLAGS), \
diff --git a/JDK-8210425-RHBZ-1624122-sharedRuntimeTrig-opt-fix.patch b/JDK-8210425-RHBZ-1624122-sharedRuntimeTrig-opt-fix.patch
new file mode 100644
index 0000000..8a3a0d8
--- /dev/null
+++ b/JDK-8210425-RHBZ-1624122-sharedRuntimeTrig-opt-fix.patch
@@ -0,0 +1,48 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1536682731 -7200
+#      Tue Sep 11 18:18:51 2018 +0200
+# Node ID 7157249fdd4366d95dd68f3d083ebb0ef84c753b
+# Parent  8d86b149e10f0a0896e5fd4d8d407e5fda64a529
+8210425: [x86] sharedRuntimeTrig/sharedRuntimeTrans compiled without optimization
+Reviewed-by: duke
+
+diff --git a/make/hotspot/lib/JvmOverrideFiles.gmk b/make/hotspot/lib/JvmOverrideFiles.gmk
+--- a/make/hotspot/lib/JvmOverrideFiles.gmk
++++ b/make/hotspot/lib/JvmOverrideFiles.gmk
+@@ -41,20 +41,26 @@
+   BUILD_LIBJVM_shenandoahTraversalGC.cpp_CXXFLAGS := --param inline-unit-growth=1000
+ endif
+ 
++LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NONE)
++# If the FDLIBM_CFLAGS variable is non-empty we know
++# that the fdlibm-fork in hotspot can get optimized
++# by using -ffp-contract=off on GCC/Clang platforms.
++ifneq ($(FDLIBM_CFLAGS), )
++  LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NORM)
++endif
++
+ ifeq ($(OPENJDK_TARGET_OS), linux)
+   BUILD_LIBJVM_ostream.cpp_CXXFLAGS := -D_FILE_OFFSET_BITS=64
+   BUILD_LIBJVM_logFileOutput.cpp_CXXFLAGS := -D_FILE_OFFSET_BITS=64
+ 
+-  ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
+-    BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := -DNO_PCH $(CXX_O_FLAG_NONE)
+-    BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := -DNO_PCH $(CXX_O_FLAG_NONE)
++  BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := -DNO_PCH $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)
++  BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := -DNO_PCH $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)
+ 
+-    ifeq ($(TOOLCHAIN_TYPE), clang)
+-      JVM_PRECOMPILED_HEADER_EXCLUDE := \
+-          sharedRuntimeTrig.cpp \
+-          sharedRuntimeTrans.cpp \
+-          #
+-    endif
++  ifeq ($(TOOLCHAIN_TYPE), clang)
++    JVM_PRECOMPILED_HEADER_EXCLUDE := \
++	sharedRuntimeTrig.cpp \
++	sharedRuntimeTrans.cpp \
++	#
+   endif
+ 
+   ifeq ($(OPENJDK_TARGET_CPU), x86)
diff --git a/JDK-8210647-RHBZ-1624122-libsaproc-opt-fix.patch b/JDK-8210647-RHBZ-1624122-libsaproc-opt-fix.patch
new file mode 100644
index 0000000..a279f8a
--- /dev/null
+++ b/JDK-8210647-RHBZ-1624122-libsaproc-opt-fix.patch
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1536751862 -7200
+#      Wed Sep 12 13:31:02 2018 +0200
+# Node ID f95c6746fe256fe0456e0ea0d2930631ef840286
+# Parent  7157249fdd4366d95dd68f3d083ebb0ef84c753b
+8210647: libsaproc is being compiled without optimization
+Reviewed-by: duke
+
+diff --git a/make/lib/Lib-jdk.hotspot.agent.gmk b/make/lib/Lib-jdk.hotspot.agent.gmk
+--- a/make/lib/Lib-jdk.hotspot.agent.gmk
++++ b/make/lib/Lib-jdk.hotspot.agent.gmk
+@@ -52,7 +52,7 @@
+ 
+ $(eval $(call SetupJdkLibrary, BUILD_LIBSA, \
+     NAME := saproc, \
+-    OPTIMIZATION := NONE, \
++    OPTIMIZATION := LOW, \
+     DISABLED_WARNINGS_microsoft := 4267, \
+     DISABLED_WARNINGS_gcc := sign-compare, \
+     DISABLED_WARNINGS_CXX_solstudio := truncwarn unknownpragma, \
diff --git a/JDK-8210703-RHBZ-1624122-vmStructs-opt-fix.patch b/JDK-8210703-RHBZ-1624122-vmStructs-opt-fix.patch
new file mode 100644
index 0000000..6fc6c07
--- /dev/null
+++ b/JDK-8210703-RHBZ-1624122-vmStructs-opt-fix.patch
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1536829660 -7200
+#      Thu Sep 13 11:07:40 2018 +0200
+# Node ID 39ccca116f79139fc4b779f5df83cb32357b9ae9
+# Parent  7512bd28304cf0dc5676247990f1907162c719ca
+8210703: vmStructs.cpp compiled with -O0
+Reviewed-by: duke
+
+diff --git a/make/hotspot/lib/JvmOverrideFiles.gmk b/make/hotspot/lib/JvmOverrideFiles.gmk
+--- a/make/hotspot/lib/JvmOverrideFiles.gmk
++++ b/make/hotspot/lib/JvmOverrideFiles.gmk
+@@ -30,7 +30,7 @@
+ # status for individual files on specific platforms.
+ 
+ ifeq ($(TOOLCHAIN_TYPE), gcc)
+-  BUILD_LIBJVM_vmStructs.cpp_CXXFLAGS := -fno-var-tracking-assignments -O0
++  BUILD_LIBJVM_vmStructs.cpp_CXXFLAGS := -fno-var-tracking-assignments
+   BUILD_LIBJVM_jvmciCompilerToVM.cpp_CXXFLAGS := -fno-var-tracking-assignments
+   BUILD_LIBJVM_jvmciCompilerToVMInit.cpp_CXXFLAGS := -fno-var-tracking-assignments
+   BUILD_LIBJVM_assembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized