/hg/release/icedtea7-forest-2.6/hotspot: 12 new changesets
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Mon Mar 4 22:56:11 UTC 2019
changeset f3820315a79d in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=f3820315a79d
author: andrew
date: Thu Feb 21 04:50:25 2019 +0000
Added tag icedtea-2.6.17pre01 for changeset 65b809089544
changeset 87cbcaecf4e4 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=87cbcaecf4e4
author: dholmes
date: Thu Feb 07 05:19:56 2019 +0000
8205714: Initial class initialization
Reviewed-by: acorn, coleenp, kvn, vlivanov
changeset e14a43e8767f in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=e14a43e8767f
author: mbalao
date: Thu Feb 07 05:28:56 2019 +0000
8210094: Better loading of classloader classes
Reviewed-by: adinn, andrew
changeset 7e4523af00b7 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=7e4523af00b7
author: dbuck
date: Thu Feb 07 05:42:54 2019 +0000
8141491: Unaligned memory access in Bits.c
Summary: Introduce alignment-safe Copy::conjoint_swap and JVM_CopySwapMemory
Reviewed-by: mikael, dholmes
changeset 0d5fbdb57253 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=0d5fbdb57253
author: jwilhelm
date: Thu Feb 07 06:03:59 2019 +0000
8199552: Update to build scripts
Reviewed-by: jwilhelm
Contributed-by: magnus.ihse.bursie at oracle.com
changeset 752c4ce59972 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=752c4ce59972
author: thartmann
date: Fri Jun 20 08:14:30 2014 +0200
8008321: compile.cpp verify_graph_edges uses bool as int
Summary: The dead_nodes counter in verify_graph_edges(..) has the type bool but is used as int.
Reviewed-by: roland, anoll
changeset 58964d7eef11 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=58964d7eef11
author: mbalao
date: Tue Feb 12 04:23:21 2019 +0000
8218798: slowdebug build broken by JDK-8205714
Summary: Add missing instanceKlass::cast in assert
Reviewed-by: andrew
changeset 87b0534bbec2 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=87b0534bbec2
author: andrew
date: Fri Feb 15 05:16:16 2019 +0000
Added tag jdk7u211-b00 for changeset 58964d7eef11
changeset e1b1da173e19 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=e1b1da173e19
author: andrew
date: Thu Feb 21 03:38:57 2019 +0000
Added tag jdk7u211-b01 for changeset 87b0534bbec2
changeset 071172c39b0e in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=071172c39b0e
author: andrew
date: Fri Feb 22 06:16:04 2019 +0000
Merge jdk7u211-b01
changeset 8e4bf277c1a0 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=8e4bf277c1a0
author: andrew
date: Mon Feb 25 00:14:12 2019 +0000
Added tag jdk7u211-b02 for changeset e1b1da173e19
changeset d47e668978c8 in /hg/release/icedtea7-forest-2.6/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/hotspot?cmd=changeset;node=d47e668978c8
author: andrew
date: Mon Feb 25 01:45:17 2019 +0000
Merge jdk7u211-b02
diffstat:
.hgtags | 4 +
make/aix/makefiles/mapfile-vers-debug | 3 +-
make/aix/makefiles/mapfile-vers-product | 3 +-
make/bsd/makefiles/gcc.make | 1 +
make/bsd/makefiles/mapfile-vers-debug | 3 +-
make/bsd/makefiles/mapfile-vers-product | 3 +-
make/linux/makefiles/gcc.make | 1 +
make/linux/makefiles/mapfile-vers-debug | 3 +-
make/linux/makefiles/mapfile-vers-product | 3 +-
make/solaris/makefiles/gcc.make | 1 +
make/solaris/makefiles/mapfile-vers | 3 +-
src/share/vm/classfile/classLoaderDependencies.cpp | 23 ++---
src/share/vm/classfile/classLoaderDependencies.hpp | 4 +-
src/share/vm/classfile/dictionary.cpp | 28 +------
src/share/vm/classfile/systemDictionary.cpp | 15 +++-
src/share/vm/classfile/verificationType.cpp | 6 +-
src/share/vm/classfile/verifier.cpp | 7 +-
src/share/vm/oops/cpCacheOop.cpp | 14 +++-
src/share/vm/opto/compile.cpp | 8 +-
src/share/vm/prims/jvm.cpp | 84 +++++++++++++++++++--
src/share/vm/prims/jvm.h | 10 ++-
src/share/vm/runtime/interfaceSupport.hpp | 2 +-
src/share/vm/runtime/sharedRuntime.cpp | 8 ++
src/share/vm/utilities/copy.cpp | 6 +-
src/share/vm/utilities/copy.hpp | 2 +-
25 files changed, 163 insertions(+), 82 deletions(-)
diffs (truncated from 653 to 500 lines):
diff -r 65b809089544 -r d47e668978c8 .hgtags
--- a/.hgtags Wed Feb 20 14:43:02 2019 +0000
+++ b/.hgtags Mon Feb 25 01:45:17 2019 +0000
@@ -933,3 +933,7 @@
e200fdadc48736c9a455cc826e71cdb64c4a13dc icedtea-2.6.15
a04d398041938b47a3eed225c71f298a3e9410f9 jdk7u201-b00
ae6068b02261bc413ccc934b2260f1d6277e18ee icedtea-2.6.16
+65b809089544d0723a33745d91265999afa08aeb icedtea-2.6.17pre01
+58964d7eef111a6c1b361e32daeae41cbe9e7f7c jdk7u211-b00
+87b0534bbec2c217e7c4574e962b93b3c5a61193 jdk7u211-b01
+e1b1da173e19b3abe6660d601f3a5cbf116cf8f5 jdk7u211-b02
diff -r 65b809089544 -r d47e668978c8 make/aix/makefiles/mapfile-vers-debug
--- a/make/aix/makefiles/mapfile-vers-debug Wed Feb 20 14:43:02 2019 +0000
+++ b/make/aix/makefiles/mapfile-vers-debug Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 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
@@ -63,6 +63,7 @@
JVM_ConstantPoolGetSize;
JVM_ConstantPoolGetStringAt;
JVM_ConstantPoolGetUTF8At;
+ JVM_CopySwapMemory;
JVM_CountStackFrames;
JVM_CurrentClassLoader;
JVM_CurrentLoadedClass;
diff -r 65b809089544 -r d47e668978c8 make/aix/makefiles/mapfile-vers-product
--- a/make/aix/makefiles/mapfile-vers-product Wed Feb 20 14:43:02 2019 +0000
+++ b/make/aix/makefiles/mapfile-vers-product Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 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
@@ -63,6 +63,7 @@
JVM_ConstantPoolGetSize;
JVM_ConstantPoolGetStringAt;
JVM_ConstantPoolGetUTF8At;
+ JVM_CopySwapMemory;
JVM_CountStackFrames;
JVM_CurrentClassLoader;
JVM_CurrentLoadedClass;
diff -r 65b809089544 -r d47e668978c8 make/bsd/makefiles/gcc.make
--- a/make/bsd/makefiles/gcc.make Wed Feb 20 14:43:02 2019 +0000
+++ b/make/bsd/makefiles/gcc.make Mon Feb 25 01:45:17 2019 +0000
@@ -118,6 +118,7 @@
CFLAGS += -fno-exceptions
CFLAGS += -pthread
CFLAGS += -fcheck-new
+CFLAGS += -fstack-protector
# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
diff -r 65b809089544 -r d47e668978c8 make/bsd/makefiles/mapfile-vers-debug
--- a/make/bsd/makefiles/mapfile-vers-debug Wed Feb 20 14:43:02 2019 +0000
+++ b/make/bsd/makefiles/mapfile-vers-debug Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 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
@@ -61,6 +61,7 @@
_JVM_ConstantPoolGetSize
_JVM_ConstantPoolGetStringAt
_JVM_ConstantPoolGetUTF8At
+ _JVM_CopySwapMemory
_JVM_CountStackFrames
_JVM_CurrentClassLoader
_JVM_CurrentLoadedClass
diff -r 65b809089544 -r d47e668978c8 make/bsd/makefiles/mapfile-vers-product
--- a/make/bsd/makefiles/mapfile-vers-product Wed Feb 20 14:43:02 2019 +0000
+++ b/make/bsd/makefiles/mapfile-vers-product Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 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
@@ -61,6 +61,7 @@
_JVM_ConstantPoolGetSize
_JVM_ConstantPoolGetStringAt
_JVM_ConstantPoolGetUTF8At
+ _JVM_CopySwapMemory
_JVM_CountStackFrames
_JVM_CurrentClassLoader
_JVM_CurrentLoadedClass
diff -r 65b809089544 -r d47e668978c8 make/linux/makefiles/gcc.make
--- a/make/linux/makefiles/gcc.make Wed Feb 20 14:43:02 2019 +0000
+++ b/make/linux/makefiles/gcc.make Mon Feb 25 01:45:17 2019 +0000
@@ -89,6 +89,7 @@
CFLAGS += -fno-exceptions
CFLAGS += -D_REENTRANT
CFLAGS += -fcheck-new
+CFLAGS += -fstack-protector
# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
diff -r 65b809089544 -r d47e668978c8 make/linux/makefiles/mapfile-vers-debug
--- a/make/linux/makefiles/mapfile-vers-debug Wed Feb 20 14:43:02 2019 +0000
+++ b/make/linux/makefiles/mapfile-vers-debug Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 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
@@ -63,6 +63,7 @@
JVM_ConstantPoolGetSize;
JVM_ConstantPoolGetStringAt;
JVM_ConstantPoolGetUTF8At;
+ JVM_CopySwapMemory;
JVM_CountStackFrames;
JVM_CurrentClassLoader;
JVM_CurrentLoadedClass;
diff -r 65b809089544 -r d47e668978c8 make/linux/makefiles/mapfile-vers-product
--- a/make/linux/makefiles/mapfile-vers-product Wed Feb 20 14:43:02 2019 +0000
+++ b/make/linux/makefiles/mapfile-vers-product Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 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
@@ -63,6 +63,7 @@
JVM_ConstantPoolGetSize;
JVM_ConstantPoolGetStringAt;
JVM_ConstantPoolGetUTF8At;
+ JVM_CopySwapMemory;
JVM_CountStackFrames;
JVM_CurrentClassLoader;
JVM_CurrentLoadedClass;
diff -r 65b809089544 -r d47e668978c8 make/solaris/makefiles/gcc.make
--- a/make/solaris/makefiles/gcc.make Wed Feb 20 14:43:02 2019 +0000
+++ b/make/solaris/makefiles/gcc.make Mon Feb 25 01:45:17 2019 +0000
@@ -75,6 +75,7 @@
CFLAGS += -fno-exceptions
CFLAGS += -D_REENTRANT
CFLAGS += -fcheck-new
+CFLAGS += -fstack-protector
ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
diff -r 65b809089544 -r d47e668978c8 make/solaris/makefiles/mapfile-vers
--- a/make/solaris/makefiles/mapfile-vers Wed Feb 20 14:43:02 2019 +0000
+++ b/make/solaris/makefiles/mapfile-vers Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 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
@@ -64,6 +64,7 @@
JVM_ConstantPoolGetStringAt;
JVM_ConstantPoolGetUTF8At;
JVM_CountStackFrames;
+ JVM_CopySwapMemory;
JVM_CurrentClassLoader;
JVM_CurrentLoadedClass;
JVM_CurrentThread;
diff -r 65b809089544 -r d47e668978c8 src/share/vm/classfile/classLoaderDependencies.cpp
--- a/src/share/vm/classfile/classLoaderDependencies.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/classfile/classLoaderDependencies.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates.
+ * Copyright (c) 2018, 2019, Red Hat, Inc. and/or its affiliates.
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -28,35 +28,30 @@
#include "memory/oopFactory.hpp"
#include "utilities/debug.hpp"
-void ClassLoaderDependencies::record_dependency(KlassHandle from_klass,
- KlassHandle to_klass,
+void ClassLoaderDependencies::record_dependency(oop from_class_loader,
+ oop to_class_loader,
TRAPS) {
-
- oop to_class_loader_oop = to_klass->class_loader();
-
// Dependency to the Null Class Loader doesn't
// need to be recorded because it never goes away.
- if (to_class_loader_oop == NULL) {
+ if (to_class_loader == NULL) {
return;
}
- oop from_class_loader_oop = from_klass->class_loader();
-
// The Null Class Loader does not generate dependencies to record.
- if (from_class_loader_oop == NULL) {
+ if (from_class_loader == NULL) {
return;
}
- oop current_class_loader_oop = from_class_loader_oop;
+ oop current_class_loader_oop = from_class_loader;
do {
- if (current_class_loader_oop == to_class_loader_oop) {
+ if (current_class_loader_oop == to_class_loader) {
return; // This class loader is in the parent list, no need to add it.
}
current_class_loader_oop = java_lang_ClassLoader::parent(current_class_loader_oop);
} while (current_class_loader_oop != NULL);
- ClassLoaderDependencies::add(Handle(THREAD, from_class_loader_oop),
- Handle(THREAD, to_class_loader_oop),
+ ClassLoaderDependencies::add(Handle(THREAD, from_class_loader),
+ Handle(THREAD, to_class_loader),
CHECK);
}
diff -r 65b809089544 -r d47e668978c8 src/share/vm/classfile/classLoaderDependencies.hpp
--- a/src/share/vm/classfile/classLoaderDependencies.hpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/classfile/classLoaderDependencies.hpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates.
+ * Copyright (c) 2018, 2019, Red Hat, Inc. and/or its affiliates.
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -30,7 +30,7 @@
class ClassLoaderDependencies {
public:
- static void record_dependency(KlassHandle from_klass, KlassHandle to_klass, TRAPS);
+ static void record_dependency(oop from_class_loader, oop to_class_loader, TRAPS);
private:
static void add(Handle from_class_loader_h, Handle dependency, TRAPS);
static void locked_add(objArrayHandle list_head, objArrayHandle last_handle, objArrayHandle new_dependency, TRAPS);
diff -r 65b809089544 -r d47e668978c8 src/share/vm/classfile/dictionary.cpp
--- a/src/share/vm/classfile/dictionary.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/classfile/dictionary.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -230,9 +230,6 @@
oop k_def_class_loader = ik->class_loader();
// Do we need to delete this system dictionary entry?
- bool purge_entry = false;
-
- // Do we need to delete this system dictionary entry?
if (!is_alive->do_object_b(class_loader)) {
// If the loader is not live this entry should always be
// removed (will never be looked up again). Note that this is
@@ -255,28 +252,7 @@
// Clean up C heap
ik->release_C_heap_structures();
}
- // Also remove this system dictionary entry.
- purge_entry = true;
-
- } else {
- // The loader in this entry is alive. If the klass is dead,
- // the loader must be an initiating loader (rather than the
- // defining loader). Remove this entry.
- if (!is_alive->do_object_b(e)) {
- guarantee(!is_alive->do_object_b(k_def_class_loader),
- "defining loader should not be live if klass is not");
- // If we get here, the class_loader must not be the defining
- // loader, it must be an initiating one.
- assert(k_def_class_loader != class_loader,
- "cannot have live defining loader and unreachable klass");
-
- // Loader is live, but class and its defining loader are dead.
- // Remove the entry. The class is going away.
- purge_entry = true;
- }
- }
-
- if (purge_entry) {
+ // Remove this system dictionary entry.
*p = probe->next();
if (probe == _current_class_entry) {
_current_class_entry = NULL;
diff -r 65b809089544 -r d47e668978c8 src/share/vm/classfile/systemDictionary.cpp
--- a/src/share/vm/classfile/systemDictionary.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/classfile/systemDictionary.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -23,6 +23,7 @@
*/
#include "precompiled.hpp"
+#include "classfile/classLoaderDependencies.hpp"
#include "classfile/dictionary.hpp"
#include "classfile/javaClasses.hpp"
#include "classfile/loaderConstraints.hpp"
@@ -813,7 +814,17 @@
check_constraints(d_index, d_hash, k, class_loader, false, THREAD);
// Need to check for a PENDING_EXCEPTION again; check_constraints
- // can throw and doesn't use the CHECK macro.
+ // can throw but we may have to remove entry from the placeholder table below.
+ if (!HAS_PENDING_EXCEPTION) {
+ // Record dependency for non-parent delegation.
+ // This recording keeps the defining class loader of the klass (k) found
+ // from being unloaded while the initiating class loader is loaded
+ // even if the reference to the defining class loader is dropped
+ // before references to the initiating class loader.
+ ClassLoaderDependencies::record_dependency(class_loader(),
+ k->class_loader(), THREAD);
+ }
+
if (!HAS_PENDING_EXCEPTION) {
{ // Grabbing the Compile_lock prevents systemDictionary updates
// during compilations.
diff -r 65b809089544 -r d47e668978c8 src/share/vm/classfile/verificationType.cpp
--- a/src/share/vm/classfile/verificationType.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/classfile/verificationType.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -23,7 +23,6 @@
*/
#include "precompiled.hpp"
-#include "classfile/classLoaderDependencies.hpp"
#include "classfile/symbolTable.hpp"
#include "classfile/verificationType.hpp"
#include "classfile/verifier.hpp"
@@ -63,8 +62,6 @@
Handle(THREAD, klass->protection_domain()), true, CHECK_false);
KlassHandle this_class(THREAD, obj);
- ClassLoaderDependencies::record_dependency(klass, this_class, CHECK_false);
-
if (this_class->is_interface()) {
// We treat interfaces as java.lang.Object, including
// java.lang.Cloneable and java.io.Serializable
@@ -74,7 +71,6 @@
from.name(), Handle(THREAD, klass->class_loader()),
Handle(THREAD, klass->protection_domain()), true, CHECK_false);
KlassHandle from_class_handle(THREAD, from_class);
- ClassLoaderDependencies::record_dependency(klass, from_class_handle, CHECK_false);
return instanceKlass::cast(from_class_handle())->is_subclass_of(this_class());
}
} else if (is_array() && from.is_array()) {
diff -r 65b809089544 -r d47e668978c8 src/share/vm/classfile/verifier.cpp
--- a/src/share/vm/classfile/verifier.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/classfile/verifier.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -24,7 +24,6 @@
#include "precompiled.hpp"
#include "classfile/classFileStream.hpp"
-#include "classfile/classLoaderDependencies.hpp"
#include "classfile/javaClasses.hpp"
#include "classfile/stackMapTable.hpp"
#include "classfile/stackMapFrame.hpp"
@@ -1947,11 +1946,9 @@
oop loader = current_class()->class_loader();
oop protection_domain = current_class()->protection_domain();
- klassOop kls = SystemDictionary::resolve_or_fail(
+ return SystemDictionary::resolve_or_fail(
name, Handle(THREAD, loader), Handle(THREAD, protection_domain),
true, CHECK_NULL);
- ClassLoaderDependencies::record_dependency(current_class(), kls, CHECK_NULL);
- return kls;
}
bool ClassVerifier::is_protected_access(instanceKlassHandle this_class,
diff -r 65b809089544 -r d47e668978c8 src/share/vm/oops/cpCacheOop.cpp
--- a/src/share/vm/oops/cpCacheOop.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/oops/cpCacheOop.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2013, 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
@@ -220,7 +220,17 @@
if (byte_no == 1) {
assert(invoke_code != Bytecodes::_invokevirtual &&
invoke_code != Bytecodes::_invokeinterface, "");
- set_bytecode_1(invoke_code);
+ bool do_resolve = true;
+ // Don't mark invokestatic to method as resolved if the holder class has not yet completed
+ // initialization. An invokestatic must only proceed if the class is initialized, but if
+ // we resolve it before then that class initialization check is skipped.
+ if (invoke_code == Bytecodes::_invokestatic &&
+ !instanceKlass::cast(method->method_holder())->is_initialized()) {
+ do_resolve = false;
+ }
+ if (do_resolve) {
+ set_bytecode_1(invoke_code);
+ }
} else if (byte_no == 2) {
if (change_to_virtual) {
assert(invoke_code == Bytecodes::_invokeinterface, "");
diff -r 65b809089544 -r d47e668978c8 src/share/vm/opto/compile.cpp
--- a/src/share/vm/opto/compile.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/opto/compile.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -3363,7 +3363,7 @@
_root->verify_edges(visited);
if (no_dead_code) {
// Now make sure that no visited node is used by an unvisited node.
- bool dead_nodes = 0;
+ bool dead_nodes = false;
Unique_Node_List checked(area);
while (visited.size() > 0) {
Node* n = visited.pop();
@@ -3374,14 +3374,16 @@
if (visited.member(use)) continue; // already in the graph
if (use->is_Con()) continue; // a dead ConNode is OK
// At this point, we have found a dead node which is DU-reachable.
- if (dead_nodes++ == 0)
+ if (!dead_nodes) {
tty->print_cr("*** Dead nodes reachable via DU edges:");
+ dead_nodes = true;
+ }
use->dump(2);
tty->print_cr("---");
checked.push(use); // No repeats; pretend it is now checked.
}
}
- assert(dead_nodes == 0, "using nodes must be reachable from root");
+ assert(!dead_nodes, "using nodes must be reachable from root");
}
}
}
diff -r 65b809089544 -r d47e668978c8 src/share/vm/prims/jvm.cpp
--- a/src/share/vm/prims/jvm.cpp Wed Feb 20 14:43:02 2019 +0000
+++ b/src/share/vm/prims/jvm.cpp Mon Feb 25 01:45:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -24,7 +24,6 @@
#include "precompiled.hpp"
#include "classfile/classLoader.hpp"
-#include "classfile/classLoaderDependencies.hpp"
#include "classfile/javaAssertions.hpp"
#include "classfile/javaClasses.hpp"
#include "classfile/symbolTable.hpp"
@@ -753,6 +752,79 @@
JVM_END
+// java.nio.Bits ///////////////////////////////////////////////////////////////
+
+#define MAX_OBJECT_SIZE \
+ ( arrayOopDesc::header_size(T_DOUBLE) * HeapWordSize \
+ + ((julong)max_jint * sizeof(double)) )
+
+static inline jlong field_offset_to_byte_offset(jlong field_offset) {
+ return field_offset;
+}
+
+static inline void assert_field_offset_sane(oop p, jlong field_offset) {
+#ifdef ASSERT
+ jlong byte_offset = field_offset_to_byte_offset(field_offset);
+
+ if (p != NULL) {
+ assert(byte_offset >= 0 && byte_offset <= (jlong)MAX_OBJECT_SIZE, "sane offset");
+ if (byte_offset == (jint)byte_offset) {
+ void* ptr_plus_disp = (address)p + byte_offset;
+ assert((void*)p->obj_field_addr<oop>((jint)byte_offset) == ptr_plus_disp,
+ "raw [ptr+disp] must be consistent with oop::field_base");
+ }
+ jlong p_size = HeapWordSize * (jlong)(p->size());
More information about the distro-pkg-dev
mailing list