--- a/src/hotspot/share/classfile/classListParser.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/classfile/classListParser.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -34,6 +34,7 @@
#include "memory/metaspaceShared.hpp"
#include "memory/resourceArea.hpp"
#include "runtime/fieldType.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/javaCalls.hpp"
#include "utilities/defaultStream.hpp"
#include "utilities/hashtable.inline.hpp"
--- a/src/hotspot/share/classfile/classLoaderData.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/classfile/classLoaderData.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -68,6 +68,7 @@
#include "oops/objArrayOop.inline.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/atomic.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/javaCalls.hpp"
#include "runtime/jniHandles.hpp"
#include "runtime/mutex.hpp"
--- a/src/hotspot/share/classfile/stringTable.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/classfile/stringTable.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -39,6 +39,7 @@
#include "oops/oop.inline.hpp"
#include "oops/typeArrayOop.inline.hpp"
#include "runtime/atomic.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/mutexLocker.hpp"
#include "services/diagnosticCommand.hpp"
#include "utilities/hashtable.inline.hpp"
--- a/src/hotspot/share/classfile/systemDictionaryShared.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/classfile/systemDictionaryShared.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -49,6 +49,7 @@
#include "oops/objArrayOop.inline.hpp"
#include "oops/oop.inline.hpp"
#include "oops/typeArrayOop.inline.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/java.hpp"
#include "runtime/javaCalls.hpp"
#include "runtime/mutexLocker.hpp"
--- a/src/hotspot/share/classfile/verificationType.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/classfile/verificationType.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -27,6 +27,7 @@
#include "classfile/systemDictionaryShared.hpp"
#include "classfile/verificationType.hpp"
#include "classfile/verifier.hpp"
+#include "runtime/handles.inline.hpp"
VerificationType VerificationType::from_tag(u1 tag) {
switch (tag) {
--- a/src/hotspot/share/code/icBuffer.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/code/icBuffer.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -35,6 +35,7 @@
#include "memory/universe.hpp"
#include "oops/method.hpp"
#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/stubRoutines.hpp"
--- a/src/hotspot/share/code/location.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/code/location.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "code/debugInfo.hpp"
#include "code/location.hpp"
+#include "runtime/handles.inline.hpp"
void Location::print_on(outputStream* st) const {
if(type() == invalid) {
--- a/src/hotspot/share/compiler/oopMap.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/compiler/oopMap.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -33,6 +33,7 @@
#include "memory/iterator.hpp"
#include "memory/resourceArea.hpp"
#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/signature.hpp"
#include "utilities/align.hpp"
#ifdef COMPILER1
--- a/src/hotspot/share/memory/oopFactory.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/memory/oopFactory.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -36,6 +36,7 @@
#include "oops/objArrayOop.hpp"
#include "oops/oop.inline.hpp"
#include "oops/typeArrayOop.inline.hpp"
+#include "runtime/handles.inline.hpp"
typeArrayOop oopFactory::new_charArray(const char* utf8_str, TRAPS) {
--- a/src/hotspot/share/oops/arrayKlass.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/oops/arrayKlass.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -37,6 +37,7 @@
#include "oops/instanceKlass.hpp"
#include "oops/objArrayOop.hpp"
#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
int ArrayKlass::static_size(int header_size) {
// size of an array klass object
--- a/src/hotspot/share/oops/instanceKlass.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/oops/instanceKlass.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -1014,6 +1014,10 @@
return i;
}
+instanceHandle InstanceKlass::allocate_instance_handle(TRAPS) {
+ return instanceHandle(THREAD, allocate_instance(THREAD));
+}
+
void InstanceKlass::check_valid_for_instantiation(bool throwError, TRAPS) {
if (is_interface() || is_abstract()) {
ResourceMark rm(THREAD);
--- a/src/hotspot/share/oops/instanceKlass.hpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/oops/instanceKlass.hpp Wed Mar 14 12:12:00 2018 +0100
@@ -911,7 +911,7 @@
instanceOop allocate_instance(TRAPS);
// additional member function to return a handle
- instanceHandle allocate_instance_handle(TRAPS) { return instanceHandle(THREAD, allocate_instance(THREAD)); }
+ instanceHandle allocate_instance_handle(TRAPS);
objArrayOop allocate_objArray(int n, int length, TRAPS);
// Helper function
--- a/src/hotspot/share/oops/klass.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/oops/klass.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -39,6 +39,7 @@
#include "oops/klass.inline.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/atomic.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/orderAccess.inline.hpp"
#include "trace/traceMacros.hpp"
#include "utilities/macros.hpp"
--- a/src/hotspot/share/runtime/handles.hpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/runtime/handles.hpp Wed Mar 14 12:12:00 2018 +0100
@@ -72,7 +72,7 @@
public:
// Constructors
Handle() { _handle = NULL; }
- Handle(Thread* thread, oop obj);
+ inline Handle(Thread* thread, oop obj);
// General access
oop operator () () const { return obj(); }
@@ -108,9 +108,7 @@
public: \
/* Constructors */ \
type##Handle () : Handle() {} \
- type##Handle (Thread* thread, type##Oop obj) : Handle(thread, (oop)obj) { \
- assert(is_null() || ((oop)obj)->is_a(), "illegal type"); \
- } \
+ inline type##Handle (Thread* thread, type##Oop obj); \
\
/* Operators for ease of use */ \
type##Oop operator () () const { return obj(); } \
--- a/src/hotspot/share/runtime/handles.inline.hpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/runtime/handles.inline.hpp Wed Mar 14 12:12:00 2018 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -40,6 +40,17 @@
}
}
+// Inline constructors for Specific Handles for different oop types
+#define DEF_HANDLE_CONSTR(type, is_a) \
+inline type##Handle::type##Handle (Thread* thread, type##Oop obj) : Handle(thread, (oop)obj) { \
+ assert(is_null() || ((oop)obj)->is_a(), "illegal type"); \
+}
+
+DEF_HANDLE_CONSTR(instance , is_instance_noinline )
+DEF_HANDLE_CONSTR(array , is_array_noinline )
+DEF_HANDLE_CONSTR(objArray , is_objArray_noinline )
+DEF_HANDLE_CONSTR(typeArray, is_typeArray_noinline)
+
// Constructor for metadata handles
#define DEF_METADATA_HANDLE_FN(name, type) \
inline name##Handle::name##Handle(type* obj) : _value(obj), _thread(NULL) { \
--- a/src/hotspot/share/runtime/jniHandles.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/runtime/jniHandles.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -27,6 +27,7 @@
#include "logging/log.hpp"
#include "memory/iterator.hpp"
#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/jniHandles.inline.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/thread.inline.hpp"
--- a/src/hotspot/share/services/diagnosticFramework.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/services/diagnosticFramework.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -27,6 +27,7 @@
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/javaCalls.hpp"
#include "runtime/mutexLocker.hpp"
#include "services/diagnosticArgument.hpp"
--- a/src/hotspot/share/services/memoryService.cpp Wed Mar 14 07:27:19 2018 -0400
+++ b/src/hotspot/share/services/memoryService.cpp Wed Mar 14 12:12:00 2018 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -31,6 +31,7 @@
#include "memory/memRegion.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/globals.hpp"
+#include "runtime/handles.inline.hpp"
#include "runtime/javaCalls.hpp"
#include "services/classLoadingService.hpp"
#include "services/lowMemoryDetector.hpp"