8199263: Split interfaceSupport.hpp to not require including .inline.hpp files
authorcoleenp
Fri, 16 Mar 2018 09:12:13 -0400
changeset 49449 ef5d5d343e2a
parent 49448 b91b558a9076
child 49450 5d2adef239d6
8199263: Split interfaceSupport.hpp to not require including .inline.hpp files Summary: interfaceSupport.hpp is an inline file so moved to interfaceSupport.inline.hpp and stopped including it in .hpp files Reviewed-by: stefank, rehn, kvn
make/nb_native/nbproject/configurations.xml
src/hotspot/cpu/aarch64/assembler_aarch64.cpp
src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
src/hotspot/cpu/aarch64/runtime_aarch64.cpp
src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp
src/hotspot/cpu/arm/assembler_arm.cpp
src/hotspot/cpu/arm/assembler_arm_32.cpp
src/hotspot/cpu/arm/assembler_arm_64.cpp
src/hotspot/cpu/arm/interpreterRT_arm.cpp
src/hotspot/cpu/arm/macroAssembler_arm.cpp
src/hotspot/cpu/arm/runtime_arm.cpp
src/hotspot/cpu/ppc/assembler_ppc.cpp
src/hotspot/cpu/ppc/interpreterRT_ppc.cpp
src/hotspot/cpu/ppc/macroAssembler_ppc.cpp
src/hotspot/cpu/ppc/methodHandles_ppc.cpp
src/hotspot/cpu/ppc/runtime_ppc.cpp
src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp
src/hotspot/cpu/ppc/templateTable_ppc_64.cpp
src/hotspot/cpu/s390/assembler_s390.cpp
src/hotspot/cpu/s390/interpreterRT_s390.cpp
src/hotspot/cpu/s390/macroAssembler_s390.cpp
src/hotspot/cpu/s390/methodHandles_s390.cpp
src/hotspot/cpu/s390/runtime_s390.cpp
src/hotspot/cpu/s390/sharedRuntime_s390.cpp
src/hotspot/cpu/s390/templateTable_s390.cpp
src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp
src/hotspot/cpu/sparc/interpreterRT_sparc.cpp
src/hotspot/cpu/sparc/macroAssembler_sparc.cpp
src/hotspot/cpu/sparc/methodHandles_sparc.cpp
src/hotspot/cpu/sparc/runtime_sparc.cpp
src/hotspot/cpu/sparc/sharedRuntime_sparc.cpp
src/hotspot/cpu/sparc/templateTable_sparc.cpp
src/hotspot/cpu/x86/assembler_x86.cpp
src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp
src/hotspot/cpu/x86/interpreterRT_x86_32.cpp
src/hotspot/cpu/x86/interpreterRT_x86_64.cpp
src/hotspot/cpu/x86/macroAssembler_x86.cpp
src/hotspot/cpu/x86/methodHandles_x86.cpp
src/hotspot/cpu/x86/runtime_x86_32.cpp
src/hotspot/cpu/x86/runtime_x86_64.cpp
src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp
src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
src/hotspot/cpu/x86/templateTable_x86.cpp
src/hotspot/cpu/zero/assembler_zero.cpp
src/hotspot/cpu/zero/cppInterpreter_zero.cpp
src/hotspot/cpu/zero/interpreterRT_zero.cpp
src/hotspot/cpu/zero/sharedRuntime_zero.cpp
src/hotspot/os/aix/attachListener_aix.cpp
src/hotspot/os/aix/jvm_aix.cpp
src/hotspot/os/aix/os_aix.cpp
src/hotspot/os/bsd/attachListener_bsd.cpp
src/hotspot/os/bsd/jvm_bsd.cpp
src/hotspot/os/bsd/os_bsd.cpp
src/hotspot/os/linux/attachListener_linux.cpp
src/hotspot/os/linux/jvm_linux.cpp
src/hotspot/os/linux/os_linux.cpp
src/hotspot/os/posix/os_posix.cpp
src/hotspot/os/solaris/attachListener_solaris.cpp
src/hotspot/os/solaris/jvm_solaris.cpp
src/hotspot/os/solaris/os_solaris.cpp
src/hotspot/os/windows/attachListener_windows.cpp
src/hotspot/os/windows/jvm_windows.cpp
src/hotspot/os/windows/os_windows.cpp
src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp
src/hotspot/os_cpu/bsd_x86/os_bsd_x86.cpp
src/hotspot/os_cpu/bsd_zero/os_bsd_zero.cpp
src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp
src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp
src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp
src/hotspot/os_cpu/linux_s390/os_linux_s390.cpp
src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp
src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
src/hotspot/os_cpu/linux_zero/os_linux_zero.cpp
src/hotspot/os_cpu/solaris_sparc/os_solaris_sparc.cpp
src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp
src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp
src/hotspot/share/adlc/main.cpp
src/hotspot/share/aot/aotCodeHeap.cpp
src/hotspot/share/c1/c1_Compiler.cpp
src/hotspot/share/c1/c1_GraphBuilder.cpp
src/hotspot/share/c1/c1_LIRAssembler.cpp
src/hotspot/share/c1/c1_LIRGenerator.cpp
src/hotspot/share/c1/c1_Runtime1.cpp
src/hotspot/share/ci/ciArray.cpp
src/hotspot/share/ci/ciBaseObject.hpp
src/hotspot/share/ci/ciCallSite.cpp
src/hotspot/share/ci/ciConstantPoolCache.cpp
src/hotspot/share/ci/ciEnv.cpp
src/hotspot/share/ci/ciExceptionHandler.cpp
src/hotspot/share/ci/ciField.cpp
src/hotspot/share/ci/ciField.hpp
src/hotspot/share/ci/ciInstance.cpp
src/hotspot/share/ci/ciInstanceKlass.cpp
src/hotspot/share/ci/ciKlass.cpp
src/hotspot/share/ci/ciMemberName.cpp
src/hotspot/share/ci/ciMetadata.cpp
src/hotspot/share/ci/ciMethod.cpp
src/hotspot/share/ci/ciMethodData.cpp
src/hotspot/share/ci/ciMethodHandle.cpp
src/hotspot/share/ci/ciMethodType.cpp
src/hotspot/share/ci/ciMethodType.hpp
src/hotspot/share/ci/ciNullObject.cpp
src/hotspot/share/ci/ciNullObject.hpp
src/hotspot/share/ci/ciObjArray.cpp
src/hotspot/share/ci/ciObjArrayKlass.cpp
src/hotspot/share/ci/ciObject.cpp
src/hotspot/share/ci/ciObjectFactory.cpp
src/hotspot/share/ci/ciReplay.cpp
src/hotspot/share/ci/ciSignature.cpp
src/hotspot/share/ci/ciSignature.hpp
src/hotspot/share/ci/ciStreams.cpp
src/hotspot/share/ci/ciSymbol.cpp
src/hotspot/share/ci/ciType.cpp
src/hotspot/share/ci/ciTypeArray.cpp
src/hotspot/share/ci/ciTypeArrayKlass.cpp
src/hotspot/share/ci/ciUtilities.cpp
src/hotspot/share/ci/ciUtilities.hpp
src/hotspot/share/ci/ciUtilities.inline.hpp
src/hotspot/share/classfile/classLoader.cpp
src/hotspot/share/classfile/javaClasses.cpp
src/hotspot/share/classfile/stackMapTable.cpp
src/hotspot/share/classfile/stackMapTable.hpp
src/hotspot/share/classfile/verifier.cpp
src/hotspot/share/code/codeBlob.cpp
src/hotspot/share/code/compiledMethod.cpp
src/hotspot/share/code/debugInfo.cpp
src/hotspot/share/code/debugInfo.hpp
src/hotspot/share/code/nmethod.cpp
src/hotspot/share/compiler/compileBroker.cpp
src/hotspot/share/compiler/compilerDirectives.cpp
src/hotspot/share/compiler/compilerDirectives.hpp
src/hotspot/share/gc/cms/concurrentMarkSweepThread.cpp
src/hotspot/share/gc/cms/vmCMSOperations.cpp
src/hotspot/share/gc/g1/vm_operations_g1.cpp
src/hotspot/share/gc/shared/concurrentGCThread.cpp
src/hotspot/share/gc/shared/vmGCOperations.cpp
src/hotspot/share/interpreter/bytecodeInterpreter.cpp
src/hotspot/share/interpreter/interpreterRuntime.cpp
src/hotspot/share/interpreter/linkResolver.cpp
src/hotspot/share/jvmci/compilerRuntime.cpp
src/hotspot/share/jvmci/jvmciCodeInstaller.cpp
src/hotspot/share/jvmci/jvmciCompilerToVM.cpp
src/hotspot/share/jvmci/jvmciCompilerToVM.hpp
src/hotspot/share/jvmci/jvmciRuntime.cpp
src/hotspot/share/libadt/vectset.cpp
src/hotspot/share/memory/metaspace.hpp
src/hotspot/share/oops/constantPool.cpp
src/hotspot/share/oops/methodData.cpp
src/hotspot/share/opto/library_call.cpp
src/hotspot/share/opto/macro.cpp
src/hotspot/share/opto/parse1.cpp
src/hotspot/share/opto/runtime.cpp
src/hotspot/share/precompiled/precompiled.hpp
src/hotspot/share/prims/jni.cpp
src/hotspot/share/prims/jniCheck.cpp
src/hotspot/share/prims/jvm.cpp
src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp
src/hotspot/share/prims/jvmtiClassFileReconstituter.hpp
src/hotspot/share/prims/jvmtiEnter.hpp
src/hotspot/share/prims/jvmtiEnter.inline.hpp
src/hotspot/share/prims/jvmtiEnter.xsl
src/hotspot/share/prims/jvmtiEnv.cpp
src/hotspot/share/prims/jvmtiEnvBase.cpp
src/hotspot/share/prims/jvmtiEnvThreadState.cpp
src/hotspot/share/prims/jvmtiExport.cpp
src/hotspot/share/prims/jvmtiImpl.cpp
src/hotspot/share/prims/jvmtiRawMonitor.cpp
src/hotspot/share/prims/jvmtiUtil.cpp
src/hotspot/share/prims/methodHandles.cpp
src/hotspot/share/prims/methodHandles.hpp
src/hotspot/share/prims/perf.cpp
src/hotspot/share/prims/unsafe.cpp
src/hotspot/share/prims/wbtestmethods/parserTests.cpp
src/hotspot/share/prims/whitebox.cpp
src/hotspot/share/prims/whitebox.hpp
src/hotspot/share/prims/whitebox.inline.hpp
src/hotspot/share/runtime/biasedLocking.cpp
src/hotspot/share/runtime/deoptimization.cpp
src/hotspot/share/runtime/fieldDescriptor.hpp
src/hotspot/share/runtime/handles.cpp
src/hotspot/share/runtime/handles.hpp
src/hotspot/share/runtime/handles.inline.hpp
src/hotspot/share/runtime/handshake.cpp
src/hotspot/share/runtime/interfaceSupport.cpp
src/hotspot/share/runtime/interfaceSupport.hpp
src/hotspot/share/runtime/interfaceSupport.inline.hpp
src/hotspot/share/runtime/java.cpp
src/hotspot/share/runtime/javaCalls.cpp
src/hotspot/share/runtime/mutex.cpp
src/hotspot/share/runtime/objectMonitor.cpp
src/hotspot/share/runtime/objectMonitor.hpp
src/hotspot/share/runtime/os.cpp
src/hotspot/share/runtime/os.hpp
src/hotspot/share/runtime/safepoint.cpp
src/hotspot/share/runtime/serviceThread.cpp
src/hotspot/share/runtime/sharedRuntime.cpp
src/hotspot/share/runtime/sharedRuntimeTrans.cpp
src/hotspot/share/runtime/sharedRuntimeTrig.cpp
src/hotspot/share/runtime/simpleThresholdPolicy.cpp
src/hotspot/share/runtime/stubRoutines.cpp
src/hotspot/share/runtime/sweeper.cpp
src/hotspot/share/runtime/synchronizer.cpp
src/hotspot/share/runtime/thread.cpp
src/hotspot/share/runtime/vmThread.cpp
src/hotspot/share/runtime/vm_operations.cpp
src/hotspot/share/services/gcNotifier.cpp
src/hotspot/share/services/heapDumper.cpp
src/hotspot/share/services/lowMemoryDetector.cpp
src/hotspot/share/services/management.cpp
test/hotspot/gtest/classfile/test_symbolTable.cpp
test/hotspot/gtest/code/test_vtableStub.cpp
test/hotspot/gtest/gc/shared/test_oopStorage.cpp
test/hotspot/gtest/logging/test_gcTraceTime.cpp
--- a/make/nb_native/nbproject/configurations.xml	Fri Mar 16 08:26:53 2018 -0400
+++ b/make/nb_native/nbproject/configurations.xml	Fri Mar 16 09:12:13 2018 -0400
@@ -2480,7 +2480,7 @@
               <in>jvmtiClassFileReconstituter.hpp</in>
               <in>jvmtiCodeBlobEvents.cpp</in>
               <in>jvmtiCodeBlobEvents.hpp</in>
-              <in>jvmtiEnter.hpp</in>
+              <in>jvmtiEnter.inline.hpp</in>
               <in>jvmtiEnv.cpp</in>
               <in>jvmtiEnvBase.cpp</in>
               <in>jvmtiEnvBase.hpp</in>
@@ -13398,7 +13398,7 @@
             tool="3"
             flavor2="0">
       </item>
-      <item path="../../src/hotspot/share/prims/jvmtiEnter.hpp"
+      <item path="../../src/hotspot/share/prims/jvmtiEnter.inline.hpp"
             ex="false"
             tool="3"
             flavor2="0">
@@ -27175,7 +27175,7 @@
             tool="3"
             flavor2="0">
       </item>
-      <item path="../../src/hotspot/share/prims/jvmtiEnter.hpp"
+      <item path="../../src/hotspot/share/prims/jvmtiEnter.inline.hpp"
             ex="false"
             tool="3"
             flavor2="0">
--- a/src/hotspot/cpu/aarch64/assembler_aarch64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/aarch64/assembler_aarch64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -36,7 +36,7 @@
 
 #include "compiler/disassembler.hpp"
 #include "memory/resourceArea.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 
 // for the moment we reuse the logical/floating point immediate encode
--- a/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 
 #define __ _masm->
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -42,7 +42,7 @@
 #include "opto/node.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/thread.hpp"
--- a/src/hotspot/cpu/aarch64/runtime_aarch64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/aarch64/runtime_aarch64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "code/vmreg.hpp"
 #include "interpreter/interpreter.hpp"
 #include "opto/runtime.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -34,6 +34,7 @@
 #include "logging/log.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/compiledICHolder.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/cpu/arm/assembler_arm.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/arm/assembler_arm.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "prims/jvm_misc.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/arm/assembler_arm_32.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/arm/assembler_arm_32.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "prims/jvm_misc.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/arm/assembler_arm_64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/arm/assembler_arm_64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "prims/jvm_misc.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/arm/interpreterRT_arm.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/arm/interpreterRT_arm.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 
 #define __ _masm->
--- a/src/hotspot/cpu/arm/macroAssembler_arm.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/arm/macroAssembler_arm.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -37,7 +37,7 @@
 #include "oops/klass.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/arm/runtime_arm.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/arm/runtime_arm.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "memory/resourceArea.hpp"
 #include "nativeInst_arm.hpp"
 #include "opto/runtime.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/hotspot/cpu/ppc/assembler_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/ppc/assembler_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/ppc/interpreterRT_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/ppc/interpreterRT_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -33,7 +33,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 
 #define __ _masm->
--- a/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/safepoint.hpp"
--- a/src/hotspot/cpu/ppc/methodHandles_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/ppc/methodHandles_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
+#include "utilities/preserveException.hpp"
 
 #define __ _masm->
 
--- a/src/hotspot/cpu/ppc/runtime_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/ppc/runtime_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -33,7 +33,7 @@
 #include "memory/resourceArea.hpp"
 #include "nativeInst_ppc.hpp"
 #include "opto/runtime.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -29,10 +29,12 @@
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
 #include "frame_ppc.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/interp_masm.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/compiledICHolder.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/cpu/ppc/templateTable_ppc_64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/ppc/templateTable_ppc_64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -34,6 +34,7 @@
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/synchronizer.hpp"
--- a/src/hotspot/cpu/s390/assembler_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/s390/assembler_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/s390/interpreterRT_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/s390/interpreterRT_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 
 // Access macros for Java and C arguments.
--- a/src/hotspot/cpu/s390/macroAssembler_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/s390/macroAssembler_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -41,7 +41,7 @@
 #include "registerSaver_s390.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/safepoint.hpp"
--- a/src/hotspot/cpu/s390/methodHandles_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/s390/methodHandles_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
+#include "utilities/preserveException.hpp"
 
 #ifdef PRODUCT
 #define __ _masm->
--- a/src/hotspot/cpu/s390/runtime_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/s390/runtime_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "memory/resourceArea.hpp"
 #include "nativeInst_s390.hpp"
 #include "opto/runtime.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/hotspot/cpu/s390/sharedRuntime_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/s390/sharedRuntime_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -28,11 +28,13 @@
 #include "code/debugInfoRec.hpp"
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/interp_masm.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/compiledICHolder.hpp"
 #include "registerSaver_s390.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/cpu/s390/templateTable_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/s390/templateTable_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -33,6 +33,7 @@
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/synchronizer.hpp"
--- a/src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,6 +35,7 @@
 #include "gc/shared/collectedHeap.hpp"
 #include "nativeInst_sparc.hpp"
 #include "oops/objArrayKlass.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/safepointMechanism.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/sparc/interpreterRT_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/sparc/interpreterRT_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 
 
--- a/src/hotspot/cpu/sparc/macroAssembler_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/sparc/macroAssembler_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "oops/klass.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.inline.hpp"
--- a/src/hotspot/cpu/sparc/methodHandles_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/sparc/methodHandles_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
+#include "utilities/preserveException.hpp"
 
 #define __ _masm->
 
--- a/src/hotspot/cpu/sparc/runtime_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/sparc/runtime_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "memory/resourceArea.hpp"
 #include "nativeInst_sparc.hpp"
 #include "opto/runtime.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/hotspot/cpu/sparc/sharedRuntime_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/sparc/sharedRuntime_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,10 +27,12 @@
 #include "code/debugInfoRec.hpp"
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/interpreter.hpp"
 #include "logging/log.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/compiledICHolder.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/cpu/sparc/templateTable_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/sparc/templateTable_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,6 +32,7 @@
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/synchronizer.hpp"
--- a/src/hotspot/cpu/x86/assembler_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/assembler_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,6 @@
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -37,6 +37,7 @@
 #include "gc/shared/collectedHeap.hpp"
 #include "nativeInst_x86.hpp"
 #include "oops/objArrayKlass.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "vmreg_x86.inline.hpp"
 
--- a/src/hotspot/cpu/x86/interpreterRT_x86_32.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/interpreterRT_x86_32.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 
 
--- a/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 
 #define __ _masm->
--- a/src/hotspot/cpu/x86/macroAssembler_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/macroAssembler_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -36,7 +36,7 @@
 #include "oops/klass.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/safepoint.hpp"
--- a/src/hotspot/cpu/x86/methodHandles_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/methodHandles_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
+#include "utilities/preserveException.hpp"
 
 #define __ _masm->
 
--- a/src/hotspot/cpu/x86/runtime_x86_32.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/runtime_x86_32.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,6 @@
 #include "interpreter/interpreter.hpp"
 #include "memory/resourceArea.hpp"
 #include "opto/runtime.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/hotspot/cpu/x86/runtime_x86_64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/runtime_x86_64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -30,7 +30,6 @@
 #include "code/vmreg.hpp"
 #include "interpreter/interpreter.hpp"
 #include "opto/runtime.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -28,10 +28,12 @@
 #include "code/debugInfoRec.hpp"
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/interpreter.hpp"
 #include "logging/log.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/compiledICHolder.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,10 +32,12 @@
 #include "code/icBuffer.hpp"
 #include "code/nativeInst.hpp"
 #include "code/vtableStubs.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/interpreter.hpp"
 #include "logging/log.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/compiledICHolder.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/cpu/x86/templateTable_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/x86/templateTable_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -33,6 +33,7 @@
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/synchronizer.hpp"
--- a/src/hotspot/cpu/zero/assembler_zero.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/zero/assembler_zero.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "memory/resourceArea.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/zero/cppInterpreter_zero.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/zero/cppInterpreter_zero.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -41,7 +41,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/deoptimization.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/cpu/zero/interpreterRT_zero.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/zero/interpreterRT_zero.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/signature.hpp"
 #include "stack_zero.inline.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/cpu/zero/sharedRuntime_zero.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/cpu/zero/sharedRuntime_zero.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,7 @@
 #include "code/vtableStubs.hpp"
 #include "interpreter/interpreter.hpp"
 #include "oops/compiledICHolder.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
 #include "vmreg_zero.inline.hpp"
--- a/src/hotspot/os/aix/attachListener_aix.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/aix/attachListener_aix.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.inline.hpp"
 #include "services/attachListener.hpp"
 #include "services/dtraceAttacher.hpp"
--- a/src/hotspot/os/aix/jvm_aix.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/aix/jvm_aix.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 
 #include "precompiled.hpp"
 #include "jvm.h"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/osThread.hpp"
 
 #include <signal.h>
--- a/src/hotspot/os/aix/os_aix.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/aix/os_aix.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -54,7 +54,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/globals.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os/bsd/attachListener_bsd.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/bsd/attachListener_bsd.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -23,7 +23,7 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.inline.hpp"
 #include "services/attachListener.hpp"
 #include "services/dtraceAttacher.hpp"
--- a/src/hotspot/os/bsd/jvm_bsd.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/bsd/jvm_bsd.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "jvm.h"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/osThread.hpp"
 
 #include <signal.h>
--- a/src/hotspot/os/bsd/os_bsd.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/bsd/os_bsd.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -44,7 +44,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/globals.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os/linux/attachListener_linux.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/linux/attachListener_linux.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -23,7 +23,8 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.inline.hpp"
 #include "services/attachListener.hpp"
 #include "services/dtraceAttacher.hpp"
--- a/src/hotspot/os/linux/jvm_linux.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/linux/jvm_linux.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "jvm.h"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/osThread.hpp"
 
 #include <signal.h>
--- a/src/hotspot/os/linux/os_linux.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/linux/os_linux.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -45,7 +45,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/globals.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/init.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
--- a/src/hotspot/os/posix/os_posix.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/posix/os_posix.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,7 +26,7 @@
 #include "memory/allocation.inline.hpp"
 #include "utilities/globalDefinitions.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.hpp"
 #include "services/memTracker.hpp"
 #include "utilities/align.hpp"
--- a/src/hotspot/os/solaris/attachListener_solaris.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/solaris/attachListener_solaris.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -23,7 +23,7 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.inline.hpp"
 #include "services/attachListener.hpp"
 #include "services/dtraceAttacher.hpp"
--- a/src/hotspot/os/solaris/jvm_solaris.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/solaris/jvm_solaris.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "jvm.h"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/osThread.hpp"
 
 #include <signal.h>
--- a/src/hotspot/os/solaris/os_solaris.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/solaris/os_solaris.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -44,7 +44,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/globals.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os/windows/attachListener_windows.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/windows/attachListener_windows.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -23,7 +23,7 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.hpp"
 #include "services/attachListener.hpp"
 #include "services/dtraceAttacher.hpp"
--- a/src/hotspot/os/windows/jvm_windows.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/windows/jvm_windows.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "jvm.h"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/osThread.hpp"
 
 #include <signal.h>
--- a/src/hotspot/os/windows/os_windows.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os/windows/os_windows.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -47,7 +47,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/globals.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -42,7 +42,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/bsd_x86/os_bsd_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/bsd_x86/os_bsd_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -39,7 +39,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/bsd_zero/os_bsd_zero.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/bsd_zero/os_bsd_zero.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -45,7 +45,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -41,7 +41,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -39,7 +39,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -41,7 +41,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/linux_s390/os_linux_s390.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/linux_s390/os_linux_s390.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -44,7 +44,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -40,7 +40,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -39,7 +39,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/linux_zero/os_linux_zero.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/linux_zero/os_linux_zero.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -40,7 +40,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/solaris_sparc/os_solaris_sparc.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/solaris_sparc/os_solaris_sparc.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -41,7 +41,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -40,7 +40,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -40,7 +40,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/extendedPC.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/share/adlc/main.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/adlc/main.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -228,6 +228,7 @@
   AD.addInclude(AD._CPP_file, "opto/regmask.hpp");
   AD.addInclude(AD._CPP_file, "opto/runtime.hpp");
   AD.addInclude(AD._CPP_file, "runtime/biasedLocking.hpp");
+  AD.addInclude(AD._CPP_file, "runtime/safepointMechanism.hpp");
   AD.addInclude(AD._CPP_file, "runtime/sharedRuntime.hpp");
   AD.addInclude(AD._CPP_file, "runtime/stubRoutines.hpp");
   AD.addInclude(AD._CPP_file, "utilities/growableArray.hpp");
--- a/src/hotspot/share/aot/aotCodeHeap.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/aot/aotCodeHeap.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 
 #include "aot/aotCodeHeap.hpp"
 #include "aot/aotLoader.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/javaAssertions.hpp"
 #include "gc/shared/cardTable.hpp"
 #include "gc/shared/cardTableModRefBS.hpp"
@@ -36,6 +36,7 @@
 #include "jvmci/jvmciRuntime.hpp"
 #include "memory/allocation.inline.hpp"
 #include "oops/method.inline.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vm_operations.hpp"
--- a/src/hotspot/share/c1/c1_Compiler.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/c1/c1_Compiler.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -38,7 +38,7 @@
 #include "memory/resourceArea.hpp"
 #include "prims/nativeLookup.hpp"
 #include "runtime/arguments.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "utilities/bitMap.inline.hpp"
 
--- a/src/hotspot/share/c1/c1_GraphBuilder.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/c1/c1_GraphBuilder.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,6 +32,7 @@
 #include "ci/ciField.hpp"
 #include "ci/ciKlass.hpp"
 #include "ci/ciMemberName.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "compiler/compileBroker.hpp"
 #include "interpreter/bytecode.hpp"
 #include "memory/resourceArea.hpp"
--- a/src/hotspot/share/c1/c1_LIRAssembler.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/c1/c1_LIRAssembler.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -30,6 +30,7 @@
 #include "c1/c1_MacroAssembler.hpp"
 #include "c1/c1_ValueStack.hpp"
 #include "ci/ciInstance.hpp"
+#include "gc/shared/collectedHeap.hpp"
 #include "runtime/os.hpp"
 
 void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) {
--- a/src/hotspot/share/c1/c1_LIRGenerator.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/c1/c1_LIRGenerator.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -36,6 +36,7 @@
 #include "ci/ciUtilities.hpp"
 #include "gc/shared/cardTable.hpp"
 #include "gc/shared/cardTableModRefBS.hpp"
+#include "gc/shared/collectedHeap.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
--- a/src/hotspot/share/c1/c1_Runtime1.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/c1/c1_Runtime1.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -53,7 +53,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/compilationPolicy.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/threadCritical.hpp"
--- a/src/hotspot/share/ci/ciArray.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciArray.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,7 @@
 #include "ci/ciArrayKlass.hpp"
 #include "ci/ciConstant.hpp"
 #include "ci/ciKlass.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "oops/objArrayOop.inline.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
--- a/src/hotspot/share/ci/ciBaseObject.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciBaseObject.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,6 @@
 
 #include "ci/ciClassList.hpp"
 #include "memory/allocation.hpp"
-#include "runtime/handles.hpp"
 #include "runtime/jniHandles.hpp"
 
 // ciBaseObject
--- a/src/hotspot/share/ci/ciCallSite.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciCallSite.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "classfile/javaClasses.inline.hpp"
 #include "ci/ciCallSite.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 
 // ciCallSite
 
--- a/src/hotspot/share/ci/ciConstantPoolCache.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciConstantPoolCache.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciConstantPoolCache.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "memory/allocation.hpp"
 #include "memory/allocation.inline.hpp"
 
--- a/src/hotspot/share/ci/ciEnv.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciEnv.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "ci/ciMethod.hpp"
 #include "ci/ciNullObject.hpp"
 #include "ci/ciReplay.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
 #include "code/codeCache.hpp"
--- a/src/hotspot/share/ci/ciExceptionHandler.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciExceptionHandler.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,8 @@
 
 #include "precompiled.hpp"
 #include "ci/ciExceptionHandler.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
+#include "runtime/handles.inline.hpp"
 
 // ciExceptionHandler
 //
--- a/src/hotspot/share/ci/ciField.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciField.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,13 +25,14 @@
 #include "precompiled.hpp"
 #include "ci/ciField.hpp"
 #include "ci/ciInstanceKlass.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "gc/shared/collectedHeap.inline.hpp"
 #include "interpreter/linkResolver.hpp"
 #include "memory/universe.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.inline.hpp"
 
 // ciField
 //
--- a/src/hotspot/share/ci/ciField.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciField.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -29,6 +29,7 @@
 #include "ci/ciConstant.hpp"
 #include "ci/ciFlags.hpp"
 #include "ci/ciInstance.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciField
 //
--- a/src/hotspot/share/ci/ciInstance.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciInstance.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,7 @@
 #include "ci/ciField.hpp"
 #include "ci/ciInstance.hpp"
 #include "ci/ciInstanceKlass.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "oops/oop.inline.hpp"
 
--- a/src/hotspot/share/ci/ciInstanceKlass.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciInstanceKlass.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,7 +26,7 @@
 #include "ci/ciField.hpp"
 #include "ci/ciInstance.hpp"
 #include "ci/ciInstanceKlass.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "memory/allocation.hpp"
 #include "memory/allocation.inline.hpp"
@@ -34,6 +34,7 @@
 #include "oops/oop.inline.hpp"
 #include "oops/fieldStreams.hpp"
 #include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 
 // ciInstanceKlass
--- a/src/hotspot/share/ci/ciKlass.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciKlass.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "ci/ciKlass.hpp"
 #include "ci/ciSymbol.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "oops/oop.inline.hpp"
 
 // ciKlass
--- a/src/hotspot/share/ci/ciMemberName.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciMemberName.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "ci/ciClassList.hpp"
 #include "ci/ciMemberName.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/javaClasses.hpp"
 
 // ------------------------------------------------------------------
--- a/src/hotspot/share/ci/ciMetadata.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciMetadata.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciObject.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "gc/shared/collectedHeap.inline.hpp"
 
 // ------------------------------------------------------------------
--- a/src/hotspot/share/ci/ciMethod.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciMethod.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "ci/ciStreams.hpp"
 #include "ci/ciSymbol.hpp"
 #include "ci/ciReplay.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "compiler/abstractCompiler.hpp"
 #include "compiler/methodLiveness.hpp"
--- a/src/hotspot/share/ci/ciMethodData.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciMethodData.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,7 +26,7 @@
 #include "ci/ciMetadata.hpp"
 #include "ci/ciMethodData.hpp"
 #include "ci/ciReplay.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/deoptimization.hpp"
--- a/src/hotspot/share/ci/ciMethodHandle.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciMethodHandle.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "ci/ciClassList.hpp"
 #include "ci/ciMethodHandle.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/javaClasses.hpp"
 
 // ------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/ci/ciMethodType.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciMethodType.hpp"
+#include "ci/ciUtilities.inline.hpp"
+#include "classfile/javaClasses.hpp"
+
+ciType* ciMethodType::class_to_citype(oop klass_oop) const {
+  if (java_lang_Class::is_primitive(klass_oop)) {
+    BasicType bt = java_lang_Class::primitive_type(klass_oop);
+    return ciType::make(bt);
+  } else {
+    Klass* k = java_lang_Class::as_Klass(klass_oop);
+    return CURRENT_ENV->get_klass(k);
+  }
+}
+
+ciType* ciMethodType::rtype() const {
+  GUARDED_VM_ENTRY(
+    oop rtype = java_lang_invoke_MethodType::rtype(get_oop());
+    return class_to_citype(rtype);
+  )
+}
+
+int ciMethodType::ptype_count() const {
+  GUARDED_VM_ENTRY(return java_lang_invoke_MethodType::ptype_count(get_oop());)
+}
+
+int ciMethodType::ptype_slot_count() const {
+  GUARDED_VM_ENTRY(return java_lang_invoke_MethodType::ptype_slot_count(get_oop());)
+}
+
+ciType* ciMethodType::ptype_at(int index) const {
+  GUARDED_VM_ENTRY(
+    oop ptype = java_lang_invoke_MethodType::ptype(get_oop(), index);
+    return class_to_citype(ptype);
+  )
+}
--- a/src/hotspot/share/ci/ciMethodType.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciMethodType.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,23 +26,13 @@
 #define SHARE_VM_CI_CIMETHODTYPE_HPP
 
 #include "ci/ciInstance.hpp"
-#include "ci/ciUtilities.hpp"
-#include "classfile/javaClasses.hpp"
 
 // ciMethodType
 //
 // The class represents a java.lang.invoke.MethodType object.
 class ciMethodType : public ciInstance {
 private:
-  ciType* class_to_citype(oop klass_oop) const {
-    if (java_lang_Class::is_primitive(klass_oop)) {
-      BasicType bt = java_lang_Class::primitive_type(klass_oop);
-      return ciType::make(bt);
-    } else {
-      Klass* k = java_lang_Class::as_Klass(klass_oop);
-      return CURRENT_ENV->get_klass(k);
-    }
-  }
+  ciType* class_to_citype(oop klass_oop) const;
 
 public:
   ciMethodType(instanceHandle h_i) : ciInstance(h_i) {}
@@ -50,27 +40,12 @@
   // What kind of ciObject is this?
   bool is_method_type() const { return true; }
 
-  ciType* rtype() const {
-    GUARDED_VM_ENTRY(
-      oop rtype = java_lang_invoke_MethodType::rtype(get_oop());
-      return class_to_citype(rtype);
-    )
-  }
-
-  int ptype_count() const {
-    GUARDED_VM_ENTRY(return java_lang_invoke_MethodType::ptype_count(get_oop());)
-  }
+  ciType* rtype() const;
 
-  int ptype_slot_count() const {
-    GUARDED_VM_ENTRY(return java_lang_invoke_MethodType::ptype_slot_count(get_oop());)
-  }
+  int ptype_count() const;
+  int ptype_slot_count() const ;
 
-  ciType* ptype_at(int index) const {
-    GUARDED_VM_ENTRY(
-      oop ptype = java_lang_invoke_MethodType::ptype(get_oop(), index);
-      return class_to_citype(ptype);
-    )
-  }
+  ciType* ptype_at(int index) const;
 };
 
 #endif // SHARE_VM_CI_CIMETHODTYPE_HPP
--- a/src/hotspot/share/ci/ciNullObject.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciNullObject.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciNullObject.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciNullObject
 //
--- a/src/hotspot/share/ci/ciNullObject.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciNullObject.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,6 @@
 
 #include "ci/ciClassList.hpp"
 #include "ci/ciObject.hpp"
-#include "ci/ciUtilities.hpp"
 
 // ciNullObject
 //
--- a/src/hotspot/share/ci/ciObjArray.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciObjArray.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "ci/ciNullObject.hpp"
 #include "ci/ciObjArray.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "oops/objArrayOop.inline.hpp"
 
 // ciObjArray
--- a/src/hotspot/share/ci/ciObjArrayKlass.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciObjArrayKlass.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,7 +26,7 @@
 #include "ci/ciInstanceKlass.hpp"
 #include "ci/ciObjArrayKlass.hpp"
 #include "ci/ciSymbol.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "oops/objArrayKlass.hpp"
 
 // ciObjArrayKlass
--- a/src/hotspot/share/ci/ciObject.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciObject.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciObject.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "gc/shared/collectedHeap.inline.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
--- a/src/hotspot/share/ci/ciObjectFactory.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciObjectFactory.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -39,13 +39,14 @@
 #include "ci/ciSymbol.hpp"
 #include "ci/ciTypeArray.hpp"
 #include "ci/ciTypeArrayKlass.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/javaClasses.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "gc/shared/collectedHeap.inline.hpp"
 #include "memory/allocation.inline.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/fieldType.hpp"
+#include "runtime/handles.inline.hpp"
 #include "utilities/macros.hpp"
 
 // ciObjectFactory
--- a/src/hotspot/share/ci/ciReplay.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciReplay.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -28,7 +28,7 @@
 #include "ci/ciReplay.hpp"
 #include "ci/ciSymbol.hpp"
 #include "ci/ciKlass.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "compiler/compileBroker.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/oopFactory.hpp"
--- a/src/hotspot/share/ci/ciSignature.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciSignature.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "ci/ciMethodType.hpp"
 #include "ci/ciSignature.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
--- a/src/hotspot/share/ci/ciSignature.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciSignature.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,6 +27,7 @@
 
 #include "ci/ciClassList.hpp"
 #include "ci/ciSymbol.hpp"
+#include "interpreter/bytecodes.hpp"
 #include "utilities/globalDefinitions.hpp"
 #include "utilities/growableArray.hpp"
 
--- a/src/hotspot/share/ci/ciStreams.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciStreams.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,8 @@
 #include "ci/ciConstant.hpp"
 #include "ci/ciField.hpp"
 #include "ci/ciStreams.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
+#include "runtime/handles.inline.hpp"
 
 // ciExceptionHandlerStream
 //
--- a/src/hotspot/share/ci/ciSymbol.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciSymbol.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciSymbol.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "memory/oopFactory.hpp"
 
 // ------------------------------------------------------------------
--- a/src/hotspot/share/ci/ciType.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciType.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "ci/ciEnv.hpp"
 #include "ci/ciType.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
--- a/src/hotspot/share/ci/ciTypeArray.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciTypeArray.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciTypeArray.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
 
 // ciTypeArray
--- a/src/hotspot/share/ci/ciTypeArrayKlass.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciTypeArrayKlass.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciTypeArrayKlass.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 
 // ciTypeArrayKlass
 //
--- a/src/hotspot/share/ci/ciUtilities.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciUtilities.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,6 +26,7 @@
 #include "ci/ciUtilities.hpp"
 #include "gc/shared/cardTableModRefBS.hpp"
 #include "gc/shared/cardTable.hpp"
+#include "gc/shared/collectedHeap.hpp"
 #include "memory/universe.hpp"
 
 // ciUtilities
--- a/src/hotspot/share/ci/ciUtilities.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/ci/ciUtilities.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,45 +26,11 @@
 #define SHARE_VM_CI_CIUTILITIES_HPP
 
 #include "ci/ciEnv.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "utilities/globalDefinitions.hpp"
 
 // The following routines and definitions are used internally in the
 // compiler interface.
 
-
-// Add a ci native entry wrapper?
-
-// Bring the compilation thread into the VM state.
-#define VM_ENTRY_MARK                       \
-  CompilerThread* thread=CompilerThread::current(); \
-  ThreadInVMfromNative __tiv(thread);       \
-  ResetNoHandleMark rnhm;                   \
-  HandleMarkCleaner __hm(thread);           \
-  Thread* THREAD = thread;                  \
-  debug_only(VMNativeEntryWrapper __vew;)
-
-
-
-// Bring the compilation thread into the VM state.  No handle mark.
-#define VM_QUICK_ENTRY_MARK                 \
-  CompilerThread* thread=CompilerThread::current(); \
-  ThreadInVMfromNative __tiv(thread);       \
-/*                                          \
- * [TODO] The NoHandleMark line does nothing but declare a function prototype \
- * The NoHandkeMark constructor is NOT executed. If the ()'s are   \
- * removed, causes the NoHandleMark assert to trigger. \
- * debug_only(NoHandleMark __hm();)         \
- */                                         \
-  Thread* THREAD = thread;                  \
-  debug_only(VMNativeEntryWrapper __vew;)
-
-
-#define EXCEPTION_CONTEXT \
-  CompilerThread* thread=CompilerThread::current(); \
-  Thread* THREAD = thread;
-
-
 #define CURRENT_ENV                         \
   ciEnv::current()
 
@@ -78,36 +44,6 @@
 #define ASSERT_IN_VM                        \
   assert(IS_IN_VM, "must be in vm state");
 
-#define GUARDED_VM_ENTRY(action)            \
-  {if (IS_IN_VM) { action } else { VM_ENTRY_MARK; { action }}}
-
-#define GUARDED_VM_QUICK_ENTRY(action)      \
-  {if (IS_IN_VM) { action } else { VM_QUICK_ENTRY_MARK; { action }}}
-
-// Redefine this later.
-#define KILL_COMPILE_ON_FATAL_(result)           \
-  THREAD);                                       \
-  if (HAS_PENDING_EXCEPTION) {                   \
-    if (PENDING_EXCEPTION->klass() ==            \
-        SystemDictionary::ThreadDeath_klass()) { \
-      /* Kill the compilation. */                \
-      fatal("unhandled ci exception");           \
-      return (result);                           \
-    }                                            \
-    CLEAR_PENDING_EXCEPTION;                     \
-    return (result);                             \
-  }                                              \
-  (void)(0
-
-#define KILL_COMPILE_ON_ANY                      \
-  THREAD);                                       \
-  if (HAS_PENDING_EXCEPTION) {                   \
-    fatal("unhandled ci exception");             \
-    CLEAR_PENDING_EXCEPTION;                     \
-  }                                              \
-(void)(0
-
-
 inline const char* bool_to_str(bool b) {
   return ((b) ? "true" : "false");
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/ci/ciUtilities.inline.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_CI_CIUTILITIES_INLINE_HPP
+#define SHARE_VM_CI_CIUTILITIES_INLINE_HPP
+
+#include "ci/ciUtilities.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+
+// Add a ci native entry wrapper?
+
+// Bring the compilation thread into the VM state.
+#define VM_ENTRY_MARK                       \
+  CompilerThread* thread=CompilerThread::current(); \
+  ThreadInVMfromNative __tiv(thread);       \
+  ResetNoHandleMark rnhm;                   \
+  HandleMarkCleaner __hm(thread);           \
+  Thread* THREAD = thread;                  \
+  debug_only(VMNativeEntryWrapper __vew;)
+
+
+
+// Bring the compilation thread into the VM state.  No handle mark.
+#define VM_QUICK_ENTRY_MARK                 \
+  CompilerThread* thread=CompilerThread::current(); \
+  ThreadInVMfromNative __tiv(thread);       \
+/*                                          \
+ * [TODO] The NoHandleMark line does nothing but declare a function prototype \
+ * The NoHandkeMark constructor is NOT executed. If the ()'s are   \
+ * removed, causes the NoHandleMark assert to trigger. \
+ * debug_only(NoHandleMark __hm();)         \
+ */                                         \
+  Thread* THREAD = thread;                  \
+  debug_only(VMNativeEntryWrapper __vew;)
+
+
+#define EXCEPTION_CONTEXT \
+  CompilerThread* thread=CompilerThread::current(); \
+  Thread* THREAD = thread;
+
+
+#define GUARDED_VM_ENTRY(action)            \
+  {if (IS_IN_VM) { action } else { VM_ENTRY_MARK; { action }}}
+
+#define GUARDED_VM_QUICK_ENTRY(action)      \
+  {if (IS_IN_VM) { action } else { VM_QUICK_ENTRY_MARK; { action }}}
+
+// Redefine this later.
+#define KILL_COMPILE_ON_FATAL_(result)           \
+  THREAD);                                       \
+  if (HAS_PENDING_EXCEPTION) {                   \
+    if (PENDING_EXCEPTION->klass() ==            \
+        SystemDictionary::ThreadDeath_klass()) { \
+      /* Kill the compilation. */                \
+      fatal("unhandled ci exception");           \
+      return (result);                           \
+    }                                            \
+    CLEAR_PENDING_EXCEPTION;                     \
+    return (result);                             \
+  }                                              \
+  (void)(0
+
+#define KILL_COMPILE_ON_ANY                      \
+  THREAD);                                       \
+  if (HAS_PENDING_EXCEPTION) {                   \
+    fatal("unhandled ci exception");             \
+    CLEAR_PENDING_EXCEPTION;                     \
+  }                                              \
+(void)(0
+
+#endif // SHARE_VM_CI_CIUTILITIES_INLINE_HPP
+
--- a/src/hotspot/share/classfile/classLoader.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/classfile/classLoader.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -61,7 +61,7 @@
 #include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/os.hpp"
--- a/src/hotspot/share/classfile/javaClasses.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/classfile/javaClasses.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -51,7 +51,7 @@
 #include "prims/resolvedMethodTable.hpp"
 #include "runtime/fieldDescriptor.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
--- a/src/hotspot/share/classfile/stackMapTable.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/classfile/stackMapTable.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -144,6 +144,20 @@
   str->print_cr(" }");
 }
 
+StackMapReader::StackMapReader(ClassVerifier* v, StackMapStream* stream, char* code_data,
+                               int32_t code_len, TRAPS) :
+                               _verifier(v), _stream(stream),
+                               _code_data(code_data), _code_length(code_len) {
+  methodHandle m = v->method();
+  if (m->has_stackmap_table()) {
+    _cp = constantPoolHandle(THREAD, m->constants());
+    _frame_count = _stream->get_u2(CHECK);
+  } else {
+    // There's no stackmap table present. Frame count and size are 0.
+    _frame_count = 0;
+  }
+}
+
 int32_t StackMapReader::chop(
     VerificationType* locals, int32_t length, int32_t chops) {
   if (locals == NULL) return -1;
--- a/src/hotspot/share/classfile/stackMapTable.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/classfile/stackMapTable.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -142,18 +142,7 @@
  public:
   // Constructor
   StackMapReader(ClassVerifier* v, StackMapStream* stream, char* code_data,
-                 int32_t code_len, TRAPS) :
-                 _verifier(v), _stream(stream),
-                 _code_data(code_data), _code_length(code_len) {
-    methodHandle m = v->method();
-    if (m->has_stackmap_table()) {
-      _cp = constantPoolHandle(THREAD, m->constants());
-      _frame_count = _stream->get_u2(CHECK);
-    } else {
-      // There's no stackmap table present. Frame count and size are 0.
-      _frame_count = 0;
-    }
-  }
+                 int32_t code_len, TRAPS);
 
   inline int32_t get_frame_count() const                { return _frame_count; }
   StackMapFrame* next(StackMapFrame* pre_frame, bool first,
--- a/src/hotspot/share/classfile/verifier.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/classfile/verifier.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -44,7 +44,7 @@
 #include "oops/typeArrayOop.hpp"
 #include "runtime/fieldDescriptor.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/orderAccess.inline.hpp"
--- a/src/hotspot/share/code/codeBlob.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/code/codeBlob.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "oops/oop.inline.hpp"
 #include "prims/forte.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/safepoint.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/share/code/compiledMethod.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/code/compiledMethod.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,7 @@
 #include "interpreter/bytecode.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/method.inline.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 
 CompiledMethod::CompiledMethod(Method* method, const char* name, CompilerType type, const CodeBlobLayout& layout, int frame_complete_offset, int frame_size, ImmutableOopMapSet* oop_maps, bool caller_must_gc_arguments)
--- a/src/hotspot/share/code/debugInfo.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/code/debugInfo.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -28,7 +28,7 @@
 #include "code/nmethod.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/thread.hpp"
 
@@ -121,6 +121,10 @@
 
 // ObjectValue
 
+void ObjectValue::set_value(oop value) {
+  _value = Handle(Thread::current(), value);
+}
+
 void ObjectValue::read_object(DebugInfoReadStream* stream) {
   _klass = read_from(stream);
   assert(_klass->is_constant_oop(), "should be constant java mirror oop");
--- a/src/hotspot/share/code/debugInfo.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/code/debugInfo.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -128,7 +128,7 @@
   Handle                      value() const             { return _value; }
   bool                        is_visited() const        { return _visited; }
 
-  void                        set_value(oop value)      { _value = Handle(Thread::current(), value); }
+  void                        set_value(oop value);
   void                        set_visited(bool visited) { _visited = false; }
 
   // Serialization of debugging information
--- a/src/hotspot/share/code/nmethod.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/code/nmethod.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -36,6 +36,7 @@
 #include "compiler/compilerDirectives.hpp"
 #include "compiler/directivesParser.hpp"
 #include "compiler/disassembler.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/bytecode.hpp"
 #include "logging/log.hpp"
 #include "logging/logStream.hpp"
--- a/src/hotspot/share/compiler/compileBroker.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/compiler/compileBroker.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -47,7 +47,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/share/compiler/compilerDirectives.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/compiler/compilerDirectives.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "ci/ciMethod.hpp"
-#include "ci/ciUtilities.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "compiler/abstractCompiler.hpp"
 #include "compiler/compilerDirectives.hpp"
 #include "compiler/compilerOracle.hpp"
--- a/src/hotspot/share/compiler/compilerDirectives.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/compiler/compilerDirectives.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,6 @@
 
 #include "ci/ciMetadata.hpp"
 #include "ci/ciMethod.hpp"
-#include "ci/ciUtilities.hpp"
 #include "compiler/methodMatcher.hpp"
 #include "compiler/compilerOracle.hpp"
 #include "utilities/exceptions.hpp"
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepThread.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepThread.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -30,7 +30,6 @@
 #include "gc/shared/gcId.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/share/gc/cms/vmCMSOperations.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/gc/cms/vmCMSOperations.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,8 @@
 #include "gc/shared/gcTimer.hpp"
 #include "gc/shared/gcTraceTime.inline.hpp"
 #include "gc/shared/isGCActiveMark.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.hpp"
 #include "utilities/dtrace.hpp"
 
--- a/src/hotspot/share/gc/g1/vm_operations_g1.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/gc/g1/vm_operations_g1.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "gc/shared/gcTimer.hpp"
 #include "gc/shared/gcTraceTime.inline.hpp"
 #include "gc/shared/isGCActiveMark.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 
 void VM_G1CollectFull::doit() {
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
--- a/src/hotspot/share/gc/shared/concurrentGCThread.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/gc/shared/concurrentGCThread.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -28,7 +28,6 @@
 #include "oops/instanceRefKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/os.hpp"
--- a/src/hotspot/share/gc/shared/vmGCOperations.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/gc/shared/vmGCOperations.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,6 @@
 #include "memory/oopFactory.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "utilities/dtrace.hpp"
 #include "utilities/macros.hpp"
 #include "utilities/preserveException.hpp"
--- a/src/hotspot/share/interpreter/bytecodeInterpreter.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/interpreter/bytecodeInterpreter.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -47,7 +47,7 @@
 #include "runtime/biasedLocking.hpp"
 #include "runtime/frame.inline.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/threadCritical.hpp"
--- a/src/hotspot/share/interpreter/interpreterRuntime.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/interpreter/interpreterRuntime.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -55,7 +55,7 @@
 #include "runtime/fieldDescriptor.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/jfieldIDWorkaround.hpp"
 #include "runtime/osThread.hpp"
--- a/src/hotspot/share/interpreter/linkResolver.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/interpreter/linkResolver.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,6 +32,7 @@
 #include "classfile/vmSymbols.hpp"
 #include "compiler/compileBroker.hpp"
 #include "gc/shared/collectedHeap.inline.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/bytecode.hpp"
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/linkResolver.hpp"
--- a/src/hotspot/share/jvmci/compilerRuntime.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/jvmci/compilerRuntime.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -30,7 +30,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/deoptimization.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/vframe.hpp"
 #include "aot/aotLoader.hpp"
 
--- a/src/hotspot/share/jvmci/jvmciCodeInstaller.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/jvmci/jvmciCodeInstaller.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -39,6 +39,7 @@
 #include "oops/oop.inline.hpp"
 #include "oops/objArrayOop.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/safepointMechanism.inline.hpp"
--- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -22,6 +22,7 @@
  */
 
 #include "precompiled.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/javaClasses.inline.hpp"
 #include "code/scopeDesc.hpp"
 #include "memory/oopFactory.hpp"
@@ -35,6 +36,7 @@
 #include "jvmci/jvmciCompilerToVM.hpp"
 #include "jvmci/jvmciCodeInstaller.hpp"
 #include "jvmci/jvmciRuntime.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/timerTrace.hpp"
 #include "runtime/vframe_hp.hpp"
@@ -98,6 +100,12 @@
   return NULL;
 }
 
+Handle JavaArgumentUnboxer::next_arg(BasicType expectedType) {
+  assert(_index < _args->length(), "out of bounds");
+  oop arg=((objArrayOop) (_args))->obj_at(_index++);
+  assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch");
+  return Handle(Thread::current(), arg);
+}
 
 jobjectArray readConfiguration0(JNIEnv *env, TRAPS);
 
--- a/src/hotspot/share/jvmci/jvmciCompilerToVM.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -170,12 +170,7 @@
   arrayOop _args;
   int _index;
 
-  Handle next_arg(BasicType expectedType) {
-    assert(_index < _args->length(), "out of bounds");
-    oop arg=((objArrayOop) (_args))->obj_at(_index++);
-    assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch");
-    return Handle(Thread::current(), arg);
-  }
+  Handle next_arg(BasicType expectedType);
 
  public:
   JavaArgumentUnboxer(Symbol* signature, JavaCallArguments*  jca, arrayOop args, bool is_static) : SignatureIterator(signature) {
--- a/src/hotspot/share/jvmci/jvmciRuntime.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/jvmci/jvmciRuntime.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -40,7 +40,7 @@
 #include "oops/oop.inline.hpp"
 #include "oops/objArrayOop.inline.hpp"
 #include "runtime/biasedLocking.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/reflection.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/share/libadt/vectset.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/libadt/vectset.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,6 +25,7 @@
 #include "precompiled.hpp"
 #include "libadt/vectset.hpp"
 #include "memory/allocation.inline.hpp"
+#include "memory/arena.hpp"
 
 // Vector Sets - An Abstract Data Type
 
--- a/src/hotspot/share/memory/metaspace.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/memory/metaspace.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -66,6 +66,7 @@
 class PrintCLDMetaspaceInfoClosure;
 class SpaceManager;
 class VirtualSpaceList;
+class CollectedHeap;
 
 // Metaspaces each have a  SpaceManager and allocations
 // are done by the SpaceManager.  Allocations are done
--- a/src/hotspot/share/oops/constantPool.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/oops/constantPool.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -47,6 +47,7 @@
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
 #include "runtime/fieldType.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/init.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/signature.hpp"
--- a/src/hotspot/share/oops/methodData.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/oops/methodData.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -25,6 +25,7 @@
 #include "precompiled.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "compiler/compilerOracle.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "interpreter/bytecode.hpp"
 #include "interpreter/bytecodeStream.hpp"
 #include "interpreter/linkResolver.hpp"
--- a/src/hotspot/share/opto/library_call.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/opto/library_call.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "asm/macroAssembler.hpp"
+#include "ci/ciUtilities.inline.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
 #include "compiler/compileBroker.hpp"
--- a/src/hotspot/share/opto/macro.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/opto/macro.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "compiler/compileLog.hpp"
+#include "gc/shared/collectedHeap.inline.hpp"
 #include "libadt/vectset.hpp"
 #include "opto/addnode.hpp"
 #include "opto/arraycopynode.hpp"
--- a/src/hotspot/share/opto/parse1.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/opto/parse1.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -39,6 +39,7 @@
 #include "opto/runtime.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/handles.inline.hpp"
+#include "runtime/safepointMechanism.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "utilities/copy.hpp"
 
--- a/src/hotspot/share/opto/runtime.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/opto/runtime.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -61,7 +61,7 @@
 #include "opto/subnode.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/signature.hpp"
--- a/src/hotspot/share/precompiled/precompiled.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/precompiled/precompiled.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -54,7 +54,7 @@
 # include "ci/ciSymbol.hpp"
 # include "ci/ciType.hpp"
 # include "ci/ciTypeArrayKlass.hpp"
-# include "ci/ciUtilities.hpp"
+# include "ci/ciUtilities.inline.hpp"
 # include "ci/compilerInterface.hpp"
 # include "classfile/classFileParser.hpp"
 # include "classfile/classFileStream.hpp"
@@ -176,7 +176,7 @@
 # include "runtime/handles.inline.hpp"
 # include "runtime/icache.hpp"
 # include "runtime/init.hpp"
-# include "runtime/interfaceSupport.hpp"
+# include "runtime/interfaceSupport.inline.hpp"
 # include "runtime/java.hpp"
 # include "runtime/javaCalls.hpp"
 # include "runtime/javaFrameAnchor.hpp"
--- a/src/hotspot/share/prims/jni.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jni.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -65,7 +65,7 @@
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/fieldDescriptor.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jfieldIDWorkaround.hpp"
--- a/src/hotspot/share/prims/jniCheck.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jniCheck.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -36,8 +36,8 @@
 #include "prims/jniCheck.hpp"
 #include "prims/jvm_misc.hpp"
 #include "runtime/fieldDescriptor.hpp"
-#include "runtime/handles.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jfieldIDWorkaround.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/thread.inline.hpp"
--- a/src/hotspot/share/prims/jvm.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvm.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -57,7 +57,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jfieldIDWorkaround.hpp"
--- a/src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -34,6 +34,19 @@
 // FIXME: fix Synthetic attribute
 // FIXME: per Serguei, add error return handling for ConstantPool::copy_cpool_bytes()
 
+JvmtiConstantPoolReconstituter::JvmtiConstantPoolReconstituter(InstanceKlass* ik) {
+  set_error(JVMTI_ERROR_NONE);
+  _ik = ik;
+  _cpool = constantPoolHandle(Thread::current(), ik->constants());
+  _symmap = new SymbolHashMap();
+  _classmap = new SymbolHashMap();
+  _cpool_size = _cpool->hash_entries_to(_symmap, _classmap);
+  if (_cpool_size == 0) {
+    set_error(JVMTI_ERROR_OUT_OF_MEMORY);
+  } else if (_cpool_size < 0) {
+    set_error(JVMTI_ERROR_INTERNAL);
+  }
+}
 
 // Write the field information portion of ClassFile structure
 // JVMSpec|     u2 fields_count;
--- a/src/hotspot/share/prims/jvmtiClassFileReconstituter.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiClassFileReconstituter.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -52,19 +52,7 @@
  public:
   // Calls to this constructor must be proceeded by a ResourceMark
   // and a HandleMark
-  JvmtiConstantPoolReconstituter(InstanceKlass* ik){
-    set_error(JVMTI_ERROR_NONE);
-    _ik = ik;
-    _cpool = constantPoolHandle(Thread::current(), ik->constants());
-    _symmap = new SymbolHashMap();
-    _classmap = new SymbolHashMap();
-    _cpool_size = _cpool->hash_entries_to(_symmap, _classmap);
-    if (_cpool_size == 0) {
-      set_error(JVMTI_ERROR_OUT_OF_MEMORY);
-    } else if (_cpool_size < 0) {
-      set_error(JVMTI_ERROR_INTERNAL);
-    }
-  }
+  JvmtiConstantPoolReconstituter(InstanceKlass* ik);
 
   ~JvmtiConstantPoolReconstituter() {
     if (_symmap != NULL) {
--- a/src/hotspot/share/prims/jvmtiEnter.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_PRIMS_JVMTIENTER_HPP
-#define SHARE_VM_PRIMS_JVMTIENTER_HPP
-
-#include "classfile/systemDictionary.hpp"
-#include "jvmtifiles/jvmtiEnv.hpp"
-#include "memory/resourceArea.hpp"
-#include "prims/jvmtiImpl.hpp"
-#include "runtime/interfaceSupport.hpp"
-
-#endif // SHARE_VM_PRIMS_JVMTIENTER_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/prims/jvmtiEnter.inline.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_PRIMS_JVMTIENTER_INLINE_HPP
+#define SHARE_VM_PRIMS_JVMTIENTER_INLINE_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+
+#endif // SHARE_VM_PRIMS_JVMTIENTER_INLINE_HPP
--- a/src/hotspot/share/prims/jvmtiEnter.xsl	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiEnter.xsl	Fri Mar 16 09:12:13 2018 -0400
@@ -42,7 +42,7 @@
 #if INCLUDE_JVMTI
 # include "logging/log.hpp"
 # include "oops/oop.inline.hpp"
-# include "prims/jvmtiEnter.hpp"
+# include "prims/jvmtiEnter.inline.hpp"
 # include "prims/jvmtiRawMonitor.hpp"
 # include "prims/jvmtiUtil.hpp"
 # include "runtime/threadSMR.hpp"
--- a/src/hotspot/share/prims/jvmtiEnv.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiEnv.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -55,7 +55,7 @@
 #include "prims/jvmtiUtil.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/deoptimization.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jfieldIDWorkaround.hpp"
 #include "runtime/jniHandles.inline.hpp"
--- a/src/hotspot/share/prims/jvmtiEnvBase.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiEnvBase.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -38,7 +38,7 @@
 #include "prims/jvmtiThreadState.inline.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/deoptimization.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jfieldIDWorkaround.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/objectMonitor.hpp"
--- a/src/hotspot/share/prims/jvmtiEnvThreadState.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiEnvThreadState.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -32,7 +32,7 @@
 #include "prims/jvmtiImpl.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/signature.hpp"
 #include "runtime/thread.inline.hpp"
--- a/src/hotspot/share/prims/jvmtiExport.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiExport.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -48,7 +48,7 @@
 #include "prims/jvmtiThreadState.inline.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/handles.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/objectMonitor.hpp"
--- a/src/hotspot/share/prims/jvmtiImpl.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiImpl.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -41,7 +41,7 @@
 #include "runtime/deoptimization.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/os.hpp"
 #include "runtime/serviceThread.hpp"
--- a/src/hotspot/share/prims/jvmtiRawMonitor.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiRawMonitor.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,7 +26,7 @@
 #include "memory/allocation.inline.hpp"
 #include "prims/jvmtiRawMonitor.hpp"
 #include "runtime/atomic.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/thread.inline.hpp"
 
--- a/src/hotspot/share/prims/jvmtiUtil.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/jvmtiUtil.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,7 +26,7 @@
 #include "prims/jvmtiUtil.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/vm_operations.hpp"
 #include "utilities/exceptions.hpp"
 
--- a/src/hotspot/share/prims/methodHandles.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/methodHandles.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -39,6 +39,7 @@
 #include "oops/typeArrayOop.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/compilationPolicy.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/timerTrace.hpp"
--- a/src/hotspot/share/prims/methodHandles.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/methodHandles.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -29,7 +29,6 @@
 #include "classfile/vmSymbols.hpp"
 #include "runtime/frame.inline.hpp"
 #include "runtime/globals.hpp"
-#include "runtime/interfaceSupport.hpp"
 #include "utilities/macros.hpp"
 
 #ifdef ZERO
--- a/src/hotspot/share/prims/perf.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/perf.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -29,7 +29,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/perfData.inline.hpp"
 #include "runtime/perfMemory.hpp"
 
--- a/src/hotspot/share/prims/unsafe.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/unsafe.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -37,7 +37,7 @@
 #include "prims/unsafe.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/globals.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/reflection.hpp"
--- a/src/hotspot/share/prims/wbtestmethods/parserTests.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/wbtestmethods/parserTests.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -29,9 +29,9 @@
 #include "memory/oopFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/objArrayOop.inline.hpp"
-#include "prims/whitebox.hpp"
+#include "prims/whitebox.inline.hpp"
 #include "prims/wbtestmethods/parserTests.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "services/diagnosticArgument.hpp"
 #include "services/diagnosticFramework.hpp"
--- a/src/hotspot/share/prims/whitebox.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/whitebox.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -47,12 +47,12 @@
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
 #include "prims/wbtestmethods/parserTests.hpp"
-#include "prims/whitebox.hpp"
+#include "prims/whitebox.inline.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/deoptimization.hpp"
 #include "runtime/handshake.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/os.hpp"
@@ -88,6 +88,22 @@
 
 #define SIZE_T_MAX_VALUE ((size_t) -1)
 
+#define CHECK_JNI_EXCEPTION_(env, value)                               \
+  do {                                                                 \
+    JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
+    if (HAS_PENDING_EXCEPTION) {                                       \
+      return(value);                                                   \
+    }                                                                  \
+  } while (0)
+
+#define CHECK_JNI_EXCEPTION(env)                                       \
+  do {                                                                 \
+    JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
+    if (HAS_PENDING_EXCEPTION) {                                       \
+      return;                                                          \
+    }                                                                  \
+  } while (0)
+
 bool WhiteBox::_used = false;
 volatile bool WhiteBox::compilation_locked = false;
 
--- a/src/hotspot/share/prims/whitebox.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/prims/whitebox.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,8 @@
 #include "memory/allocation.hpp"
 #include "oops/oopsHierarchy.hpp"
 #include "oops/symbol.hpp"
-#include "runtime/interfaceSupport.hpp"
+
+#define WB_METHOD_DECLARE(result_type) extern "C" result_type JNICALL
 
 // Unconditionally clear pedantic pending JNI checks
 class ClearPendingJniExcCheck : public StackObj {
@@ -44,30 +45,6 @@
   }
 };
 
-// Entry macro to transition from JNI to VM state.
-
-#define WB_ENTRY(result_type, header) JNI_ENTRY(result_type, header) \
-  ClearPendingJniExcCheck _clearCheck(env);
-
-#define WB_END JNI_END
-#define WB_METHOD_DECLARE(result_type) extern "C" result_type JNICALL
-
-#define CHECK_JNI_EXCEPTION_(env, value)                               \
-  do {                                                                 \
-    JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
-    if (HAS_PENDING_EXCEPTION) {                                       \
-      return(value);                                                   \
-    }                                                                  \
-  } while (0)
-
-#define CHECK_JNI_EXCEPTION(env)                                       \
-  do {                                                                 \
-    JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
-    if (HAS_PENDING_EXCEPTION) {                                       \
-      return;                                                          \
-    }                                                                  \
-  } while (0)
-
 class CodeBlob;
 class CodeHeap;
 class JavaThread;
@@ -93,6 +70,4 @@
   static bool compile_method(Method* method, int comp_level, int bci, Thread* THREAD);
 };
 
-
-
 #endif // SHARE_VM_PRIMS_WHITEBOX_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/prims/whitebox.inline.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_PRIMS_WHITEBOX_INLINE_HPP
+#define SHARE_VM_PRIMS_WHITEBOX_INLINE_HPP
+
+#include "prims/whitebox.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+
+// Entry macro to transition from JNI to VM state.
+
+#define WB_ENTRY(result_type, header) JNI_ENTRY(result_type, header) \
+  ClearPendingJniExcCheck _clearCheck(env);
+
+#define WB_END JNI_END
+
+#endif // SHARE_VM_PRIMS_WHITEBOX_INLINE_HPP
--- a/src/hotspot/share/runtime/biasedLocking.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/biasedLocking.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/basicLock.hpp"
 #include "runtime/biasedLocking.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/task.hpp"
 #include "runtime/threadSMR.hpp"
 #include "runtime/vframe.hpp"
--- a/src/hotspot/share/runtime/deoptimization.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/deoptimization.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -46,7 +46,7 @@
 #include "runtime/biasedLocking.hpp"
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/deoptimization.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/signature.hpp"
 #include "runtime/stubRoutines.hpp"
--- a/src/hotspot/share/runtime/fieldDescriptor.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/fieldDescriptor.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,6 +26,8 @@
 #define SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
 
 #include "oops/constantPool.hpp"
+#include "oops/fieldInfo.hpp"
+#include "oops/instanceKlass.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/fieldType.hpp"
 #include "utilities/accessFlags.hpp"
--- a/src/hotspot/share/runtime/handles.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/handles.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -214,4 +214,4 @@
   area->_no_handle_mark_nesting = _no_handle_mark_nesting;
 }
 
-#endif
+#endif // ASSERT
--- a/src/hotspot/share/runtime/handles.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/handles.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -296,4 +296,17 @@
 #endif
 };
 
+// The HandleMarkCleaner is a faster version of HandleMark.
+// It relies on the fact that there is a HandleMark further
+// down the stack (in JavaCalls::call_helper), and just resets
+// to the saved values in that HandleMark.
+
+class HandleMarkCleaner: public StackObj {
+ private:
+  Thread* _thread;
+ public:
+  inline HandleMarkCleaner(Thread* thread);
+  inline ~HandleMarkCleaner();
+};
+
 #endif // SHARE_VM_RUNTIME_HANDLES_HPP
--- a/src/hotspot/share/runtime/handles.inline.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/handles.inline.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -104,4 +104,13 @@
   debug_only(area->_handle_mark_nesting--);
 }
 
+inline HandleMarkCleaner::HandleMarkCleaner(Thread* thread) {
+  _thread = thread;
+  _thread->last_handle_mark()->push();
+}
+
+inline HandleMarkCleaner::~HandleMarkCleaner() {
+  _thread->last_handle_mark()->pop_and_restore();
+}
+
 #endif // SHARE_VM_RUNTIME_HANDLES_INLINE_HPP
--- a/src/hotspot/share/runtime/handshake.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/handshake.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,7 @@
 #include "logging/logStream.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/handshake.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/osThread.hpp"
 #include "runtime/semaphore.hpp"
 #include "runtime/task.hpp"
--- a/src/hotspot/share/runtime/interfaceSupport.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/interfaceSupport.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -28,16 +28,49 @@
 #include "gc/shared/genCollectedHeap.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/atomic.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/os.inline.hpp"
+#include "runtime/thread.inline.hpp"
 #include "runtime/vframe.hpp"
 #include "utilities/preserveException.hpp"
 
 // Implementation of InterfaceSupport
 
 #ifdef ASSERT
+VMEntryWrapper::VMEntryWrapper() {
+  if (VerifyLastFrame) {
+    InterfaceSupport::verify_last_frame();
+  }
+}
+
+VMEntryWrapper::~VMEntryWrapper() {
+  InterfaceSupport::check_gc_alot();
+  if (WalkStackALot) {
+    InterfaceSupport::walk_stack();
+  }
+#ifdef COMPILER2
+  // This option is not used by Compiler 1
+  if (StressDerivedPointers) {
+    InterfaceSupport::stress_derived_pointers();
+  }
+#endif
+  if (DeoptimizeALot || DeoptimizeRandom) {
+    InterfaceSupport::deoptimizeAll();
+  }
+  if (ZombieALot) {
+    InterfaceSupport::zombieAll();
+  }
+  if (UnlinkSymbolsALot) {
+    InterfaceSupport::unlinkSymbols();
+  }
+  // do verification AFTER potential deoptimization
+  if (VerifyStack) {
+    InterfaceSupport::verify_stack();
+  }
+}
 
 long InterfaceSupport::_number_of_calls       = 0;
 long InterfaceSupport::_scavenge_alot_counter = 1;
--- a/src/hotspot/share/runtime/interfaceSupport.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,623 +0,0 @@
-/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_RUNTIME_INTERFACESUPPORT_HPP
-#define SHARE_VM_RUNTIME_INTERFACESUPPORT_HPP
-
-#include "gc/shared/gcLocker.hpp"
-#include "runtime/handles.inline.hpp"
-#include "runtime/mutexLocker.hpp"
-#include "runtime/orderAccess.hpp"
-#include "runtime/os.hpp"
-#include "runtime/safepointMechanism.inline.hpp"
-#include "runtime/thread.inline.hpp"
-#include "runtime/vmThread.hpp"
-#include "utilities/globalDefinitions.hpp"
-#include "utilities/macros.hpp"
-#include "utilities/preserveException.hpp"
-
-// Wrapper for all entry points to the virtual machine.
-// The HandleMarkCleaner is a faster version of HandleMark.
-// It relies on the fact that there is a HandleMark further
-// down the stack (in JavaCalls::call_helper), and just resets
-// to the saved values in that HandleMark.
-
-class HandleMarkCleaner: public StackObj {
- private:
-  Thread* _thread;
- public:
-  HandleMarkCleaner(Thread* thread) {
-    _thread = thread;
-    _thread->last_handle_mark()->push();
-  }
-  ~HandleMarkCleaner() {
-    _thread->last_handle_mark()->pop_and_restore();
-  }
-
- private:
-  inline void* operator new(size_t size, void* ptr) throw() {
-    return ptr;
-  }
-};
-
-// InterfaceSupport provides functionality used by the VM_LEAF_BASE and
-// VM_ENTRY_BASE macros. These macros are used to guard entry points into
-// the VM and perform checks upon leave of the VM.
-
-
-class InterfaceSupport: AllStatic {
-# ifdef ASSERT
- public:
-  static long _scavenge_alot_counter;
-  static long _fullgc_alot_counter;
-  static long _number_of_calls;
-  static long _fullgc_alot_invocation;
-
-  // Helper methods used to implement +ScavengeALot and +FullGCALot
-  static void check_gc_alot() { if (ScavengeALot || FullGCALot) gc_alot(); }
-  static void gc_alot();
-
-  static void walk_stack_from(vframe* start_vf);
-  static void walk_stack();
-
-  static void zombieAll();
-  static void unlinkSymbols();
-  static void deoptimizeAll();
-  static void stress_derived_pointers();
-  static void verify_stack();
-  static void verify_last_frame();
-# endif
-
- public:
-  static void serialize_thread_state_with_handler(JavaThread* thread) {
-    serialize_thread_state_internal(thread, true);
-  }
-
-  // Should only call this if we know that we have a proper SEH set up.
-  static void serialize_thread_state(JavaThread* thread) {
-    serialize_thread_state_internal(thread, false);
-  }
-
- private:
-  static void serialize_thread_state_internal(JavaThread* thread, bool needs_exception_handler) {
-    // Make sure new state is seen by VM thread
-    if (os::is_MP()) {
-      if (UseMembar) {
-        // Force a fence between the write above and read below
-        OrderAccess::fence();
-      } else {
-        // store to serialize page so VM thread can do pseudo remote membar
-        if (needs_exception_handler) {
-          os::write_memory_serialize_page_with_handler(thread);
-        } else {
-          os::write_memory_serialize_page(thread);
-        }
-      }
-    }
-  }
-};
-
-
-// Basic class for all thread transition classes.
-
-class ThreadStateTransition : public StackObj {
- protected:
-  JavaThread* _thread;
- public:
-  ThreadStateTransition(JavaThread *thread) {
-    _thread = thread;
-    assert(thread != NULL && thread->is_Java_thread(), "must be Java thread");
-  }
-
-  // Change threadstate in a manner, so safepoint can detect changes.
-  // Time-critical: called on exit from every runtime routine
-  static inline void transition(JavaThread *thread, JavaThreadState from, JavaThreadState to) {
-    assert(from != _thread_in_Java, "use transition_from_java");
-    assert(from != _thread_in_native, "use transition_from_native");
-    assert((from & 1) == 0 && (to & 1) == 0, "odd numbers are transitions states");
-    assert(thread->thread_state() == from, "coming from wrong thread state");
-    // Change to transition state
-    thread->set_thread_state((JavaThreadState)(from + 1));
-
-    InterfaceSupport::serialize_thread_state(thread);
-
-    SafepointMechanism::block_if_requested(thread);
-    thread->set_thread_state(to);
-
-    CHECK_UNHANDLED_OOPS_ONLY(thread->clear_unhandled_oops();)
-  }
-
-  // transition_and_fence must be used on any thread state transition
-  // where there might not be a Java call stub on the stack, in
-  // particular on Windows where the Structured Exception Handler is
-  // set up in the call stub. os::write_memory_serialize_page() can
-  // fault and we can't recover from it on Windows without a SEH in
-  // place.
-  static inline void transition_and_fence(JavaThread *thread, JavaThreadState from, JavaThreadState to) {
-    assert(thread->thread_state() == from, "coming from wrong thread state");
-    assert((from & 1) == 0 && (to & 1) == 0, "odd numbers are transitions states");
-    // Change to transition state
-    thread->set_thread_state((JavaThreadState)(from + 1));
-
-    InterfaceSupport::serialize_thread_state_with_handler(thread);
-
-    SafepointMechanism::block_if_requested(thread);
-    thread->set_thread_state(to);
-
-    CHECK_UNHANDLED_OOPS_ONLY(thread->clear_unhandled_oops();)
-  }
-
-  // Same as above, but assumes from = _thread_in_Java. This is simpler, since we
-  // never block on entry to the VM. This will break the code, since e.g. preserve arguments
-  // have not been setup.
-  static inline void transition_from_java(JavaThread *thread, JavaThreadState to) {
-    assert(thread->thread_state() == _thread_in_Java, "coming from wrong thread state");
-    thread->set_thread_state(to);
-  }
-
-  static inline void transition_from_native(JavaThread *thread, JavaThreadState to) {
-    assert((to & 1) == 0, "odd numbers are transitions states");
-    assert(thread->thread_state() == _thread_in_native, "coming from wrong thread state");
-    // Change to transition state
-    thread->set_thread_state(_thread_in_native_trans);
-
-    InterfaceSupport::serialize_thread_state_with_handler(thread);
-
-    // We never install asynchronous exceptions when coming (back) in
-    // to the runtime from native code because the runtime is not set
-    // up to handle exceptions floating around at arbitrary points.
-    if (SafepointMechanism::poll(thread) || thread->is_suspend_after_native()) {
-      JavaThread::check_safepoint_and_suspend_for_native_trans(thread);
-
-      // Clear unhandled oops anywhere where we could block, even if we don't.
-      CHECK_UNHANDLED_OOPS_ONLY(thread->clear_unhandled_oops();)
-    }
-
-    thread->set_thread_state(to);
-  }
- protected:
-   void trans(JavaThreadState from, JavaThreadState to)  { transition(_thread, from, to); }
-   void trans_from_java(JavaThreadState to)              { transition_from_java(_thread, to); }
-   void trans_from_native(JavaThreadState to)            { transition_from_native(_thread, to); }
-   void trans_and_fence(JavaThreadState from, JavaThreadState to) { transition_and_fence(_thread, from, to); }
-};
-
-class ThreadInVMForHandshake : public ThreadStateTransition {
-  const JavaThreadState _original_state;
-
-  void transition_back() {
-    // This can be invoked from transition states and must return to the original state properly
-    assert(_thread->thread_state() == _thread_in_vm, "should only call when leaving VM after handshake");
-    _thread->set_thread_state(_thread_in_vm_trans);
-
-    InterfaceSupport::serialize_thread_state(_thread);
-
-    SafepointMechanism::block_if_requested(_thread);
-
-    _thread->set_thread_state(_original_state);
-  }
-
- public:
-
-  ThreadInVMForHandshake(JavaThread* thread) : ThreadStateTransition(thread),
-      _original_state(thread->thread_state()) {
-
-    if (thread->has_last_Java_frame()) {
-      thread->frame_anchor()->make_walkable(thread);
-    }
-
-    thread->set_thread_state(_thread_in_vm);
-  }
-
-  ~ThreadInVMForHandshake() {
-    transition_back();
-  }
-
-};
-
-class ThreadInVMfromJava : public ThreadStateTransition {
- public:
-  ThreadInVMfromJava(JavaThread* thread) : ThreadStateTransition(thread) {
-    trans_from_java(_thread_in_vm);
-  }
-  ~ThreadInVMfromJava()  {
-    if (_thread->stack_yellow_reserved_zone_disabled()) {
-      _thread->enable_stack_yellow_reserved_zone();
-    }
-    trans(_thread_in_vm, _thread_in_Java);
-    // Check for pending. async. exceptions or suspends.
-    if (_thread->has_special_runtime_exit_condition()) _thread->handle_special_runtime_exit_condition();
-  }
-};
-
-
-class ThreadInVMfromUnknown {
- private:
-  JavaThread* _thread;
- public:
-  ThreadInVMfromUnknown() : _thread(NULL) {
-    Thread* t = Thread::current();
-    if (t->is_Java_thread()) {
-      JavaThread* t2 = (JavaThread*) t;
-      if (t2->thread_state() == _thread_in_native) {
-        _thread = t2;
-        ThreadStateTransition::transition_from_native(t2, _thread_in_vm);
-        // Used to have a HandleMarkCleaner but that is dangerous as
-        // it could free a handle in our (indirect, nested) caller.
-        // We expect any handles will be short lived and figure we
-        // don't need an actual HandleMark.
-      }
-    }
-  }
-  ~ThreadInVMfromUnknown()  {
-    if (_thread) {
-      ThreadStateTransition::transition_and_fence(_thread, _thread_in_vm, _thread_in_native);
-    }
-  }
-};
-
-
-class ThreadInVMfromNative : public ThreadStateTransition {
- public:
-  ThreadInVMfromNative(JavaThread* thread) : ThreadStateTransition(thread) {
-    trans_from_native(_thread_in_vm);
-  }
-  ~ThreadInVMfromNative() {
-    trans_and_fence(_thread_in_vm, _thread_in_native);
-  }
-};
-
-
-class ThreadToNativeFromVM : public ThreadStateTransition {
- public:
-  ThreadToNativeFromVM(JavaThread *thread) : ThreadStateTransition(thread) {
-    // We are leaving the VM at this point and going directly to native code.
-    // Block, if we are in the middle of a safepoint synchronization.
-    assert(!thread->owns_locks(), "must release all locks when leaving VM");
-    thread->frame_anchor()->make_walkable(thread);
-    trans_and_fence(_thread_in_vm, _thread_in_native);
-    // Check for pending. async. exceptions or suspends.
-    if (_thread->has_special_runtime_exit_condition()) _thread->handle_special_runtime_exit_condition(false);
-  }
-
-  ~ThreadToNativeFromVM() {
-    trans_from_native(_thread_in_vm);
-    assert(!_thread->is_pending_jni_exception_check(), "Pending JNI Exception Check");
-    // We don't need to clear_walkable because it will happen automagically when we return to java
-  }
-};
-
-
-class ThreadBlockInVM : public ThreadStateTransition {
- public:
-  ThreadBlockInVM(JavaThread *thread)
-  : ThreadStateTransition(thread) {
-    // Once we are blocked vm expects stack to be walkable
-    thread->frame_anchor()->make_walkable(thread);
-    trans_and_fence(_thread_in_vm, _thread_blocked);
-  }
-  ~ThreadBlockInVM() {
-    trans_and_fence(_thread_blocked, _thread_in_vm);
-    // We don't need to clear_walkable because it will happen automagically when we return to java
-  }
-};
-
-
-// This special transition class is only used to prevent asynchronous exceptions
-// from being installed on vm exit in situations where we can't tolerate them.
-// See bugs: 4324348, 4854693, 4998314, 5040492, 5050705.
-class ThreadInVMfromJavaNoAsyncException : public ThreadStateTransition {
- public:
-  ThreadInVMfromJavaNoAsyncException(JavaThread* thread) : ThreadStateTransition(thread) {
-    trans_from_java(_thread_in_vm);
-  }
-  ~ThreadInVMfromJavaNoAsyncException()  {
-    if (_thread->stack_yellow_reserved_zone_disabled()) {
-      _thread->enable_stack_yellow_reserved_zone();
-    }
-    trans(_thread_in_vm, _thread_in_Java);
-    // NOTE: We do not check for pending. async. exceptions.
-    // If we did and moved the pending async exception over into the
-    // pending exception field, we would need to deopt (currently C2
-    // only). However, to do so would require that we transition back
-    // to the _thread_in_vm state. Instead we postpone the handling of
-    // the async exception.
-
-
-    // Check for pending. suspends only.
-    if (_thread->has_special_runtime_exit_condition())
-      _thread->handle_special_runtime_exit_condition(false);
-  }
-};
-
-// Debug class instantiated in JRT_ENTRY and ITR_ENTRY macro.
-// Can be used to verify properties on enter/exit of the VM.
-
-#ifdef ASSERT
-class VMEntryWrapper {
- public:
-  VMEntryWrapper() {
-    if (VerifyLastFrame) {
-      InterfaceSupport::verify_last_frame();
-    }
-  }
-
-  ~VMEntryWrapper() {
-    InterfaceSupport::check_gc_alot();
-    if (WalkStackALot) {
-      InterfaceSupport::walk_stack();
-    }
-#ifdef COMPILER2
-    // This option is not used by Compiler 1
-    if (StressDerivedPointers) {
-      InterfaceSupport::stress_derived_pointers();
-    }
-#endif
-    if (DeoptimizeALot || DeoptimizeRandom) {
-      InterfaceSupport::deoptimizeAll();
-    }
-    if (ZombieALot) {
-      InterfaceSupport::zombieAll();
-    }
-    if (UnlinkSymbolsALot) {
-      InterfaceSupport::unlinkSymbols();
-    }
-    // do verification AFTER potential deoptimization
-    if (VerifyStack) {
-      InterfaceSupport::verify_stack();
-    }
-
-  }
-};
-
-
-class VMNativeEntryWrapper {
- public:
-  VMNativeEntryWrapper() {
-    if (GCALotAtAllSafepoints) InterfaceSupport::check_gc_alot();
-  }
-
-  ~VMNativeEntryWrapper() {
-    if (GCALotAtAllSafepoints) InterfaceSupport::check_gc_alot();
-  }
-};
-
-#endif
-
-
-// VM-internal runtime interface support
-
-#ifdef ASSERT
-
-class RuntimeHistogramElement : public HistogramElement {
-  public:
-   RuntimeHistogramElement(const char* name);
-};
-
-#define TRACE_CALL(result_type, header)                            \
-  InterfaceSupport::_number_of_calls++;                            \
-  if (CountRuntimeCalls) {                                         \
-    static RuntimeHistogramElement* e = new RuntimeHistogramElement(#header); \
-    if (e != NULL) e->increment_count();                           \
-  }
-#else
-#define TRACE_CALL(result_type, header)                            \
-  /* do nothing */
-#endif
-
-
-// LEAF routines do not lock, GC or throw exceptions
-
-#define VM_LEAF_BASE(result_type, header)                            \
-  TRACE_CALL(result_type, header)                                    \
-  debug_only(NoHandleMark __hm;)                                     \
-  os::verify_stack_alignment();                                      \
-  /* begin of body */
-
-#define VM_ENTRY_BASE_FROM_LEAF(result_type, header, thread)         \
-  TRACE_CALL(result_type, header)                                    \
-  debug_only(ResetNoHandleMark __rnhm;)                              \
-  HandleMarkCleaner __hm(thread);                                    \
-  Thread* THREAD = thread;                                           \
-  os::verify_stack_alignment();                                      \
-  /* begin of body */
-
-
-// ENTRY routines may lock, GC and throw exceptions
-
-#define VM_ENTRY_BASE(result_type, header, thread)                   \
-  TRACE_CALL(result_type, header)                                    \
-  HandleMarkCleaner __hm(thread);                                    \
-  Thread* THREAD = thread;                                           \
-  os::verify_stack_alignment();                                      \
-  /* begin of body */
-
-
-// QUICK_ENTRY routines behave like ENTRY but without a handle mark
-
-#define VM_QUICK_ENTRY_BASE(result_type, header, thread)             \
-  TRACE_CALL(result_type, header)                                    \
-  debug_only(NoHandleMark __hm;)                                     \
-  Thread* THREAD = thread;                                           \
-  os::verify_stack_alignment();                                      \
-  /* begin of body */
-
-
-// Definitions for IRT (Interpreter Runtime)
-// (thread is an argument passed in to all these routines)
-
-#define IRT_ENTRY(result_type, header)                               \
-  result_type header {                                               \
-    ThreadInVMfromJava __tiv(thread);                                \
-    VM_ENTRY_BASE(result_type, header, thread)                       \
-    debug_only(VMEntryWrapper __vew;)
-
-
-#define IRT_LEAF(result_type, header)                                \
-  result_type header {                                               \
-    VM_LEAF_BASE(result_type, header)                                \
-    debug_only(NoSafepointVerifier __nspv(true);)
-
-
-#define IRT_ENTRY_NO_ASYNC(result_type, header)                      \
-  result_type header {                                               \
-    ThreadInVMfromJavaNoAsyncException __tiv(thread);                \
-    VM_ENTRY_BASE(result_type, header, thread)                       \
-    debug_only(VMEntryWrapper __vew;)
-
-#define IRT_END }
-
-
-// Definitions for JRT (Java (Compiler/Shared) Runtime)
-
-#define JRT_ENTRY(result_type, header)                               \
-  result_type header {                                               \
-    ThreadInVMfromJava __tiv(thread);                                \
-    VM_ENTRY_BASE(result_type, header, thread)                       \
-    debug_only(VMEntryWrapper __vew;)
-
-
-#define JRT_LEAF(result_type, header)                                \
-  result_type header {                                               \
-  VM_LEAF_BASE(result_type, header)                                  \
-  debug_only(JRTLeafVerifier __jlv;)
-
-
-#define JRT_ENTRY_NO_ASYNC(result_type, header)                      \
-  result_type header {                                               \
-    ThreadInVMfromJavaNoAsyncException __tiv(thread);                \
-    VM_ENTRY_BASE(result_type, header, thread)                       \
-    debug_only(VMEntryWrapper __vew;)
-
-// Same as JRT Entry but allows for return value after the safepoint
-// to get back into Java from the VM
-#define JRT_BLOCK_ENTRY(result_type, header)                         \
-  result_type header {                                               \
-    TRACE_CALL(result_type, header)                                  \
-    HandleMarkCleaner __hm(thread);
-
-#define JRT_BLOCK                                                    \
-    {                                                                \
-    ThreadInVMfromJava __tiv(thread);                                \
-    Thread* THREAD = thread;                                         \
-    debug_only(VMEntryWrapper __vew;)
-
-#define JRT_BLOCK_NO_ASYNC                                           \
-    {                                                                \
-    ThreadInVMfromJavaNoAsyncException __tiv(thread);                \
-    Thread* THREAD = thread;                                         \
-    debug_only(VMEntryWrapper __vew;)
-
-#define JRT_BLOCK_END }
-
-#define JRT_END }
-
-// Definitions for JNI
-
-#define JNI_ENTRY(result_type, header)                               \
-    JNI_ENTRY_NO_PRESERVE(result_type, header)                       \
-    WeakPreserveExceptionMark __wem(thread);
-
-#define JNI_ENTRY_NO_PRESERVE(result_type, header)                   \
-extern "C" {                                                         \
-  result_type JNICALL header {                                       \
-    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
-    assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
-    ThreadInVMfromNative __tiv(thread);                              \
-    debug_only(VMNativeEntryWrapper __vew;)                          \
-    VM_ENTRY_BASE(result_type, header, thread)
-
-
-// Ensure that the VMNativeEntryWrapper constructor, which can cause
-// a GC, is called outside the NoHandleMark (set via VM_QUICK_ENTRY_BASE).
-#define JNI_QUICK_ENTRY(result_type, header)                         \
-extern "C" {                                                         \
-  result_type JNICALL header {                                       \
-    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
-    assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
-    ThreadInVMfromNative __tiv(thread);                              \
-    debug_only(VMNativeEntryWrapper __vew;)                          \
-    VM_QUICK_ENTRY_BASE(result_type, header, thread)
-
-
-#define JNI_LEAF(result_type, header)                                \
-extern "C" {                                                         \
-  result_type JNICALL header {                                       \
-    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
-    assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
-    VM_LEAF_BASE(result_type, header)
-
-
-// Close the routine and the extern "C"
-#define JNI_END } }
-
-
-
-// Definitions for JVM
-
-#define JVM_ENTRY(result_type, header)                               \
-extern "C" {                                                         \
-  result_type JNICALL header {                                       \
-    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
-    ThreadInVMfromNative __tiv(thread);                              \
-    debug_only(VMNativeEntryWrapper __vew;)                          \
-    VM_ENTRY_BASE(result_type, header, thread)
-
-
-#define JVM_ENTRY_NO_ENV(result_type, header)                        \
-extern "C" {                                                         \
-  result_type JNICALL header {                                       \
-    JavaThread* thread = JavaThread::current();                      \
-    ThreadInVMfromNative __tiv(thread);                              \
-    debug_only(VMNativeEntryWrapper __vew;)                          \
-    VM_ENTRY_BASE(result_type, header, thread)
-
-
-#define JVM_QUICK_ENTRY(result_type, header)                         \
-extern "C" {                                                         \
-  result_type JNICALL header {                                       \
-    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
-    ThreadInVMfromNative __tiv(thread);                              \
-    debug_only(VMNativeEntryWrapper __vew;)                          \
-    VM_QUICK_ENTRY_BASE(result_type, header, thread)
-
-
-#define JVM_LEAF(result_type, header)                                \
-extern "C" {                                                         \
-  result_type JNICALL header {                                       \
-    VM_Exit::block_if_vm_exited();                                   \
-    VM_LEAF_BASE(result_type, header)
-
-
-#define JVM_ENTRY_FROM_LEAF(env, result_type, header)                \
-  { {                                                                \
-    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
-    ThreadInVMfromNative __tiv(thread);                              \
-    debug_only(VMNativeEntryWrapper __vew;)                          \
-    VM_ENTRY_BASE_FROM_LEAF(result_type, header, thread)
-
-
-#define JVM_END } }
-
-#endif // SHARE_VM_RUNTIME_INTERFACESUPPORT_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/runtime/interfaceSupport.inline.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_RUNTIME_INTERFACESUPPORT_INLINE_HPP
+#define SHARE_VM_RUNTIME_INTERFACESUPPORT_INLINE_HPP
+
+#include "gc/shared/gcLocker.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/orderAccess.hpp"
+#include "runtime/os.hpp"
+#include "runtime/safepointMechanism.inline.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+#include "utilities/preserveException.hpp"
+
+// Wrapper for all entry points to the virtual machine.
+
+// InterfaceSupport provides functionality used by the VM_LEAF_BASE and
+// VM_ENTRY_BASE macros. These macros are used to guard entry points into
+// the VM and perform checks upon leave of the VM.
+
+
+class InterfaceSupport: AllStatic {
+# ifdef ASSERT
+ public:
+  static long _scavenge_alot_counter;
+  static long _fullgc_alot_counter;
+  static long _number_of_calls;
+  static long _fullgc_alot_invocation;
+
+  // Helper methods used to implement +ScavengeALot and +FullGCALot
+  static void check_gc_alot() { if (ScavengeALot || FullGCALot) gc_alot(); }
+  static void gc_alot();
+
+  static void walk_stack_from(vframe* start_vf);
+  static void walk_stack();
+
+  static void zombieAll();
+  static void unlinkSymbols();
+  static void deoptimizeAll();
+  static void stress_derived_pointers();
+  static void verify_stack();
+  static void verify_last_frame();
+# endif
+
+ public:
+  static void serialize_thread_state_with_handler(JavaThread* thread) {
+    serialize_thread_state_internal(thread, true);
+  }
+
+  // Should only call this if we know that we have a proper SEH set up.
+  static void serialize_thread_state(JavaThread* thread) {
+    serialize_thread_state_internal(thread, false);
+  }
+
+ private:
+  static void serialize_thread_state_internal(JavaThread* thread, bool needs_exception_handler) {
+    // Make sure new state is seen by VM thread
+    if (os::is_MP()) {
+      if (UseMembar) {
+        // Force a fence between the write above and read below
+        OrderAccess::fence();
+      } else {
+        // store to serialize page so VM thread can do pseudo remote membar
+        if (needs_exception_handler) {
+          os::write_memory_serialize_page_with_handler(thread);
+        } else {
+          os::write_memory_serialize_page(thread);
+        }
+      }
+    }
+  }
+};
+
+
+// Basic class for all thread transition classes.
+
+class ThreadStateTransition : public StackObj {
+ protected:
+  JavaThread* _thread;
+ public:
+  ThreadStateTransition(JavaThread *thread) {
+    _thread = thread;
+    assert(thread != NULL && thread->is_Java_thread(), "must be Java thread");
+  }
+
+  // Change threadstate in a manner, so safepoint can detect changes.
+  // Time-critical: called on exit from every runtime routine
+  static inline void transition(JavaThread *thread, JavaThreadState from, JavaThreadState to) {
+    assert(from != _thread_in_Java, "use transition_from_java");
+    assert(from != _thread_in_native, "use transition_from_native");
+    assert((from & 1) == 0 && (to & 1) == 0, "odd numbers are transitions states");
+    assert(thread->thread_state() == from, "coming from wrong thread state");
+    // Change to transition state
+    thread->set_thread_state((JavaThreadState)(from + 1));
+
+    InterfaceSupport::serialize_thread_state(thread);
+
+    SafepointMechanism::block_if_requested(thread);
+    thread->set_thread_state(to);
+
+    CHECK_UNHANDLED_OOPS_ONLY(thread->clear_unhandled_oops();)
+  }
+
+  // transition_and_fence must be used on any thread state transition
+  // where there might not be a Java call stub on the stack, in
+  // particular on Windows where the Structured Exception Handler is
+  // set up in the call stub. os::write_memory_serialize_page() can
+  // fault and we can't recover from it on Windows without a SEH in
+  // place.
+  static inline void transition_and_fence(JavaThread *thread, JavaThreadState from, JavaThreadState to) {
+    assert(thread->thread_state() == from, "coming from wrong thread state");
+    assert((from & 1) == 0 && (to & 1) == 0, "odd numbers are transitions states");
+    // Change to transition state
+    thread->set_thread_state((JavaThreadState)(from + 1));
+
+    InterfaceSupport::serialize_thread_state_with_handler(thread);
+
+    SafepointMechanism::block_if_requested(thread);
+    thread->set_thread_state(to);
+
+    CHECK_UNHANDLED_OOPS_ONLY(thread->clear_unhandled_oops();)
+  }
+
+  // Same as above, but assumes from = _thread_in_Java. This is simpler, since we
+  // never block on entry to the VM. This will break the code, since e.g. preserve arguments
+  // have not been setup.
+  static inline void transition_from_java(JavaThread *thread, JavaThreadState to) {
+    assert(thread->thread_state() == _thread_in_Java, "coming from wrong thread state");
+    thread->set_thread_state(to);
+  }
+
+  static inline void transition_from_native(JavaThread *thread, JavaThreadState to) {
+    assert((to & 1) == 0, "odd numbers are transitions states");
+    assert(thread->thread_state() == _thread_in_native, "coming from wrong thread state");
+    // Change to transition state
+    thread->set_thread_state(_thread_in_native_trans);
+
+    InterfaceSupport::serialize_thread_state_with_handler(thread);
+
+    // We never install asynchronous exceptions when coming (back) in
+    // to the runtime from native code because the runtime is not set
+    // up to handle exceptions floating around at arbitrary points.
+    if (SafepointMechanism::poll(thread) || thread->is_suspend_after_native()) {
+      JavaThread::check_safepoint_and_suspend_for_native_trans(thread);
+
+      // Clear unhandled oops anywhere where we could block, even if we don't.
+      CHECK_UNHANDLED_OOPS_ONLY(thread->clear_unhandled_oops();)
+    }
+
+    thread->set_thread_state(to);
+  }
+ protected:
+   void trans(JavaThreadState from, JavaThreadState to)  { transition(_thread, from, to); }
+   void trans_from_java(JavaThreadState to)              { transition_from_java(_thread, to); }
+   void trans_from_native(JavaThreadState to)            { transition_from_native(_thread, to); }
+   void trans_and_fence(JavaThreadState from, JavaThreadState to) { transition_and_fence(_thread, from, to); }
+};
+
+class ThreadInVMForHandshake : public ThreadStateTransition {
+  const JavaThreadState _original_state;
+
+  void transition_back() {
+    // This can be invoked from transition states and must return to the original state properly
+    assert(_thread->thread_state() == _thread_in_vm, "should only call when leaving VM after handshake");
+    _thread->set_thread_state(_thread_in_vm_trans);
+
+    InterfaceSupport::serialize_thread_state(_thread);
+
+    SafepointMechanism::block_if_requested(_thread);
+
+    _thread->set_thread_state(_original_state);
+  }
+
+ public:
+
+  ThreadInVMForHandshake(JavaThread* thread) : ThreadStateTransition(thread),
+      _original_state(thread->thread_state()) {
+
+    if (thread->has_last_Java_frame()) {
+      thread->frame_anchor()->make_walkable(thread);
+    }
+
+    thread->set_thread_state(_thread_in_vm);
+  }
+
+  ~ThreadInVMForHandshake() {
+    transition_back();
+  }
+
+};
+
+class ThreadInVMfromJava : public ThreadStateTransition {
+ public:
+  ThreadInVMfromJava(JavaThread* thread) : ThreadStateTransition(thread) {
+    trans_from_java(_thread_in_vm);
+  }
+  ~ThreadInVMfromJava()  {
+    if (_thread->stack_yellow_reserved_zone_disabled()) {
+      _thread->enable_stack_yellow_reserved_zone();
+    }
+    trans(_thread_in_vm, _thread_in_Java);
+    // Check for pending. async. exceptions or suspends.
+    if (_thread->has_special_runtime_exit_condition()) _thread->handle_special_runtime_exit_condition();
+  }
+};
+
+
+class ThreadInVMfromUnknown {
+ private:
+  JavaThread* _thread;
+ public:
+  ThreadInVMfromUnknown() : _thread(NULL) {
+    Thread* t = Thread::current();
+    if (t->is_Java_thread()) {
+      JavaThread* t2 = (JavaThread*) t;
+      if (t2->thread_state() == _thread_in_native) {
+        _thread = t2;
+        ThreadStateTransition::transition_from_native(t2, _thread_in_vm);
+        // Used to have a HandleMarkCleaner but that is dangerous as
+        // it could free a handle in our (indirect, nested) caller.
+        // We expect any handles will be short lived and figure we
+        // don't need an actual HandleMark.
+      }
+    }
+  }
+  ~ThreadInVMfromUnknown()  {
+    if (_thread) {
+      ThreadStateTransition::transition_and_fence(_thread, _thread_in_vm, _thread_in_native);
+    }
+  }
+};
+
+
+class ThreadInVMfromNative : public ThreadStateTransition {
+ public:
+  ThreadInVMfromNative(JavaThread* thread) : ThreadStateTransition(thread) {
+    trans_from_native(_thread_in_vm);
+  }
+  ~ThreadInVMfromNative() {
+    trans_and_fence(_thread_in_vm, _thread_in_native);
+  }
+};
+
+
+class ThreadToNativeFromVM : public ThreadStateTransition {
+ public:
+  ThreadToNativeFromVM(JavaThread *thread) : ThreadStateTransition(thread) {
+    // We are leaving the VM at this point and going directly to native code.
+    // Block, if we are in the middle of a safepoint synchronization.
+    assert(!thread->owns_locks(), "must release all locks when leaving VM");
+    thread->frame_anchor()->make_walkable(thread);
+    trans_and_fence(_thread_in_vm, _thread_in_native);
+    // Check for pending. async. exceptions or suspends.
+    if (_thread->has_special_runtime_exit_condition()) _thread->handle_special_runtime_exit_condition(false);
+  }
+
+  ~ThreadToNativeFromVM() {
+    trans_from_native(_thread_in_vm);
+    assert(!_thread->is_pending_jni_exception_check(), "Pending JNI Exception Check");
+    // We don't need to clear_walkable because it will happen automagically when we return to java
+  }
+};
+
+
+class ThreadBlockInVM : public ThreadStateTransition {
+ public:
+  ThreadBlockInVM(JavaThread *thread)
+  : ThreadStateTransition(thread) {
+    // Once we are blocked vm expects stack to be walkable
+    thread->frame_anchor()->make_walkable(thread);
+    trans_and_fence(_thread_in_vm, _thread_blocked);
+  }
+  ~ThreadBlockInVM() {
+    trans_and_fence(_thread_blocked, _thread_in_vm);
+    // We don't need to clear_walkable because it will happen automagically when we return to java
+  }
+};
+
+
+// This special transition class is only used to prevent asynchronous exceptions
+// from being installed on vm exit in situations where we can't tolerate them.
+// See bugs: 4324348, 4854693, 4998314, 5040492, 5050705.
+class ThreadInVMfromJavaNoAsyncException : public ThreadStateTransition {
+ public:
+  ThreadInVMfromJavaNoAsyncException(JavaThread* thread) : ThreadStateTransition(thread) {
+    trans_from_java(_thread_in_vm);
+  }
+  ~ThreadInVMfromJavaNoAsyncException()  {
+    if (_thread->stack_yellow_reserved_zone_disabled()) {
+      _thread->enable_stack_yellow_reserved_zone();
+    }
+    trans(_thread_in_vm, _thread_in_Java);
+    // NOTE: We do not check for pending. async. exceptions.
+    // If we did and moved the pending async exception over into the
+    // pending exception field, we would need to deopt (currently C2
+    // only). However, to do so would require that we transition back
+    // to the _thread_in_vm state. Instead we postpone the handling of
+    // the async exception.
+
+
+    // Check for pending. suspends only.
+    if (_thread->has_special_runtime_exit_condition())
+      _thread->handle_special_runtime_exit_condition(false);
+  }
+};
+
+// Debug class instantiated in JRT_ENTRY and ITR_ENTRY macro.
+// Can be used to verify properties on enter/exit of the VM.
+
+#ifdef ASSERT
+class VMEntryWrapper {
+ public:
+  VMEntryWrapper();
+  ~VMEntryWrapper();
+};
+
+
+class VMNativeEntryWrapper {
+ public:
+  VMNativeEntryWrapper() {
+    if (GCALotAtAllSafepoints) InterfaceSupport::check_gc_alot();
+  }
+
+  ~VMNativeEntryWrapper() {
+    if (GCALotAtAllSafepoints) InterfaceSupport::check_gc_alot();
+  }
+};
+
+#endif
+
+
+// VM-internal runtime interface support
+
+#ifdef ASSERT
+
+class RuntimeHistogramElement : public HistogramElement {
+  public:
+   RuntimeHistogramElement(const char* name);
+};
+
+#define TRACE_CALL(result_type, header)                            \
+  InterfaceSupport::_number_of_calls++;                            \
+  if (CountRuntimeCalls) {                                         \
+    static RuntimeHistogramElement* e = new RuntimeHistogramElement(#header); \
+    if (e != NULL) e->increment_count();                           \
+  }
+#else
+#define TRACE_CALL(result_type, header)                            \
+  /* do nothing */
+#endif
+
+
+// LEAF routines do not lock, GC or throw exceptions
+
+#define VM_LEAF_BASE(result_type, header)                            \
+  TRACE_CALL(result_type, header)                                    \
+  debug_only(NoHandleMark __hm;)                                     \
+  os::verify_stack_alignment();                                      \
+  /* begin of body */
+
+#define VM_ENTRY_BASE_FROM_LEAF(result_type, header, thread)         \
+  TRACE_CALL(result_type, header)                                    \
+  debug_only(ResetNoHandleMark __rnhm;)                              \
+  HandleMarkCleaner __hm(thread);                                    \
+  Thread* THREAD = thread;                                           \
+  os::verify_stack_alignment();                                      \
+  /* begin of body */
+
+
+// ENTRY routines may lock, GC and throw exceptions
+
+#define VM_ENTRY_BASE(result_type, header, thread)                   \
+  TRACE_CALL(result_type, header)                                    \
+  HandleMarkCleaner __hm(thread);                                    \
+  Thread* THREAD = thread;                                           \
+  os::verify_stack_alignment();                                      \
+  /* begin of body */
+
+
+// QUICK_ENTRY routines behave like ENTRY but without a handle mark
+
+#define VM_QUICK_ENTRY_BASE(result_type, header, thread)             \
+  TRACE_CALL(result_type, header)                                    \
+  debug_only(NoHandleMark __hm;)                                     \
+  Thread* THREAD = thread;                                           \
+  os::verify_stack_alignment();                                      \
+  /* begin of body */
+
+
+// Definitions for IRT (Interpreter Runtime)
+// (thread is an argument passed in to all these routines)
+
+#define IRT_ENTRY(result_type, header)                               \
+  result_type header {                                               \
+    ThreadInVMfromJava __tiv(thread);                                \
+    VM_ENTRY_BASE(result_type, header, thread)                       \
+    debug_only(VMEntryWrapper __vew;)
+
+
+#define IRT_LEAF(result_type, header)                                \
+  result_type header {                                               \
+    VM_LEAF_BASE(result_type, header)                                \
+    debug_only(NoSafepointVerifier __nspv(true);)
+
+
+#define IRT_ENTRY_NO_ASYNC(result_type, header)                      \
+  result_type header {                                               \
+    ThreadInVMfromJavaNoAsyncException __tiv(thread);                \
+    VM_ENTRY_BASE(result_type, header, thread)                       \
+    debug_only(VMEntryWrapper __vew;)
+
+#define IRT_END }
+
+
+// Definitions for JRT (Java (Compiler/Shared) Runtime)
+
+#define JRT_ENTRY(result_type, header)                               \
+  result_type header {                                               \
+    ThreadInVMfromJava __tiv(thread);                                \
+    VM_ENTRY_BASE(result_type, header, thread)                       \
+    debug_only(VMEntryWrapper __vew;)
+
+
+#define JRT_LEAF(result_type, header)                                \
+  result_type header {                                               \
+  VM_LEAF_BASE(result_type, header)                                  \
+  debug_only(JRTLeafVerifier __jlv;)
+
+
+#define JRT_ENTRY_NO_ASYNC(result_type, header)                      \
+  result_type header {                                               \
+    ThreadInVMfromJavaNoAsyncException __tiv(thread);                \
+    VM_ENTRY_BASE(result_type, header, thread)                       \
+    debug_only(VMEntryWrapper __vew;)
+
+// Same as JRT Entry but allows for return value after the safepoint
+// to get back into Java from the VM
+#define JRT_BLOCK_ENTRY(result_type, header)                         \
+  result_type header {                                               \
+    TRACE_CALL(result_type, header)                                  \
+    HandleMarkCleaner __hm(thread);
+
+#define JRT_BLOCK                                                    \
+    {                                                                \
+    ThreadInVMfromJava __tiv(thread);                                \
+    Thread* THREAD = thread;                                         \
+    debug_only(VMEntryWrapper __vew;)
+
+#define JRT_BLOCK_NO_ASYNC                                           \
+    {                                                                \
+    ThreadInVMfromJavaNoAsyncException __tiv(thread);                \
+    Thread* THREAD = thread;                                         \
+    debug_only(VMEntryWrapper __vew;)
+
+#define JRT_BLOCK_END }
+
+#define JRT_END }
+
+// Definitions for JNI
+
+#define JNI_ENTRY(result_type, header)                               \
+    JNI_ENTRY_NO_PRESERVE(result_type, header)                       \
+    WeakPreserveExceptionMark __wem(thread);
+
+#define JNI_ENTRY_NO_PRESERVE(result_type, header)                   \
+extern "C" {                                                         \
+  result_type JNICALL header {                                       \
+    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+    assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
+    ThreadInVMfromNative __tiv(thread);                              \
+    debug_only(VMNativeEntryWrapper __vew;)                          \
+    VM_ENTRY_BASE(result_type, header, thread)
+
+
+// Ensure that the VMNativeEntryWrapper constructor, which can cause
+// a GC, is called outside the NoHandleMark (set via VM_QUICK_ENTRY_BASE).
+#define JNI_QUICK_ENTRY(result_type, header)                         \
+extern "C" {                                                         \
+  result_type JNICALL header {                                       \
+    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+    assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
+    ThreadInVMfromNative __tiv(thread);                              \
+    debug_only(VMNativeEntryWrapper __vew;)                          \
+    VM_QUICK_ENTRY_BASE(result_type, header, thread)
+
+
+#define JNI_LEAF(result_type, header)                                \
+extern "C" {                                                         \
+  result_type JNICALL header {                                       \
+    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+    assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
+    VM_LEAF_BASE(result_type, header)
+
+
+// Close the routine and the extern "C"
+#define JNI_END } }
+
+
+
+// Definitions for JVM
+
+#define JVM_ENTRY(result_type, header)                               \
+extern "C" {                                                         \
+  result_type JNICALL header {                                       \
+    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+    ThreadInVMfromNative __tiv(thread);                              \
+    debug_only(VMNativeEntryWrapper __vew;)                          \
+    VM_ENTRY_BASE(result_type, header, thread)
+
+
+#define JVM_ENTRY_NO_ENV(result_type, header)                        \
+extern "C" {                                                         \
+  result_type JNICALL header {                                       \
+    JavaThread* thread = JavaThread::current();                      \
+    ThreadInVMfromNative __tiv(thread);                              \
+    debug_only(VMNativeEntryWrapper __vew;)                          \
+    VM_ENTRY_BASE(result_type, header, thread)
+
+
+#define JVM_QUICK_ENTRY(result_type, header)                         \
+extern "C" {                                                         \
+  result_type JNICALL header {                                       \
+    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+    ThreadInVMfromNative __tiv(thread);                              \
+    debug_only(VMNativeEntryWrapper __vew;)                          \
+    VM_QUICK_ENTRY_BASE(result_type, header, thread)
+
+
+#define JVM_LEAF(result_type, header)                                \
+extern "C" {                                                         \
+  result_type JNICALL header {                                       \
+    VM_Exit::block_if_vm_exited();                                   \
+    VM_LEAF_BASE(result_type, header)
+
+
+#define JVM_ENTRY_FROM_LEAF(env, result_type, header)                \
+  { {                                                                \
+    JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+    ThreadInVMfromNative __tiv(thread);                              \
+    debug_only(VMNativeEntryWrapper __vew;)                          \
+    VM_ENTRY_BASE_FROM_LEAF(result_type, header, thread)
+
+
+#define JVM_END } }
+
+#endif // SHARE_VM_RUNTIME_INTERFACESUPPORT_INLINE_HPP
--- a/src/hotspot/share/runtime/java.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/java.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -56,7 +56,7 @@
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/deoptimization.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/memprofiler.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/share/runtime/javaCalls.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/javaCalls.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "prims/jniCheck.hpp"
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/share/runtime/mutex.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/mutex.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "runtime/atomic.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutex.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/osThread.hpp"
--- a/src/hotspot/share/runtime/objectMonitor.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/objectMonitor.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -30,7 +30,7 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/objectMonitor.inline.hpp"
--- a/src/hotspot/share/runtime/objectMonitor.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/objectMonitor.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,6 +31,8 @@
 #include "runtime/park.hpp"
 #include "runtime/perfData.hpp"
 
+class ObjectMonitor;
+
 // ObjectWaiter serves as a "proxy" or surrogate thread.
 // TODO-FIXME: Eliminate ObjectWaiter and use the thread-specific
 // ParkEvent instead.  Beware, however, that the JVMTI code
--- a/src/hotspot/share/runtime/os.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/os.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -48,7 +48,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/share/runtime/os.hpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/os.hpp	Fri Mar 16 09:12:13 2018 -0400
@@ -30,7 +30,8 @@
 #include "metaprogramming/isRegisteredEnum.hpp"
 #include "metaprogramming/integralConstant.hpp"
 #include "runtime/extendedPC.hpp"
-#include "runtime/handles.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/ostream.hpp"
 #include "utilities/macros.hpp"
 #ifndef _WINDOWS
 # include <setjmp.h>
@@ -54,6 +55,7 @@
 class DLL;
 class FileHandle;
 class NativeCallStack;
+class methodHandle;
 
 template<class E> class GrowableArray;
 
--- a/src/hotspot/share/runtime/safepoint.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/safepoint.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -47,7 +47,7 @@
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/deoptimization.hpp"
 #include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/osThread.hpp"
--- a/src/hotspot/share/runtime/serviceThread.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/serviceThread.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -23,7 +23,7 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/serviceThread.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/hotspot/share/runtime/sharedRuntime.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/sharedRuntime.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -56,7 +56,7 @@
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/sharedRuntime.hpp"
--- a/src/hotspot/share/runtime/sharedRuntimeTrans.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/sharedRuntimeTrans.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "jni.h"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 
 // This file contains copies of the fdlibm routines used by
--- a/src/hotspot/share/runtime/sharedRuntimeTrig.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/sharedRuntimeTrig.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "jni.h"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/sharedRuntimeMath.hpp"
 
--- a/src/hotspot/share/runtime/simpleThresholdPolicy.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/simpleThresholdPolicy.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "compiler/compileBroker.hpp"
+#include "gc/shared/gcLocker.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/simpleThresholdPolicy.hpp"
--- a/src/hotspot/share/runtime/stubRoutines.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/stubRoutines.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,7 @@
 #include "memory/resourceArea.hpp"
 #include "oops/access.inline.hpp"
 #include "oops/oop.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/timerTrace.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
--- a/src/hotspot/share/runtime/sweeper.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/sweeper.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,6 +35,7 @@
 #include "oops/method.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/compilationPolicy.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/orderAccess.inline.hpp"
 #include "runtime/os.hpp"
--- a/src/hotspot/share/runtime/synchronizer.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/synchronizer.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -34,7 +34,7 @@
 #include "runtime/atomic.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/objectMonitor.inline.hpp"
--- a/src/hotspot/share/runtime/thread.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/thread.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -69,7 +69,7 @@
 #include "runtime/globals.hpp"
 #include "runtime/handshake.hpp"
 #include "runtime/init.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
--- a/src/hotspot/share/runtime/vmThread.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/vmThread.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -31,7 +31,7 @@
 #include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/verifyOopClosure.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/os.hpp"
 #include "runtime/safepoint.hpp"
--- a/src/hotspot/share/runtime/vm_operations.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/runtime/vm_operations.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -35,7 +35,7 @@
 #include "oops/symbol.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/deoptimization.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/sweeper.hpp"
 #include "runtime/thread.inline.hpp"
 #include "runtime/threadSMR.inline.hpp"
--- a/src/hotspot/share/services/gcNotifier.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/services/gcNotifier.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,7 @@
 #include "classfile/vmSymbols.hpp"
 #include "oops/objArrayOop.inline.hpp"
 #include "oops/oop.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutex.hpp"
--- a/src/hotspot/share/services/heapDumper.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/services/heapDumper.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -37,6 +37,7 @@
 #include "oops/objArrayOop.inline.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
+#include "runtime/handles.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.hpp"
 #include "runtime/os.hpp"
--- a/src/hotspot/share/services/lowMemoryDetector.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/services/lowMemoryDetector.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -27,7 +27,7 @@
 #include "classfile/vmSymbols.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/mutex.hpp"
--- a/src/hotspot/share/services/management.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/src/hotspot/share/services/management.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -38,7 +38,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/globals.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/os.hpp"
--- a/test/hotspot/gtest/classfile/test_symbolTable.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/test/hotspot/gtest/classfile/test_symbolTable.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -22,7 +22,7 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "classfile/symbolTable.hpp"
 #include "unittest.hpp"
 
--- a/test/hotspot/gtest/code/test_vtableStub.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/test/hotspot/gtest/code/test_vtableStub.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -24,7 +24,7 @@
 
 #include "precompiled.hpp"
 #include "code/vtableStubs.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "unittest.hpp"
 
 TEST_VM(code, vtableStubs) {
--- a/test/hotspot/gtest/gc/shared/test_oopStorage.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/test/hotspot/gtest/gc/shared/test_oopStorage.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -30,7 +30,7 @@
 #include "metaprogramming/conditional.hpp"
 #include "metaprogramming/enableIf.hpp"
 #include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/mutex.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/thread.hpp"
--- a/test/hotspot/gtest/logging/test_gcTraceTime.cpp	Fri Mar 16 08:26:53 2018 -0400
+++ b/test/hotspot/gtest/logging/test_gcTraceTime.cpp	Fri Mar 16 09:12:13 2018 -0400
@@ -26,7 +26,7 @@
 #include "logTestFixture.hpp"
 #include "logTestUtils.inline.hpp"
 #include "logging/log.hpp"
-#include "runtime/interfaceSupport.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
 #include "unittest.hpp"
 
 class GCTraceTimeTest : public LogTestFixture {