--- a/hotspot/agent/make/Makefile Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/make/Makefile Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/os/linux/libproc.h Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/os/linux/libproc.h Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/os/linux/salibelf.c Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/os/linux/salibelf.c Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/os/linux/symtab.c Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/os/linux/symtab.c Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -214,8 +214,10 @@
+ 2);
strcpy(debug_pathname, name);
char *last_slash = strrchr(debug_pathname, '/');
- if (last_slash == NULL)
+ if (last_slash == NULL) {
+ free(debug_pathname);
return -1;
+ }
/* Look in the same directory as the object. */
strcpy(last_slash+1, debug_filename);
--- a/hotspot/agent/src/os/solaris/proc/saproc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/os/solaris/proc/saproc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/os/win32/windbg/sawindbg.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/os/win32/windbg/sawindbg.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CLHSDB.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CLHSDB.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HSDB.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HSDB.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/LinuxVtblAccess.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/LinuxVtblAccess.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciEnv.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciEnv.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
@@ -95,9 +95,15 @@
int entryBci = task.osrBci();
int compLevel = task.compLevel();
Klass holder = method.getMethodHolder();
- out.println("compile " + holder.getName().asString() + " " +
- OopUtilities.escapeString(method.getName().asString()) + " " +
- method.getSignature().asString() + " " +
- entryBci + " " + compLevel);
+ out.print("compile " + holder.getName().asString() + " " +
+ OopUtilities.escapeString(method.getName().asString()) + " " +
+ method.getSignature().asString() + " " +
+ entryBci + " " + compLevel);
+ Compile compiler = compilerData();
+ if (compiler != null) {
+ // Dump inlining data.
+ compiler.dumpInlineData(out);
+ }
+ out.println();
}
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/CompileTask.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/CompileTask.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdAddress.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdAddress.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdDebugger.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdDebugger.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxOopHandle.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxOopHandle.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86CFrame.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86CFrame.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgCDebugger.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgCDebugger.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/amd64/WindowsAMD64CFrame.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/amd64/WindowsAMD64CFrame.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/x86/WindowsX86CFrame.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/x86/WindowsX86CFrame.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ArrayTypeImpl.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ArrayTypeImpl.java Mon Jan 27 21:00:29 2014 -0800
@@ -24,19 +24,29 @@
package sun.jvm.hotspot.jdi;
-import com.sun.jdi.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import sun.jvm.hotspot.oops.ArrayKlass;
+import sun.jvm.hotspot.oops.Instance;
import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.ObjArrayKlass;
-import sun.jvm.hotspot.oops.TypeArrayKlass;
import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.Instance;
+import sun.jvm.hotspot.oops.ObjArrayKlass;
import sun.jvm.hotspot.oops.Symbol;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
+import sun.jvm.hotspot.oops.TypeArrayKlass;
+
+import com.sun.jdi.ArrayReference;
+import com.sun.jdi.ArrayType;
+import com.sun.jdi.ClassLoaderReference;
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.Method;
+import com.sun.jdi.PrimitiveType;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.Type;
+import com.sun.jdi.VirtualMachine;
public class ArrayTypeImpl extends ReferenceTypeImpl implements ArrayType {
protected ArrayTypeImpl(VirtualMachine aVm, ArrayKlass aRef) {
@@ -75,7 +85,8 @@
}
}
- void addVisibleMethods(Map methodMap) {
+ @Override
+ void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> handledInterfaces) {
// arrays don't have methods
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ClassTypeImpl.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ClassTypeImpl.java Mon Jan 27 21:00:29 2014 -0800
@@ -24,12 +24,30 @@
package sun.jvm.hotspot.jdi;
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Klass;
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import sun.jvm.hotspot.oops.InstanceKlass;
-import java.util.*;
-import java.lang.ref.SoftReference;
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.ClassType;
+import com.sun.jdi.Field;
+import com.sun.jdi.IncompatibleThreadStateException;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.InvalidTypeException;
+import com.sun.jdi.InvocationException;
+import com.sun.jdi.Method;
+import com.sun.jdi.ObjectReference;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.ThreadReference;
+import com.sun.jdi.Value;
+import com.sun.jdi.VirtualMachine;
public class ClassTypeImpl extends ReferenceTypeImpl
implements ClassType
@@ -195,22 +213,26 @@
return null;
}
- void addVisibleMethods(Map methodMap) {
+ @Override
+ void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces) {
/*
* Add methods from
* parent types first, so that the methods in this class will
* overwrite them in the hash table
*/
- Iterator iter = interfaces().iterator();
+ Iterator<InterfaceType> iter = interfaces().iterator();
while (iter.hasNext()) {
InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
- interfaze.addVisibleMethods(methodMap);
+ if (!seenInterfaces.contains(interfaze)) {
+ interfaze.addVisibleMethods(methodMap, seenInterfaces);
+ seenInterfaces.add(interfaze);
+ }
}
ClassTypeImpl clazz = (ClassTypeImpl)superclass();
if (clazz != null) {
- clazz.addVisibleMethods(methodMap);
+ clazz.addVisibleMethods(methodMap, seenInterfaces);
}
addToMethodMap(methodMap, methods());
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/InterfaceTypeImpl.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/InterfaceTypeImpl.java Mon Jan 27 21:00:29 2014 -0800
@@ -24,15 +24,22 @@
package sun.jvm.hotspot.jdi;
-import com.sun.jdi.*;
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import sun.jvm.hotspot.oops.InstanceKlass;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.Iterator;
-import java.util.Collections;
-import java.lang.ref.SoftReference;
+import com.sun.jdi.ClassNotPreparedException;
+import com.sun.jdi.ClassType;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.Method;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.VirtualMachine;
public class InterfaceTypeImpl extends ReferenceTypeImpl
implements InterfaceType {
@@ -96,16 +103,20 @@
return implementors;
}
- void addVisibleMethods(Map methodMap) {
+ @Override
+ void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces) {
/*
* Add methods from
* parent types first, so that the methods in this class will
* overwrite them in the hash table
*/
- Iterator iter = superinterfaces().iterator();
+ Iterator<InterfaceType> iter = superinterfaces().iterator();
while (iter.hasNext()) {
InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
- interfaze.addVisibleMethods(methodMap);
+ if (!seenInterfaces.contains(interfaze)) {
+ interfaze.addVisibleMethods(methodMap, seenInterfaces);
+ seenInterfaces.add(interfaze);
+ }
}
addToMethodMap(methodMap, methods());
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java Mon Jan 27 21:00:29 2014 -0800
@@ -24,24 +24,45 @@
package sun.jvm.hotspot.jdi;
-import java.io.*;
-
-import com.sun.jdi.*;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import sun.jvm.hotspot.memory.SystemDictionary;
+import sun.jvm.hotspot.oops.ArrayKlass;
+import sun.jvm.hotspot.oops.DefaultHeapVisitor;
import sun.jvm.hotspot.oops.Instance;
import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.ArrayKlass;
import sun.jvm.hotspot.oops.JVMDIClassStatus;
import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.ObjArray;
import sun.jvm.hotspot.oops.Oop;
import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.DefaultHeapVisitor;
import sun.jvm.hotspot.utilities.Assert;
-import java.util.*;
-import java.lang.ref.SoftReference;
+import com.sun.jdi.AbsentInformationException;
+import com.sun.jdi.ArrayType;
+import com.sun.jdi.ClassLoaderReference;
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.ClassNotPreparedException;
+import com.sun.jdi.ClassObjectReference;
+import com.sun.jdi.Field;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.Method;
+import com.sun.jdi.ObjectReference;
+import com.sun.jdi.PrimitiveType;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.Type;
+import com.sun.jdi.Value;
+import com.sun.jdi.VirtualMachine;
public abstract class ReferenceTypeImpl extends TypeImpl
implements ReferenceType {
@@ -421,7 +442,8 @@
}
}
- abstract void addVisibleMethods(Map methodMap);
+ abstract void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces);
+
public final List visibleMethods() throws ClassNotPreparedException {
checkPrepared();
/*
@@ -430,8 +452,8 @@
* concatenation of name and signature.
*/
//System.out.println("jj: RTI: Calling addVisibleMethods for:" + this);
- Map map = new HashMap();
- addVisibleMethods(map);
+ Map<String, Method> map = new HashMap<String, Method>();
+ addVisibleMethods(map, new HashSet<InterfaceType>());
/*
* ... but the hash map destroys order. Methods should be
@@ -441,7 +463,7 @@
*/
//System.out.println("jj: RTI: Calling allMethods for:" + this);
- List list = new ArrayList(allMethods());
+ List<Method> list = new ArrayList<Method>(allMethods());
//System.out.println("jj: allMethods = " + jjstr(list));
//System.out.println("jj: map = " + map.toString());
//System.out.println("jj: map = " + jjstr(map.values()));
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CMSCollector.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CMSCollector.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodCounters.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodCounters.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodData.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodData.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -364,7 +364,7 @@
}
catch (AddressException e) {
// This is okay at the top of these regions
- }
+ }
catch (UnknownOopException e) {
// This is okay at the top of these regions
}
@@ -373,7 +373,7 @@
visitor.epilogue();
}
- private void addLiveRegions(List input, List output) {
+ private void addLiveRegions(String name, List input, List output) {
for (Iterator itr = input.iterator(); itr.hasNext();) {
MemRegion reg = (MemRegion) itr.next();
Address top = reg.end();
@@ -386,6 +386,9 @@
}
output.add(top);
output.add(bottom);
+ if (DEBUG) {
+ System.err.println("Live region: " + name + ": " + bottom + ", " + top);
+ }
}
}
@@ -395,7 +398,7 @@
}
public void doSpace(Space s) {
- addLiveRegions(s.getLiveRegions(), liveRegions);
+ addLiveRegions(s.toString(), s.getLiveRegions(), liveRegions);
}
private List liveRegions;
}
@@ -426,11 +429,11 @@
ParallelScavengeHeap psh = (ParallelScavengeHeap) heap;
PSYoungGen youngGen = psh.youngGen();
// Add eden space
- addLiveRegions(youngGen.edenSpace().getLiveRegions(), liveRegions);
+ addLiveRegions("eden", youngGen.edenSpace().getLiveRegions(), liveRegions);
// Add from-space but not to-space
- addLiveRegions(youngGen.fromSpace().getLiveRegions(), liveRegions);
+ addLiveRegions("from", youngGen.fromSpace().getLiveRegions(), liveRegions);
PSOldGen oldGen = psh.oldGen();
- addLiveRegions(oldGen.objectSpace().getLiveRegions(), liveRegions);
+ addLiveRegions("old ", oldGen.objectSpace().getLiveRegions(), liveRegions);
} else if (heap instanceof G1CollectedHeap) {
G1CollectedHeap g1h = (G1CollectedHeap) heap;
g1h.heapRegionIterate(lrc);
@@ -451,23 +454,27 @@
if (VM.getVM().getUseTLAB()) {
for (JavaThread thread = VM.getVM().getThreads().first(); thread != null; thread = thread.next()) {
- if (thread.isJavaThread()) {
- ThreadLocalAllocBuffer tlab = thread.tlab();
- if (tlab.start() != null) {
- if ((tlab.top() == null) || (tlab.end() == null)) {
- System.err.print("Warning: skipping invalid TLAB for thread ");
+ ThreadLocalAllocBuffer tlab = thread.tlab();
+ if (tlab.start() != null) {
+ if ((tlab.top() == null) || (tlab.end() == null)) {
+ System.err.print("Warning: skipping invalid TLAB for thread ");
+ thread.printThreadIDOn(System.err);
+ System.err.println();
+ } else {
+ if (DEBUG) {
+ System.err.print("TLAB for " + thread.getThreadName() + ", #");
thread.printThreadIDOn(System.err);
- System.err.println();
- } else {
- // Go from:
- // - below start() to start()
- // - start() to top()
- // - end() and above
- liveRegions.add(tlab.start());
- liveRegions.add(tlab.start());
- liveRegions.add(tlab.top());
- liveRegions.add(tlab.hardEnd());
+ System.err.print(": ");
+ tlab.printOn(System.err);
}
+ // Go from:
+ // - below start() to start()
+ // - start() to top()
+ // - end() and above
+ liveRegions.add(tlab.start());
+ liveRegions.add(tlab.start());
+ liveRegions.add(tlab.top());
+ liveRegions.add(tlab.hardEnd());
}
}
}
@@ -480,6 +487,15 @@
Assert.that(liveRegions.size() % 2 == 0, "Must have even number of region boundaries");
}
+ if (DEBUG) {
+ System.err.println("liveRegions:");
+ for (int i = 0; i < liveRegions.size(); i += 2) {
+ Address bottom = (Address) liveRegions.get(i);
+ Address top = (Address) liveRegions.get(i+1);
+ System.err.println(" " + bottom + " - " + top);
+ }
+ }
+
return liveRegions;
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/Compile.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/Compile.java Mon Jan 27 21:00:29 2014 -0800
@@ -25,6 +25,7 @@
package sun.jvm.hotspot.opto;
import java.util.*;
+import java.io.PrintStream;
import sun.jvm.hotspot.ci.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.runtime.*;
@@ -92,4 +93,13 @@
}
return null;
}
+
+ public void dumpInlineData(PrintStream out) {
+ InlineTree inlTree = ilt();
+ if (inlTree != null) {
+ out.print(" inline " + inlTree.count());
+ inlTree.dumpReplayData(out);
+ }
+ }
+
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/InlineTree.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/InlineTree.java Mon Jan 27 21:00:29 2014 -0800
@@ -87,6 +87,11 @@
return GrowableArray.create(addr, inlineTreeConstructor);
}
+ public int inlineLevel() {
+ JVMState jvms = callerJvms();
+ return (jvms != null) ? jvms.depth() : 0;
+ }
+
public void printImpl(PrintStream st, int indent) {
for (int i = 0; i < indent; i++) st.print(" ");
st.printf(" @ %d ", callerBci());
@@ -101,4 +106,28 @@
public void print(PrintStream st) {
printImpl(st, 2);
}
+
+ // Count number of nodes in this subtree
+ public int count() {
+ int result = 1;
+ GrowableArray<InlineTree> subt = subtrees();
+ for (int i = 0 ; i < subt.length(); i++) {
+ result += subt.at(i).count();
+ }
+ return result;
+ }
+
+ public void dumpReplayData(PrintStream out) {
+ out.printf(" %d %d ", inlineLevel(), callerBci());
+ Method method = (Method)method().getMetadata();
+ Klass holder = method.getMethodHolder();
+ out.print(holder.getName().asString() + " " +
+ OopUtilities.escapeString(method.getName().asString()) + " " +
+ method.getSignature().asString());
+
+ GrowableArray<InlineTree> subt = subtrees();
+ for (int i = 0 ; i < subt.length(); i++) {
+ subt.at(i).dumpReplayData(out);
+ }
+ }
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/JVMState.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/JVMState.java Mon Jan 27 21:00:29 2014 -0800
@@ -88,6 +88,10 @@
return (int)bciField.getValue(getAddress());
}
+ public int depth() {
+ return (int)depthField.getValue(getAddress());
+ }
+
public JVMState caller() {
return create(callerField.getValue(getAddress()));
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/PhaseCFG.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/PhaseCFG.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ThreadLocalAllocBuffer.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ThreadLocalAllocBuffer.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -109,6 +109,6 @@
public void printOn(PrintStream tty) {
tty.println(" [" + start() + "," +
- top() + "," + end() + ")");
+ top() + "," + end() + ",{" + hardEnd() + "})");
}
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_amd64/BsdAMD64JavaThreadPDAccess.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_amd64/BsdAMD64JavaThreadPDAccess.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FlagDumper.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FlagDumper.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapDumper.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapDumper.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapSummary.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapSummary.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JInfo.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JInfo.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JSnap.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JSnap.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JStack.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JStack.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/PMap.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/PMap.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/SysPropsDumper.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/SysPropsDumper.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/Tool.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/Tool.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/JSDB.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/JSDB.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/SAPanel.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/SAPanel.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/make/bsd/makefiles/adlc.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/bsd/makefiles/adlc.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2013, 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
--- a/hotspot/make/bsd/makefiles/gcc.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/bsd/makefiles/gcc.make Mon Jan 27 21:00:29 2014 -0800
@@ -260,14 +260,13 @@
WARNINGS_ARE_ERRORS += -Wno-empty-body
endif
-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef
+WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value
-ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+ifeq ($(USE_CLANG),)
# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
# conversions which might affect the values. Only enable it in earlier versions.
- WARNING_FLAGS = -Wunused-function
- ifeq ($(USE_CLANG),)
- WARNING_FLAGS += -Wconversion
+ ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+ WARNINGS_FLAGS += -Wconversion
endif
endif
--- a/hotspot/make/bsd/makefiles/mapfile-vers-debug Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/bsd/makefiles/mapfile-vers-debug Mon Jan 27 21:00:29 2014 -0800
@@ -242,11 +242,6 @@
_JVM_Yield
_JVM_handle_bsd_signal
- # debug _JVM
- _JVM_AccessVMBooleanFlag
- _JVM_AccessVMIntFlag
- _JVM_VMBreakPoint
-
# miscellaneous functions
_jio_fprintf
_jio_printf
--- a/hotspot/make/bsd/makefiles/minimal1.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/bsd/makefiles/minimal1.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2013, 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
--- a/hotspot/make/hotspot.script Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/hotspot.script Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2013, 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
--- a/hotspot/make/linux/makefiles/adlc.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/linux/makefiles/adlc.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2013, 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
--- a/hotspot/make/linux/makefiles/jsig.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/linux/makefiles/jsig.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2013, 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
--- a/hotspot/make/linux/makefiles/mapfile-vers-debug Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/linux/makefiles/mapfile-vers-debug Mon Jan 27 21:00:29 2014 -0800
@@ -244,11 +244,6 @@
JVM_Yield;
JVM_handle_linux_signal;
- # debug JVM
- JVM_AccessVMBooleanFlag;
- JVM_AccessVMIntFlag;
- JVM_VMBreakPoint;
-
# miscellaneous functions
jio_fprintf;
jio_printf;
--- a/hotspot/make/linux/makefiles/minimal1.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/linux/makefiles/minimal1.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2013, 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
--- a/hotspot/make/linux/makefiles/saproc.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/linux/makefiles/saproc.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2013, 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
--- a/hotspot/make/sa.files Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/sa.files Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2013, 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
--- a/hotspot/make/solaris/makefiles/adlc.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/solaris/makefiles/adlc.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2013, 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
--- a/hotspot/make/solaris/makefiles/gcc.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/solaris/makefiles/gcc.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2013, 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
--- a/hotspot/make/solaris/makefiles/mapfile-vers-debug Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-debug Mon Jan 27 21:00:29 2014 -0800
@@ -28,10 +28,6 @@
SUNWprivate_1.1 {
global:
- # debug JVM
- JVM_AccessVMBooleanFlag;
- JVM_AccessVMIntFlag;
- JVM_VMBreakPoint;
# miscellaneous
};
--- a/hotspot/make/windows/build_vm_def.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/windows/build_vm_def.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2013, 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
--- a/hotspot/make/windows/makefiles/adlc.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/windows/makefiles/adlc.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2013, 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
--- a/hotspot/make/windows/makefiles/debug.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/windows/makefiles/debug.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2013, 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
--- a/hotspot/make/windows/makefiles/product.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/windows/makefiles/product.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2013, 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
--- a/hotspot/make/windows/makefiles/rules.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/windows/makefiles/rules.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2013, 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
--- a/hotspot/make/windows/makefiles/sa.make Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/make/windows/makefiles/sa.make Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2013, 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
@@ -94,7 +94,7 @@
SA_LD_FLAGS = bufferoverflowU.lib
!endif
!else
-SA_CFLAGS = -nologo $(MS_RUNTIME_OPTION) -W3 -Gm $(GX_OPTION) -Od -D "WIN32" -D "_WINDOWS" -D "_DEBUG" -D "_CONSOLE" -D "_MBCS" -YX -FD -GZ -c
+SA_CFLAGS = -nologo $(MS_RUNTIME_OPTION) -W3 $(GX_OPTION) -Od -D "WIN32" -D "_WINDOWS" -D "_DEBUG" -D "_CONSOLE" -D "_MBCS" -FD -RTC1 -c
!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
SA_CFLAGS = $(SA_CFLAGS) -ZI
!endif
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/c1_globals_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_globals_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/c2_globals_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c2_globals_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/c2_init_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c2_init_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/disassembler_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/disassembler_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/globalDefinitions_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/globalDefinitions_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/jni_sparc.h Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/jni_sparc.h Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/register_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/register_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/sparc.ad Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad Mon Jan 27 21:00:29 2014 -0800
@@ -757,7 +757,7 @@
#endif
-void emit_form3_mem_reg(CodeBuffer &cbuf, const MachNode* n, int primary, int tertiary,
+void emit_form3_mem_reg(CodeBuffer &cbuf, PhaseRegAlloc* ra, const MachNode* n, int primary, int tertiary,
int src1_enc, int disp32, int src2_enc, int dst_enc) {
#ifdef ASSERT
@@ -912,8 +912,14 @@
uint index = src2_enc;
int disp = disp32;
- if (src1_enc == R_SP_enc || src1_enc == R_FP_enc)
+ if (src1_enc == R_SP_enc || src1_enc == R_FP_enc) {
disp += STACK_BIAS;
+ // Quick fix for JDK-8029668: check that stack offset fits, bailout if not
+ if (!Assembler::is_simm13(disp)) {
+ ra->C->record_method_not_compilable("unable to handle large constant offsets");
+ return;
+ }
+ }
// We should have a compiler bailout here rather than a guarantee.
// Better yet would be some mechanism to handle variable-size matches correctly.
@@ -1279,20 +1285,15 @@
return rc_float;
}
-static int impl_helper( const MachNode *mach, CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, bool is_load, int offset, int reg, int opcode, const char *op_str, int size, outputStream* st ) {
- if( cbuf ) {
- // Better yet would be some mechanism to handle variable-size matches correctly
- if (!Assembler::is_simm13(offset + STACK_BIAS)) {
- ra_->C->record_method_not_compilable("unable to handle large constant offsets");
- } else {
- emit_form3_mem_reg(*cbuf, mach, opcode, -1, R_SP_enc, offset, 0, Matcher::_regEncode[reg]);
- }
+static int impl_helper(const MachNode* mach, CodeBuffer* cbuf, PhaseRegAlloc* ra, bool do_size, bool is_load, int offset, int reg, int opcode, const char *op_str, int size, outputStream* st ) {
+ if (cbuf) {
+ emit_form3_mem_reg(*cbuf, ra, mach, opcode, -1, R_SP_enc, offset, 0, Matcher::_regEncode[reg]);
}
#ifndef PRODUCT
- else if( !do_size ) {
- if( size != 0 ) st->print("\n\t");
- if( is_load ) st->print("%s [R_SP + #%d],R_%s\t! spill",op_str,offset,OptoReg::regname(reg));
- else st->print("%s R_%s,[R_SP + #%d]\t! spill",op_str,OptoReg::regname(reg),offset);
+ else if (!do_size) {
+ if (size != 0) st->print("\n\t");
+ if (is_load) st->print("%s [R_SP + #%d],R_%s\t! spill",op_str,offset,OptoReg::regname(reg));
+ else st->print("%s R_%s,[R_SP + #%d]\t! spill",op_str,OptoReg::regname(reg),offset);
}
#endif
return size+4;
@@ -2087,22 +2088,22 @@
%}
enc_class form3_mem_reg( memory mem, iRegI dst ) %{
- emit_form3_mem_reg(cbuf, this, $primary, $tertiary,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, $tertiary,
$mem$$base, $mem$$disp, $mem$$index, $dst$$reg);
%}
enc_class simple_form3_mem_reg( memory mem, iRegI dst ) %{
- emit_form3_mem_reg(cbuf, this, $primary, -1,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1,
$mem$$base, $mem$$disp, $mem$$index, $dst$$reg);
%}
enc_class form3_mem_prefetch_read( memory mem ) %{
- emit_form3_mem_reg(cbuf, this, $primary, -1,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1,
$mem$$base, $mem$$disp, $mem$$index, 0/*prefetch function many-reads*/);
%}
enc_class form3_mem_prefetch_write( memory mem ) %{
- emit_form3_mem_reg(cbuf, this, $primary, -1,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1,
$mem$$base, $mem$$disp, $mem$$index, 2/*prefetch function many-writes*/);
%}
@@ -2110,8 +2111,8 @@
assert(Assembler::is_simm13($mem$$disp ), "need disp and disp+4");
assert(Assembler::is_simm13($mem$$disp+4), "need disp and disp+4");
guarantee($mem$$index == R_G0_enc, "double index?");
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, R_O7_enc );
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, R_O7_enc );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg );
emit3_simm13( cbuf, Assembler::arith_op, $reg$$reg, Assembler::sllx_op3, $reg$$reg, 0x1020 );
emit3( cbuf, Assembler::arith_op, $reg$$reg, Assembler::or_op3, $reg$$reg, 0, R_O7_enc );
%}
@@ -2121,14 +2122,14 @@
assert(Assembler::is_simm13($mem$$disp+4), "need disp and disp+4");
guarantee($mem$$index == R_G0_enc, "double index?");
// Load long with 2 instructions
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg+0 );
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, $reg$$reg+1 );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg+0 );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, $reg$$reg+1 );
%}
//%%% form3_mem_plus_4_reg is a hack--get rid of it
enc_class form3_mem_plus_4_reg( memory mem, iRegI dst ) %{
guarantee($mem$$disp, "cannot offset a reg-reg operand by 4");
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp + 4, $mem$$index, $dst$$reg);
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp + 4, $mem$$index, $dst$$reg);
%}
enc_class form3_g0_rs2_rd_move( iRegI rs2, iRegI rd ) %{
--- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/vmStructs_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/vmStructs_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c1_globals_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_globals_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/cpu/x86/vm/frame_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/frame_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -94,13 +94,6 @@
// other generic buffer blobs are more problematic so we just assume they are
// ok. adapter blobs never have a frame complete and are never ok.
- // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc
-
- if (!Interpreter::contains(_pc) && _cb->frame_size() <= 0) {
- //assert(0, "Invalid frame_size");
- return false;
- }
-
if (!_cb->is_frame_complete_at(_pc)) {
if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) {
return false;
@@ -144,6 +137,11 @@
// must be some sort of compiled/runtime frame
// fp does not have to be safe (although it could be check for c1?)
+ // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc
+ if (_cb->frame_size() <= 0) {
+ return false;
+ }
+
sender_sp = _unextended_sp + _cb->frame_size();
// On Intel the return_address is always the word on the stack
sender_pc = (address) *(sender_sp-1);
--- a/hotspot/src/cpu/x86/vm/frame_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/frame_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/x86/vm/globalDefinitions_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/globalDefinitions_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/cpu/x86/vm/register_definitions_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/register_definitions_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/x86/vm/vmStructs_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/vmStructs_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/cpu/x86/vm/vtableStubs_x86_32.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/vtableStubs_x86_32.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/cpu/zero/vm/assembler_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/assembler_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/frame_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/frame_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/globals_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/globals_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/jni_zero.h Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/jni_zero.h Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/register_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/register_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/vmStructs_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/vmStructs_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os/bsd/dtrace/hotspot.d Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os/bsd/dtrace/hotspot.d Mon Jan 27 21:00:29 2014 -0800
@@ -47,8 +47,8 @@
probe mem__pool__gc__end(
char*, uintptr_t, char*, uintptr_t,
uintptr_t, uintptr_t, uintptr_t, uintptr_t);
- probe thread__probe__start(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
- probe thread__probe__stop(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+ probe thread__start(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+ probe thread__stop(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
probe thread__sleep__begin(long long);
probe thread__sleep__end(int);
probe thread__yield();
@@ -68,7 +68,7 @@
probe monitor__contended__entered(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__contended__exit(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__wait(uintptr_t, uintptr_t, char*, uintptr_t, uintptr_t);
- probe monitor__probe__waited(uintptr_t, uintptr_t, char*, uintptr_t);
+ probe monitor__waited(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__notify(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__notifyAll(uintptr_t, uintptr_t, char*, uintptr_t);
--- a/hotspot/src/os/bsd/dtrace/jvm_dtrace.c Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os/bsd/dtrace/jvm_dtrace.c Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
--- a/hotspot/src/os/posix/vm/os_posix.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os/posix/vm/os_posix.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/os/solaris/dtrace/jvm_dtrace.c Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os/solaris/dtrace/jvm_dtrace.c Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
--- a/hotspot/src/os/solaris/vm/globals_solaris.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os/solaris/vm/globals_solaris.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/os/windows/vm/decoder_windows.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os/windows/vm/decoder_windows.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_32.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_32.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2013, 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
--- a/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_64.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_64.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2013, 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
--- a/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/bsd_zero/vm/thread_bsd_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/thread_bsd_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/bsd_zero/vm/vmStructs_bsd_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/vmStructs_bsd_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2013, 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
--- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2013, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2013, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2002, 2013, 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
--- a/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
!!
-!! Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+!! Copyright (c) 2005, 2013, 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
--- a/hotspot/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2004, 2013, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.s Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.s Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/
-/ Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+/ Copyright (c) 2004, 2013, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/tools/hsdis/hsdis.c Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/tools/hsdis/hsdis.c Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, 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
--- a/hotspot/src/share/vm/adlc/adlc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/adlc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -38,6 +38,9 @@
#include "stdarg.h"
#include <sys/types.h>
+/* Make sure that we have the intptr_t and uintptr_t definitions */
+#ifdef _WIN32
+
#if _MSC_VER >= 1300
using namespace std;
#endif
@@ -46,8 +49,6 @@
#define strdup _strdup
#endif
-/* Make sure that we have the intptr_t and uintptr_t definitions */
-#ifdef _WIN32
#ifndef _INTPTR_T_DEFINED
#ifdef _WIN64
typedef __int64 intptr_t;
@@ -65,6 +66,7 @@
#endif
#define _UINTPTR_T_DEFINED
#endif
+
#endif // _WIN32
#if defined(LINUX) || defined(_ALLBSD_SOURCE)
--- a/hotspot/src/share/vm/adlc/adlparse.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/adlparse.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/adlc/archDesc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/archDesc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
//
-// Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1997, 2013, 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
@@ -43,32 +43,6 @@
return result;
}
-// Utilities to characterize effect statements
-static bool is_def(int usedef) {
- switch(usedef) {
- case Component::DEF:
- case Component::USE_DEF: return true; break;
- }
- return false;
-}
-
-static bool is_use(int usedef) {
- switch(usedef) {
- case Component::USE:
- case Component::USE_DEF:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
-static bool is_kill(int usedef) {
- switch(usedef) {
- case Component::KILL:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
//---------------------------ChainList Methods-------------------------------
ChainList::ChainList() {
}
--- a/hotspot/src/share/vm/adlc/dfa.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/dfa.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/adlc/dict2.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/dict2.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/adlc/formssel.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/formssel.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/adlc/formssel.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/formssel.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/adlc/main.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/main.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -29,7 +29,6 @@
static void usage(ArchDesc& AD); // Print usage message and exit
static char *strip_ext(char *fname); // Strip off name extension
static char *base_plus_suffix(const char* base, const char *suffix);// New concatenated string
-static char *prefix_plus_base_plus_suffix(const char* prefix, const char* base, const char *suffix);// New concatenated string
static int get_legal_text(FileBuff &fbuf, char **legal_text); // Get pointer to legal text
ArchDesc* globalAD = NULL; // global reference to Architecture Description object
--- a/hotspot/src/share/vm/adlc/output_c.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/output_c.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
@@ -35,23 +35,6 @@
return false;
}
-static bool is_use(int usedef) {
- switch(usedef) {
- case Component::USE:
- case Component::USE_DEF:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
-static bool is_kill(int usedef) {
- switch(usedef) {
- case Component::KILL:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
// Define an array containing the machine register names, strings.
static void defineRegNames(FILE *fp, RegisterForm *registers) {
if (registers) {
--- a/hotspot/src/share/vm/adlc/output_h.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/adlc/output_h.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/asm/assembler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/asm/assembler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/asm/assembler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/asm/assembler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/asm/codeBuffer.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/asm/codeBuffer.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/asm/macroAssembler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/asm/macroAssembler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/asm/macroAssembler.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/asm/macroAssembler.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_CodeStubs.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_CodeStubs.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_Compilation.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compilation.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_Compilation.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compilation.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -259,6 +259,9 @@
}
ciKlass* cha_exact_type(ciType* type);
+
+ // Dump inlining replay data to the stream.
+ void dump_inline_data(outputStream* out) { /* do nothing now */ }
};
--- a/hotspot/src/share/vm/c1/c1_Compiler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compiler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, 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
@@ -43,7 +43,8 @@
#include "runtime/sharedRuntime.hpp"
-Compiler::Compiler () {}
+Compiler::Compiler() : AbstractCompiler(c1) {
+}
void Compiler::init_c1_runtime() {
BufferBlob* buffer_blob = CompilerThread::current()->get_buffer_blob();
--- a/hotspot/src/share/vm/c1/c1_Compiler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compiler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, 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
@@ -42,8 +42,6 @@
// Name of this compiler
virtual const char* name() { return "C1"; }
- virtual bool is_c1() { return true; };
-
// Missing feature tests
virtual bool supports_native() { return true; }
virtual bool supports_osr () { return true; }
--- a/hotspot/src/share/vm/c1/c1_FrameMap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_FrameMap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -4338,11 +4338,15 @@
#endif // PRODUCT
void GraphBuilder::profile_call(ciMethod* callee, Value recv, ciKlass* known_holder, Values* obj_args, bool inlined) {
- // A default method's holder is an interface
- if (known_holder != NULL && known_holder->is_interface()) {
- assert(known_holder->is_instance_klass() && ((ciInstanceKlass*)known_holder)->has_default_methods(), "should be default method");
- known_holder = NULL;
+ assert(known_holder == NULL || (known_holder->is_instance_klass() &&
+ (!known_holder->is_interface() ||
+ ((ciInstanceKlass*)known_holder)->has_default_methods())), "should be default method");
+ if (known_holder != NULL) {
+ if (known_holder->exact_klass() == NULL) {
+ known_holder = compilation()->cha_exact_type(known_holder);
+ }
}
+
append(new ProfileCall(method(), bci(), callee, recv, known_holder, obj_args, inlined));
}
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_IR.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_IR.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_IR.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_IR.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_Instruction.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Instruction.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -858,9 +858,7 @@
void LIR_Assembler::verify_oop_map(CodeEmitInfo* info) {
#ifndef PRODUCT
- if (VerifyOopMaps || VerifyOops) {
- bool v = VerifyOops;
- VerifyOops = true;
+ if (VerifyOops) {
OopMapStream s(info->oop_map());
while (!s.is_done()) {
OopMapValue v = s.current();
@@ -883,7 +881,6 @@
s.next();
}
- VerifyOops = v;
}
#endif
}
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_Optimizer.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Optimizer.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_RangeCheckElimination.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_RangeCheckElimination.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_RangeCheckElimination.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_RangeCheckElimination.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_Runtime1.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Runtime1.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_ValueMap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_ValueMap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_ValueMap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_ValueMap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_globals.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_globals.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/c1/c1_globals.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_globals.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -269,9 +269,6 @@
develop(bool, PrintNotLoaded, false, \
"Prints where classes are not loaded during code generation") \
\
- notproduct(bool, VerifyOopMaps, false, \
- "Adds oopmap verification code to the generated code") \
- \
develop(bool, PrintLIR, false, \
"print low-level IR") \
\
--- a/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/ci/bcEscapeAnalyzer.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/ci/ciArray.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciArray.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciArray.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciArray.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciClassList.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciClassList.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciConstant.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciConstant.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciEnv.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1147,6 +1147,33 @@
// Don't change thread state and acquire any locks.
// Safe to call from VM error reporter.
+
+void ciEnv::dump_compile_data(outputStream* out) {
+ CompileTask* task = this->task();
+ Method* method = task->method();
+ int entry_bci = task->osr_bci();
+ int comp_level = task->comp_level();
+ out->print("compile %s %s %s %d %d",
+ method->klass_name()->as_quoted_ascii(),
+ method->name()->as_quoted_ascii(),
+ method->signature()->as_quoted_ascii(),
+ entry_bci, comp_level);
+ if (compiler_data() != NULL) {
+ if (is_c2_compile(comp_level)) { // C2 or Shark
+#ifdef COMPILER2
+ // Dump C2 inlining data.
+ ((Compile*)compiler_data())->dump_inline_data(out);
+#endif
+ } else if (is_c1_compile(comp_level)) { // C1
+#ifdef COMPILER1
+ // Dump C1 inlining data.
+ ((Compilation*)compiler_data())->dump_inline_data(out);
+#endif
+ }
+ }
+ out->cr();
+}
+
void ciEnv::dump_replay_data_unsafe(outputStream* out) {
ResourceMark rm;
#if INCLUDE_JVMTI
@@ -1160,16 +1187,7 @@
for (int i = 0; i < objects->length(); i++) {
objects->at(i)->dump_replay_data(out);
}
- CompileTask* task = this->task();
- Method* method = task->method();
- int entry_bci = task->osr_bci();
- int comp_level = task->comp_level();
- // Klass holder = method->method_holder();
- out->print_cr("compile %s %s %s %d %d",
- method->klass_name()->as_quoted_ascii(),
- method->name()->as_quoted_ascii(),
- method->signature()->as_quoted_ascii(),
- entry_bci, comp_level);
+ dump_compile_data(out);
out->flush();
}
@@ -1179,3 +1197,45 @@
dump_replay_data_unsafe(out);
)
}
+
+void ciEnv::dump_replay_data(int compile_id) {
+ static char buffer[O_BUFLEN];
+ int ret = jio_snprintf(buffer, O_BUFLEN, "replay_pid%p_compid%d.log", os::current_process_id(), compile_id);
+ if (ret > 0) {
+ int fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ if (fd != -1) {
+ FILE* replay_data_file = os::open(fd, "w");
+ if (replay_data_file != NULL) {
+ fileStream replay_data_stream(replay_data_file, /*need_close=*/true);
+ dump_replay_data(&replay_data_stream);
+ tty->print("# Compiler replay data is saved as: ");
+ tty->print_cr(buffer);
+ } else {
+ tty->print_cr("# Can't open file to dump replay data.");
+ }
+ }
+ }
+}
+
+void ciEnv::dump_inline_data(int compile_id) {
+ static char buffer[O_BUFLEN];
+ int ret = jio_snprintf(buffer, O_BUFLEN, "inline_pid%p_compid%d.log", os::current_process_id(), compile_id);
+ if (ret > 0) {
+ int fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ if (fd != -1) {
+ FILE* inline_data_file = os::open(fd, "w");
+ if (inline_data_file != NULL) {
+ fileStream replay_data_stream(inline_data_file, /*need_close=*/true);
+ GUARDED_VM_ENTRY(
+ MutexLocker ml(Compile_lock);
+ dump_compile_data(&replay_data_stream);
+ )
+ replay_data_stream.flush();
+ tty->print("# Compiler inline data is saved as: ");
+ tty->print_cr(buffer);
+ } else {
+ tty->print_cr("# Can't open file to dump inline data.");
+ }
+ }
+ }
+}
--- a/hotspot/src/share/vm/ci/ciEnv.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciEnv.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
@@ -451,8 +451,11 @@
void metadata_do(void f(Metadata*)) { _factory->metadata_do(f); }
// Dump the compilation replay data for the ciEnv to the stream.
+ void dump_replay_data(int compile_id);
+ void dump_inline_data(int compile_id);
void dump_replay_data(outputStream* out);
void dump_replay_data_unsafe(outputStream* out);
+ void dump_compile_data(outputStream* out);
};
#endif // SHARE_VM_CI_CIENV_HPP
--- a/hotspot/src/share/vm/ci/ciFlags.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciFlags.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciInstance.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciInstance.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciInstanceKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciInstanceKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciMethod.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethod.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1357,15 +1357,21 @@
#undef FETCH_FLAG_FROM_VM
+void ciMethod::dump_name_as_ascii(outputStream* st) {
+ Method* method = get_Method();
+ st->print("%s %s %s",
+ method->klass_name()->as_quoted_ascii(),
+ method->name()->as_quoted_ascii(),
+ method->signature()->as_quoted_ascii());
+}
+
void ciMethod::dump_replay_data(outputStream* st) {
ResourceMark rm;
Method* method = get_Method();
MethodCounters* mcs = method->method_counters();
- Klass* holder = method->method_holder();
- st->print_cr("ciMethod %s %s %s %d %d %d %d %d",
- holder->name()->as_quoted_ascii(),
- method->name()->as_quoted_ascii(),
- method->signature()->as_quoted_ascii(),
+ st->print("ciMethod ");
+ dump_name_as_ascii(st);
+ st->print_cr(" %d %d %d %d %d",
mcs == NULL ? 0 : mcs->invocation_counter()->raw_counter(),
mcs == NULL ? 0 : mcs->backedge_counter()->raw_counter(),
interpreter_invocation_count(),
--- a/hotspot/src/share/vm/ci/ciMethod.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethod.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -310,10 +310,13 @@
bool is_accessor () const;
bool is_initializer () const;
bool can_be_statically_bound() const { return _can_be_statically_bound; }
- void dump_replay_data(outputStream* st);
bool is_boxing_method() const;
bool is_unboxing_method() const;
+ // Replay data methods
+ void dump_name_as_ascii(outputStream* st);
+ void dump_replay_data(outputStream* st);
+
// Print the bytecodes of this method.
void print_codes_on(outputStream* st);
void print_codes() {
--- a/hotspot/src/share/vm/ci/ciMethodData.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethodData.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/ci/ciMethodData.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethodData.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciObjArrayKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjArrayKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciObjectFactory.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjectFactory.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciObjectFactory.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjectFactory.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciReplay.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciReplay.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -24,6 +24,8 @@
#include "precompiled.hpp"
#include "ci/ciMethodData.hpp"
#include "ci/ciReplay.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciKlass.hpp"
#include "ci/ciUtilities.hpp"
#include "compiler/compileBroker.hpp"
#include "memory/allocation.inline.hpp"
@@ -37,74 +39,107 @@
// ciReplay
typedef struct _ciMethodDataRecord {
- const char* klass;
- const char* method;
- const char* signature;
- int state;
- int current_mileage;
- intptr_t* data;
- int data_length;
- char* orig_data;
- int orig_data_length;
- int oops_length;
- jobject* oops_handles;
- int* oops_offsets;
+ const char* _klass_name;
+ const char* _method_name;
+ const char* _signature;
+
+ int _state;
+ int _current_mileage;
+
+ intptr_t* _data;
+ char* _orig_data;
+ jobject* _oops_handles;
+ int* _oops_offsets;
+ int _data_length;
+ int _orig_data_length;
+ int _oops_length;
} ciMethodDataRecord;
typedef struct _ciMethodRecord {
- const char* klass;
- const char* method;
- const char* signature;
- int instructions_size;
- int interpreter_invocation_count;
- int interpreter_throwout_count;
- int invocation_counter;
- int backedge_counter;
+ const char* _klass_name;
+ const char* _method_name;
+ const char* _signature;
+
+ int _instructions_size;
+ int _interpreter_invocation_count;
+ int _interpreter_throwout_count;
+ int _invocation_counter;
+ int _backedge_counter;
} ciMethodRecord;
-class CompileReplay;
+typedef struct _ciInlineRecord {
+ const char* _klass_name;
+ const char* _method_name;
+ const char* _signature;
+
+ int _inline_depth;
+ int _inline_bci;
+} ciInlineRecord;
+
+class CompileReplay;
static CompileReplay* replay_state;
class CompileReplay : public StackObj {
private:
- FILE* stream;
- Thread* thread;
- Handle protection_domain;
- Handle loader;
+ FILE* _stream;
+ Thread* _thread;
+ Handle _protection_domain;
+ Handle _loader;
- GrowableArray<ciMethodRecord*> ci_method_records;
- GrowableArray<ciMethodDataRecord*> ci_method_data_records;
+ GrowableArray<ciMethodRecord*> _ci_method_records;
+ GrowableArray<ciMethodDataRecord*> _ci_method_data_records;
+
+ // Use pointer because we may need to return inline records
+ // without destroying them.
+ GrowableArray<ciInlineRecord*>* _ci_inline_records;
const char* _error_message;
- char* bufptr;
- char* buffer;
- int buffer_length;
- int buffer_end;
- int line_no;
+ char* _bufptr;
+ char* _buffer;
+ int _buffer_length;
+ int _buffer_pos;
+
+ // "compile" data
+ ciKlass* _iklass;
+ Method* _imethod;
+ int _entry_bci;
+ int _comp_level;
public:
CompileReplay(const char* filename, TRAPS) {
- thread = THREAD;
- loader = Handle(thread, SystemDictionary::java_system_loader());
- stream = fopen(filename, "rt");
- if (stream == NULL) {
+ _thread = THREAD;
+ _loader = Handle(_thread, SystemDictionary::java_system_loader());
+ _protection_domain = Handle();
+
+ _stream = fopen(filename, "rt");
+ if (_stream == NULL) {
fprintf(stderr, "ERROR: Can't open replay file %s\n", filename);
}
- buffer_length = 32;
- buffer = NEW_RESOURCE_ARRAY(char, buffer_length);
+
+ _ci_inline_records = NULL;
_error_message = NULL;
+ _buffer_length = 32;
+ _buffer = NEW_RESOURCE_ARRAY(char, _buffer_length);
+ _bufptr = _buffer;
+ _buffer_pos = 0;
+
+ _imethod = NULL;
+ _iklass = NULL;
+ _entry_bci = 0;
+ _comp_level = 0;
+
test();
}
~CompileReplay() {
- if (stream != NULL) fclose(stream);
+ if (_stream != NULL) fclose(_stream);
}
void test() {
- strcpy(buffer, "1 2 foo 4 bar 0x9 \"this is it\"");
- bufptr = buffer;
+ strcpy(_buffer, "1 2 foo 4 bar 0x9 \"this is it\"");
+ _bufptr = _buffer;
assert(parse_int("test") == 1, "what");
assert(parse_int("test") == 2, "what");
assert(strcmp(parse_string(), "foo") == 0, "what");
@@ -115,18 +150,18 @@
}
bool had_error() {
- return _error_message != NULL || thread->has_pending_exception();
+ return _error_message != NULL || _thread->has_pending_exception();
}
bool can_replay() {
- return !(stream == NULL || had_error());
+ return !(_stream == NULL || had_error());
}
void report_error(const char* msg) {
_error_message = msg;
- // Restore the buffer contents for error reporting
- for (int i = 0; i < buffer_end; i++) {
- if (buffer[i] == '\0') buffer[i] = ' ';
+ // Restore the _buffer contents for error reporting
+ for (int i = 0; i < _buffer_pos; i++) {
+ if (_buffer[i] == '\0') _buffer[i] = ' ';
}
}
@@ -137,10 +172,10 @@
int v = 0;
int read;
- if (sscanf(bufptr, "%i%n", &v, &read) != 1) {
+ if (sscanf(_bufptr, "%i%n", &v, &read) != 1) {
report_error(label);
} else {
- bufptr += read;
+ _bufptr += read;
}
return v;
}
@@ -152,31 +187,31 @@
intptr_t v = 0;
int read;
- if (sscanf(bufptr, INTPTR_FORMAT "%n", &v, &read) != 1) {
+ if (sscanf(_bufptr, INTPTR_FORMAT "%n", &v, &read) != 1) {
report_error(label);
} else {
- bufptr += read;
+ _bufptr += read;
}
return v;
}
void skip_ws() {
// Skip any leading whitespace
- while (*bufptr == ' ' || *bufptr == '\t') {
- bufptr++;
+ while (*_bufptr == ' ' || *_bufptr == '\t') {
+ _bufptr++;
}
}
char* scan_and_terminate(char delim) {
- char* str = bufptr;
- while (*bufptr != delim && *bufptr != '\0') {
- bufptr++;
+ char* str = _bufptr;
+ while (*_bufptr != delim && *_bufptr != '\0') {
+ _bufptr++;
}
- if (*bufptr != '\0') {
- *bufptr++ = '\0';
+ if (*_bufptr != '\0') {
+ *_bufptr++ = '\0';
}
- if (bufptr == str) {
+ if (_bufptr == str) {
// nothing here
return NULL;
}
@@ -195,8 +230,8 @@
skip_ws();
- if (*bufptr == '"') {
- bufptr++;
+ if (*_bufptr == '"') {
+ _bufptr++;
return scan_and_terminate('"');
} else {
return scan_and_terminate(' ');
@@ -273,7 +308,12 @@
const char* str = parse_escaped_string();
Symbol* klass_name = SymbolTable::lookup(str, (int)strlen(str), CHECK_NULL);
if (klass_name != NULL) {
- Klass* k = SystemDictionary::resolve_or_fail(klass_name, loader, protection_domain, true, THREAD);
+ Klass* k = NULL;
+ if (_iklass != NULL) {
+ k = (Klass*)_iklass->find_klass(ciSymbol::make(klass_name->as_C_string()))->constant_encoding();
+ } else {
+ k = SystemDictionary::resolve_or_fail(klass_name, _loader, _protection_domain, true, THREAD);
+ }
if (HAS_PENDING_EXCEPTION) {
oop throwable = PENDING_EXCEPTION;
java_lang_Throwable::print(throwable, tty);
@@ -289,7 +329,7 @@
// Lookup a klass
Klass* resolve_klass(const char* klass, TRAPS) {
Symbol* klass_name = SymbolTable::lookup(klass, (int)strlen(klass), CHECK_NULL);
- return SystemDictionary::resolve_or_fail(klass_name, loader, protection_domain, true, CHECK_NULL);
+ return SystemDictionary::resolve_or_fail(klass_name, _loader, _protection_domain, true, CHECK_NULL);
}
// Parse the standard tuple of <klass> <name> <signature>
@@ -304,40 +344,45 @@
return m;
}
+ int get_line(int c) {
+ while(c != EOF) {
+ if (_buffer_pos + 1 >= _buffer_length) {
+ int new_length = _buffer_length * 2;
+ // Next call will throw error in case of OOM.
+ _buffer = REALLOC_RESOURCE_ARRAY(char, _buffer, _buffer_length, new_length);
+ _buffer_length = new_length;
+ }
+ if (c == '\n') {
+ c = getc(_stream); // get next char
+ break;
+ } else if (c == '\r') {
+ // skip LF
+ } else {
+ _buffer[_buffer_pos++] = c;
+ }
+ c = getc(_stream);
+ }
+ // null terminate it, reset the pointer
+ _buffer[_buffer_pos] = '\0'; // NL or EOF
+ _buffer_pos = 0;
+ _bufptr = _buffer;
+ return c;
+ }
+
// Process each line of the replay file executing each command until
// the file ends.
void process(TRAPS) {
- line_no = 1;
- int pos = 0;
- int c = getc(stream);
+ int line_no = 1;
+ int c = getc(_stream);
while(c != EOF) {
- if (pos + 1 >= buffer_length) {
- int newl = buffer_length * 2;
- char* newb = NEW_RESOURCE_ARRAY(char, newl);
- memcpy(newb, buffer, pos);
- buffer = newb;
- buffer_length = newl;
+ c = get_line(c);
+ process_command(CHECK);
+ if (had_error()) {
+ tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message);
+ tty->print_cr("%s", _buffer);
+ return;
}
- if (c == '\n') {
- // null terminate it, reset the pointer and process the line
- buffer[pos] = '\0';
- buffer_end = pos++;
- bufptr = buffer;
- process_command(CHECK);
- if (had_error()) {
- tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message);
- tty->print_cr("%s", buffer);
- return;
- }
- pos = 0;
- buffer_end = 0;
- line_no++;
- } else if (c == '\r') {
- // skip LF
- } else {
- buffer[pos++] = c;
- }
- c = getc(stream);
+ line_no++;
}
}
@@ -396,7 +441,37 @@
return true;
}
- // compile <klass> <name> <signature> <entry_bci> <comp_level>
+ // compile <klass> <name> <signature> <entry_bci> <comp_level> inline <count> <depth> <bci> <klass> <name> <signature> ...
+ void* process_inline(ciMethod* imethod, Method* m, int entry_bci, int comp_level, TRAPS) {
+ _imethod = m;
+ _iklass = imethod->holder();
+ _entry_bci = entry_bci;
+ _comp_level = comp_level;
+ int line_no = 1;
+ int c = getc(_stream);
+ while(c != EOF) {
+ c = get_line(c);
+ // Expecting only lines with "compile" command in inline replay file.
+ char* cmd = parse_string();
+ if (cmd == NULL || strcmp("compile", cmd) != 0) {
+ return NULL;
+ }
+ process_compile(CHECK_NULL);
+ if (had_error()) {
+ tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message);
+ tty->print_cr("%s", _buffer);
+ return NULL;
+ }
+ if (_ci_inline_records != NULL && _ci_inline_records->length() > 0) {
+ // Found inlining record for the requested method.
+ return _ci_inline_records;
+ }
+ line_no++;
+ }
+ return NULL;
+ }
+
+ // compile <klass> <name> <signature> <entry_bci> <comp_level> inline <count> <depth> <bci> <klass> <name> <signature> ...
void process_compile(TRAPS) {
Method* method = parse_method(CHECK);
if (had_error()) return;
@@ -410,6 +485,43 @@
if (!is_valid_comp_level(comp_level)) {
return;
}
+ if (_imethod != NULL) {
+ // Replay Inlining
+ if (entry_bci != _entry_bci || comp_level != _comp_level) {
+ return;
+ }
+ const char* iklass_name = _imethod->method_holder()->name()->as_utf8();
+ const char* imethod_name = _imethod->name()->as_utf8();
+ const char* isignature = _imethod->signature()->as_utf8();
+ const char* klass_name = method->method_holder()->name()->as_utf8();
+ const char* method_name = method->name()->as_utf8();
+ const char* signature = method->signature()->as_utf8();
+ if (strcmp(iklass_name, klass_name) != 0 ||
+ strcmp(imethod_name, method_name) != 0 ||
+ strcmp(isignature, signature) != 0) {
+ return;
+ }
+ }
+ int inline_count = 0;
+ if (parse_tag_and_count("inline", inline_count)) {
+ // Record inlining data
+ _ci_inline_records = new GrowableArray<ciInlineRecord*>();
+ for (int i = 0; i < inline_count; i++) {
+ int depth = parse_int("inline_depth");
+ int bci = parse_int("inline_bci");
+ if (had_error()) {
+ break;
+ }
+ Method* inl_method = parse_method(CHECK);
+ if (had_error()) {
+ break;
+ }
+ new_ciInlineRecord(inl_method, bci, depth);
+ }
+ }
+ if (_imethod != NULL) {
+ return; // Replay Inlining
+ }
Klass* k = method->method_holder();
((InstanceKlass*)k)->initialize(THREAD);
if (HAS_PENDING_EXCEPTION) {
@@ -442,11 +554,11 @@
Method* method = parse_method(CHECK);
if (had_error()) return;
ciMethodRecord* rec = new_ciMethod(method);
- rec->invocation_counter = parse_int("invocation_counter");
- rec->backedge_counter = parse_int("backedge_counter");
- rec->interpreter_invocation_count = parse_int("interpreter_invocation_count");
- rec->interpreter_throwout_count = parse_int("interpreter_throwout_count");
- rec->instructions_size = parse_int("instructions_size");
+ rec->_invocation_counter = parse_int("invocation_counter");
+ rec->_backedge_counter = parse_int("backedge_counter");
+ rec->_interpreter_invocation_count = parse_int("interpreter_invocation_count");
+ rec->_interpreter_throwout_count = parse_int("interpreter_throwout_count");
+ rec->_instructions_size = parse_int("instructions_size");
}
// ciMethodData <klass> <name> <signature> <state> <current mileage> orig <length> # # ... data <length> # # ... oops <length>
@@ -471,32 +583,32 @@
// collect and record all the needed information for later
ciMethodDataRecord* rec = new_ciMethodData(method);
- rec->state = parse_int("state");
- rec->current_mileage = parse_int("current_mileage");
+ rec->_state = parse_int("state");
+ rec->_current_mileage = parse_int("current_mileage");
- rec->orig_data = parse_data("orig", rec->orig_data_length);
- if (rec->orig_data == NULL) {
+ rec->_orig_data = parse_data("orig", rec->_orig_data_length);
+ if (rec->_orig_data == NULL) {
return;
}
- rec->data = parse_intptr_data("data", rec->data_length);
- if (rec->data == NULL) {
+ rec->_data = parse_intptr_data("data", rec->_data_length);
+ if (rec->_data == NULL) {
return;
}
- if (!parse_tag_and_count("oops", rec->oops_length)) {
+ if (!parse_tag_and_count("oops", rec->_oops_length)) {
return;
}
- rec->oops_handles = NEW_RESOURCE_ARRAY(jobject, rec->oops_length);
- rec->oops_offsets = NEW_RESOURCE_ARRAY(int, rec->oops_length);
- for (int i = 0; i < rec->oops_length; i++) {
+ rec->_oops_handles = NEW_RESOURCE_ARRAY(jobject, rec->_oops_length);
+ rec->_oops_offsets = NEW_RESOURCE_ARRAY(int, rec->_oops_length);
+ for (int i = 0; i < rec->_oops_length; i++) {
int offset = parse_int("offset");
if (had_error()) {
return;
}
Klass* k = parse_klass(CHECK);
- rec->oops_offsets[i] = offset;
+ rec->_oops_offsets[i] = offset;
KlassHandle *kh = NEW_C_HEAP_OBJ(KlassHandle, mtCompiler);
::new ((void*)kh) KlassHandle(THREAD, k);
- rec->oops_handles[i] = (jobject)kh;
+ rec->_oops_handles[i] = (jobject)kh;
}
}
@@ -570,6 +682,9 @@
case JVM_CONSTANT_Utf8:
case JVM_CONSTANT_Integer:
case JVM_CONSTANT_Float:
+ case JVM_CONSTANT_MethodHandle:
+ case JVM_CONSTANT_MethodType:
+ case JVM_CONSTANT_InvokeDynamic:
if (tag != cp->tag_at(i).value()) {
report_error("tag mismatch: wrong class files?");
return;
@@ -729,10 +844,10 @@
// Create and initialize a record for a ciMethod
ciMethodRecord* new_ciMethod(Method* method) {
ciMethodRecord* rec = NEW_RESOURCE_OBJ(ciMethodRecord);
- rec->klass = method->method_holder()->name()->as_utf8();
- rec->method = method->name()->as_utf8();
- rec->signature = method->signature()->as_utf8();
- ci_method_records.append(rec);
+ rec->_klass_name = method->method_holder()->name()->as_utf8();
+ rec->_method_name = method->name()->as_utf8();
+ rec->_signature = method->signature()->as_utf8();
+ _ci_method_records.append(rec);
return rec;
}
@@ -741,11 +856,11 @@
const char* klass_name = method->method_holder()->name()->as_utf8();
const char* method_name = method->name()->as_utf8();
const char* signature = method->signature()->as_utf8();
- for (int i = 0; i < ci_method_records.length(); i++) {
- ciMethodRecord* rec = ci_method_records.at(i);
- if (strcmp(rec->klass, klass_name) == 0 &&
- strcmp(rec->method, method_name) == 0 &&
- strcmp(rec->signature, signature) == 0) {
+ for (int i = 0; i < _ci_method_records.length(); i++) {
+ ciMethodRecord* rec = _ci_method_records.at(i);
+ if (strcmp(rec->_klass_name, klass_name) == 0 &&
+ strcmp(rec->_method_name, method_name) == 0 &&
+ strcmp(rec->_signature, signature) == 0) {
return rec;
}
}
@@ -755,10 +870,10 @@
// Create and initialize a record for a ciMethodData
ciMethodDataRecord* new_ciMethodData(Method* method) {
ciMethodDataRecord* rec = NEW_RESOURCE_OBJ(ciMethodDataRecord);
- rec->klass = method->method_holder()->name()->as_utf8();
- rec->method = method->name()->as_utf8();
- rec->signature = method->signature()->as_utf8();
- ci_method_data_records.append(rec);
+ rec->_klass_name = method->method_holder()->name()->as_utf8();
+ rec->_method_name = method->name()->as_utf8();
+ rec->_signature = method->signature()->as_utf8();
+ _ci_method_data_records.append(rec);
return rec;
}
@@ -767,25 +882,65 @@
const char* klass_name = method->method_holder()->name()->as_utf8();
const char* method_name = method->name()->as_utf8();
const char* signature = method->signature()->as_utf8();
- for (int i = 0; i < ci_method_data_records.length(); i++) {
- ciMethodDataRecord* rec = ci_method_data_records.at(i);
- if (strcmp(rec->klass, klass_name) == 0 &&
- strcmp(rec->method, method_name) == 0 &&
- strcmp(rec->signature, signature) == 0) {
+ for (int i = 0; i < _ci_method_data_records.length(); i++) {
+ ciMethodDataRecord* rec = _ci_method_data_records.at(i);
+ if (strcmp(rec->_klass_name, klass_name) == 0 &&
+ strcmp(rec->_method_name, method_name) == 0 &&
+ strcmp(rec->_signature, signature) == 0) {
return rec;
}
}
return NULL;
}
+ // Create and initialize a record for a ciInlineRecord
+ ciInlineRecord* new_ciInlineRecord(Method* method, int bci, int depth) {
+ ciInlineRecord* rec = NEW_RESOURCE_OBJ(ciInlineRecord);
+ rec->_klass_name = method->method_holder()->name()->as_utf8();
+ rec->_method_name = method->name()->as_utf8();
+ rec->_signature = method->signature()->as_utf8();
+ rec->_inline_bci = bci;
+ rec->_inline_depth = depth;
+ _ci_inline_records->append(rec);
+ return rec;
+ }
+
+ // Lookup inlining data for a ciMethod
+ ciInlineRecord* find_ciInlineRecord(Method* method, int bci, int depth) {
+ if (_ci_inline_records != NULL) {
+ return find_ciInlineRecord(_ci_inline_records, method, bci, depth);
+ }
+ return NULL;
+ }
+
+ static ciInlineRecord* find_ciInlineRecord(GrowableArray<ciInlineRecord*>* records,
+ Method* method, int bci, int depth) {
+ if (records != NULL) {
+ const char* klass_name = method->method_holder()->name()->as_utf8();
+ const char* method_name = method->name()->as_utf8();
+ const char* signature = method->signature()->as_utf8();
+ for (int i = 0; i < records->length(); i++) {
+ ciInlineRecord* rec = records->at(i);
+ if ((rec->_inline_bci == bci) &&
+ (rec->_inline_depth == depth) &&
+ (strcmp(rec->_klass_name, klass_name) == 0) &&
+ (strcmp(rec->_method_name, method_name) == 0) &&
+ (strcmp(rec->_signature, signature) == 0)) {
+ return rec;
+ }
+ }
+ }
+ return NULL;
+ }
+
const char* error_message() {
return _error_message;
}
void reset() {
_error_message = NULL;
- ci_method_records.clear();
- ci_method_data_records.clear();
+ _ci_method_records.clear();
+ _ci_method_data_records.clear();
}
// Take an ascii string contain \u#### escapes and convert it to utf8
@@ -845,6 +1000,37 @@
vm_exit(exit_code);
}
+void* ciReplay::load_inline_data(ciMethod* method, int entry_bci, int comp_level) {
+ if (FLAG_IS_DEFAULT(InlineDataFile)) {
+ tty->print_cr("ERROR: no inline replay data file specified (use -XX:InlineDataFile=inline_pid12345.txt).");
+ return NULL;
+ }
+
+ VM_ENTRY_MARK;
+ // Load and parse the replay data
+ CompileReplay rp(InlineDataFile, THREAD);
+ if (!rp.can_replay()) {
+ tty->print_cr("ciReplay: !rp.can_replay()");
+ return NULL;
+ }
+ void* data = rp.process_inline(method, method->get_Method(), entry_bci, comp_level, THREAD);
+ if (HAS_PENDING_EXCEPTION) {
+ oop throwable = PENDING_EXCEPTION;
+ CLEAR_PENDING_EXCEPTION;
+ java_lang_Throwable::print(throwable, tty);
+ tty->cr();
+ java_lang_Throwable::print_stack_trace(throwable, tty);
+ tty->cr();
+ return NULL;
+ }
+
+ if (rp.had_error()) {
+ tty->print_cr("ciReplay: Failed on %s", rp.error_message());
+ return NULL;
+ }
+ return data;
+}
+
int ciReplay::replay_impl(TRAPS) {
HandleMark hm;
ResourceMark rm;
@@ -890,7 +1076,6 @@
return exit_code;
}
-
void ciReplay::initialize(ciMethodData* m) {
if (replay_state == NULL) {
return;
@@ -909,28 +1094,28 @@
method->print_name(tty);
tty->cr();
} else {
- m->_state = rec->state;
- m->_current_mileage = rec->current_mileage;
- if (rec->data_length != 0) {
- assert(m->_data_size == rec->data_length * (int)sizeof(rec->data[0]), "must agree");
+ m->_state = rec->_state;
+ m->_current_mileage = rec->_current_mileage;
+ if (rec->_data_length != 0) {
+ assert(m->_data_size == rec->_data_length * (int)sizeof(rec->_data[0]), "must agree");
// Write the correct ciObjects back into the profile data
ciEnv* env = ciEnv::current();
- for (int i = 0; i < rec->oops_length; i++) {
- KlassHandle *h = (KlassHandle *)rec->oops_handles[i];
- *(ciMetadata**)(rec->data + rec->oops_offsets[i]) =
+ for (int i = 0; i < rec->_oops_length; i++) {
+ KlassHandle *h = (KlassHandle *)rec->_oops_handles[i];
+ *(ciMetadata**)(rec->_data + rec->_oops_offsets[i]) =
env->get_metadata((*h)());
}
// Copy the updated profile data into place as intptr_ts
#ifdef _LP64
- Copy::conjoint_jlongs_atomic((jlong *)rec->data, (jlong *)m->_data, rec->data_length);
+ Copy::conjoint_jlongs_atomic((jlong *)rec->_data, (jlong *)m->_data, rec->_data_length);
#else
- Copy::conjoint_jints_atomic((jint *)rec->data, (jint *)m->_data, rec->data_length);
+ Copy::conjoint_jints_atomic((jint *)rec->_data, (jint *)m->_data, rec->_data_length);
#endif
}
// copy in the original header
- Copy::conjoint_jbytes(rec->orig_data, (char*)&m->_orig, rec->orig_data_length);
+ Copy::conjoint_jbytes(rec->_orig_data, (char*)&m->_orig, rec->_orig_data_length);
}
}
@@ -939,12 +1124,38 @@
if (replay_state == NULL) {
return false;
}
-
VM_ENTRY_MARK;
// ciMethod without a record shouldn't be inlined.
return replay_state->find_ciMethodRecord(method->get_Method()) == NULL;
}
+bool ciReplay::should_inline(void* data, ciMethod* method, int bci, int inline_depth) {
+ if (data != NULL) {
+ GrowableArray<ciInlineRecord*>* records = (GrowableArray<ciInlineRecord*>*)data;
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return CompileReplay::find_ciInlineRecord(records, method->get_Method(), bci, inline_depth) != NULL;
+ } else if (replay_state != NULL) {
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return replay_state->find_ciInlineRecord(method->get_Method(), bci, inline_depth) != NULL;
+ }
+ return false;
+}
+
+bool ciReplay::should_not_inline(void* data, ciMethod* method, int bci, int inline_depth) {
+ if (data != NULL) {
+ GrowableArray<ciInlineRecord*>* records = (GrowableArray<ciInlineRecord*>*)data;
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return CompileReplay::find_ciInlineRecord(records, method->get_Method(), bci, inline_depth) == NULL;
+ } else if (replay_state != NULL) {
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return replay_state->find_ciInlineRecord(method->get_Method(), bci, inline_depth) == NULL;
+ }
+ return false;
+}
void ciReplay::initialize(ciMethod* m) {
if (replay_state == NULL) {
@@ -965,14 +1176,14 @@
tty->cr();
} else {
EXCEPTION_CONTEXT;
- // m->_instructions_size = rec->instructions_size;
+ // m->_instructions_size = rec->_instructions_size;
m->_instructions_size = -1;
- m->_interpreter_invocation_count = rec->interpreter_invocation_count;
- m->_interpreter_throwout_count = rec->interpreter_throwout_count;
+ m->_interpreter_invocation_count = rec->_interpreter_invocation_count;
+ m->_interpreter_throwout_count = rec->_interpreter_throwout_count;
MethodCounters* mcs = method->get_method_counters(CHECK_AND_CLEAR);
guarantee(mcs != NULL, "method counters allocation failed");
- mcs->invocation_counter()->_counter = rec->invocation_counter;
- mcs->backedge_counter()->_counter = rec->backedge_counter;
+ mcs->invocation_counter()->_counter = rec->_invocation_counter;
+ mcs->backedge_counter()->_counter = rec->_backedge_counter;
}
}
--- a/hotspot/src/share/vm/ci/ciReplay.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciReplay.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -29,6 +29,73 @@
// ciReplay
+//
+// Replay compilation of a java method by using an information in replay file.
+// Replay inlining decisions during compilation by using an information in inline file.
+//
+// NOTE: these replay functions only exist in debug version of VM.
+//
+// Replay compilation.
+// -------------------
+//
+// Replay data file replay.txt can be created by Serviceability Agent
+// from a core file, see agent/doc/cireplay.html
+//
+// $ java -cp <jdk>/lib/sa-jdi.jar sun.jvm.hotspot.CLHSDB
+// hsdb> attach <jdk>/bin/java ./core
+// hsdb> threads
+// t@10 Service Thread
+// t@9 C2 CompilerThread0
+// t@8 Signal Dispatcher
+// t@7 Finalizer
+// t@6 Reference Handler
+// t@2 main
+// hsdb> dumpreplaydata t@9 > replay.txt
+// hsdb> quit
+//
+// (Note: SA could be also used to extract app.jar and boot.jar files
+// from core file to replay compilation if only core file is available)
+//
+// Replay data file replay_pid%p.log is also created when VM crashes
+// in Compiler thread during compilation. It is controlled by
+// DumpReplayDataOnError flag which is ON by default.
+//
+// Replay file replay_pid%p_compid%d.log can be created
+// for the specified java method during normal execution using
+// CompileCommand option DumpReplay:
+//
+// -XX:CompileCommand=option,Benchmark::test,DumpReplay
+//
+// In this case the file name has additional compilation id "_compid%d"
+// because the method could be compiled several times.
+//
+// To replay compilation the replay file should be specified:
+//
+// -XX:+ReplayCompiles -XX:ReplayDataFile=replay_pid2133.log
+//
+// VM thread reads data from the file immediately after VM initialization
+// and puts the compilation task on compile queue. After that it goes into
+// wait state (BackgroundCompilation flag is set to false) since there is no
+// a program to execute. VM exits when the compilation is finished.
+//
+//
+// Replay inlining.
+// ----------------
+//
+// Replay inlining file inline_pid%p_compid%d.log is created for
+// a specific java method during normal execution of a java program
+// using CompileCommand option DumpInline:
+//
+// -XX:CompileCommand=option,Benchmark::test,DumpInline
+//
+// To replay inlining the replay file and the method should be specified:
+//
+// -XX:CompileCommand=option,Benchmark::test,ReplayInline -XX:InlineDataFile=inline_pid3244_compid6.log
+//
+// The difference from replay compilation is that replay inlining
+// is performed during normal java program execution.
+//
+
class ciReplay {
CI_PACKAGE_ACCESS
@@ -37,7 +104,11 @@
static int replay_impl(TRAPS);
public:
+ // Replay specified compilation and exit VM.
static void replay(TRAPS);
+ // Load inlining decisions from file and use them
+ // during compilation of specified method.
+ static void* load_inline_data(ciMethod* method, int entry_bci, int comp_level);
// These are used by the CI to fill in the cached data from the
// replay file when replaying compiles.
@@ -48,6 +119,8 @@
static bool is_loaded(Klass* klass);
static bool should_not_inline(ciMethod* method);
+ static bool should_inline(void* data, ciMethod* method, int bci, int inline_depth);
+ static bool should_not_inline(void* data, ciMethod* method, int bci, int inline_depth);
#endif
};
--- a/hotspot/src/share/vm/ci/ciStreams.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciStreams.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciType.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciType.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/ci/ciType.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciType.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/ci/ciTypeArray.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciTypeArray.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/ci/ciTypeArrayKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciTypeArrayKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/ci/ciTypeFlow.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciTypeFlow.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/ci/ciUtilities.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciUtilities.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/classfile/bytecodeAssembler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/bytecodeAssembler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/classfile/classFileStream.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classFileStream.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/classfile/classFileStream.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classFileStream.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/classfile/classLoaderData.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classLoaderData.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -648,12 +648,12 @@
return array;
}
-#ifndef PRODUCT
-// for debugging and hsfind(x)
-bool ClassLoaderDataGraph::contains(address x) {
- // I think we need the _metaspace_lock taken here because the class loader
- // data graph could be changing while we are walking it (new entries added,
- // new entries being unloaded, etc).
+// For profiling and hsfind() only. Otherwise, this is unsafe (and slow). This
+// is done lock free to avoid lock inversion problems. It is safe because
+// new ClassLoaderData are added to the end of the CLDG, and only removed at
+// safepoint. The _unloading list can be deallocated concurrently with CMS so
+// this doesn't look in metaspace for classes that have been unloaded.
+bool ClassLoaderDataGraph::contains(const void* x) {
if (DumpSharedSpaces) {
// There are only two metaspaces to worry about.
ClassLoaderData* ncld = ClassLoaderData::the_null_class_loader_data();
@@ -670,16 +670,11 @@
}
}
- // Could also be on an unloading list which is okay, ie. still allocated
- // for a little while.
- for (ClassLoaderData* ucld = _unloading; ucld != NULL; ucld = ucld->next()) {
- if (ucld->metaspace_or_null() != NULL && ucld->metaspace_or_null()->contains(x)) {
- return true;
- }
- }
+ // Do not check unloading list because deallocation can be concurrent.
return false;
}
+#ifndef PRODUCT
bool ClassLoaderDataGraph::contains_loader_data(ClassLoaderData* loader_data) {
for (ClassLoaderData* data = _head; data != NULL; data = data->next()) {
if (loader_data == data) {
--- a/hotspot/src/share/vm/classfile/classLoaderData.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classLoaderData.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -90,9 +90,9 @@
static void dump() { dump_on(tty); }
static void verify();
+ // expensive test for pointer in metaspace for debugging
+ static bool contains(const void* x);
#ifndef PRODUCT
- // expensive test for pointer in metaspace for debugging
- static bool contains(address x);
static bool contains_loader_data(ClassLoaderData* loader_data);
#endif
--- a/hotspot/src/share/vm/classfile/classLoaderData.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classLoaderData.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/share/vm/classfile/defaultMethods.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/defaultMethods.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -349,6 +349,7 @@
}
Symbol* generate_no_defaults_message(TRAPS) const;
+ Symbol* generate_method_message(Symbol *klass_name, Method* method, TRAPS) const;
Symbol* generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const;
public:
@@ -414,21 +415,25 @@
}
}
- if (qualified_methods.length() == 0) {
- _exception_message = generate_no_defaults_message(CHECK);
+ if (num_defaults == 0) {
+ if (qualified_methods.length() == 0) {
+ _exception_message = generate_no_defaults_message(CHECK);
+ } else {
+ assert(root != NULL, "Null root class");
+ _exception_message = generate_method_message(root->name(), qualified_methods.at(0), CHECK);
+ }
_exception_name = vmSymbols::java_lang_AbstractMethodError();
// If only one qualified method is default, select that
} else if (num_defaults == 1) {
_selected_target = qualified_methods.at(default_index);
} else if (num_defaults > 1) {
- _exception_message = generate_conflicts_message(&qualified_methods,CHECK);
- _exception_name = vmSymbols::java_lang_IncompatibleClassChangeError();
+ _exception_message = generate_conflicts_message(&qualified_methods,CHECK);
+ _exception_name = vmSymbols::java_lang_IncompatibleClassChangeError();
if (TraceDefaultMethods) {
_exception_message->print_value_on(tty);
tty->print_cr("");
}
}
- // leave abstract methods alone, they will be found via normal search path
}
bool contains_signature(Symbol* query) {
@@ -486,6 +491,19 @@
return SymbolTable::new_symbol("No qualifying defaults found", CHECK_NULL);
}
+Symbol* MethodFamily::generate_method_message(Symbol *klass_name, Method* method, TRAPS) const {
+ stringStream ss;
+ ss.print("Method ");
+ Symbol* name = method->name();
+ Symbol* signature = method->signature();
+ ss.write((const char*)klass_name->bytes(), klass_name->utf8_length());
+ ss.print(".");
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ ss.write((const char*)signature->bytes(), signature->utf8_length());
+ ss.print(" is abstract");
+ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
+}
+
Symbol* MethodFamily::generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const {
stringStream ss;
ss.print("Conflicting default methods:");
@@ -1026,7 +1044,8 @@
Array<Method*>* merged_methods = MetadataFactory::new_array<Method*>(
klass->class_loader_data(), new_size, NULL, CHECK);
- if (original_ordering != NULL && original_ordering->length() > 0) {
+ // original_ordering might be empty if this class has no methods of its own
+ if (JvmtiExport::can_maintain_original_method_order() || DumpSharedSpaces) {
merged_ordering = MetadataFactory::new_array<int>(
klass->class_loader_data(), new_size, CHECK);
}
@@ -1053,6 +1072,8 @@
merged_methods->at_put(i, orig_method);
original_methods->at_put(orig_idx, NULL);
if (merged_ordering->length() > 0) {
+ assert(original_ordering != NULL && original_ordering->length() > 0,
+ "should have original order information for this method");
merged_ordering->at_put(i, original_ordering->at(orig_idx));
}
++orig_idx;
@@ -1081,13 +1102,14 @@
// Replace klass methods with new merged lists
klass->set_methods(merged_methods);
klass->set_initial_method_idnum(new_size);
+ klass->set_method_ordering(merged_ordering);
+ // Free metadata
ClassLoaderData* cld = klass->class_loader_data();
- if (original_methods ->length() > 0) {
+ if (original_methods->length() > 0) {
MetadataFactory::free_array(cld, original_methods);
}
- if (original_ordering->length() > 0) {
- klass->set_method_ordering(merged_ordering);
+ if (original_ordering != NULL && original_ordering->length() > 0) {
MetadataFactory::free_array(cld, original_ordering);
}
}
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -3286,7 +3286,7 @@
sun_reflect_ConstantPool::compute_offsets();
sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
}
- if (JDK_Version::is_jdk18x_version())
+ if (JDK_Version::is_gte_jdk18x_version())
java_lang_reflect_Parameter::compute_offsets();
// generated interpreter code wants to know about the offsets we just computed:
--- a/hotspot/src/share/vm/classfile/systemDictionary.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1049,6 +1049,9 @@
add_to_hierarchy(k, CHECK_NULL); // No exception, but can block
// But, do not add to system dictionary.
+
+ // compiled code dependencies need to be validated anyway
+ notice_modification();
}
// Rewrite and patch constant pool here.
--- a/hotspot/src/share/vm/classfile/vmSymbols.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/vmSymbols.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -654,9 +654,9 @@
do_intrinsic(_addExactI, java_lang_Math, addExact_name, int2_int_signature, F_S) \
do_intrinsic(_addExactL, java_lang_Math, addExact_name, long2_long_signature, F_S) \
do_intrinsic(_decrementExactI, java_lang_Math, decrementExact_name, int_int_signature, F_S) \
- do_intrinsic(_decrementExactL, java_lang_Math, decrementExact_name, long2_long_signature, F_S) \
+ do_intrinsic(_decrementExactL, java_lang_Math, decrementExact_name, long_long_signature, F_S) \
do_intrinsic(_incrementExactI, java_lang_Math, incrementExact_name, int_int_signature, F_S) \
- do_intrinsic(_incrementExactL, java_lang_Math, incrementExact_name, long2_long_signature, F_S) \
+ do_intrinsic(_incrementExactL, java_lang_Math, incrementExact_name, long_long_signature, F_S) \
do_intrinsic(_multiplyExactI, java_lang_Math, multiplyExact_name, int2_int_signature, F_S) \
do_intrinsic(_multiplyExactL, java_lang_Math, multiplyExact_name, long2_long_signature, F_S) \
do_intrinsic(_negateExactI, java_lang_Math, negateExact_name, int_int_signature, F_S) \
--- a/hotspot/src/share/vm/code/compiledIC.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/compiledIC.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -418,7 +418,7 @@
TRAPS) {
nmethod* method_code = method->code();
address entry = NULL;
- if (method_code != NULL) {
+ if (method_code != NULL && method_code->is_in_use()) {
// Call to compiled code
if (static_bound || is_optimized) {
entry = method_code->verified_entry_point();
@@ -545,7 +545,7 @@
void CompiledStaticCall::compute_entry(methodHandle m, StaticCallInfo& info) {
nmethod* m_code = m->code();
info._callee = m;
- if (m_code != NULL) {
+ if (m_code != NULL && m_code->is_in_use()) {
info._to_interpreter = false;
info._entry = m_code->verified_entry_point();
} else {
--- a/hotspot/src/share/vm/code/compiledIC.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/compiledIC.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/code/compressedStream.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/compressedStream.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/code/debugInfo.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/debugInfo.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/code/dependencies.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/dependencies.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -655,8 +655,6 @@
} else {
o = _deps->oop_recorder()->metadata_at(i);
}
- assert(o == NULL || o->is_metaspace_object(),
- err_msg("Should be metadata " PTR_FORMAT, o));
return o;
}
--- a/hotspot/src/share/vm/code/icBuffer.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/icBuffer.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/code/nmethod.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/nmethod.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -459,7 +459,7 @@
// Fill in default values for various flag fields
void nmethod::init_defaults() {
- _state = alive;
+ _state = in_use;
_marked_for_reclamation = 0;
_has_flushed_dependencies = 0;
_has_unsafe_access = 0;
@@ -1660,8 +1660,8 @@
CompiledICHolder* cichk_oop = ic->cached_icholder();
if (cichk_oop->holder_method()->method_holder()->is_loader_alive(is_alive) &&
cichk_oop->holder_klass()->is_loader_alive(is_alive)) {
- continue;
- }
+ continue;
+ }
} else {
Metadata* ic_oop = ic->cached_metadata();
if (ic_oop != NULL) {
@@ -1677,8 +1677,8 @@
ShouldNotReachHere();
}
}
- }
- ic->set_to_clean();
+ }
+ ic->set_to_clean();
}
}
}
@@ -2393,8 +2393,8 @@
void nmethod::verify_interrupt_point(address call_site) {
// Verify IC only when nmethod installation is finished.
- bool is_installed = (method()->code() == this) // nmethod is in state 'alive' and installed
- || !this->is_in_use(); // nmethod is installed, but not in 'alive' state
+ bool is_installed = (method()->code() == this) // nmethod is in state 'in_use' and installed
+ || !this->is_in_use(); // nmethod is installed, but not in 'in_use' state
if (is_installed) {
Thread *cur = Thread::current();
if (CompiledIC_lock->owner() == cur ||
--- a/hotspot/src/share/vm/code/nmethod.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/nmethod.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -184,11 +184,12 @@
bool _oops_are_stale; // indicates that it's no longer safe to access oops section
#endif
- enum { alive = 0,
- not_entrant = 1, // uncommon trap has happened but activations may still exist
- zombie = 2,
- unloaded = 3 };
-
+ enum { in_use = 0, // executable nmethod
+ not_entrant = 1, // marked for deoptimization but activations may still exist,
+ // will be transformed to zombie when all activations are gone
+ zombie = 2, // no activations exist, nmethod is ready for purge
+ unloaded = 3 }; // there should be no activations, should not be called,
+ // will be transformed to zombie immediately
jbyte _scavenge_root_state;
@@ -407,8 +408,8 @@
address verified_entry_point() const { return _verified_entry_point; } // if klass is correct
// flag accessing and manipulation
- bool is_in_use() const { return _state == alive; }
- bool is_alive() const { return _state == alive || _state == not_entrant; }
+ bool is_in_use() const { return _state == in_use; }
+ bool is_alive() const { return _state == in_use || _state == not_entrant; }
bool is_not_entrant() const { return _state == not_entrant; }
bool is_zombie() const { return _state == zombie; }
bool is_unloaded() const { return _state == unloaded; }
--- a/hotspot/src/share/vm/code/relocInfo.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/relocInfo.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/code/scopeDesc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/scopeDesc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, 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
@@ -86,8 +86,6 @@
// Tells whether sender() returns NULL
bool is_top() const;
- // Tells whether sd is equal to this
- bool is_equal(ScopeDesc* sd) const;
private:
// Alternative constructor
--- a/hotspot/src/share/vm/code/stubs.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/stubs.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/code/stubs.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/code/stubs.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/compiler/abstractCompiler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/abstractCompiler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/compiler/abstractCompiler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/abstractCompiler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, 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,8 +40,19 @@
// This thread will initialize the compiler runtime.
bool should_perform_init();
+ // The (closed set) of concrete compiler classes.
+ enum Type {
+ none,
+ c1,
+ c2,
+ shark
+ };
+
+ private:
+ Type _type;
+
public:
- AbstractCompiler() : _compiler_state(uninitialized), _num_compiler_threads(0) {}
+ AbstractCompiler(Type type) : _type(type), _compiler_state(uninitialized), _num_compiler_threads(0) {}
// This function determines the compiler thread that will perform the
// shutdown of the corresponding compiler runtime.
@@ -54,27 +65,11 @@
virtual bool supports_native() { return true; }
virtual bool supports_osr () { return true; }
virtual bool can_compile_method(methodHandle method) { return true; }
-#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK))
- virtual bool is_c1 () { return false; }
- virtual bool is_c2 () { return false; }
- virtual bool is_shark() { return false; }
-#else
-#ifdef COMPILER1
- bool is_c1 () { return true; }
- bool is_c2 () { return false; }
- bool is_shark() { return false; }
-#endif // COMPILER1
-#ifdef COMPILER2
- bool is_c1 () { return false; }
- bool is_c2 () { return true; }
- bool is_shark() { return false; }
-#endif // COMPILER2
-#ifdef SHARK
- bool is_c1 () { return false; }
- bool is_c2 () { return false; }
- bool is_shark() { return true; }
-#endif // SHARK
-#endif // TIERED
+
+ // Compiler type queries.
+ bool is_c1() { return _type == c1; }
+ bool is_c2() { return _type == c2; }
+ bool is_shark() { return _type == shark; }
// Customization
virtual void initialize () = 0;
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -132,9 +132,9 @@
// The installed compiler(s)
AbstractCompiler* CompileBroker::_compilers[2];
-// These counters are used for assigning id's to each compilation
-uint CompileBroker::_compilation_id = 0;
-uint CompileBroker::_osr_compilation_id = 0;
+// These counters are used to assign an unique ID to each compilation.
+volatile jint CompileBroker::_compilation_id = 0;
+volatile jint CompileBroker::_osr_compilation_id = 0;
// Debugging information
int CompileBroker::_last_compile_type = no_compile;
@@ -1158,7 +1158,7 @@
// We now know that this compilation is not pending, complete,
// or prohibited. Assign a compile_id to this compilation
// and check to see if it is in our [Start..Stop) range.
- uint compile_id = assign_compile_id(method, osr_bci);
+ int compile_id = assign_compile_id(method, osr_bci);
if (compile_id == 0) {
// The compilation falls outside the allowed range.
return;
@@ -1305,18 +1305,12 @@
// do the compilation
if (method->is_native()) {
if (!PreferInterpreterNativeStubs || method->is_method_handle_intrinsic()) {
- // Acquire our lock.
- int compile_id;
- {
- MutexLocker locker(MethodCompileQueue_lock, THREAD);
- compile_id = assign_compile_id(method, standard_entry_bci);
- }
// To properly handle the appendix argument for out-of-line calls we are using a small trampoline that
// pops off the appendix argument and jumps to the target (see gen_special_dispatch in SharedRuntime).
//
// Since normal compiled-to-compiled calls are not able to handle such a thing we MUST generate an adapter
// in this case. If we can't generate one and use it we can not execute the out-of-line method handle calls.
- (void) AdapterHandlerLibrary::create_native_wrapper(method, compile_id);
+ AdapterHandlerLibrary::create_native_wrapper(method);
} else {
return NULL;
}
@@ -1419,27 +1413,28 @@
return false;
}
-
-// ------------------------------------------------------------------
-// CompileBroker::assign_compile_id
-//
-// Assign a serialized id number to this compilation request. If the
-// number falls out of the allowed range, return a 0. OSR
-// compilations may be numbered separately from regular compilations
-// if certain debugging flags are used.
-uint CompileBroker::assign_compile_id(methodHandle method, int osr_bci) {
- assert(MethodCompileQueue_lock->owner() == Thread::current(),
- "must hold the compilation queue lock");
+/**
+ * Generate serialized IDs for compilation requests. If certain debugging flags are used
+ * and the ID is not within the specified range, the method is not compiled and 0 is returned.
+ * The function also allows to generate separate compilation IDs for OSR compilations.
+ */
+int CompileBroker::assign_compile_id(methodHandle method, int osr_bci) {
+#ifdef ASSERT
bool is_osr = (osr_bci != standard_entry_bci);
- uint id;
- if (CICountOSR && is_osr) {
- id = ++_osr_compilation_id;
- if ((uint)CIStartOSR <= id && id < (uint)CIStopOSR) {
+ int id;
+ if (method->is_native()) {
+ assert(!is_osr, "can't be osr");
+ // Adapters, native wrappers and method handle intrinsics
+ // should be generated always.
+ return Atomic::add(1, &_compilation_id);
+ } else if (CICountOSR && is_osr) {
+ id = Atomic::add(1, &_osr_compilation_id);
+ if (CIStartOSR <= id && id < CIStopOSR) {
return id;
}
} else {
- id = ++_compilation_id;
- if ((uint)CIStart <= id && id < (uint)CIStop) {
+ id = Atomic::add(1, &_compilation_id);
+ if (CIStart <= id && id < CIStop) {
return id;
}
}
@@ -1447,6 +1442,11 @@
// Method was not in the appropriate compilation range.
method->set_not_compilable_quietly();
return 0;
+#else
+ // CICountOSR is a develop flag and set to 'false' by default. In a product built,
+ // only _compilation_id is incremented.
+ return Atomic::add(1, &_compilation_id);
+#endif
}
--- a/hotspot/src/share/vm/compiler/compileBroker.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -246,6 +246,8 @@
// Compile type Information for print_last_compile() and CompilerCounters
enum { no_compile, normal_compile, osr_compile, native_compile };
+ static int assign_compile_id (methodHandle method, int osr_bci);
+
private:
static bool _initialized;
@@ -258,9 +260,8 @@
static AbstractCompiler* _compilers[2];
// These counters are used for assigning id's to each compilation
- static uint _compilation_id;
- static uint _osr_compilation_id;
- static uint _native_compilation_id;
+ static volatile jint _compilation_id;
+ static volatile jint _osr_compilation_id;
static int _last_compile_type;
static int _last_compile_level;
@@ -321,7 +322,6 @@
static void init_compiler_threads(int c1_compiler_count, int c2_compiler_count);
static bool compilation_is_complete (methodHandle method, int osr_bci, int comp_level);
static bool compilation_is_prohibited(methodHandle method, int osr_bci, int comp_level);
- static uint assign_compile_id (methodHandle method, int osr_bci);
static bool is_compile_blocking (methodHandle method, int osr_bci);
static void preload_classes (methodHandle method, TRAPS);
--- a/hotspot/src/share/vm/compiler/compileLog.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileLog.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/compiler/compileLog.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileLog.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/compiler/compilerOracle.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compilerOracle.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/compiler/disassembler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/disassembler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, 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
--- a/hotspot/src/share/vm/compiler/disassembler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/compiler/disassembler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -27,6 +27,7 @@
#include "gc_implementation/g1/concurrentG1RefineThread.hpp"
#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
#include "gc_implementation/g1/g1HotCardCache.hpp"
+#include "runtime/java.hpp"
ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h) :
_threads(NULL), _n_threads(0),
@@ -62,6 +63,10 @@
for (int i = _n_threads - 1; i >= 0; i--) {
ConcurrentG1RefineThread* t = new ConcurrentG1RefineThread(this, next, worker_id_offset, i);
assert(t != NULL, "Conc refine should have been created");
+ if (t->osthread() == NULL) {
+ vm_shutdown_during_initialization("Could not create ConcurrentG1RefineThread");
+ }
+
assert(t->cg1r() == this, "Conc refine thread should refer to this");
_threads[i] = t;
next = t;
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -553,6 +553,9 @@
_cmThread = new ConcurrentMarkThread(this);
assert(cmThread() != NULL, "CM Thread should have been created");
assert(cmThread()->cm() != NULL, "CM Thread should refer to this cm");
+ if (_cmThread->osthread() == NULL) {
+ vm_shutdown_during_initialization("Could not create ConcurrentMarkThread");
+ }
assert(CGC_lock != NULL, "Where's the CGC_lock?");
assert(_markBitMap1.covers(heap_rs), "_markBitMap1 inconsistency");
--- a/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -2376,25 +2376,6 @@
return blk.result();
}
-size_t G1CollectedHeap::unsafe_max_alloc() {
- if (free_regions() > 0) return HeapRegion::GrainBytes;
- // otherwise, is there space in the current allocation region?
-
- // We need to store the current allocation region in a local variable
- // here. The problem is that this method doesn't take any locks and
- // there may be other threads which overwrite the current allocation
- // region field. attempt_allocation(), for example, sets it to NULL
- // and this can happen *after* the NULL check here but before the call
- // to free(), resulting in a SIGSEGV. Note that this doesn't appear
- // to be a problem in the optimized build, since the two loads of the
- // current allocation region field are optimized away.
- HeapRegion* hr = _mutator_alloc_region.get();
- if (hr == NULL) {
- return 0;
- }
- return hr->free();
-}
-
bool G1CollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
switch (cause) {
case GCCause::_gc_locker: return GCLockerInvokesConcurrent;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1183,15 +1183,6 @@
// end fields defining the extent of the contiguous allocation region.)
// But G1CollectedHeap doesn't yet support this.
- // Return an estimate of the maximum allocation that could be performed
- // without triggering any collection or expansion activity. In a
- // generational collector, for example, this is probably the largest
- // allocation that could be supported (without expansion) in the youngest
- // generation. It is "unsafe" because no locks are taken; the result
- // should be treated as an approximation, not a guarantee, for use in
- // heuristic resizing decisions.
- virtual size_t unsafe_max_alloc();
-
virtual bool is_maximal_no_gc() const {
return _g1_storage.uncommitted_size() == 0;
}
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1EvacFailure.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1EvacFailure.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/vmStructs_g1.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/vmStructs_g1.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -484,10 +484,6 @@
young_gen()->eden_space()->ensure_parsability();
}
-size_t ParallelScavengeHeap::unsafe_max_alloc() {
- return young_gen()->eden_space()->free_in_bytes();
-}
-
size_t ParallelScavengeHeap::tlab_capacity(Thread* thr) const {
return young_gen()->eden_space()->tlab_capacity(thr);
}
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -184,8 +184,6 @@
void accumulate_statistics_all_tlabs();
void resize_all_tlabs();
- size_t unsafe_max_alloc();
-
bool supports_tlab_allocation() const { return true; }
size_t tlab_capacity(Thread* thr) const;
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -2433,20 +2433,6 @@
_gc_tracer.report_object_count_after_gc(is_alive_closure());
}
-void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) {
- ClassLoaderData* cld = klass->class_loader_data();
- // The actual processing of the klass is done when we
- // traverse the list of Klasses in the class loader data.
- PSParallelCompact::follow_class_loader(cm, cld);
-}
-
-void PSParallelCompact::adjust_klass(ParCompactionManager* cm, Klass* klass) {
- ClassLoaderData* cld = klass->class_loader_data();
- // The actual processing of the klass is done when we
- // traverse the list of Klasses in the class loader data.
- PSParallelCompact::adjust_class_loader(cm, cld);
-}
-
void PSParallelCompact::follow_class_loader(ParCompactionManager* cm,
ClassLoaderData* cld) {
PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
@@ -2455,13 +2441,6 @@
cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true);
}
-void PSParallelCompact::adjust_class_loader(ParCompactionManager* cm,
- ClassLoaderData* cld) {
- cld->oops_do(PSParallelCompact::adjust_pointer_closure(),
- PSParallelCompact::adjust_klass_closure(),
- true);
-}
-
// This should be moved to the shared markSweep code!
class PSAlwaysTrueClosure: public BoolObjectClosure {
public:
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1200,13 +1200,10 @@
T* p);
template <class T> static inline void adjust_pointer(T* p);
- static void follow_klass(ParCompactionManager* cm, Klass* klass);
- static void adjust_klass(ParCompactionManager* cm, Klass* klass);
+ static inline void follow_klass(ParCompactionManager* cm, Klass* klass);
static void follow_class_loader(ParCompactionManager* cm,
ClassLoaderData* klass);
- static void adjust_class_loader(ParCompactionManager* cm,
- ClassLoaderData* klass);
// Compaction support.
// Return true if p is in the range [beg_addr, end_addr).
@@ -1380,6 +1377,11 @@
}
}
+inline void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) {
+ oop holder = klass->klass_holder();
+ PSParallelCompact::mark_and_push(cm, &holder);
+}
+
template <class T>
inline void PSParallelCompact::KeepAliveClosure::do_oop_work(T* p) {
mark_and_push(_compaction_manager, p);
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, 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
@@ -466,10 +466,12 @@
}
}
- GCTraceTime tm("StringTable", false, false, &_gc_timer);
- // Unlink any dead interned Strings and process the remaining live ones.
- PSScavengeRootsClosure root_closure(promotion_manager);
- StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure);
+ {
+ GCTraceTime tm("StringTable", false, false, &_gc_timer);
+ // Unlink any dead interned Strings and process the remaining live ones.
+ PSScavengeRootsClosure root_closure(promotion_manager);
+ StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure);
+ }
// Finally, flush the promotion_manager's labs, and deallocate its stacks.
promotion_failure_occurred = PSPromotionManager::post_scavenge(_gc_tracer);
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/isGCActiveMark.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/isGCActiveMark.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -389,15 +389,6 @@
// allocation from them and necessitating allocation of new TLABs.
virtual void ensure_parsability(bool retire_tlabs);
- // Return an estimate of the maximum allocation that could be performed
- // without triggering any collection or expansion activity. In a
- // generational collector, for example, this is probably the largest
- // allocation that could be supported (without expansion) in the youngest
- // generation. It is "unsafe" because no locks are taken; the result
- // should be treated as an approximation, not a guarantee, for use in
- // heuristic resizing decisions.
- virtual size_t unsafe_max_alloc() = 0;
-
// Section on thread-local allocation buffers (TLABs)
// If the heap supports thread-local allocation buffers, it should override
// the following methods:
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/gc_interface/gcCause.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/gcCause.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/gc_interface/gcCause.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/gcCause.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/interpreter/cppInterpreter.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/cppInterpreter.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/interpreter/interpreter.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/interpreter.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -242,8 +242,20 @@
// Look up method in klasses, including static methods
// Then look up local default methods
-void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS) {
+void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, bool in_imethod_resolve, TRAPS) {
Method* result_oop = klass->uncached_lookup_method(name, signature);
+
+ // JDK 8, JVMS 5.4.3.4: Interface method resolution should
+ // ignore static and non-public methods of java.lang.Object,
+ // like clone, finalize, registerNatives.
+ if (in_imethod_resolve &&
+ result_oop != NULL &&
+ klass->is_interface() &&
+ (result_oop->is_static() || !result_oop->is_public()) &&
+ result_oop->method_holder() == SystemDictionary::Object_klass()) {
+ result_oop = NULL;
+ }
+
if (result_oop == NULL) {
Array<Method*>* default_methods = InstanceKlass::cast(klass())->default_methods();
if (default_methods != NULL) {
@@ -288,7 +300,7 @@
Symbol* signature = resolved_method->signature();
// First check in default method array
- if (!resolved_method->is_abstract() &&
+ if (!resolved_method->is_abstract() &&
(InstanceKlass::cast(klass())->default_methods() != NULL)) {
int index = InstanceKlass::find_method_index(InstanceKlass::cast(klass())->default_methods(), name, signature);
if (index >= 0 ) {
@@ -306,7 +318,11 @@
void LinkResolver::lookup_method_in_interfaces(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
InstanceKlass *ik = InstanceKlass::cast(klass());
- result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name, signature));
+
+ // Specify 'true' in order to skip default methods when searching the
+ // interfaces. Function lookup_method_in_klasses() already looked for
+ // the method in the default methods table.
+ result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name, signature, true));
}
void LinkResolver::lookup_polymorphic_method(methodHandle& result,
@@ -420,28 +436,18 @@
AccessFlags flags = sel_method->access_flags();
- // Special case #1: arrays always override "clone". JVMS 2.15.
+ // Special case: arrays always override "clone". JVMS 2.15.
// If the resolved klass is an array class, and the declaring class
// is java.lang.Object and the method is "clone", set the flags
// to public.
- // Special case #2: If the resolved klass is an interface, and
- // the declaring class is java.lang.Object, and the method is
- // "clone" or "finalize", set the flags to public. If the
- // resolved interface does not contain "clone" or "finalize"
- // methods, the method/interface method resolution looks to
- // the interface's super class, java.lang.Object. With JDK 8
- // interface accessability check requirement, special casing
- // this scenario is necessary to avoid an IAE.
//
- // We'll check for each method name first and then java.lang.Object
- // to best short-circuit out of these tests.
- if (((sel_method->name() == vmSymbols::clone_name() &&
- (resolved_klass->oop_is_array() || resolved_klass->is_interface())) ||
- (sel_method->name() == vmSymbols::finalize_method_name() &&
- resolved_klass->is_interface())) &&
- sel_klass() == SystemDictionary::Object_klass()) {
+ // We'll check for the method name first, as that's most likely
+ // to be false (so we'll short-circuit out of these tests).
+ if (sel_method->name() == vmSymbols::clone_name() &&
+ sel_klass() == SystemDictionary::Object_klass() &&
+ resolved_klass->oop_is_array()) {
// We need to change "protected" to "public".
- assert(flags.is_protected(), "clone or finalize not protected?");
+ assert(flags.is_protected(), "clone not protected?");
jint new_flags = flags.as_int();
new_flags = new_flags & (~JVM_ACC_PROTECTED);
new_flags = new_flags | JVM_ACC_PUBLIC;
@@ -531,7 +537,7 @@
}
// 2. lookup method in resolved klass and its super klasses
- lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, true, CHECK);
+ lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, true, false, CHECK);
if (resolved_method.is_null()) { // not found in the class hierarchy
// 3. lookup method in all the interfaces implemented by the resolved klass
@@ -618,7 +624,7 @@
bool check_access,
bool nostatics, TRAPS) {
- // check if klass is interface
+ // check if klass is interface
if (!resolved_klass->is_interface()) {
ResourceMark rm(THREAD);
char buf[200];
@@ -628,7 +634,7 @@
// lookup method in this interface or its super, java.lang.Object
// JDK8: also look for static methods
- lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, false, CHECK);
+ lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, false, true, CHECK);
if (resolved_method.is_null()) {
// lookup method in all the super-interfaces
@@ -943,8 +949,17 @@
Klass *klass_to_check = !InstanceKlass::cast(current_klass())->is_anonymous() ?
current_klass() :
InstanceKlass::cast(current_klass())->host_klass();
+ // As of the fix for 4486457 we disable verification for all of the
+ // dynamically-generated bytecodes associated with the 1.4
+ // reflection implementation, not just those associated with
+ // sun/reflect/SerializationConstructorAccessor.
+ bool is_reflect = JDK_Version::is_gte_jdk14x_version() &&
+ UseNewReflection &&
+ klass_to_check->is_subclass_of(
+ SystemDictionary::reflect_MagicAccessorImpl_klass());
- if (!InstanceKlass::cast(klass_to_check)->is_same_or_direct_interface(resolved_klass())) {
+ if (!is_reflect &&
+ !InstanceKlass::cast(klass_to_check)->is_same_or_direct_interface(resolved_klass())) {
ResourceMark rm(THREAD);
char buf[200];
jio_snprintf(buf, sizeof(buf),
@@ -1276,8 +1291,11 @@
resolved_klass()->external_name());
THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
}
+
// do lookup based on receiver klass
methodHandle sel_method;
+ // This search must match the linktime preparation search for itable initialization
+ // to correctly enforce loader constraints for interface method inheritance
lookup_instance_method_in_klasses(sel_method, recv_klass,
resolved_method->name(),
resolved_method->signature(), CHECK);
--- a/hotspot/src/share/vm/interpreter/linkResolver.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -124,7 +124,7 @@
friend class klassItable;
private:
- static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS);
+ static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, bool in_imethod_resolve, TRAPS);
static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS);
static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS);
static void lookup_polymorphic_method (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature,
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/interpreter/templateTable.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/templateTable.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/allocation.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/allocation.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -71,9 +71,8 @@
return MetaspaceShared::is_in_shared_space(this);
}
-
bool MetaspaceObj::is_metaspace_object() const {
- return Metaspace::contains((void*)this);
+ return ClassLoaderDataGraph::contains((void*)this);
}
void MetaspaceObj::print_address_on(outputStream* st) const {
@@ -140,7 +139,7 @@
void ResourceObj::set_allocation_type(address res, allocation_type type) {
// Set allocation type in the resource object
uintptr_t allocation = (uintptr_t)res;
- assert((allocation & allocation_mask) == 0, "address should be aligned to 4 bytes at least");
+ assert((allocation & allocation_mask) == 0, err_msg("address should be aligned to 4 bytes at least: " PTR_FORMAT, res));
assert(type <= allocation_mask, "incorrect allocation type");
ResourceObj* resobj = (ResourceObj *)res;
resobj->_allocation_t[0] = ~(allocation + type);
--- a/hotspot/src/share/vm/memory/allocation.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/allocation.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -264,7 +264,7 @@
class MetaspaceObj {
public:
- bool is_metaspace_object() const; // more specific test but slower
+ bool is_metaspace_object() const;
bool is_shared() const;
void print_address_on(outputStream* st) const; // nonvirtual address printing
--- a/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/blockOffsetTable.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/blockOffsetTable.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/memory/defNewGeneration.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -667,9 +667,6 @@
// for full GC's.
AdaptiveSizePolicy* size_policy = gch->gen_policy()->size_policy();
size_policy->reset_gc_overhead_limit_count();
- if (PrintGC && !PrintGCDetails) {
- gch->print_heap_change(gch_prev_used);
- }
assert(!gch->incremental_collection_failed(), "Should be clear");
} else {
assert(_promo_failure_scan_stack.is_empty(), "post condition");
@@ -695,6 +692,9 @@
// Reset the PromotionFailureALot counters.
NOT_PRODUCT(Universe::heap()->reset_promotion_should_fail();)
}
+ if (PrintGC && !PrintGCDetails) {
+ gch->print_heap_change(gch_prev_used);
+ }
// set new iteration safe limit for the survivor spaces
from()->set_concurrent_iteration_safe_limit(from()->top());
to()->set_concurrent_iteration_safe_limit(to()->top());
--- a/hotspot/src/share/vm/memory/freeBlockDictionary.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/freeBlockDictionary.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/memory/freeList.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/freeList.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/freeList.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/freeList.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/gcLocker.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/gcLocker.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/gcLocker.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/gcLocker.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -673,10 +673,6 @@
return _gens[0]->end_addr();
}
-size_t GenCollectedHeap::unsafe_max_alloc() {
- return _gens[0]->unsafe_max_alloc_nogc();
-}
-
// public collection interfaces
void GenCollectedHeap::collect(GCCause::Cause cause) {
--- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -166,14 +166,6 @@
HeapWord** top_addr() const;
HeapWord** end_addr() const;
- // Return an estimate of the maximum allocation that could be performed
- // without triggering any collection activity. In a generational
- // collector, for example, this is probably the largest allocation that
- // could be supported in the youngest generation. It is "unsafe" because
- // no locks are taken; the result should be treated as an approximation,
- // not a guarantee.
- size_t unsafe_max_alloc();
-
// Does this heap support heap inspection? (+PrintClassHistogram)
virtual bool supports_heap_inspection() const { return true; }
--- a/hotspot/src/share/vm/memory/genRemSet.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/genRemSet.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/genRemSet.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/genRemSet.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/generation.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/generation.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/generationSpec.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/generationSpec.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/heap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/heap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/iterator.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/iterator.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/iterator.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/iterator.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/metachunk.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/metachunk.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -143,6 +143,8 @@
void set_is_tagged_free(bool v) { _is_tagged_free = v; }
#endif
+ bool contains(const void* ptr) { return bottom() <= ptr && ptr < _top; }
+
NOT_PRODUCT(void mangle();)
void print_on(outputStream* st) const;
--- a/hotspot/src/share/vm/memory/metaspace.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspace.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -287,7 +287,7 @@
VirtualSpace* virtual_space() const { return (VirtualSpace*) &_virtual_space; }
// Returns true if "word_size" is available in the VirtualSpace
- bool is_available(size_t word_size) { return _top + word_size <= end(); }
+ bool is_available(size_t word_size) { return word_size <= pointer_delta(end(), _top, sizeof(MetaWord)); }
MetaWord* top() const { return _top; }
void inc_top(size_t word_size) { _top += word_size; }
@@ -513,8 +513,6 @@
// Unlink empty VirtualSpaceNodes and free it.
void purge(ChunkManager* chunk_manager);
- bool contains(const void *ptr);
-
void print_on(outputStream* st) const;
class VirtualSpaceListIterator : public StackObj {
@@ -558,7 +556,7 @@
private:
- // protects allocations and contains.
+ // protects allocations
Mutex* const _lock;
// Type of metadata allocated.
@@ -595,7 +593,11 @@
private:
// Accessors
Metachunk* chunks_in_use(ChunkIndex index) const { return _chunks_in_use[index]; }
- void set_chunks_in_use(ChunkIndex index, Metachunk* v) { _chunks_in_use[index] = v; }
+ void set_chunks_in_use(ChunkIndex index, Metachunk* v) {
+ // ensure lock-free iteration sees fully initialized node
+ OrderAccess::storestore();
+ _chunks_in_use[index] = v;
+ }
BlockFreelist* block_freelists() const {
return (BlockFreelist*) &_block_freelists;
@@ -708,6 +710,8 @@
void print_on(outputStream* st) const;
void locked_print_chunks_in_use_on(outputStream* st) const;
+ bool contains(const void *ptr);
+
void verify();
void verify_chunk_size(Metachunk* chunk);
NOT_PRODUCT(void mangle_freed_chunks();)
@@ -1159,8 +1163,6 @@
} else {
assert(new_entry->reserved_words() == vs_word_size,
"Reserved memory size differs from requested memory size");
- // ensure lock-free iteration sees fully initialized node
- OrderAccess::storestore();
link_vs(new_entry);
return true;
}
@@ -1287,19 +1289,6 @@
}
}
-bool VirtualSpaceList::contains(const void *ptr) {
- VirtualSpaceNode* list = virtual_space_list();
- VirtualSpaceListIterator iter(list);
- while (iter.repeat()) {
- VirtualSpaceNode* node = iter.get_next();
- if (node->reserved()->contains(ptr)) {
- return true;
- }
- }
- return false;
-}
-
-
// MetaspaceGC methods
// VM_CollectForMetadataAllocation is the vm operation used to GC.
@@ -2392,6 +2381,21 @@
return result;
}
+// This function looks at the chunks in the metaspace without locking.
+// The chunks are added with store ordering and not deleted except for at
+// unloading time.
+bool SpaceManager::contains(const void *ptr) {
+ for (ChunkIndex i = ZeroIndex; i < NumberOfInUseLists; i = next_chunk_index(i))
+ {
+ Metachunk* curr = chunks_in_use(i);
+ while (curr != NULL) {
+ if (curr->contains(ptr)) return true;
+ curr = curr->next();
+ }
+ }
+ return false;
+}
+
void SpaceManager::verify() {
// If there are blocks in the dictionary, then
// verfication of chunks does not work since
@@ -3463,17 +3467,12 @@
}
}
-bool Metaspace::contains(const void * ptr) {
- if (MetaspaceShared::is_in_shared_space(ptr)) {
- return true;
+bool Metaspace::contains(const void* ptr) {
+ if (vsm()->contains(ptr)) return true;
+ if (using_class_space()) {
+ return class_vsm()->contains(ptr);
}
- // This is checked while unlocked. As long as the virtualspaces are added
- // at the end, the pointer will be in one of them. The virtual spaces
- // aren't deleted presently. When they are, some sort of locking might
- // be needed. Note, locking this can cause inversion problems with the
- // caller in MetaspaceObj::is_metadata() function.
- return space_list()->contains(ptr) ||
- (using_class_space() && class_space_list()->contains(ptr));
+ return false;
}
void Metaspace::verify() {
@@ -3641,10 +3640,82 @@
}
}
+
+#define assert_is_available_positive(word_size) \
+ assert(vsn.is_available(word_size), \
+ err_msg(#word_size ": " PTR_FORMAT " bytes were not available in " \
+ "VirtualSpaceNode [" PTR_FORMAT ", " PTR_FORMAT ")", \
+ (uintptr_t)(word_size * BytesPerWord), vsn.bottom(), vsn.end()));
+
+#define assert_is_available_negative(word_size) \
+ assert(!vsn.is_available(word_size), \
+ err_msg(#word_size ": " PTR_FORMAT " bytes should not be available in " \
+ "VirtualSpaceNode [" PTR_FORMAT ", " PTR_FORMAT ")", \
+ (uintptr_t)(word_size * BytesPerWord), vsn.bottom(), vsn.end()));
+
+ static void test_is_available_positive() {
+ // Reserve some memory.
+ VirtualSpaceNode vsn(os::vm_allocation_granularity());
+ assert(vsn.initialize(), "Failed to setup VirtualSpaceNode");
+
+ // Commit some memory.
+ size_t commit_word_size = os::vm_allocation_granularity() / BytesPerWord;
+ bool expanded = vsn.expand_by(commit_word_size, commit_word_size);
+ assert(expanded, "Failed to commit");
+
+ // Check that is_available accepts the committed size.
+ assert_is_available_positive(commit_word_size);
+
+ // Check that is_available accepts half the committed size.
+ size_t expand_word_size = commit_word_size / 2;
+ assert_is_available_positive(expand_word_size);
+ }
+
+ static void test_is_available_negative() {
+ // Reserve some memory.
+ VirtualSpaceNode vsn(os::vm_allocation_granularity());
+ assert(vsn.initialize(), "Failed to setup VirtualSpaceNode");
+
+ // Commit some memory.
+ size_t commit_word_size = os::vm_allocation_granularity() / BytesPerWord;
+ bool expanded = vsn.expand_by(commit_word_size, commit_word_size);
+ assert(expanded, "Failed to commit");
+
+ // Check that is_available doesn't accept a too large size.
+ size_t two_times_commit_word_size = commit_word_size * 2;
+ assert_is_available_negative(two_times_commit_word_size);
+ }
+
+ static void test_is_available_overflow() {
+ // Reserve some memory.
+ VirtualSpaceNode vsn(os::vm_allocation_granularity());
+ assert(vsn.initialize(), "Failed to setup VirtualSpaceNode");
+
+ // Commit some memory.
+ size_t commit_word_size = os::vm_allocation_granularity() / BytesPerWord;
+ bool expanded = vsn.expand_by(commit_word_size, commit_word_size);
+ assert(expanded, "Failed to commit");
+
+ // Calculate a size that will overflow the virtual space size.
+ void* virtual_space_max = (void*)(uintptr_t)-1;
+ size_t bottom_to_max = pointer_delta(virtual_space_max, vsn.bottom(), 1);
+ size_t overflow_size = bottom_to_max + BytesPerWord;
+ size_t overflow_word_size = overflow_size / BytesPerWord;
+
+ // Check that is_available can handle the overflow.
+ assert_is_available_negative(overflow_word_size);
+ }
+
+ static void test_is_available() {
+ TestVirtualSpaceNodeTest::test_is_available_positive();
+ TestVirtualSpaceNodeTest::test_is_available_negative();
+ TestVirtualSpaceNodeTest::test_is_available_overflow();
+ }
};
void TestVirtualSpaceNode_test() {
TestVirtualSpaceNodeTest::test();
+ TestVirtualSpaceNodeTest::test_is_available();
}
#endif
--- a/hotspot/src/share/vm/memory/metaspace.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspace.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -225,7 +225,7 @@
MetaWord* expand_and_allocate(size_t size,
MetadataType mdtype);
- static bool contains(const void *ptr);
+ bool contains(const void* ptr);
void dump(outputStream* const out) const;
// Free empty virtualspaces
--- a/hotspot/src/share/vm/memory/metaspaceCounters.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspaceCounters.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/memory/metaspaceCounters.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspaceCounters.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/memory/sharedHeap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/sharedHeap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/memory/space.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/space.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/space.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/space.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/memory/specialized_oop_closures.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/specialized_oop_closures.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/tenuredGeneration.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/tenuredGeneration.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/memory/tenuredGeneration.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/memory/tenuredGeneration.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/oops/arrayKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/arrayKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/oops/arrayOop.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/arrayOop.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/oops/compiledICHolder.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/compiledICHolder.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/oops/fieldInfo.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/fieldInfo.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/share/vm/oops/generateOopMap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/generateOopMap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1863,11 +1863,8 @@
constantTag tag = cp->tag_at(ldc.pool_index()); // idx is index in resolved_references
BasicType bt = ldc.result_type();
CellTypeState cts;
- if (tag.is_klass() ||
- tag.is_unresolved_klass() ||
- tag.is_string() ||
- tag.is_method_handle() ||
- tag.is_method_type()) {
+ if (tag.basic_type() == T_OBJECT) {
+ assert(!tag.is_string_index() && !tag.is_klass_index(), "Unexpected index tag");
assert(bt == T_OBJECT, "Guard is incorrect");
cts = CellTypeState::make_line_ref(bci);
} else {
--- a/hotspot/src/share/vm/oops/instanceClassLoaderKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceClassLoaderKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
@@ -150,10 +150,6 @@
int InstanceClassLoaderKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
InstanceKlass::oop_update_pointers(cm, obj);
- ClassLoaderData * const loader_data = java_lang_ClassLoader::loader_data(obj);
- if (loader_data != NULL) {
- PSParallelCompact::adjust_class_loader(cm, loader_data);
- }
return size_helper();
}
#endif // INCLUDE_ALL_GCS
--- a/hotspot/src/share/vm/oops/instanceClassLoaderKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceClassLoaderKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1498,13 +1498,18 @@
return -1;
}
-// lookup_method searches both the local methods array and all superclasses methods arrays
+// uncached_lookup_method searches both the local class methods array and all
+// superclasses methods arrays, skipping any overpass methods in superclasses.
Method* InstanceKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
Klass* klass = const_cast<InstanceKlass*>(this);
+ bool dont_ignore_overpasses = true; // For the class being searched, find its overpasses.
while (klass != NULL) {
Method* method = InstanceKlass::cast(klass)->find_method(name, signature);
- if (method != NULL) return method;
+ if ((method != NULL) && (dont_ignore_overpasses || !method->is_overpass())) {
+ return method;
+ }
klass = InstanceKlass::cast(klass)->super();
+ dont_ignore_overpasses = false; // Ignore overpass methods in all superclasses.
}
return NULL;
}
@@ -1519,7 +1524,7 @@
}
// Look up interfaces
if (m == NULL) {
- m = lookup_method_in_all_interfaces(name, signature);
+ m = lookup_method_in_all_interfaces(name, signature, false);
}
return m;
}
@@ -1528,14 +1533,16 @@
// Do NOT return private or static methods, new in JDK8 which are not externally visible
// They should only be found in the initial InterfaceMethodRef
Method* InstanceKlass::lookup_method_in_all_interfaces(Symbol* name,
- Symbol* signature) const {
+ Symbol* signature,
+ bool skip_default_methods) const {
Array<Klass*>* all_ifs = transitive_interfaces();
int num_ifs = all_ifs->length();
InstanceKlass *ik = NULL;
for (int i = 0; i < num_ifs; i++) {
ik = InstanceKlass::cast(all_ifs->at(i));
Method* m = ik->lookup_method(name, signature);
- if (m != NULL && m->is_public() && !m->is_static()) {
+ if (m != NULL && m->is_public() && !m->is_static() &&
+ (!skip_default_methods || !m->is_default_method())) {
return m;
}
}
@@ -2199,7 +2206,6 @@
obj, \
PSParallelCompact::adjust_pointer(p), \
assert_is_in)
- obj->update_header(cm);
return size;
}
--- a/hotspot/src/share/vm/oops/instanceKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -525,7 +525,8 @@
// lookup a method in all the interfaces that this class implements
// (returns NULL if not found)
- Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const;
+ Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature, bool skip_default_methods) const;
+
// lookup a method in local defaults then in all interfaces
// (returns NULL if not found)
Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const;
--- a/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
@@ -155,8 +155,13 @@
// Follow the klass field in the mirror.
Klass* klass = java_lang_Class::as_Klass(obj);
if (klass != NULL) {
- // For anonymous classes we need to handle the class loader data,
- // otherwise it won't be claimed and can be unloaded.
+ // An anonymous class doesn't have its own class loader, so the call
+ // to follow_klass will mark and push its java mirror instead of the
+ // class loader. When handling the java mirror for an anonymous class
+ // we need to make sure its class loader data is claimed, this is done
+ // by calling follow_class_loader explicitly. For non-anonymous classes
+ // the call to follow_class_loader is made when the class loader itself
+ // is handled.
if (klass->oop_is_instance() && InstanceKlass::cast(klass)->is_anonymous()) {
MarkSweep::follow_class_loader(klass->class_loader_data());
} else {
@@ -183,7 +188,18 @@
// Follow the klass field in the mirror.
Klass* klass = java_lang_Class::as_Klass(obj);
if (klass != NULL) {
- PSParallelCompact::follow_klass(cm, klass);
+ // An anonymous class doesn't have its own class loader, so the call
+ // to follow_klass will mark and push its java mirror instead of the
+ // class loader. When handling the java mirror for an anonymous class
+ // we need to make sure its class loader data is claimed, this is done
+ // by calling follow_class_loader explicitly. For non-anonymous classes
+ // the call to follow_class_loader is made when the class loader itself
+ // is handled.
+ if (klass->oop_is_instance() && InstanceKlass::cast(klass)->is_anonymous()) {
+ PSParallelCompact::follow_class_loader(cm, klass->class_loader_data());
+ } else {
+ PSParallelCompact::follow_klass(cm, klass);
+ }
} else {
// If klass is NULL then this a mirror for a primitive type.
// We don't have to follow them, since they are handled as strong
@@ -332,17 +348,6 @@
int size = oop_size(obj);
InstanceKlass::oop_update_pointers(cm, obj);
- // Follow the klass field in the mirror.
- Klass* klass = java_lang_Class::as_Klass(obj);
- if (klass != NULL) {
- PSParallelCompact::adjust_klass(cm, klass);
- } else {
- // If klass is NULL then this a mirror for a primitive type.
- // We don't have to follow them, since they are handled as strong
- // roots in Universe::oops_do.
- assert(java_lang_Class::is_primitive(obj), "Sanity check");
- }
-
InstanceMirrorKlass_OOP_ITERATE( \
start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),\
PSParallelCompact::adjust_pointer(p), \
--- a/hotspot/src/share/vm/oops/instanceOop.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceOop.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/oops/instanceRefKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceRefKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/oops/klass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/klass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -376,8 +376,6 @@
}
bool Klass::is_loader_alive(BoolObjectClosure* is_alive) {
- assert(ClassLoaderDataGraph::contains((address)this), "is in the metaspace");
-
#ifdef ASSERT
// The class is alive iff the class loader is alive.
oop loader = class_loader();
--- a/hotspot/src/share/vm/oops/klassPS.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/klassPS.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/oops/klassVtable.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/klassVtable.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -622,7 +622,7 @@
// this check for all access permissions.
InstanceKlass *sk = InstanceKlass::cast(super);
if (sk->has_miranda_methods()) {
- if (sk->lookup_method_in_all_interfaces(name, signature) != NULL) {
+ if (sk->lookup_method_in_all_interfaces(name, signature, false) != NULL) {
return false; // found a matching miranda; we do not need a new entry
}
}
@@ -743,7 +743,7 @@
if (is_miranda(im, class_methods, default_methods, super)) { // is it a miranda at all?
InstanceKlass *sk = InstanceKlass::cast(super);
// check if it is a duplicate of a super's miranda
- if (sk->lookup_method_in_all_interfaces(im->name(), im->signature()) == NULL) {
+ if (sk->lookup_method_in_all_interfaces(im->name(), im->signature(), false) == NULL) {
new_mirandas->append(im);
}
if (all_mirandas != NULL) {
@@ -1085,6 +1085,8 @@
Method* m = methods->at(i);
methodHandle target;
if (m->has_itable_index()) {
+ // This search must match the runtime resolution, i.e. selection search for invokeinterface
+ // to correctly enforce loader constraints for interface method inheritance
LinkResolver::lookup_instance_method_in_klasses(target, _klass, m->name(), m->signature(), CHECK);
}
if (target == NULL || !target->is_public() || target->is_abstract()) {
--- a/hotspot/src/share/vm/oops/objArrayKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/objArrayKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -587,7 +587,6 @@
assert (obj->is_objArray(), "obj must be obj array");
objArrayOop a = objArrayOop(obj);
int size = a->object_size();
- a->update_header(cm);
ObjArrayKlass_OOP_ITERATE(a, p, PSParallelCompact::adjust_pointer(p))
return size;
}
--- a/hotspot/src/share/vm/oops/objArrayKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/objArrayKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/hotspot/src/share/vm/oops/oop.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/oop.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -328,11 +328,6 @@
// return the size of this oop. This is used by the MarkSweep collector.
int adjust_pointers();
-#if INCLUDE_ALL_GCS
- // Parallel old
- void update_header(ParCompactionManager* cm);
-#endif // INCLUDE_ALL_GCS
-
// mark-sweep support
void follow_body(int begin, int end);
--- a/hotspot/src/share/vm/oops/oop.pcgc.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/oop.pcgc.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
@@ -80,8 +80,4 @@
return forwardee();
}
-inline void oopDesc::update_header(ParCompactionManager* cm) {
- PSParallelCompact::adjust_klass(cm, klass());
-}
-
#endif // SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP
--- a/hotspot/src/share/vm/oops/oop.psgc.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/oop.psgc.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/oops/typeArrayKlass.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/typeArrayKlass.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/oops/typeArrayKlass.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/oops/typeArrayKlass.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/block.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/block.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/block.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/block.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/buildOopMap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/buildOopMap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/opto/bytecodeInfo.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
@@ -50,7 +50,10 @@
_subtrees(c->comp_arena(), 2, 0, NULL),
_msg(NULL)
{
- NOT_PRODUCT(_count_inlines = 0;)
+#ifndef PRODUCT
+ _count_inlines = 0;
+ _forced_inline = false;
+#endif
if (_caller_jvms != NULL) {
// Keep a private copy of the caller_jvms:
_caller_jvms = new (C) JVMState(caller_jvms->method(), caller_tree->caller_jvms());
@@ -81,7 +84,10 @@
_count_inline_bcs(method()->code_size()),
_msg(NULL)
{
- NOT_PRODUCT(_count_inlines = 0;)
+#ifndef PRODUCT
+ _count_inlines = 0;
+ _forced_inline = false;
+#endif
assert(!UseOldInlining, "do not use for old stuff");
}
@@ -128,9 +134,19 @@
tty->print_cr("Inlined method is hot: ");
}
set_msg("force inline by CompilerOracle");
+ _forced_inline = true;
return true;
}
+#ifndef PRODUCT
+ int inline_depth = inline_level()+1;
+ if (ciReplay::should_inline(C->replay_inline_data(), callee_method, caller_bci, inline_depth)) {
+ set_msg("force inline by ciReplay");
+ _forced_inline = true;
+ return true;
+ }
+#endif
+
int size = callee_method->code_size_for_inlining();
// Check for too many throws (and not too huge)
@@ -264,6 +280,18 @@
}
#ifndef PRODUCT
+ int caller_bci = jvms->bci();
+ int inline_depth = inline_level()+1;
+ if (ciReplay::should_inline(C->replay_inline_data(), callee_method, caller_bci, inline_depth)) {
+ set_msg("force inline by ciReplay");
+ return false;
+ }
+
+ if (ciReplay::should_not_inline(C->replay_inline_data(), callee_method, caller_bci, inline_depth)) {
+ set_msg("disallowed by ciReplay");
+ return true;
+ }
+
if (ciReplay::should_not_inline(callee_method)) {
set_msg("disallowed by ciReplay");
return true;
@@ -343,6 +371,7 @@
}
}
+ _forced_inline = false; // Reset
if (!should_inline(callee_method, caller_method, caller_bci, profile,
wci_result)) {
return false;
@@ -373,10 +402,10 @@
if ((!UseInterpreter || CompileTheWorld) &&
is_init_with_ea(callee_method, caller_method, C)) {
-
// Escape Analysis stress testing when running Xcomp or CTW:
// inline constructors even if they are not reached.
-
+ } else if (forced_inline()) {
+ // Inlining was forced by CompilerOracle or ciReplay
} else if (profile.count() == 0) {
// don't inline unreached call sites
set_msg("call site not reached");
@@ -700,12 +729,28 @@
return iltp;
}
+// Count number of nodes in this subtree
+int InlineTree::count() const {
+ int result = 1;
+ for (int i = 0 ; i < _subtrees.length(); i++) {
+ result += _subtrees.at(i)->count();
+ }
+ return result;
+}
+
+void InlineTree::dump_replay_data(outputStream* out) {
+ out->print(" %d %d ", inline_level(), caller_bci());
+ method()->dump_name_as_ascii(out);
+ for (int i = 0 ; i < _subtrees.length(); i++) {
+ _subtrees.at(i)->dump_replay_data(out);
+ }
+}
#ifndef PRODUCT
void InlineTree::print_impl(outputStream* st, int indent) const {
for (int i = 0; i < indent; i++) st->print(" ");
- st->print(" @ %d ", caller_bci());
+ st->print(" @ %d", caller_bci());
method()->print_short_name(st);
st->cr();
--- a/hotspot/src/share/vm/opto/c2compiler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/c2compiler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/opto/c2compiler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/c2compiler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, 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
@@ -32,13 +32,11 @@
static bool init_c2_runtime();
public:
+ C2Compiler() : AbstractCompiler(c2) {}
+
// Name
const char *name() { return "C2"; }
-#ifdef TIERED
- virtual bool is_c2() { return true; };
-#endif // TIERED
-
void initialize();
// Compilation entry point for methods
--- a/hotspot/src/share/vm/opto/callGenerator.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/callGenerator.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/opto/callnode.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/callnode.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/chaitin.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/chaitin.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1682,9 +1682,21 @@
// (where top() node is placed).
base->init_req(0, _cfg.get_root_node());
Block *startb = _cfg.get_block_for_node(C->top());
- startb->insert_node(base, startb->find_node(C->top()));
+ uint node_pos = startb->find_node(C->top());
+ startb->insert_node(base, node_pos);
_cfg.map_node_to_block(base, startb);
assert(_lrg_map.live_range_id(base) == 0, "should not have LRG yet");
+
+ // The loadConP0 might have projection nodes depending on architecture
+ // Add the projection nodes to the CFG
+ for (DUIterator_Fast imax, i = base->fast_outs(imax); i < imax; i++) {
+ Node* use = base->fast_out(i);
+ if (use->is_MachProj()) {
+ startb->insert_node(use, ++node_pos);
+ _cfg.map_node_to_block(use, startb);
+ new_lrg(use, maxlrg++);
+ }
+ }
}
if (_lrg_map.live_range_id(base) == 0) {
new_lrg(base, maxlrg++);
--- a/hotspot/src/share/vm/opto/chaitin.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/chaitin.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/classes.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/classes.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/classes.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/classes.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/coalesce.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/coalesce.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/compile.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/compile.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "asm/macroAssembler.inline.hpp"
+#include "ci/ciReplay.hpp"
#include "classfile/systemDictionary.hpp"
#include "code/exceptionHandlerTable.hpp"
#include "code/nmethod.hpp"
@@ -647,6 +648,7 @@
_printer(IdealGraphPrinter::printer()),
#endif
_congraph(NULL),
+ _replay_inline_data(NULL),
_late_inlines(comp_arena(), 2, 0, NULL),
_string_late_inlines(comp_arena(), 2, 0, NULL),
_boxing_late_inlines(comp_arena(), 2, 0, NULL),
@@ -680,6 +682,10 @@
}
set_print_assembly(print_opto_assembly);
set_parsed_irreducible_loop(false);
+
+ if (method()->has_option("ReplayInline")) {
+ _replay_inline_data = ciReplay::load_inline_data(method(), entry_bci(), ci_env->comp_level());
+ }
#endif
set_print_inlining(PrintInlining || method()->has_option("PrintInlining") NOT_PRODUCT( || PrintOptoInlining));
set_print_intrinsics(PrintIntrinsics || method()->has_option("PrintIntrinsics"));
@@ -849,6 +855,15 @@
#endif
NOT_PRODUCT( verify_barriers(); )
+
+ // Dump compilation data to replay it.
+ if (method()->has_option("DumpReplay")) {
+ env()->dump_replay_data(_compile_id);
+ }
+ if (method()->has_option("DumpInline") && (ilt() != NULL)) {
+ env()->dump_inline_data(_compile_id);
+ }
+
// Now that we know the size of all the monitors we can add a fixed slot
// for the original deopt pc.
@@ -938,6 +953,7 @@
_dead_node_list(comp_arena()),
_dead_node_count(0),
_congraph(NULL),
+ _replay_inline_data(NULL),
_number_of_mh_late_inlines(0),
_inlining_progress(false),
_inlining_incrementally(false),
@@ -3757,6 +3773,16 @@
}
}
+// Dump inlining replay data to the stream.
+// Don't change thread state and acquire any locks.
+void Compile::dump_inline_data(outputStream* out) {
+ InlineTree* inl_tree = ilt();
+ if (inl_tree != NULL) {
+ out->print(" inline %d", inl_tree->count());
+ inl_tree->dump_replay_data(out);
+ }
+}
+
int Compile::cmp_expensive_nodes(Node* n1, Node* n2) {
if (n1->Opcode() < n2->Opcode()) return -1;
else if (n1->Opcode() > n2->Opcode()) return 1;
--- a/hotspot/src/share/vm/opto/compile.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/compile.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -431,6 +431,8 @@
// Are we within a PreserveJVMState block?
int _preserve_jvm_state;
+ void* _replay_inline_data; // Pointer to data loaded from file
+
public:
outputStream* print_inlining_stream() const {
@@ -465,6 +467,11 @@
print_inlining_stream()->print(ss.as_string());
}
+ void* replay_inline_data() const { return _replay_inline_data; }
+
+ // Dump inlining replay data to the stream.
+ void dump_inline_data(outputStream* out);
+
private:
// Matching, CFG layout, allocation, code generation
PhaseCFG* _cfg; // Results of CFG finding
--- a/hotspot/src/share/vm/opto/connode.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/connode.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/doCall.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/doCall.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/opto/domgraph.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/domgraph.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/escape.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/escape.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1579,9 +1579,20 @@
jobj->set_scalar_replaceable(false);
return;
}
+ // 2. An object is not scalar replaceable if the field into which it is
+ // stored has multiple bases one of which is null.
+ if (field->base_count() > 1) {
+ for (BaseIterator i(field); i.has_next(); i.next()) {
+ PointsToNode* base = i.get();
+ if (base == null_obj) {
+ jobj->set_scalar_replaceable(false);
+ return;
+ }
+ }
+ }
}
assert(use->is_Field() || use->is_LocalVar(), "sanity");
- // 2. An object is not scalar replaceable if it is merged with other objects.
+ // 3. An object is not scalar replaceable if it is merged with other objects.
for (EdgeIterator j(use); j.has_next(); j.next()) {
PointsToNode* ptn = j.get();
if (ptn->is_JavaObject() && ptn != jobj) {
@@ -1600,13 +1611,13 @@
FieldNode* field = j.get()->as_Field();
int offset = field->as_Field()->offset();
- // 3. An object is not scalar replaceable if it has a field with unknown
+ // 4. An object is not scalar replaceable if it has a field with unknown
// offset (array's element is accessed in loop).
if (offset == Type::OffsetBot) {
jobj->set_scalar_replaceable(false);
return;
}
- // 4. Currently an object is not scalar replaceable if a LoadStore node
+ // 5. Currently an object is not scalar replaceable if a LoadStore node
// access its field since the field value is unknown after it.
//
Node* n = field->ideal_node();
@@ -1617,7 +1628,7 @@
}
}
- // 5. Or the address may point to more then one object. This may produce
+ // 6. Or the address may point to more then one object. This may produce
// the false positive result (set not scalar replaceable)
// since the flow-insensitive escape analysis can't separate
// the case when stores overwrite the field's value from the case
--- a/hotspot/src/share/vm/opto/gcm.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/gcm.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/generateOptoStub.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/generateOptoStub.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/opto/graphKit.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/graphKit.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/opto/graphKit.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/graphKit.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/opto/idealKit.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/idealKit.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/opto/idealKit.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/idealKit.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/opto/ifg.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/ifg.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/opto/ifnode.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/ifnode.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/opto/lcm.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/lcm.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/opto/live.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/live.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/live.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/live.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/loopPredicate.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopPredicate.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/hotspot/src/share/vm/opto/loopTransform.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/opto/loopnode.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopnode.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/opto/loopopts.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopopts.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/opto/macro.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/macro.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/opto/macro.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/macro.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/opto/matcher.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/matcher.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/memnode.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/memnode.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -2071,6 +2071,11 @@
if (t != NULL) {
// constant oop => constant klass
if (offset == java_lang_Class::array_klass_offset_in_bytes()) {
+ if (t->is_void()) {
+ // We cannot create a void array. Since void is a primitive type return null
+ // klass. Users of this result need to do a null check on the returned klass.
+ return TypePtr::NULL_PTR;
+ }
return TypeKlassPtr::make(ciArrayKlass::make(t));
}
if (!t->is_klass()) {
--- a/hotspot/src/share/vm/opto/memnode.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/memnode.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/multnode.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/multnode.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/multnode.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/multnode.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/node.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/node.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/optoreg.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/optoreg.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
--- a/hotspot/src/share/vm/opto/output.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/output.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/opto/output.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/output.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/opto/parse.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/parse.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -141,6 +141,13 @@
GrowableArray<InlineTree*> subtrees() { return _subtrees; }
void print_value_on(outputStream* st) const PRODUCT_RETURN;
+
+ bool _forced_inline; // Inlining was forced by CompilerOracle or ciReplay
+ bool forced_inline() const { return _forced_inline; }
+ // Count number of nodes in this subtree
+ int count() const;
+ // Dump inlining replay data to the stream.
+ void dump_replay_data(outputStream* out);
};
--- a/hotspot/src/share/vm/opto/parse1.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/parse1.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/parse2.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/parse2.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/opto/phase.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/phase.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/phase.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/phase.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/phaseX.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/phaseX.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/phaseX.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/phaseX.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/postaloc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/postaloc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/opto/reg_split.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/reg_split.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/opto/regalloc.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/regalloc.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/opto/regalloc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/regalloc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/opto/subnode.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/subnode.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/subnode.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/subnode.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/opto/superword.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/superword.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/opto/superword.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/superword.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/opto/type.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/opto/type.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -3812,17 +3812,17 @@
tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
}
} else // Non integral arrays.
- // Must fall to bottom if exact klasses in upper lattice
- // are not equal or super klass is exact.
- if ( above_centerline(ptr) && klass() != tap->klass() &&
- // meet with top[] and bottom[] are processed further down:
- tap ->_klass != NULL && this->_klass != NULL &&
- // both are exact and not equal:
- ((tap ->_klass_is_exact && this->_klass_is_exact) ||
- // 'tap' is exact and super or unrelated:
- (tap ->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
- // 'this' is exact and super or unrelated:
- (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
+ // Must fall to bottom if exact klasses in upper lattice
+ // are not equal or super klass is exact.
+ if ((above_centerline(ptr) || ptr == Constant) && klass() != tap->klass() &&
+ // meet with top[] and bottom[] are processed further down:
+ tap->_klass != NULL && this->_klass != NULL &&
+ // both are exact and not equal:
+ ((tap->_klass_is_exact && this->_klass_is_exact) ||
+ // 'tap' is exact and super or unrelated:
+ (tap->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
+ // 'this' is exact and super or unrelated:
+ (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
return make(NotNull, NULL, tary, lazy_klass, false, off, InstanceBot);
}
--- a/hotspot/src/share/vm/precompiled/precompiled.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/precompiled/precompiled.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/hotspot/src/share/vm/prims/forte.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/forte.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -613,7 +613,7 @@
#ifdef __APPLE__
// XXXDARWIN: Link errors occur even when __attribute__((weak_import))
// is added
-#define collector_func_load(x0,x1,x2,x3,x4,x5,x6) (0)
+#define collector_func_load(x0,x1,x2,x3,x4,x5,x6) ((void) 0)
#else
void collector_func_load(char* name,
void* null_argument_1,
--- a/hotspot/src/share/vm/prims/jni.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jni.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1804,34 +1804,34 @@
// the runtime type of subword integral basic types is integer
DEFINE_CALLMETHODV(jboolean, Boolean, T_BOOLEAN
- , HOTSPOT_JNI_CALLBOOLEANMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBOOLEANMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBOOLEANMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBOOLEANMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jbyte, Byte, T_BYTE
- , HOTSPOT_JNI_CALLBYTEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBYTEMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBYTEMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBYTEMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jchar, Char, T_CHAR
- , HOTSPOT_JNI_CALLCHARMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLCHARMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLCHARMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLCHARMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jshort, Short, T_SHORT
- , HOTSPOT_JNI_CALLSHORTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLSHORTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLSHORTMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLSHORTMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jobject, Object, T_OBJECT
- , HOTSPOT_JNI_CALLOBJECTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLOBJECTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLOBJECTMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLOBJECTMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jint, Int, T_INT,
- HOTSPOT_JNI_CALLINTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLINTMETHOD_RETURN(_ret_ref))
+ HOTSPOT_JNI_CALLINTMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLINTMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jlong, Long, T_LONG
- , HOTSPOT_JNI_CALLLONGMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLLONGMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLLONGMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLLONGMETHODV_RETURN(_ret_ref))
// Float and double probes don't return value because dtrace doesn't currently support it
DEFINE_CALLMETHODV(jfloat, Float, T_FLOAT
- , HOTSPOT_JNI_CALLFLOATMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLFLOATMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLFLOATMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLFLOATMETHODV_RETURN())
DEFINE_CALLMETHODV(jdouble, Double, T_DOUBLE
- , HOTSPOT_JNI_CALLDOUBLEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLDOUBLEMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLDOUBLEMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLDOUBLEMETHODV_RETURN())
#define DEFINE_CALLMETHODA(ResultType, Result, Tag \
, EntryProbe, ReturnProbe) \
@@ -1856,34 +1856,34 @@
// the runtime type of subword integral basic types is integer
DEFINE_CALLMETHODA(jboolean, Boolean, T_BOOLEAN
- , HOTSPOT_JNI_CALLBOOLEANMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBOOLEANMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBOOLEANMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBOOLEANMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jbyte, Byte, T_BYTE
- , HOTSPOT_JNI_CALLBYTEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBYTEMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBYTEMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBYTEMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jchar, Char, T_CHAR
- , HOTSPOT_JNI_CALLCHARMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLCHARMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLCHARMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLCHARMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jshort, Short, T_SHORT
- , HOTSPOT_JNI_CALLSHORTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLSHORTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLSHORTMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLSHORTMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jobject, Object, T_OBJECT
- , HOTSPOT_JNI_CALLOBJECTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLOBJECTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLOBJECTMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLOBJECTMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jint, Int, T_INT,
- HOTSPOT_JNI_CALLINTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLINTMETHOD_RETURN(_ret_ref))
+ HOTSPOT_JNI_CALLINTMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLINTMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jlong, Long, T_LONG
- , HOTSPOT_JNI_CALLLONGMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLLONGMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLLONGMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLLONGMETHODA_RETURN(_ret_ref))
// Float and double probes don't return value because dtrace doesn't currently support it
DEFINE_CALLMETHODA(jfloat, Float, T_FLOAT
- , HOTSPOT_JNI_CALLFLOATMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLFLOATMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLFLOATMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLFLOATMETHODA_RETURN())
DEFINE_CALLMETHODA(jdouble, Double, T_DOUBLE
- , HOTSPOT_JNI_CALLDOUBLEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLDOUBLEMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLDOUBLEMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLDOUBLEMETHODA_RETURN())
DT_VOID_RETURN_MARK_DECL(CallVoidMethod, HOTSPOT_JNI_CALLVOIDMETHOD_RETURN());
DT_VOID_RETURN_MARK_DECL(CallVoidMethodV, HOTSPOT_JNI_CALLVOIDMETHODV_RETURN());
@@ -3145,7 +3145,7 @@
JNI_END
DEFINE_SETSTATICFIELD(jboolean, bool, Boolean, 'Z', z
- , HOTSPOT_JNI_SETBOOLEANFIELD_ENTRY(env, clazz, (uintptr_t)fieldID, value),
+ , HOTSPOT_JNI_SETSTATICBOOLEANFIELD_ENTRY(env, clazz, (uintptr_t)fieldID, value),
HOTSPOT_JNI_SETBOOLEANFIELD_RETURN())
DEFINE_SETSTATICFIELD(jbyte, byte, Byte, 'B', b
, HOTSPOT_JNI_SETSTATICBYTEFIELD_ENTRY(env, clazz, (uintptr_t) fieldID, value),
--- a/hotspot/src/share/vm/prims/jniCheck.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jniCheck.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/prims/jvm.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvm.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -3971,40 +3971,6 @@
}
-// Internal SQE debugging support ///////////////////////////////////////////////////////////
-
-#ifndef PRODUCT
-
-extern "C" {
- JNIEXPORT jboolean JNICALL JVM_AccessVMBooleanFlag(const char* name, jboolean* value, jboolean is_get);
- JNIEXPORT jboolean JNICALL JVM_AccessVMIntFlag(const char* name, jint* value, jboolean is_get);
- JNIEXPORT void JNICALL JVM_VMBreakPoint(JNIEnv *env, jobject obj);
-}
-
-JVM_LEAF(jboolean, JVM_AccessVMBooleanFlag(const char* name, jboolean* value, jboolean is_get))
- JVMWrapper("JVM_AccessBoolVMFlag");
- return is_get ? CommandLineFlags::boolAt((char*) name, (bool*) value) : CommandLineFlags::boolAtPut((char*) name, (bool*) value, Flag::INTERNAL);
-JVM_END
-
-JVM_LEAF(jboolean, JVM_AccessVMIntFlag(const char* name, jint* value, jboolean is_get))
- JVMWrapper("JVM_AccessVMIntFlag");
- intx v;
- jboolean result = is_get ? CommandLineFlags::intxAt((char*) name, &v) : CommandLineFlags::intxAtPut((char*) name, &v, Flag::INTERNAL);
- *value = (jint)v;
- return result;
-JVM_END
-
-
-JVM_ENTRY(void, JVM_VMBreakPoint(JNIEnv *env, jobject obj))
- JVMWrapper("JVM_VMBreakPoint");
- oop the_obj = JNIHandles::resolve(obj);
- BREAKPOINT;
-JVM_END
-
-
-#endif
-
-
// Method ///////////////////////////////////////////////////////////////////////////////////////////
JVM_ENTRY(jobject, JVM_InvokeMethod(JNIEnv *env, jobject method, jobject obj, jobjectArray args0))
--- a/hotspot/src/share/vm/prims/jvm_misc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvm_misc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnter.xsl Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiEnvBase.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnvBase.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiEventController.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEventController.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiExport.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiExport.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiGetLoadedClasses.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiGetLoadedClasses.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -147,9 +147,6 @@
_scratch_classes[i] = NULL;
}
- // Disable any dependent concurrent compilations
- SystemDictionary::notice_modification();
-
// Set flag indicating that some invariants are no longer true.
// See jvmtiExport.hpp for detailed explanation.
JvmtiExport::set_has_redefined_a_class();
--- a/hotspot/src/share/vm/prims/jvmtiTrace.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiTrace.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/prims/methodHandles.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -175,8 +175,8 @@
oop MethodHandles::init_method_MemberName(Handle mname, CallInfo& info) {
assert(info.resolved_appendix().is_null(), "only normal methods here");
- KlassHandle receiver_limit = info.resolved_klass();
methodHandle m = info.resolved_method();
+ KlassHandle m_klass = m->method_holder();
int flags = (jushort)( m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS );
int vmindex = Method::invalid_vtable_index;
@@ -184,14 +184,13 @@
case CallInfo::itable_call:
vmindex = info.itable_index();
// More importantly, the itable index only works with the method holder.
- receiver_limit = m->method_holder();
- assert(receiver_limit->verify_itable_index(vmindex), "");
+ assert(m_klass->verify_itable_index(vmindex), "");
flags |= IS_METHOD | (JVM_REF_invokeInterface << REFERENCE_KIND_SHIFT);
if (TraceInvokeDynamic) {
ResourceMark rm;
- tty->print_cr("memberName: invokeinterface method_holder::method: %s, receiver: %s, itableindex: %d, access_flags:",
- Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()),
- receiver_limit()->internal_name(), vmindex);
+ tty->print_cr("memberName: invokeinterface method_holder::method: %s, itableindex: %d, access_flags:",
+ Method::name_and_sig_as_C_string(m->method_holder(), m->name(), m->signature()),
+ vmindex);
m->access_flags().print_on(tty);
if (!m->is_abstract()) {
tty->print("default");
@@ -203,12 +202,35 @@
case CallInfo::vtable_call:
vmindex = info.vtable_index();
flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT);
- assert(receiver_limit->is_subtype_of(m->method_holder()), "virtual call must be type-safe");
+ assert(info.resolved_klass()->is_subtype_of(m_klass()), "virtual call must be type-safe");
+ if (m_klass->is_interface()) {
+ // This is a vtable call to an interface method (abstract "miranda method" or default method).
+ // The vtable index is meaningless without a class (not interface) receiver type, so get one.
+ // (LinkResolver should help us figure this out.)
+ KlassHandle m_klass_non_interface = info.resolved_klass();
+ if (m_klass_non_interface->is_interface()) {
+ m_klass_non_interface = SystemDictionary::Object_klass();
+#ifdef ASSERT
+ { ResourceMark rm;
+ Method* m2 = m_klass_non_interface->vtable()->method_at(vmindex);
+ assert(m->name() == m2->name() && m->signature() == m2->signature(),
+ err_msg("at %d, %s != %s", vmindex,
+ m->name_and_sig_as_C_string(), m2->name_and_sig_as_C_string()));
+ }
+#endif //ASSERT
+ }
+ if (!m->is_public()) {
+ assert(m->is_public(), "virtual call must be to public interface method");
+ return NULL; // elicit an error later in product build
+ }
+ assert(info.resolved_klass()->is_subtype_of(m_klass_non_interface()), "virtual call must be type-safe");
+ m_klass = m_klass_non_interface;
+ }
if (TraceInvokeDynamic) {
ResourceMark rm;
tty->print_cr("memberName: invokevirtual method_holder::method: %s, receiver: %s, vtableindex: %d, access_flags:",
- Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()),
- receiver_limit()->internal_name(), vmindex);
+ Method::name_and_sig_as_C_string(m->method_holder(), m->name(), m->signature()),
+ m_klass->internal_name(), vmindex);
m->access_flags().print_on(tty);
if (m->is_default_method()) {
tty->print("default");
@@ -223,10 +245,8 @@
flags |= IS_METHOD | (JVM_REF_invokeStatic << REFERENCE_KIND_SHIFT);
} else if (m->is_initializer()) {
flags |= IS_CONSTRUCTOR | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT);
- assert(receiver_limit == m->method_holder(), "constructor call must be exactly typed");
} else {
flags |= IS_METHOD | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT);
- assert(receiver_limit->is_subtype_of(m->method_holder()), "special call must be type-safe");
}
break;
@@ -242,7 +262,7 @@
java_lang_invoke_MemberName::set_flags( mname_oop, flags);
java_lang_invoke_MemberName::set_vmtarget(mname_oop, m());
java_lang_invoke_MemberName::set_vmindex( mname_oop, vmindex); // vtable/itable index
- java_lang_invoke_MemberName::set_clazz( mname_oop, receiver_limit->java_mirror());
+ java_lang_invoke_MemberName::set_clazz( mname_oop, m_klass->java_mirror());
// Note: name and type can be lazily computed by resolve_MemberName,
// if Java code needs them as resolved String and MethodType objects.
// The clazz must be eagerly stored, because it provides a GC
@@ -569,7 +589,7 @@
// An unresolved member name is a mere symbolic reference.
// Resolving it plants a vmtarget/vmindex in it,
// which refers directly to JVM internals.
-Handle MethodHandles::resolve_MemberName(Handle mname, TRAPS) {
+Handle MethodHandles::resolve_MemberName(Handle mname, KlassHandle caller, TRAPS) {
Handle empty;
assert(java_lang_invoke_MemberName::is_instance(mname()), "");
@@ -646,20 +666,20 @@
assert(!HAS_PENDING_EXCEPTION, "");
if (ref_kind == JVM_REF_invokeStatic) {
LinkResolver::resolve_static_call(result,
- defc, name, type, KlassHandle(), false, false, THREAD);
+ defc, name, type, caller, caller.not_null(), false, THREAD);
} else if (ref_kind == JVM_REF_invokeInterface) {
LinkResolver::resolve_interface_call(result, Handle(), defc,
- defc, name, type, KlassHandle(), false, false, THREAD);
+ defc, name, type, caller, caller.not_null(), false, THREAD);
} else if (mh_invoke_id != vmIntrinsics::_none) {
assert(!is_signature_polymorphic_static(mh_invoke_id), "");
LinkResolver::resolve_handle_call(result,
- defc, name, type, KlassHandle(), THREAD);
+ defc, name, type, caller, THREAD);
} else if (ref_kind == JVM_REF_invokeSpecial) {
LinkResolver::resolve_special_call(result,
- defc, name, type, KlassHandle(), false, THREAD);
+ defc, name, type, caller, caller.not_null(), THREAD);
} else if (ref_kind == JVM_REF_invokeVirtual) {
LinkResolver::resolve_virtual_call(result, Handle(), defc,
- defc, name, type, KlassHandle(), false, false, THREAD);
+ defc, name, type, caller, caller.not_null(), false, THREAD);
} else {
assert(false, err_msg("ref_kind=%d", ref_kind));
}
@@ -683,7 +703,7 @@
assert(!HAS_PENDING_EXCEPTION, "");
if (name == vmSymbols::object_initializer_name()) {
LinkResolver::resolve_special_call(result,
- defc, name, type, KlassHandle(), false, THREAD);
+ defc, name, type, caller, caller.not_null(), THREAD);
} else {
break; // will throw after end of switch
}
@@ -700,7 +720,7 @@
fieldDescriptor result; // find_field initializes fd if found
{
assert(!HAS_PENDING_EXCEPTION, "");
- LinkResolver::resolve_field(result, defc, name, type, KlassHandle(), Bytecodes::_nop, false, false, THREAD);
+ LinkResolver::resolve_field(result, defc, name, type, caller, Bytecodes::_nop, false, false, THREAD);
if (HAS_PENDING_EXCEPTION) {
return empty;
}
@@ -1121,7 +1141,11 @@
}
}
- Handle resolved = MethodHandles::resolve_MemberName(mname, CHECK_NULL);
+ KlassHandle caller(THREAD,
+ caller_jh == NULL ? (Klass*) NULL :
+ java_lang_Class::as_Klass(JNIHandles::resolve_non_null(caller_jh)));
+ Handle resolved = MethodHandles::resolve_MemberName(mname, caller, CHECK_NULL);
+
if (resolved.is_null()) {
int flags = java_lang_invoke_MemberName::flags(mname());
int ref_kind = (flags >> REFERENCE_KIND_SHIFT) & REFERENCE_KIND_MASK;
--- a/hotspot/src/share/vm/prims/methodHandles.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/methodHandles.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -55,7 +55,7 @@
public:
// working with member names
- static Handle resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type
+ static Handle resolve_MemberName(Handle mname, KlassHandle caller, TRAPS); // compute vmtarget/vmindex from name/type
static void expand_MemberName(Handle mname, int suppress, TRAPS); // expand defc/name/type if missing
static Handle new_MemberName(TRAPS); // must be followed by init_MemberName
static oop init_MemberName(Handle mname_h, Handle target_h); // compute vmtarget/vmindex from target
--- a/hotspot/src/share/vm/prims/nativeLookup.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/nativeLookup.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/prims/perf.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/perf.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/prims/wbtestmethods/parserTests.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/wbtestmethods/parserTests.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/prims/whitebox.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/prims/whitebox.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/runtime/advancedThresholdPolicy.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/advancedThresholdPolicy.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/hotspot/src/share/vm/runtime/atomic.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/atomic.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/runtime/atomic.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/atomic.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/hotspot/src/share/vm/runtime/compilationPolicy.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/compilationPolicy.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
--- a/hotspot/src/share/vm/runtime/deoptimization.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/deoptimization.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1224,9 +1224,19 @@
load_class_by_index(constant_pool, index, THREAD);
if (HAS_PENDING_EXCEPTION) {
// Exception happened during classloading. We ignore the exception here, since it
- // is going to be rethrown since the current activation is going to be deoptimzied and
+ // is going to be rethrown since the current activation is going to be deoptimized and
// the interpreter will re-execute the bytecode.
CLEAR_PENDING_EXCEPTION;
+ // Class loading called java code which may have caused a stack
+ // overflow. If the exception was thrown right before the return
+ // to the runtime the stack is no longer guarded. Reguard the
+ // stack otherwise if we return to the uncommon trap blob and the
+ // stack bang causes a stack overflow we crash.
+ assert(THREAD->is_Java_thread(), "only a java thread can be here");
+ JavaThread* thread = (JavaThread*)THREAD;
+ bool guard_pages_enabled = thread->stack_yellow_zone_enabled();
+ if (!guard_pages_enabled) guard_pages_enabled = thread->reguard_stack();
+ assert(guard_pages_enabled, "stack banging in uncommon trap blob may cause crash");
}
}
--- a/hotspot/src/share/vm/runtime/fprofiler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/fprofiler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/globals.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/globals.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -295,7 +295,7 @@
else st->print("%-16s", "");
}
- st->print("%-20");
+ st->print("%-20s", " ");
print_kind(st);
if (withComments) {
@@ -702,8 +702,6 @@
return true;
}
-// Contract: Flag will make private copy of the incoming value.
-// Outgoing value is always malloc-ed, and caller MUST call free.
bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin) {
Flag* result = Flag::find_flag(name, len);
if (result == NULL) return false;
@@ -726,7 +724,6 @@
return true;
}
-// Contract: Flag will make private copy of the incoming value.
void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin) {
Flag* faddr = address_of_flag(flag);
guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
--- a/hotspot/src/share/vm/runtime/globals.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -376,6 +376,8 @@
static bool ccstrAt(char* name, size_t len, ccstr* value);
static bool ccstrAt(char* name, ccstr* value) { return ccstrAt(name, strlen(name), value); }
+ // Contract: Flag will make private copy of the incoming value.
+ // Outgoing value is always malloc-ed, and caller MUST call free.
static bool ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin);
static bool ccstrAtPut(char* name, ccstr* value, Flag::Flags origin) { return ccstrAtPut(name, strlen(name), value, origin); }
@@ -2531,6 +2533,9 @@
develop(bool, PrintMethodFlushing, false, \
"Print the nmethods being flushed") \
\
+ diagnostic(bool, PrintMethodFlushingStatistics, false, \
+ "print statistics about method flushing") \
+ \
develop(bool, UseRelocIndex, false, \
"Use an index to speed random access to relocations") \
\
@@ -3306,21 +3311,21 @@
develop(intx, CIStart, 0, \
"The id of the first compilation to permit") \
\
- develop(intx, CIStop, -1, \
+ develop(intx, CIStop, max_jint, \
"The id of the last compilation to permit") \
\
- develop(intx, CIStartOSR, 0, \
+ develop(intx, CIStartOSR, 0, \
"The id of the first osr compilation to permit " \
"(CICountOSR must be on)") \
\
- develop(intx, CIStopOSR, -1, \
+ develop(intx, CIStopOSR, max_jint, \
"The id of the last osr compilation to permit " \
"(CICountOSR must be on)") \
\
- develop(intx, CIBreakAtOSR, -1, \
+ develop(intx, CIBreakAtOSR, -1, \
"The id of osr compilation to break at") \
\
- develop(intx, CIBreakAt, -1, \
+ develop(intx, CIBreakAt, -1, \
"The id of compilation to break at") \
\
product(ccstrlist, CompileOnly, "", \
@@ -3339,6 +3344,10 @@
"File containing compilation replay information" \
"[default: ./replay_pid%p.log] (%p replaced with pid)") \
\
+ product(ccstr, InlineDataFile, NULL, \
+ "File containing inlining replay information" \
+ "[default: ./inline_pid%p.log] (%p replaced with pid)") \
+ \
develop(intx, ReplaySuppressInitializers, 2, \
"Control handling of class initialization during replay: " \
"0 - don't do anything special; " \
--- a/hotspot/src/share/vm/runtime/globals_extension.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/globals_extension.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -201,6 +201,7 @@
static void uintxAtPut(CommandLineFlagWithType flag, uintx value, Flag::Flags origin);
static void uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, Flag::Flags origin);
static void doubleAtPut(CommandLineFlagWithType flag, double value, Flag::Flags origin);
+ // Contract: Flag will make private copy of the incoming value
static void ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin);
static bool is_default(CommandLineFlag flag);
--- a/hotspot/src/share/vm/runtime/handles.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/handles.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/runtime/java.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/java.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -52,6 +52,7 @@
#include "runtime/memprofiler.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/statSampler.hpp"
+#include "runtime/sweeper.hpp"
#include "runtime/task.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/timer.hpp"
@@ -217,9 +218,7 @@
// General statistics printing (profiling ...)
-
void print_statistics() {
-
#ifdef ASSERT
if (CountRuntimeCalls) {
@@ -315,6 +314,10 @@
CodeCache::print();
}
+ if (PrintMethodFlushingStatistics) {
+ NMethodSweeper::print();
+ }
+
if (PrintCodeCache2) {
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
CodeCache::print_internals();
@@ -382,6 +385,10 @@
CodeCache::print();
}
+ if (PrintMethodFlushingStatistics) {
+ NMethodSweeper::print();
+ }
+
#ifdef COMPILER2
if (PrintPreciseBiasedLockingStatistics) {
OptoRuntime::print_named_counters();
--- a/hotspot/src/share/vm/runtime/javaCalls.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/javaCalls.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/jniHandles.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/jniHandles.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/runtime/mutex.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/mutex.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/runtime/os.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/os.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1081,7 +1081,6 @@
}
-#ifndef PRODUCT
// Check if in metaspace.
if (ClassLoaderDataGraph::contains((address)addr)) {
// Use addr->print() from the debugger instead (not here)
@@ -1089,7 +1088,6 @@
" is pointing into metadata", addr);
return;
}
-#endif
// Try an OS specific find
if (os::find(addr, st)) {
@@ -1264,9 +1262,6 @@
"%/lib/jce.jar:"
"%/lib/charsets.jar:"
"%/lib/jfr.jar:"
-#ifdef __APPLE__
- "%/lib/JObjC.jar:"
-#endif
"%/classes";
char* sysclasspath = format_boot_path(classpath_format, home, home_len, fileSep, pathSep);
if (sysclasspath == NULL) return false;
--- a/hotspot/src/share/vm/runtime/perfData.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/perfData.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/runtime/perfMemory.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/perfMemory.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2014, 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
@@ -155,7 +155,7 @@
void PerfMemory::destroy() {
- assert(_prologue != NULL, "prologue pointer must be initialized");
+ if (_prologue == NULL) return;
if (_start != NULL && _prologue->overflow != 0) {
--- a/hotspot/src/share/vm/runtime/reflection.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/reflection.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -537,15 +537,26 @@
return true;
}
+ Klass* host_class = current_class;
+ while (host_class->oop_is_instance() &&
+ InstanceKlass::cast(host_class)->is_anonymous()) {
+ Klass* next_host_class = InstanceKlass::cast(host_class)->host_klass();
+ if (next_host_class == NULL) break;
+ host_class = next_host_class;
+ }
+ if (host_class == field_class) {
+ return true;
+ }
+
if (access.is_protected()) {
if (!protected_restriction) {
- // See if current_class is a subclass of field_class
- if (current_class->is_subclass_of(field_class)) {
+ // See if current_class (or outermost host class) is a subclass of field_class
+ if (host_class->is_subclass_of(field_class)) {
if (access.is_static() || // static fields are ok, see 6622385
current_class == resolved_class ||
field_class == resolved_class ||
- current_class->is_subclass_of(resolved_class) ||
- resolved_class->is_subclass_of(current_class)) {
+ host_class->is_subclass_of(resolved_class) ||
+ resolved_class->is_subclass_of(host_class)) {
return true;
}
}
--- a/hotspot/src/share/vm/runtime/reflection.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/reflection.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -494,6 +494,13 @@
assert(!nm->is_native_method(), "no exception handler");
assert(nm->header_begin() != nm->exception_begin(), "no exception handler");
if (nm->is_deopt_pc(return_address)) {
+ // If we come here because of a stack overflow, the stack may be
+ // unguarded. Reguard the stack otherwise if we return to the
+ // deopt blob and the stack bang causes a stack overflow we
+ // crash.
+ bool guard_pages_enabled = thread->stack_yellow_zone_enabled();
+ if (!guard_pages_enabled) guard_pages_enabled = thread->reguard_stack();
+ assert(guard_pages_enabled, "stack banging in deopt blob may cause crash");
return SharedRuntime::deopt_blob()->unpack_with_exception();
} else {
return nm->exception_begin();
@@ -1178,12 +1185,12 @@
CodeBlob* caller_cb = caller_frame.cb();
guarantee(caller_cb != NULL && caller_cb->is_nmethod(), "must be called from nmethod");
nmethod* caller_nm = caller_cb->as_nmethod_or_null();
+
// make sure caller is not getting deoptimized
// and removed before we are done with it.
// CLEANUP - with lazy deopt shouldn't need this lock
nmethodLocker caller_lock(caller_nm);
-
// determine call info & receiver
// note: a) receiver is NULL for static calls
// b) an exception is thrown if receiver is NULL for non-static calls
@@ -1198,6 +1205,11 @@
(!is_virtual && invoke_code == Bytecodes::_invokedynamic) ||
( is_virtual && invoke_code != Bytecodes::_invokestatic ), "inconsistent bytecode");
+ // We do not patch the call site if the caller nmethod has been made non-entrant.
+ if (!caller_nm->is_in_use()) {
+ return callee_method;
+ }
+
#ifndef PRODUCT
// tracing/debugging/statistics
int *addr = (is_optimized) ? (&_resolve_opt_virtual_ctr) :
@@ -1237,6 +1249,10 @@
// Make sure the callee nmethod does not get deoptimized and removed before
// we are done patching the code.
nmethod* callee_nm = callee_method->code();
+ if (callee_nm != NULL && !callee_nm->is_in_use()) {
+ // Patch call site to C2I adapter if callee nmethod is deoptimized or unloaded.
+ callee_nm = NULL;
+ }
nmethodLocker nl_callee(callee_nm);
#ifdef ASSERT
address dest_entry_point = callee_nm == NULL ? 0 : callee_nm->entry_point(); // used below
@@ -1258,15 +1274,24 @@
{
MutexLocker ml_patch(CompiledIC_lock);
+ // Lock blocks for safepoint during which both nmethods can change state.
+
// Now that we are ready to patch if the Method* was redefined then
// don't update call site and let the caller retry.
-
- if (!callee_method->is_old()) {
+ // Don't update call site if caller nmethod has been made non-entrant
+ // as it is a waste of time.
+ // Don't update call site if callee nmethod was unloaded or deoptimized.
+ // Don't update call site if callee nmethod was replaced by an other nmethod
+ // which may happen when multiply alive nmethod (tiered compilation)
+ // will be supported.
+ if (!callee_method->is_old() && caller_nm->is_in_use() &&
+ (callee_nm == NULL || callee_nm->is_in_use() && (callee_method->code() == callee_nm))) {
#ifdef ASSERT
// We must not try to patch to jump to an already unloaded method.
if (dest_entry_point != 0) {
- assert(CodeCache::find_blob(dest_entry_point) != NULL,
- "should not unload nmethod while locked");
+ CodeBlob* cb = CodeCache::find_blob(dest_entry_point);
+ assert((cb != NULL) && cb->is_nmethod() && (((nmethod*)cb) == callee_nm),
+ "should not call unloaded nmethod");
}
#endif
if (is_virtual) {
@@ -2382,7 +2407,7 @@
ResourceMark rm;
NOT_PRODUCT(int insts_size);
- AdapterBlob* B = NULL;
+ AdapterBlob* new_adapter = NULL;
AdapterHandlerEntry* entry = NULL;
AdapterFingerPrint* fingerprint = NULL;
{
@@ -2414,7 +2439,8 @@
#ifdef ASSERT
AdapterHandlerEntry* shared_entry = NULL;
- if (VerifyAdapterSharing && entry != NULL) {
+ // Start adapter sharing verification only after the VM is booted.
+ if (VerifyAdapterSharing && (entry != NULL)) {
shared_entry = entry;
entry = NULL;
}
@@ -2430,41 +2456,44 @@
// Make a C heap allocated version of the fingerprint to store in the adapter
fingerprint = new AdapterFingerPrint(total_args_passed, sig_bt);
+ // StubRoutines::code2() is initialized after this function can be called. As a result,
+ // VerifyAdapterCalls and VerifyAdapterSharing can fail if we re-use code that generated
+ // prior to StubRoutines::code2() being set. Checks refer to checks generated in an I2C
+ // stub that ensure that an I2C stub is called from an interpreter frame.
+ bool contains_all_checks = StubRoutines::code2() != NULL;
+
// Create I2C & C2I handlers
-
BufferBlob* buf = buffer_blob(); // the temporary code buffer in CodeCache
if (buf != NULL) {
CodeBuffer buffer(buf);
short buffer_locs[20];
buffer.insts()->initialize_shared_locs((relocInfo*)buffer_locs,
sizeof(buffer_locs)/sizeof(relocInfo));
+
MacroAssembler _masm(&buffer);
-
entry = SharedRuntime::generate_i2c2i_adapters(&_masm,
total_args_passed,
comp_args_on_stack,
sig_bt,
regs,
fingerprint);
-
#ifdef ASSERT
if (VerifyAdapterSharing) {
if (shared_entry != NULL) {
- assert(shared_entry->compare_code(buf->code_begin(), buffer.insts_size(), total_args_passed, sig_bt),
- "code must match");
+ assert(shared_entry->compare_code(buf->code_begin(), buffer.insts_size()), "code must match");
// Release the one just created and return the original
_adapters->free_entry(entry);
return shared_entry;
} else {
- entry->save_code(buf->code_begin(), buffer.insts_size(), total_args_passed, sig_bt);
+ entry->save_code(buf->code_begin(), buffer.insts_size());
}
}
#endif
- B = AdapterBlob::create(&buffer);
+ new_adapter = AdapterBlob::create(&buffer);
NOT_PRODUCT(insts_size = buffer.insts_size());
}
- if (B == NULL) {
+ if (new_adapter == NULL) {
// CodeCache is full, disable compilation
// Ought to log this but compile log is only per compile thread
// and we're some non descript Java thread.
@@ -2472,7 +2501,7 @@
CompileBroker::handle_full_code_cache();
return NULL; // Out of CodeCache space
}
- entry->relocate(B->content_begin());
+ entry->relocate(new_adapter->content_begin());
#ifndef PRODUCT
// debugging suppport
if (PrintAdapterHandlers || PrintStubCode) {
@@ -2491,22 +2520,25 @@
}
}
#endif
-
- _adapters->add(entry);
+ // Add the entry only if the entry contains all required checks (see sharedRuntime_xxx.cpp)
+ // The checks are inserted only if -XX:+VerifyAdapterCalls is specified.
+ if (contains_all_checks || !VerifyAdapterCalls) {
+ _adapters->add(entry);
+ }
}
// Outside of the lock
- if (B != NULL) {
+ if (new_adapter != NULL) {
char blob_id[256];
jio_snprintf(blob_id,
sizeof(blob_id),
"%s(%s)@" PTR_FORMAT,
- B->name(),
+ new_adapter->name(),
fingerprint->as_string(),
- B->content_begin());
- Forte::register_stub(blob_id, B->content_begin(), B->content_end());
+ new_adapter->content_begin());
+ Forte::register_stub(blob_id, new_adapter->content_begin(),new_adapter->content_end());
if (JvmtiExport::should_post_dynamic_code_generated()) {
- JvmtiExport::post_dynamic_code_generated(blob_id, B->content_begin(), B->content_end());
+ JvmtiExport::post_dynamic_code_generated(blob_id, new_adapter->content_begin(), new_adapter->content_end());
}
}
return entry;
@@ -2538,7 +2570,6 @@
delete _fingerprint;
#ifdef ASSERT
if (_saved_code) FREE_C_HEAP_ARRAY(unsigned char, _saved_code, mtCode);
- if (_saved_sig) FREE_C_HEAP_ARRAY(Basictype, _saved_sig, mtCode);
#endif
}
@@ -2547,35 +2578,30 @@
// Capture the code before relocation so that it can be compared
// against other versions. If the code is captured after relocation
// then relative instructions won't be equivalent.
-void AdapterHandlerEntry::save_code(unsigned char* buffer, int length, int total_args_passed, BasicType* sig_bt) {
+void AdapterHandlerEntry::save_code(unsigned char* buffer, int length) {
_saved_code = NEW_C_HEAP_ARRAY(unsigned char, length, mtCode);
- _code_length = length;
+ _saved_code_length = length;
memcpy(_saved_code, buffer, length);
- _total_args_passed = total_args_passed;
- _saved_sig = NEW_C_HEAP_ARRAY(BasicType, _total_args_passed, mtCode);
- memcpy(_saved_sig, sig_bt, _total_args_passed * sizeof(BasicType));
}
-bool AdapterHandlerEntry::compare_code(unsigned char* buffer, int length, int total_args_passed, BasicType* sig_bt) {
- if (length != _code_length) {
+bool AdapterHandlerEntry::compare_code(unsigned char* buffer, int length) {
+ if (length != _saved_code_length) {
return false;
}
- for (int i = 0; i < length; i++) {
- if (buffer[i] != _saved_code[i]) {
- return false;
- }
- }
- return true;
+
+ return (memcmp(buffer, _saved_code, length) == 0) ? true : false;
}
#endif
-// Create a native wrapper for this native method. The wrapper converts the
-// java compiled calling convention to the native convention, handlizes
-// arguments, and transitions to native. On return from the native we transition
-// back to java blocking if a safepoint is in progress.
-nmethod *AdapterHandlerLibrary::create_native_wrapper(methodHandle method, int compile_id) {
+/**
+ * Create a native wrapper for this native method. The wrapper converts the
+ * Java-compiled calling convention to the native convention, handles
+ * arguments, and transitions to native. On return from the native we transition
+ * back to java blocking if a safepoint is in progress.
+ */
+void AdapterHandlerLibrary::create_native_wrapper(methodHandle method) {
ResourceMark rm;
nmethod* nm = NULL;
@@ -2584,16 +2610,19 @@
method->has_native_function(), "must have something valid to call!");
{
- // perform the work while holding the lock, but perform any printing outside the lock
+ // Perform the work while holding the lock, but perform any printing outside the lock
MutexLocker mu(AdapterHandlerLibrary_lock);
// See if somebody beat us to it
nm = method->code();
- if (nm) {
- return nm;
+ if (nm != NULL) {
+ return;
}
+ const int compile_id = CompileBroker::assign_compile_id(method, CompileBroker::standard_entry_bci);
+ assert(compile_id > 0, "Must generate native wrapper");
+
+
ResourceMark rm;
-
BufferBlob* buf = buffer_blob(); // the temporary code buffer in CodeCache
if (buf != NULL) {
CodeBuffer buffer(buf);
@@ -2625,16 +2654,14 @@
int comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, is_outgoing);
// Generate the compiled-to-native wrapper code
- nm = SharedRuntime::generate_native_wrapper(&_masm,
- method,
- compile_id,
- sig_bt,
- regs,
- ret_type);
+ nm = SharedRuntime::generate_native_wrapper(&_masm, method, compile_id, sig_bt, regs, ret_type);
+
+ if (nm != NULL) {
+ method->set_code(method, nm);
+ }
}
- }
-
- // Must unlock before calling set_code
+ } // Unlock AdapterHandlerLibrary_lock
+
// Install the generated code.
if (nm != NULL) {
@@ -2642,13 +2669,11 @@
ttyLocker ttyl;
CompileTask::print_compilation(tty, nm, method->is_static() ? "(static)" : "");
}
- method->set_code(method, nm);
nm->post_compiled_method_load_event();
} else {
// CodeCache is full, disable compilation
CompileBroker::handle_full_code_cache();
}
- return nm;
}
JRT_ENTRY_NO_ASYNC(void, SharedRuntime::block_for_jni_critical(JavaThread* thread))
--- a/hotspot/src/share/vm/runtime/sharedRuntime.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -612,9 +612,7 @@
// Captures code and signature used to generate this adapter when
// verifing adapter equivalence.
unsigned char* _saved_code;
- int _code_length;
- BasicType* _saved_sig;
- int _total_args_passed;
+ int _saved_code_length;
#endif
void init(AdapterFingerPrint* fingerprint, address i2c_entry, address c2i_entry, address c2i_unverified_entry) {
@@ -624,9 +622,7 @@
_c2i_unverified_entry = c2i_unverified_entry;
#ifdef ASSERT
_saved_code = NULL;
- _code_length = 0;
- _saved_sig = NULL;
- _total_args_passed = 0;
+ _saved_code_length = 0;
#endif
}
@@ -639,7 +635,6 @@
address get_i2c_entry() const { return _i2c_entry; }
address get_c2i_entry() const { return _c2i_entry; }
address get_c2i_unverified_entry() const { return _c2i_unverified_entry; }
-
address base_address();
void relocate(address new_base);
@@ -651,8 +646,8 @@
#ifdef ASSERT
// Used to verify that code generated for shared adapters is equivalent
- void save_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
- bool compare_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
+ void save_code (unsigned char* code, int length);
+ bool compare_code(unsigned char* code, int length);
#endif
//virtual void print_on(outputStream* st) const; DO NOT USE
@@ -671,7 +666,7 @@
static AdapterHandlerEntry* new_entry(AdapterFingerPrint* fingerprint,
address i2c_entry, address c2i_entry, address c2i_unverified_entry);
- static nmethod* create_native_wrapper(methodHandle method, int compile_id);
+ static void create_native_wrapper(methodHandle method);
static AdapterHandlerEntry* get_adapter(methodHandle method);
#ifdef HAVE_DTRACE_H
--- a/hotspot/src/share/vm/runtime/signature.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/signature.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/signature.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/signature.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/sweeper.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sweeper.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -129,6 +129,7 @@
nmethod* NMethodSweeper::_current = NULL; // Current nmethod
long NMethodSweeper::_traversals = 0; // Stack scan count, also sweep ID.
+long NMethodSweeper::_total_nof_code_cache_sweeps = 0; // Total number of full sweeps of the code cache
long NMethodSweeper::_time_counter = 0; // Virtual time used to periodically invoke sweeper
long NMethodSweeper::_last_sweep = 0; // Value of _time_counter when the last sweep happened
int NMethodSweeper::_seen = 0; // Nof. nmethod we have currently processed in current pass of CodeCache
@@ -143,13 +144,16 @@
// 1) alive -> not_entrant
// 2) not_entrant -> zombie
// 3) zombie -> marked_for_reclamation
+int NMethodSweeper::_hotness_counter_reset_val = 0;
-int NMethodSweeper::_total_nof_methods_reclaimed = 0; // Accumulated nof methods flushed
-Tickspan NMethodSweeper::_total_time_sweeping; // Accumulated time sweeping
-Tickspan NMethodSweeper::_total_time_this_sweep; // Total time this sweep
-Tickspan NMethodSweeper::_peak_sweep_time; // Peak time for a full sweep
-Tickspan NMethodSweeper::_peak_sweep_fraction_time; // Peak time sweeping one fraction
-int NMethodSweeper::_hotness_counter_reset_val = 0;
+long NMethodSweeper::_total_nof_methods_reclaimed = 0; // Accumulated nof methods flushed
+long NMethodSweeper::_total_nof_c2_methods_reclaimed = 0; // Accumulated nof methods flushed
+size_t NMethodSweeper::_total_flushed_size = 0; // Total number of bytes flushed from the code cache
+Tickspan NMethodSweeper::_total_time_sweeping; // Accumulated time sweeping
+Tickspan NMethodSweeper::_total_time_this_sweep; // Total time this sweep
+Tickspan NMethodSweeper::_peak_sweep_time; // Peak time for a full sweep
+Tickspan NMethodSweeper::_peak_sweep_fraction_time; // Peak time sweeping one fraction
+
class MarkActivationClosure: public CodeBlobClosure {
@@ -257,9 +261,14 @@
// Large ReservedCodeCacheSize: (e.g., 256M + code Cache is 90% full). The formula
// computes: (256 / 16) - 10 = 6.
if (!_should_sweep) {
- int time_since_last_sweep = _time_counter - _last_sweep;
- double wait_until_next_sweep = (ReservedCodeCacheSize / (16 * M)) - time_since_last_sweep -
- CodeCache::reverse_free_ratio();
+ const int time_since_last_sweep = _time_counter - _last_sweep;
+ // ReservedCodeCacheSize has an 'unsigned' type. We need a 'signed' type for max_wait_time,
+ // since 'time_since_last_sweep' can be larger than 'max_wait_time'. If that happens using
+ // an unsigned type would cause an underflow (wait_until_next_sweep becomes a large positive
+ // value) that disables the intended periodic sweeps.
+ const int max_wait_time = ReservedCodeCacheSize / (16 * M);
+ double wait_until_next_sweep = max_wait_time - time_since_last_sweep - CodeCache::reverse_free_ratio();
+ assert(wait_until_next_sweep <= (double)max_wait_time, "Calculation of code cache sweeper interval is incorrect");
if ((wait_until_next_sweep <= 0.0) || !CompileBroker::should_compile_new_jobs()) {
_should_sweep = true;
@@ -287,6 +296,7 @@
// We are done with sweeping the code cache once.
if (_sweep_fractions_left == 0) {
+ _total_nof_code_cache_sweeps++;
_last_sweep = _time_counter;
// Reset flag; temporarily disables sweeper
_should_sweep = false;
@@ -373,6 +383,7 @@
_total_time_sweeping += sweep_time;
_total_time_this_sweep += sweep_time;
_peak_sweep_fraction_time = MAX2(sweep_time, _peak_sweep_fraction_time);
+ _total_flushed_size += freed_memory;
_total_nof_methods_reclaimed += _flushed_count;
EventSweepCodeCache event(UNTIMED);
@@ -504,6 +515,9 @@
tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (marked for reclamation) being flushed", nm->compile_id(), nm);
}
freed_memory = nm->total_size();
+ if (nm->is_compiled_by_c2()) {
+ _total_nof_c2_methods_reclaimed++;
+ }
release_nmethod(nm);
_flushed_count++;
} else {
@@ -542,6 +556,9 @@
SWEEP(nm);
// No inline caches will ever point to osr methods, so we can just remove it
freed_memory = nm->total_size();
+ if (nm->is_compiled_by_c2()) {
+ _total_nof_c2_methods_reclaimed++;
+ }
release_nmethod(nm);
_flushed_count++;
} else {
@@ -629,3 +646,13 @@
xtty->end_elem();
}
}
+
+void NMethodSweeper::print() {
+ ttyLocker ttyl;
+ tty->print_cr("Code cache sweeper statistics:");
+ tty->print_cr(" Total sweep time: %1.0lfms", (double)_total_time_sweeping.value()/1000000);
+ tty->print_cr(" Total number of full sweeps: %ld", _total_nof_code_cache_sweeps);
+ tty->print_cr(" Total number of flushed methods: %ld(%ld C2 methods)", _total_nof_methods_reclaimed,
+ _total_nof_c2_methods_reclaimed);
+ tty->print_cr(" Total size of flushed methods: " SIZE_FORMAT "kB", _total_flushed_size/K);
+}
--- a/hotspot/src/share/vm/runtime/sweeper.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sweeper.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -54,28 +54,33 @@
// is full.
class NMethodSweeper : public AllStatic {
- static long _traversals; // Stack scan count, also sweep ID.
- static long _time_counter; // Virtual time used to periodically invoke sweeper
- static long _last_sweep; // Value of _time_counter when the last sweep happened
- static nmethod* _current; // Current nmethod
- static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache
- static int _flushed_count; // Nof. nmethods flushed in current sweep
- static int _zombified_count; // Nof. nmethods made zombie in current sweep
- static int _marked_for_reclamation_count; // Nof. nmethods marked for reclaim in current sweep
+ static long _traversals; // Stack scan count, also sweep ID.
+ static long _total_nof_code_cache_sweeps; // Total number of full sweeps of the code cache
+ static long _time_counter; // Virtual time used to periodically invoke sweeper
+ static long _last_sweep; // Value of _time_counter when the last sweep happened
+ static nmethod* _current; // Current nmethod
+ static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache
+ static int _flushed_count; // Nof. nmethods flushed in current sweep
+ static int _zombified_count; // Nof. nmethods made zombie in current sweep
+ static int _marked_for_reclamation_count; // Nof. nmethods marked for reclaim in current sweep
- static volatile int _sweep_fractions_left; // Nof. invocations left until we are completed with this pass
- static volatile int _sweep_started; // Flag to control conc sweeper
- static volatile bool _should_sweep; // Indicates if we should invoke the sweeper
- static volatile int _bytes_changed; // Counts the total nmethod size if the nmethod changed from:
- // 1) alive -> not_entrant
- // 2) not_entrant -> zombie
- // 3) zombie -> marked_for_reclamation
+ static volatile int _sweep_fractions_left; // Nof. invocations left until we are completed with this pass
+ static volatile int _sweep_started; // Flag to control conc sweeper
+ static volatile bool _should_sweep; // Indicates if we should invoke the sweeper
+ static volatile int _bytes_changed; // Counts the total nmethod size if the nmethod changed from:
+ // 1) alive -> not_entrant
+ // 2) not_entrant -> zombie
+ // 3) zombie -> marked_for_reclamation
// Stat counters
- static int _total_nof_methods_reclaimed; // Accumulated nof methods flushed
- static Tickspan _total_time_sweeping; // Accumulated time sweeping
- static Tickspan _total_time_this_sweep; // Total time this sweep
- static Tickspan _peak_sweep_time; // Peak time for a full sweep
- static Tickspan _peak_sweep_fraction_time; // Peak time sweeping one fraction
+ static long _total_nof_methods_reclaimed; // Accumulated nof methods flushed
+ static long _total_nof_c2_methods_reclaimed; // Accumulated nof C2-compiled methods flushed
+ static size_t _total_flushed_size; // Total size of flushed methods
+ static int _hotness_counter_reset_val;
+
+ static Tickspan _total_time_sweeping; // Accumulated time sweeping
+ static Tickspan _total_time_this_sweep; // Total time this sweep
+ static Tickspan _peak_sweep_time; // Peak time for a full sweep
+ static Tickspan _peak_sweep_fraction_time; // Peak time sweeping one fraction
static int process_nmethod(nmethod *nm);
static void release_nmethod(nmethod* nm);
@@ -83,8 +88,6 @@
static bool sweep_in_progress();
static void sweep_code_cache();
- static int _hotness_counter_reset_val;
-
public:
static long traversal_count() { return _traversals; }
static int total_nof_methods_reclaimed() { return _total_nof_methods_reclaimed; }
@@ -105,10 +108,10 @@
static void mark_active_nmethods(); // Invoked at the end of each safepoint
static void possibly_sweep(); // Compiler threads call this to sweep
- static int sort_nmethods_by_hotness(nmethod** nm1, nmethod** nm2);
static int hotness_counter_reset_val();
static void report_state_change(nmethod* nm);
static void possibly_enable_sweeper();
+ static void print(); // Printing/debugging
};
#endif // SHARE_VM_RUNTIME_SWEEPER_HPP
--- a/hotspot/src/share/vm/runtime/synchronizer.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/synchronizer.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -119,7 +119,7 @@
} \
}
-#define HOTSPOT_MONITOR_PROBE_waited HOTSPOT_MONITOR_PROBE_WAITED
+#define HOTSPOT_MONITOR_PROBE_waited HOTSPOT_MONITOR_WAITED
#define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread) \
{ \
--- a/hotspot/src/share/vm/runtime/synchronizer.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/synchronizer.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/runtime/thread.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/thread.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -135,8 +135,8 @@
#else /* USDT2 */
-#define HOTSPOT_THREAD_PROBE_start HOTSPOT_THREAD_PROBE_START
-#define HOTSPOT_THREAD_PROBE_stop HOTSPOT_THREAD_PROBE_STOP
+#define HOTSPOT_THREAD_PROBE_start HOTSPOT_THREAD_START
+#define HOTSPOT_THREAD_PROBE_stop HOTSPOT_THREAD_STOP
#define DTRACE_THREAD_PROBE(probe, javathread) \
{ \
--- a/hotspot/src/share/vm/runtime/unhandledOops.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/unhandledOops.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/runtime/vframe.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vframe.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/vframe.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vframe.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/vframeArray.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vframeArray.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/virtualspace.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/virtualspace.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/runtime/vm_version.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/services/attachListener.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/attachListener.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -451,15 +451,39 @@
}
}
+bool AttachListener::has_init_error(TRAPS) {
+ if (HAS_PENDING_EXCEPTION) {
+ tty->print_cr("Exception in VM (AttachListener::init) : ");
+ java_lang_Throwable::print(PENDING_EXCEPTION, tty);
+ tty->cr();
+
+ CLEAR_PENDING_EXCEPTION;
+
+ return true;
+ } else {
+ return false;
+ }
+}
+
// Starts the Attach Listener thread
void AttachListener::init() {
EXCEPTION_MARK;
- Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
+ Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, THREAD);
+ if (has_init_error(THREAD)) {
+ return;
+ }
+
instanceKlassHandle klass (THREAD, k);
- instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
+ instanceHandle thread_oop = klass->allocate_instance_handle(THREAD);
+ if (has_init_error(THREAD)) {
+ return;
+ }
const char thread_name[] = "Attach Listener";
- Handle string = java_lang_String::create_from_str(thread_name, CHECK);
+ Handle string = java_lang_String::create_from_str(thread_name, THREAD);
+ if (has_init_error(THREAD)) {
+ return;
+ }
// Initialize thread_oop to put it into the system threadGroup
Handle thread_group (THREAD, Universe::system_thread_group());
@@ -472,13 +496,7 @@
string,
THREAD);
- if (HAS_PENDING_EXCEPTION) {
- tty->print_cr("Exception in VM (AttachListener::init) : ");
- java_lang_Throwable::print(PENDING_EXCEPTION, tty);
- tty->cr();
-
- CLEAR_PENDING_EXCEPTION;
-
+ if (has_init_error(THREAD)) {
return;
}
@@ -490,14 +508,7 @@
vmSymbols::thread_void_signature(),
thread_oop, // ARG 1
THREAD);
-
- if (HAS_PENDING_EXCEPTION) {
- tty->print_cr("Exception in VM (AttachListener::init) : ");
- java_lang_Throwable::print(PENDING_EXCEPTION, tty);
- tty->cr();
-
- CLEAR_PENDING_EXCEPTION;
-
+ if (has_init_error(THREAD)) {
return;
}
--- a/hotspot/src/share/vm/services/attachListener.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/attachListener.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -94,6 +94,9 @@
// dequeue the next operation
static AttachOperation* dequeue();
#endif // !INCLUDE_SERVICES
+
+ private:
+ static bool has_init_error(TRAPS);
};
#if INCLUDE_SERVICES
--- a/hotspot/src/share/vm/services/classLoadingService.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/classLoadingService.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/services/dtraceAttacher.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/dtraceAttacher.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
--- a/hotspot/src/share/vm/services/g1MemoryPool.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/g1MemoryPool.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/services/jmm.h Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/jmm.h Mon Jan 27 21:00:29 2014 -0800
@@ -153,6 +153,7 @@
JMM_VMGLOBAL_ORIGIN_ENVIRON_VAR = 4, /* Set via environment variables */
JMM_VMGLOBAL_ORIGIN_CONFIG_FILE = 5, /* Set via config file (such as .hotspotrc) */
JMM_VMGLOBAL_ORIGIN_ERGONOMIC = 6, /* Set via ergonomic */
+ JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND = 7, /* Set via attach */
JMM_VMGLOBAL_ORIGIN_OTHER = 99 /* Set via some other mechanism */
} jmmVMGlobalOrigin;
--- a/hotspot/src/share/vm/services/management.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/management.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1724,6 +1724,9 @@
case Flag::ERGONOMIC:
global->origin = JMM_VMGLOBAL_ORIGIN_ERGONOMIC;
break;
+ case Flag::ATTACH_ON_DEMAND:
+ global->origin = JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND;
+ break;
default:
global->origin = JMM_VMGLOBAL_ORIGIN_OTHER;
}
@@ -1821,7 +1824,7 @@
"This flag is not writeable.");
}
- bool succeed;
+ bool succeed = false;
if (flag->is_bool()) {
bool bvalue = (new_value.z == JNI_TRUE ? true : false);
succeed = CommandLineFlags::boolAtPut(name, &bvalue, Flag::MANAGEMENT);
@@ -1841,6 +1844,9 @@
}
ccstr svalue = java_lang_String::as_utf8_string(str);
succeed = CommandLineFlags::ccstrAtPut(name, &svalue, Flag::MANAGEMENT);
+ if (succeed) {
+ FREE_C_HEAP_ARRAY(char, svalue, mtInternal);
+ }
}
assert(succeed, "Setting flag should succeed");
JVM_END
--- a/hotspot/src/share/vm/services/memReporter.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memReporter.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/services/memReporter.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memReporter.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/services/memSnapshot.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memSnapshot.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/src/share/vm/services/memoryManager.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryManager.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/services/memoryPool.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryPool.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/services/memoryService.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryService.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/services/memoryService.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryService.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/services/memoryUsage.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryUsage.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/services/psMemoryPool.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/psMemoryPool.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/hotspot/src/share/vm/services/threadService.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/services/threadService.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/shark/sharkBlock.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkBlock.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkBuilder.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkBuilder.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkCompiler.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkCompiler.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -58,7 +58,7 @@
}
SharkCompiler::SharkCompiler()
- : AbstractCompiler() {
+ : AbstractCompiler(shark) {
// Create the lock to protect the memory manager and execution engine
_execution_engine_lock = new Monitor(Mutex::leaf, "SharkExecutionEngineLock");
MutexLocker locker(execution_engine_lock());
--- a/hotspot/src/share/vm/shark/sharkCompiler.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkCompiler.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkConstant.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkConstant.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkFunction.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkFunction.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkInliner.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkInliner.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkInvariants.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkInvariants.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/utilities/bitMap.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/bitMap.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/bitMap.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/bitMap.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/bitMap.inline.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/bitMap.inline.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/src/share/vm/utilities/decoder.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/decoder.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/decoder.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/decoder.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/elfFile.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/elfFile.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/elfFile.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/elfFile.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/exceptions.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/exceptions.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
--- a/hotspot/src/share/vm/utilities/globalDefinitions.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -174,6 +174,7 @@
inline jint jint_cast (jfloat x) { return *(jint* )&x; }
inline jlong jlong_cast (jdouble x) { return *(jlong* )&x; }
+inline julong julong_cast (jdouble x) { return *(julong* )&x; }
inline jfloat jfloat_cast (jint x) { return *(jfloat* )&x; }
inline jdouble jdouble_cast(jlong x) { return *(jdouble*)&x; }
--- a/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/growableArray.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/growableArray.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/hashtable.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/hashtable.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/hotspot/src/share/vm/utilities/macros.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/macros.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/numberSeq.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/numberSeq.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/hotspot/src/share/vm/utilities/ostream.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/ostream.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/top.hpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/top.hpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/hotspot/src/share/vm/utilities/vmError.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/vmError.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1040,7 +1040,7 @@
OnError = NULL;
}
- static bool skip_replay = false;
+ static bool skip_replay = ReplayCompiles; // Do not overwrite file during replay
if (DumpReplayDataOnError && _thread && _thread->is_Compiler_thread() && !skip_replay) {
skip_replay = true;
ciEnv* env = ciEnv::current();
--- a/hotspot/src/share/vm/utilities/yieldingWorkgroup.cpp Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/src/share/vm/utilities/yieldingWorkgroup.cpp Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/hotspot/test/Makefile Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/Makefile Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2013, 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
--- a/hotspot/test/TEST.ROOT Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/TEST.ROOT Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2013, 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
--- a/hotspot/test/compiler/5091921/Test7005594.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/5091921/Test7005594.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2013, 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
--- a/hotspot/test/compiler/6431242/Test.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/6431242/Test.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
--- a/hotspot/test/compiler/6589834/Test_ia32.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/6589834/Test_ia32.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/hotspot/test/compiler/6636138/Test1.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/6636138/Test1.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/hotspot/test/compiler/6636138/Test2.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/6636138/Test2.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/hotspot/test/compiler/6795161/Test.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/6795161/Test.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/hotspot/test/compiler/6857159/Test6857159.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/6857159/Test6857159.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2013, 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
--- a/hotspot/test/compiler/7068051/Test7068051.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/7068051/Test7068051.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2013, 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
--- a/hotspot/test/compiler/7070134/Test7070134.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/7070134/Test7070134.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2013, 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
--- a/hotspot/test/compiler/7141637/SpreadNullArg.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/7141637/SpreadNullArg.java Mon Jan 27 21:00:29 2014 -0800
@@ -46,13 +46,17 @@
mh_spread_target =
MethodHandles.lookup().findStatic(SpreadNullArg.class, "target_spread_arg", mt_ref_arg);
result = (int) mh_spreadInvoker.invokeExact(mh_spread_target, (Object[]) null);
- } catch(NullPointerException e) {
- // Expected exception - do nothing!
- } catch(Throwable e) {
+ throw new Error("Expected IllegalArgumentException was not thrown");
+ } catch (IllegalArgumentException e) {
+ System.out.println("Expected exception : " + e);
+ } catch (Throwable e) {
throw new Error(e);
}
- if (result != 42) throw new Error("Expected NullPointerException was not thrown");
+ if (result != 42) {
+ throw new Error("result [" + result
+ + "] != 42 : Expected IllegalArgumentException was not thrown?");
+ }
}
public static int target_spread_arg(Integer i1) {
--- a/hotspot/test/compiler/7200264/Test7200264.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/7200264/Test7200264.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2013, 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
--- a/hotspot/test/compiler/8000805/Test8000805.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/8000805/Test8000805.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/test/compiler/8005419/Test8005419.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/8005419/Test8005419.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/debug/VerifyAdapterSharing.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @bug 8030783
+ * @summary Regression test for 8026478
+ * @library /testlibrary
+ *
+ */
+import com.oracle.java.testlibrary.*;
+
+public class VerifyAdapterSharing {
+ public static void main(String[] args) throws Exception {
+ ProcessBuilder pb;
+ OutputAnalyzer out;
+
+ pb = ProcessTools.createJavaProcessBuilder("-Xcomp", "-XX:+IgnoreUnrecognizedVMOptions",
+ "-XX:+VerifyAdapterSharing", "-version");
+ out = new OutputAnalyzer(pb.start());
+ out.shouldHaveExitValue(0);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/AddExactIntTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build AddExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics AddExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics AddExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class AddExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Add).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/AddExactLongTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build AddExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics AddExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics AddExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class AddExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Add).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/DecrementExactIntTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build DecrementExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics DecrementExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics DecrementExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class DecrementExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Decrement).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/DecrementExactLongTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build DecrementExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics DecrementExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics DecrementExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class DecrementExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Decrement).test();
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/IncrementExactIntTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build IncrementExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics IncrementExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics IncrementExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class IncrementExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Increment).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/IncrementExactLongTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build IncrementExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics IncrementExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics IncrementExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class IncrementExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Increment).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/IntrinsicBase.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+import com.oracle.java.testlibrary.Platform;
+
+import java.io.FileOutputStream;
+import java.lang.reflect.Executable;
+import java.util.Properties;
+
+public abstract class IntrinsicBase extends CompilerWhiteBoxTest {
+ protected String javaVmName;
+ protected String useMathExactIntrinsics;
+
+ protected IntrinsicBase(TestCase testCase) {
+ super(testCase);
+ javaVmName = System.getProperty("java.vm.name");
+ useMathExactIntrinsics = getVMOption("UseMathExactIntrinsics");
+ }
+
+ @Override
+ protected void test() throws Exception {
+ //java.lang.Math should be loaded to allow a compilation of the methods that use Math's method
+ System.out.println("class java.lang.Math should be loaded. Proof: " + Math.class);
+ printEnvironmentInfo();
+
+ int expectedIntrinsicCount = 0;
+
+ switch (MODE) {
+ case "compiled mode":
+ case "mixed mode":
+ if (isServerVM()) {
+ if (TIERED_COMPILATION) {
+ int max_level = TIERED_STOP_AT_LEVEL;
+ expectedIntrinsicCount = (max_level == COMP_LEVEL_MAX) ? 1 : 0;
+ for (int i = CompilerWhiteBoxTest.COMP_LEVEL_SIMPLE; i <= max_level; ++i) {
+ deoptimize();
+ compileAtLevel(i);
+ }
+ } else {
+ expectedIntrinsicCount = 1;
+ deoptimize();
+ compileAtLevel(CompilerWhiteBoxTest.COMP_LEVEL_MAX);
+ }
+ } else {
+ deoptimize();
+ compileAtLevel(CompilerWhiteBoxTest.COMP_LEVEL_SIMPLE);
+ }
+
+ if (!isIntrinsicSupported()) {
+ expectedIntrinsicCount = 0;
+ }
+ break;
+ case "interpreted mode": //test is not applicable in this mode;
+ System.err.println("Warning: This test is not applicable in mode: " + MODE);
+ break;
+ default:
+ throw new RuntimeException("Test bug, unknown VM mode: " + MODE);
+ }
+
+ System.out.println("Expected intrinsic count is " + expectedIntrinsicCount + " name " + getIntrinsicId());
+
+ final FileOutputStream out = new FileOutputStream(getVMOption("LogFile") + ".verify.properties");
+ Properties expectedProps = new Properties();
+ expectedProps.setProperty("intrinsic.name", getIntrinsicId());
+ expectedProps.setProperty("intrinsic.expectedCount", String.valueOf(expectedIntrinsicCount));
+ expectedProps.store(out, null);
+
+ out.close();
+ }
+
+ protected void printEnvironmentInfo() {
+ System.out.println("java.vm.name=" + javaVmName);
+ System.out.println("os.arch=" + Platform.getOsArch());
+ System.out.println("java.vm.info=" + MODE);
+ System.out.println("useMathExactIntrinsics=" + useMathExactIntrinsics);
+ }
+
+ protected void compileAtLevel(int level) {
+ WHITE_BOX.enqueueMethodForCompilation(method, level);
+ waitBackgroundCompilation();
+ checkCompilation(method, level);
+ }
+
+ protected void checkCompilation(Executable executable, int level) {
+ if (!WHITE_BOX.isMethodCompiled(executable)) {
+ throw new RuntimeException("Test bug, expected compilation (level): " + level + ", but not compiled");
+ }
+ final int compilationLevel = WHITE_BOX.getMethodCompilationLevel(executable);
+ if (compilationLevel != level) {
+ if (!(TIERED_COMPILATION && level == COMP_LEVEL_FULL_PROFILE && compilationLevel == COMP_LEVEL_LIMITED_PROFILE)) { //possible case
+ throw new RuntimeException("Test bug, expected compilation (level): " + level + ", but level: " + compilationLevel);
+ }
+ }
+ }
+
+ protected abstract boolean isIntrinsicSupported();
+
+ protected abstract String getIntrinsicId();
+
+ protected boolean isServerVM() {
+ return javaVmName.toLowerCase().contains("server");
+ }
+
+ static class IntTest extends IntrinsicBase {
+ protected IntTest(MathIntrinsic.IntIntrinsic testCase) {
+ super(testCase);
+ }
+
+ @Override
+ protected boolean isIntrinsicSupported() {
+ return isServerVM() && Boolean.valueOf(useMathExactIntrinsics) && (Platform.isX86() || Platform.isX64());
+ }
+
+ @Override
+ protected String getIntrinsicId() {
+ return "_" + testCase.name().toLowerCase() + "ExactI";
+ }
+ }
+
+ static class LongTest extends IntrinsicBase {
+ protected LongTest(MathIntrinsic.LongIntrinsic testCase) {
+ super(testCase);
+ }
+
+ @Override
+ protected boolean isIntrinsicSupported() {
+ return isServerVM() && Boolean.valueOf(useMathExactIntrinsics) && Platform.isX64();
+ }
+
+ @Override
+ protected String getIntrinsicId() {
+ return "_" + testCase.name().toLowerCase() + "ExactL";
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/MathIntrinsic.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+import java.lang.reflect.Executable;
+import java.util.concurrent.Callable;
+
+public class MathIntrinsic {
+
+ enum IntIntrinsic implements CompilerWhiteBoxTest.TestCase {
+ Add {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.addExact(int1, int2);
+ }
+ },
+ Subtract {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.subtractExact(int1, int2);
+ }
+ },
+ Multiply {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.multiplyExact(int1, int2);
+ }
+ },
+ Increment {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.incrementExact(int1);
+ }
+ },
+ Decrement {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.decrementExact(int1);
+ }
+ },
+ Negate {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.negateExact(int1);
+ }
+ };
+ protected int int1;
+ protected int int2;
+ protected int intR;
+
+ abstract Object execMathMethod();
+
+ @Override
+ public Executable getExecutable() {
+ try {
+ return getClass().getDeclaredMethod("execMathMethod");
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException("Test bug, no such method: " + e);
+ }
+ }
+
+ @Override
+ public Callable<Integer> getCallable() {
+ return null;
+ }
+
+ @Override
+ public boolean isOsr() {
+ return false;
+ }
+
+ }
+
+ enum LongIntrinsic implements CompilerWhiteBoxTest.TestCase {
+ Add {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.addExact(long1, long2);
+ }
+ },
+ Subtract {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.subtractExact(long1, long2);
+ }
+ },
+ Multiply {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.multiplyExact(long1, long2);
+ }
+ },
+ Increment {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.incrementExact(long1);
+ }
+ },
+ Decrement {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.decrementExact(long1);
+ }
+ },
+ Negate {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.negateExact(long1);
+ }
+ };
+ protected long long1;
+ protected long long2;
+ protected long longR;
+
+ abstract Object execMathMethod();
+
+ @Override
+ public Executable getExecutable() {
+ try {
+ return getClass().getDeclaredMethod("execMathMethod");
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException("Test bug, no such method: " + e);
+ }
+ }
+
+ @Override
+ public Callable<Integer> getCallable() {
+ return null;
+ }
+
+ @Override
+ public boolean isOsr() {
+ return false;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/MultiplyExactIntTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build MultiplyExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics MultiplyExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics MultiplyExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class MultiplyExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Multiply).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/MultiplyExactLongTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build MultiplyExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics MultiplyExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics MultiplyExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class MultiplyExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Multiply).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/NegateExactIntTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build NegateExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics NegateExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics NegateExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class NegateExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Negate).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/NegateExactLongTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build NegateExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics NegateExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics NegateExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class NegateExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Negate).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/SubtractExactIntTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build SubtractExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics SubtractExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics SubtractExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+
+ */
+
+public class SubtractExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Subtract).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/SubtractExactLongTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build SubtractExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics SubtractExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics SubtractExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class SubtractExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Subtract).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/Verifier.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.util.Properties;
+
+public class Verifier {
+
+ public static void main(String[] args) throws Exception {
+ if (args.length == 0)
+ throw new RuntimeException("Test bug, nothing to verify");
+ for (String hsLogFile : args) {
+ verify(hsLogFile);
+ }
+ }
+
+ private static void verify(String hsLogFile) throws Exception {
+ System.out.println("Verifying " + hsLogFile);
+
+ final Properties expectedProperties = new Properties();
+ final FileReader reader = new FileReader(hsLogFile + ".verify.properties");
+ expectedProperties.load(reader);
+ reader.close();
+
+ int fullMatchCnt = 0;
+ int suspectCnt = 0;
+ final String intrinsicId = expectedProperties.getProperty("intrinsic.name");
+ final String prefix = "<intrinsic id='";
+ final String prefixWithId = prefix + intrinsicId + "'";
+ final int expectedCount = Integer.parseInt(expectedProperties.getProperty("intrinsic.expectedCount"));
+
+ BufferedReader r = new BufferedReader(new FileReader(hsLogFile));
+ String s;
+ while ((s = r.readLine()) != null) {
+ if (s.startsWith(prefix)) {
+ if (s.startsWith(prefixWithId)) {
+ fullMatchCnt++;
+ } else {
+ suspectCnt++;
+ System.out.println("WARNING: Other intrinsic detected " + s);
+ }
+ }
+ }
+ r.close();
+
+ System.out.println("Intrinsic " + intrinsicId + " verification, expected: " + expectedCount + ", matched: " + fullMatchCnt + ", suspected: " + suspectCnt);
+ if (expectedCount != fullMatchCnt)
+ throw new RuntimeException("Unexpected count of intrinsic " + prefixWithId + " expected:" + expectedCount + ", matched: " + fullMatchCnt + ", suspected: " + suspectCnt);
+ }
+}
--- a/hotspot/test/compiler/jsr292/ConcurrentClassLoadingTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/jsr292/ConcurrentClassLoadingTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -159,34 +159,18 @@
}
final static String[] classNames = {
- "java.lang.invoke.AbstractValidatingLambdaMetafactory",
- "java.lang.invoke.BoundMethodHandle",
"java.lang.invoke.CallSite",
"java.lang.invoke.ConstantCallSite",
- "java.lang.invoke.DirectMethodHandle",
- "java.lang.invoke.InnerClassLambdaMetafactory",
- "java.lang.invoke.InvokeDynamic",
- "java.lang.invoke.InvokeGeneric",
- "java.lang.invoke.InvokerBytecodeGenerator",
- "java.lang.invoke.Invokers",
"java.lang.invoke.LambdaConversionException",
- "java.lang.invoke.LambdaForm",
"java.lang.invoke.LambdaMetafactory",
- "java.lang.invoke.MemberName",
"java.lang.invoke.MethodHandle",
- "java.lang.invoke.MethodHandleImpl",
"java.lang.invoke.MethodHandleInfo",
- "java.lang.invoke.MethodHandleNatives",
"java.lang.invoke.MethodHandleProxies",
"java.lang.invoke.MethodHandles",
- "java.lang.invoke.MethodHandleStatics",
"java.lang.invoke.MethodType",
- "java.lang.invoke.MethodTypeForm",
"java.lang.invoke.MutableCallSite",
"java.lang.invoke.SerializedLambda",
- "java.lang.invoke.SimpleMethodHandle",
"java.lang.invoke.SwitchPoint",
- "java.lang.invoke.TypeConvertingMethodAdapter",
"java.lang.invoke.VolatileCallSite",
"java.lang.invoke.WrongMethodTypeException"
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/reflection/ArrayNewInstanceOfVoid.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @bug 8029366
+ * @summary ShouldNotReachHere error when creating an array with component type of void
+ */
+
+public class ArrayNewInstanceOfVoid {
+ public static void main(String[] args) {
+ for (int i = 0; i < 100_000; i++) {
+ test();
+ }
+ }
+
+ private static void test() {
+ try {
+ java.lang.reflect.Array.newInstance(void.class, 2);
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+}
--- a/hotspot/test/compiler/regalloc/C1ObjectSpillInLogicOp.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/regalloc/C1ObjectSpillInLogicOp.java Mon Jan 27 21:00:29 2014 -0800
@@ -34,8 +34,9 @@
*/
import java.util.concurrent.atomic.*;
-class C1ObjectSpillInLogicOp {
- static public void main(String[] args) {
+
+public class C1ObjectSpillInLogicOp {
+ public static void main(String[] args) {
AtomicReferenceArray<Integer> x = new AtomicReferenceArray(128);
Integer y = new Integer(0);
for (int i = 0; i < 50000; i++) {
--- a/hotspot/test/compiler/startup/SmallCodeCacheStartup.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/startup/SmallCodeCacheStartup.java Mon Jan 27 21:00:29 2014 -0800
@@ -37,7 +37,6 @@
pb = ProcessTools.createJavaProcessBuilder("-XX:ReservedCodeCacheSize=3m", "-XX:CICompilerCount=64", "-version");
out = new OutputAnalyzer(pb.start());
- out.shouldContain("no space to run compiler");
out.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/compiler/tiered/NonTieredLevelsTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/tiered/NonTieredLevelsTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -30,7 +30,7 @@
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:-TieredCompilation
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
- * -XX:CompileCommand=compileonly,TestCase$Helper::*
+ * -XX:CompileCommand=compileonly,SimpleTestCase$Helper::*
* NonTieredLevelsTest
* @summary Verify that only one level can be used
* @author igor.ignatyev@oracle.com
@@ -59,9 +59,7 @@
+ "TieredCompilation. Skip test.");
return;
}
- for (TestCase test : TestCase.values()) {
- new NonTieredLevelsTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(NonTieredLevelsTest::new, args);
}
private NonTieredLevelsTest(TestCase testCase) {
@@ -80,7 +78,7 @@
checkLevel(AVAILABLE_COMP_LEVEL, compLevel);
int bci = WHITE_BOX.getMethodEntryBci(method);
deoptimize();
- if (!testCase.isOsr) {
+ if (!testCase.isOsr()) {
for (int level = 1; level <= COMP_LEVEL_MAX; ++level) {
if (IS_AVAILABLE_COMPLEVEL.test(level)) {
testAvailableLevel(level, bci);
@@ -94,3 +92,4 @@
}
}
}
+
--- a/hotspot/test/compiler/tiered/TieredLevelsTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/tiered/TieredLevelsTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -28,7 +28,7 @@
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+TieredCompilation
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
- * -XX:CompileCommand=compileonly,TestCase$Helper::*
+ * -XX:CompileCommand=compileonly,SimpleTestCase$Helper::*
* TieredLevelsTest
* @summary Verify that all levels < 'TieredStopAtLevel' can be used
* @author igor.ignatyev@oracle.com
@@ -40,9 +40,7 @@
+ "TieredCompilation. Skip test.");
return;
}
- for (TestCase test : TestCase.values()) {
- new TieredLevelsTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(TieredLevelsTest::new, args);
}
private TieredLevelsTest(TestCase testCase) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/types/TestMeetTopArrayExactConstantArray.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test
+ * @bug 8027571
+ * @summary meet of TopPTR exact array with constant array is not symmetric
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseOnStackReplacement -XX:TypeProfileLevel=222 -XX:+UnlockExperimentalVMOptions -XX:+UseTypeSpeculation -XX:-BackgroundCompilation TestMeetTopArrayExactConstantArray
+ *
+ */
+
+public class TestMeetTopArrayExactConstantArray {
+
+ static class A {
+ }
+
+ static class B {
+ }
+
+ static class C extends A {
+ }
+
+ static class D extends C {
+ }
+
+ final static B[] b = new B[10];
+
+ static void m0(Object[] o) {
+ if (o.getClass() == Object[].class) {
+ }
+ }
+
+ static void m1(Object[] o, boolean cond) {
+ if (cond) {
+ o = b;
+ }
+ m0(o);
+ }
+
+ static void m2(Object[] o, boolean cond1, boolean cond2) {
+ if (cond1) {
+ m1(o, cond2);
+ }
+ }
+
+ static void m3(C[] o, boolean cond1, boolean cond2, boolean cond3) {
+ if (cond1) {
+ m2(o, cond2, cond3);
+ }
+ }
+
+ static public void main(String[] args) {
+ A[] a = new A[10];
+ D[] d = new D[10];
+ Object[] o = new Object[10];
+ for (int i = 0; i < 5000; i++) {
+ // record in profiling that the if in m0 succeeds
+ m0(o);
+ // record some profiling for m2 and m1
+ m2(a, true, (i%2) == 0);
+ // record some profiling for m3 and conflicting profile for m2
+ m3(d, true, false, (i%2) == 0);
+ }
+
+ // get m3 compiled. The if in m0 will be optimized because of argument profiling in m3
+ C[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ m3(c, true, false, (i%2) == 0);
+ }
+ // make m3 not entrant and the if in m0 fail
+ m3(c, true, true, false);
+ m3(c, true, true, false);
+ m3(c, true, true, false);
+ m3(c, true, true, false);
+
+ // make m3 recompile, this time with if the not optimized
+ // on entry to m3, argument o is of type C[], profiled C[]
+ // on entry to m1, argument o is of type C[], speculative C[] exact, profiled A[]. Speculative becomes AnyNull
+ // after the if in m1, speculative type of o becomes constant from final field b
+ // the true if branch in m0 does a join between the type of o of speculative type constant from final field b and exact klass Object[]
+ for (int i = 0; i < 20000; i++) {
+ m3(c, true, false, (i%2) == 0);
+ }
+
+ System.out.println("TEST PASSED");
+ }
+}
--- a/hotspot/test/compiler/types/TypeSpeculation.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/types/TypeSpeculation.java Mon Jan 27 21:00:29 2014 -0800
@@ -25,7 +25,7 @@
* @test
* @bug 8024070
* @summary Test that type speculation doesn't cause incorrect execution
- * @run main/othervm -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -XX:TypeProfileLevel=222 TypeSpeculation
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -XX:TypeProfileLevel=222 -XX:+UnlockExperimentalVMOptions -XX:+UseTypeSpeculation TypeSpeculation
*
*/
@@ -398,6 +398,133 @@
return true;
}
+ // java/lang/Object:AnyNull:exact *,iid=top
+ // meets
+ // stable:bottom[int:max..0]:NotNull *
+ static void test10_4(Object o) {
+ }
+
+ static void test10_3(Object o, boolean b) {
+ if (b) {
+ test10_4(o);
+ }
+ }
+
+ static void test10_2(Object o, boolean b1, boolean b2) {
+ if (b1) {
+ test10_3(o, b2);
+ }
+ }
+
+ static void test10_1(B[] b, boolean b1, boolean b2) {
+ test10_2(b, b1, b2);
+ }
+
+ static boolean test10() {
+ Object o = new Object();
+ A[] a = new A[10];
+ B[] b = new B[10];
+ B[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ test10_1(b, false, false);
+ test10_1(c, false, false);
+ test10_2(a, true, false);
+ test10_3(o, true);
+ }
+ return true;
+ }
+
+ // stable:TypeSpeculation$B:TopPTR *,iid=top[int:max..0]:TopPTR *,iid=top
+ // meets
+ // java/lang/Object:AnyNull:exact *,iid=top
+ static void test11_3(Object o) {
+ }
+
+ static void test11_2(Object o, boolean b) {
+ if (b) {
+ test11_3(o);
+ }
+ }
+
+ static void test11_1(B[] b, boolean bb) {
+ test11_2(b, bb);
+ }
+
+ static boolean test11() {
+ Object o = new Object();
+ B[] b = new B[10];
+ B[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ test11_1(b, false);
+ test11_1(c, false);
+ test11_2(o, true);
+ }
+ return true;
+ }
+
+ // TypeSpeculation$I *
+ // meets
+ // java/lang/Object:AnyNull *,iid=top
+ static void test12_3(Object o) {
+ }
+
+ static void test12_2(Object o, boolean b) {
+ if (b) {
+ test12_3(o);
+ }
+ }
+
+ static void test12_1(I i, boolean b) {
+ test12_2(i, b);
+ }
+
+ static boolean test12() {
+ Object o = new Object();
+ B b = new B();
+ C c = new C();
+ for (int i = 0; i < 20000; i++) {
+ test12_1(b, false);
+ test12_1(c, false);
+ test12_2(o, true);
+ }
+ return true;
+ }
+
+ // stable:bottom[int:max..0]:NotNull *
+ // meets
+ // stable:TypeSpeculation$A:TopPTR *,iid=top[int:max..0]:AnyNull:exact *,iid=top
+ static Object test13_3(Object o, boolean b) {
+ Object oo;
+ if (b) {
+ oo = o;
+ } else {
+ oo = new A[10];
+ }
+ return oo;
+ }
+
+ static void test13_2(Object o, boolean b1, boolean b2) {
+ if (b1) {
+ test13_3(o, b2);
+ }
+ }
+
+ static void test13_1(B[] b, boolean b1, boolean b2) {
+ test13_2(b, b1, b2);
+ }
+
+ static boolean test13() {
+ A[] a = new A[10];
+ B[] b = new B[10];
+ B[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ test13_1(b, false, false);
+ test13_1(c, false, false);
+ test13_2(a, true, (i%2) == 0);
+ }
+ return true;
+ }
+
static public void main(String[] args) {
boolean success = true;
@@ -419,6 +546,14 @@
success = test9() && success;
+ success = test10() && success;
+
+ success = test11() && success;
+
+ success = test12() && success;
+
+ success = test13() && success;
+
if (success) {
System.out.println("TEST PASSED");
} else {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/uncommontrap/StackOverflowGuardPagesOff.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,355 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+/*
+ * @test
+ * @bug 8029383
+ * @summary stack overflow if callee is marked for deoptimization causes crash
+ * @run main/othervm -XX:TieredStopAtLevel=1 -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,StackOverflowGuardPagesOff::m1 -XX:CompileCommand=exclude,StackOverflowGuardPagesOff::m2 -Xss256K -XX:-UseOnStackReplacement StackOverflowGuardPagesOff
+ *
+ */
+
+// This test calls m2 recursively until a stack overflow. Then calls
+// m3 that calls m1. m1 triggers B's class loading, as a result m1 and
+// m3 needs to be deoptimized. Deoptimization of m1 causes a stack
+// overflow exception to be thrown which is propagated to m3 in the
+// deopt blob. If the guard pages are no enabled, the stack bang in
+// the deopt blob triggers a crash.
+public class StackOverflowGuardPagesOff {
+
+ static class A {
+ void m() {}
+ }
+
+ static class B extends A {
+ void m() {}
+ }
+
+ static void m1(boolean deopt, A a) {
+ long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
+ l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
+ l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
+ l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
+ l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
+ l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
+ l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
+ l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
+ l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
+ l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
+ l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
+ l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
+ l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
+ l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
+ l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
+ l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
+ l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
+ l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
+ l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
+ l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
+ l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
+ l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
+ l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
+ l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
+ l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
+ l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
+ l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
+ l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
+ l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
+ l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
+ l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
+ l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
+ l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
+ l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
+ l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
+ l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
+ l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
+ l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
+ l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
+ l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
+ l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
+ l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
+ l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
+ l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
+ l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
+ l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
+ l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
+ l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
+ l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
+ l508, l509, l510, l511;
+
+ long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12,
+ ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24,
+ ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36,
+ ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48,
+ ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60,
+ ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72,
+ ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84,
+ ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96,
+ ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107,
+ ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117,
+ ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127,
+ ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137,
+ ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147,
+ ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157,
+ ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167,
+ ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177,
+ ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187,
+ ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197,
+ ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207,
+ ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217,
+ ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227,
+ ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237,
+ ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247,
+ ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257,
+ ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267,
+ ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277,
+ ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287,
+ ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297,
+ ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307,
+ ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317,
+ ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327,
+ ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337,
+ ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347,
+ ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357,
+ ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367,
+ ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377,
+ ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387,
+ ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397,
+ ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407,
+ ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417,
+ ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427,
+ ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437,
+ ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447,
+ ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457,
+ ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467,
+ ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477,
+ ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487,
+ ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497,
+ ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507,
+ ll508, ll509, ll510, ll511;
+
+ a.m();
+
+ if (deopt) {
+ do_load = true;
+ while (!load_done);
+ }
+ }
+
+ static void m2(boolean deopt, A a) {
+ long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
+ l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
+ l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
+ l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
+ l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
+ l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
+ l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
+ l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
+ l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
+ l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
+ l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
+ l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
+ l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
+ l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
+ l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
+ l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
+ l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
+ l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
+ l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
+ l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
+ l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
+ l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
+ l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
+ l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
+ l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
+ l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
+ l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
+ l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
+ l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
+ l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
+ l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
+ l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
+ l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
+ l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
+ l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
+ l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
+ l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
+ l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
+ l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
+ l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
+ l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
+ l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
+ l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
+ l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
+ l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
+ l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
+ l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
+ l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
+ l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
+ l508, l509, l510, l511;
+
+ try {
+ m2(deopt, a);
+ } catch (StackOverflowError e) {
+ m3(deopt, a);
+ }
+ }
+
+ static void m3(boolean deopt, A a) {
+ long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
+ l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
+ l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
+ l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
+ l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
+ l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
+ l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
+ l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
+ l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
+ l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
+ l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
+ l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
+ l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
+ l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
+ l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
+ l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
+ l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
+ l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
+ l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
+ l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
+ l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
+ l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
+ l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
+ l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
+ l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
+ l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
+ l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
+ l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
+ l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
+ l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
+ l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
+ l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
+ l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
+ l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
+ l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
+ l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
+ l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
+ l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
+ l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
+ l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
+ l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
+ l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
+ l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
+ l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
+ l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
+ l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
+ l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
+ l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
+ l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
+ l508, l509, l510, l511;
+
+ long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12,
+ ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24,
+ ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36,
+ ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48,
+ ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60,
+ ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72,
+ ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84,
+ ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96,
+ ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107,
+ ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117,
+ ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127,
+ ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137,
+ ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147,
+ ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157,
+ ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167,
+ ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177,
+ ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187,
+ ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197,
+ ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207,
+ ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217,
+ ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227,
+ ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237,
+ ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247,
+ ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257,
+ ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267,
+ ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277,
+ ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287,
+ ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297,
+ ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307,
+ ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317,
+ ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327,
+ ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337,
+ ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347,
+ ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357,
+ ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367,
+ ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377,
+ ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387,
+ ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397,
+ ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407,
+ ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417,
+ ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427,
+ ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437,
+ ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447,
+ ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457,
+ ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467,
+ ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477,
+ ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487,
+ ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497,
+ ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507,
+ ll508, ll509, ll510, ll511;
+
+ a.m();
+
+ m1(deopt, a);
+ }
+
+ // Used for synchronization betwen main thread and thread
+ // responsible for class loading
+ static volatile boolean thread_started = false;
+ static volatile boolean do_load = false;
+ static volatile boolean load_done = false;
+
+ static public void main(String[] args) {
+ // This thread does the loading of B. If m1 does it, the class
+ // loading can cause stack overflows.
+ Thread thread = new Thread() {
+ public void run() {
+ thread_started = true;
+ while(!do_load);
+ new B();
+ load_done = true;
+ }
+ };
+ thread.start();
+ while(!thread_started);
+ // get m3 and m1 compiled
+ A a = new A();
+ for (int i = 0; i < 5000; i++) {
+ m3(false, a);
+ m1(false, a);
+ }
+ m2(true, a);
+
+ System.out.println("TEST PASSED");
+ }
+}
--- a/hotspot/test/compiler/whitebox/ClearMethodStateTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/ClearMethodStateTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -21,25 +21,25 @@
* questions.
*/
+import java.util.function.Function;
+
/*
* @test ClearMethodStateTest
* @bug 8006683 8007288 8022832
* @library /testlibrary /testlibrary/whitebox
* @build ClearMethodStateTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* ClearMethodStateTest
+ * @run main/othervm -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* ClearMethodStateTest
* @summary testing of WB::clearMethodState()
* @author igor.ignatyev@oracle.com
*/
public class ClearMethodStateTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new ClearMethodStateTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(ClearMethodStateTest::new, args);
}
- public ClearMethodStateTest(TestCase testCase) {
+ private ClearMethodStateTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -63,7 +63,7 @@
deoptimize();
checkNotCompiled();
- if (testCase.isOsr) {
+ if (testCase.isOsr()) {
// part test isn't applicable for OSR test case
return;
}
--- a/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -31,6 +31,7 @@
import java.lang.reflect.Method;
import java.util.Objects;
import java.util.concurrent.Callable;
+import java.util.function.Function;
/**
* Abstract class for WhiteBox testing of JIT.
@@ -50,7 +51,7 @@
protected static int COMP_LEVEL_FULL_PROFILE = 3;
/** {@code CompLevel::CompLevel_full_optimization} -- C2 or Shark */
protected static int COMP_LEVEL_FULL_OPTIMIZATION = 4;
- /** Maximal value for CompLeveL */
+ /** Maximal value for CompLevel */
protected static int COMP_LEVEL_MAX = COMP_LEVEL_FULL_OPTIMIZATION;
/** Instance of WhiteBox */
@@ -75,8 +76,7 @@
/** count of invocation to triger OSR compilation */
protected static final long BACKEDGE_THRESHOLD;
/** Value of {@code java.vm.info} (interpreted|mixed|comp mode) */
- protected static final String MODE
- = System.getProperty("java.vm.info");
+ protected static final String MODE = System.getProperty("java.vm.info");
static {
if (TIERED_COMPILATION) {
@@ -133,6 +133,20 @@
return compLevel == COMP_LEVEL_FULL_OPTIMIZATION;
}
+ protected static void main(
+ Function<TestCase, CompilerWhiteBoxTest> constructor,
+ String[] args) {
+ if (args.length == 0) {
+ for (TestCase test : SimpleTestCase.values()) {
+ constructor.apply(test).runTest();
+ }
+ } else {
+ for (String name : args) {
+ constructor.apply(SimpleTestCase.valueOf(name)).runTest();
+ }
+ }
+ }
+
/** tested method */
protected final Executable method;
protected final TestCase testCase;
@@ -145,7 +159,7 @@
protected CompilerWhiteBoxTest(TestCase testCase) {
Objects.requireNonNull(testCase);
System.out.println("TEST CASE:" + testCase.name());
- method = testCase.executable;
+ method = testCase.getExecutable();
this.testCase = testCase;
}
@@ -204,7 +218,7 @@
if (WHITE_BOX.getMethodCompilationLevel(method, true) != 0) {
throw new RuntimeException(method + " osr_comp_level must be == 0");
}
- }
+ }
/**
* Checks, that {@linkplain #method} is compiled.
@@ -221,44 +235,46 @@
method, System.currentTimeMillis() - start);
return;
}
- if (!WHITE_BOX.isMethodCompiled(method, testCase.isOsr)) {
+ if (!WHITE_BOX.isMethodCompiled(method, testCase.isOsr())) {
throw new RuntimeException(method + " must be "
- + (testCase.isOsr ? "osr_" : "") + "compiled");
+ + (testCase.isOsr() ? "osr_" : "") + "compiled");
}
- if (WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr) == 0) {
+ if (WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr())
+ == 0) {
throw new RuntimeException(method
- + (testCase.isOsr ? " osr_" : " ")
+ + (testCase.isOsr() ? " osr_" : " ")
+ "comp_level must be != 0");
}
}
protected final void deoptimize() {
- WHITE_BOX.deoptimizeMethod(method, testCase.isOsr);
- if (testCase.isOsr) {
+ WHITE_BOX.deoptimizeMethod(method, testCase.isOsr());
+ if (testCase.isOsr()) {
WHITE_BOX.deoptimizeMethod(method, false);
}
}
protected final int getCompLevel() {
- return WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr);
+ return WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr());
}
protected final boolean isCompilable() {
return WHITE_BOX.isMethodCompilable(method, COMP_LEVEL_ANY,
- testCase.isOsr);
+ testCase.isOsr());
}
protected final boolean isCompilable(int compLevel) {
- return WHITE_BOX.isMethodCompilable(method, compLevel, testCase.isOsr);
+ return WHITE_BOX
+ .isMethodCompilable(method, compLevel, testCase.isOsr());
}
protected final void makeNotCompilable() {
WHITE_BOX.makeMethodNotCompilable(method, COMP_LEVEL_ANY,
- testCase.isOsr);
+ testCase.isOsr());
}
protected final void makeNotCompilable(int compLevel) {
- WHITE_BOX.makeMethodNotCompilable(method, compLevel, testCase.isOsr);
+ WHITE_BOX.makeMethodNotCompilable(method, compLevel, testCase.isOsr());
}
/**
@@ -298,7 +314,7 @@
WHITE_BOX.isMethodCompiled(method, true));
System.out.printf("\tosr_comp_level:\t%d%n",
WHITE_BOX.getMethodCompilationLevel(method, true));
- System.out.printf("\tin_queue:\t%b%n",
+ System.out.printf("\tin_queue:\t%b%n",
WHITE_BOX.isMethodQueuedForCompilation(method));
System.out.printf("compile_queues_size:\t%d%n%n",
WHITE_BOX.getCompileQueuesSize());
@@ -311,13 +327,13 @@
/**
* Tries to trigger compilation of {@linkplain #method} by call
- * {@linkplain #testCase.callable} enough times.
+ * {@linkplain TestCase#getCallable()} enough times.
*
* @return accumulated result
* @see #compile(int)
*/
protected final int compile() {
- if (testCase.isOsr) {
+ if (testCase.isOsr()) {
return compile(1);
} else {
return compile(THRESHOLD);
@@ -326,7 +342,7 @@
/**
* Tries to trigger compilation of {@linkplain #method} by call
- * {@linkplain #testCase.callable} specified times.
+ * {@linkplain TestCase#getCallable()} specified times.
*
* @param count invocation count
* @return accumulated result
@@ -336,7 +352,7 @@
Integer tmp;
for (int i = 0; i < count; ++i) {
try {
- tmp = testCase.callable.call();
+ tmp = testCase.getCallable().call();
} catch (Exception e) {
tmp = null;
}
@@ -347,19 +363,32 @@
}
return result;
}
+
+ /**
+ * Utility interface provides tested method and object to invoke it.
+ */
+ public interface TestCase {
+ /** the name of test case */
+ String name();
+
+ /** tested method */
+ Executable getExecutable();
+
+ /** object to invoke {@linkplain #getExecutable()} */
+ Callable<Integer> getCallable();
+
+ /** flag for OSR test case */
+ boolean isOsr();
+ }
}
-/**
- * Utility structure containing tested method and object to invoke it.
- */
-enum TestCase {
+enum SimpleTestCase implements CompilerWhiteBoxTest.TestCase {
/** constructor test case */
CONSTRUCTOR_TEST(Helper.CONSTRUCTOR, Helper.CONSTRUCTOR_CALLABLE, false),
/** method test case */
METOD_TEST(Helper.METHOD, Helper.METHOD_CALLABLE, false),
/** static method test case */
STATIC_TEST(Helper.STATIC, Helper.STATIC_CALLABLE, false),
-
/** OSR constructor test case */
OSR_CONSTRUCTOR_TEST(Helper.OSR_CONSTRUCTOR,
Helper.OSR_CONSTRUCTOR_CALLABLE, true),
@@ -368,20 +397,32 @@
/** OSR static method test case */
OSR_STATIC_TEST(Helper.OSR_STATIC, Helper.OSR_STATIC_CALLABLE, true);
- /** tested method */
- final Executable executable;
- /** object to invoke {@linkplain #executable} */
- final Callable<Integer> callable;
- /** flag for OSR test case */
- final boolean isOsr;
+ private final Executable executable;
+ private final Callable<Integer> callable;
+ private final boolean isOsr;
- private TestCase(Executable executable, Callable<Integer> callable,
+ private SimpleTestCase(Executable executable, Callable<Integer> callable,
boolean isOsr) {
this.executable = executable;
this.callable = callable;
this.isOsr = isOsr;
}
+ @Override
+ public Executable getExecutable() {
+ return executable;
+ }
+
+ @Override
+ public Callable<Integer> getCallable() {
+ return callable;
+ }
+
+ @Override
+ public boolean isOsr() {
+ return isOsr;
+ }
+
private static class Helper {
private static final Callable<Integer> CONSTRUCTOR_CALLABLE
@@ -436,7 +477,6 @@
}
};
-
private static final Constructor CONSTRUCTOR;
private static final Constructor OSR_CONSTRUCTOR;
private static final Method METHOD;
--- a/hotspot/test/compiler/whitebox/DeoptimizeAllTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/DeoptimizeAllTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build DeoptimizeAllTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* DeoptimizeAllTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* DeoptimizeAllTest
* @summary testing of WB::deoptimizeAll()
* @author igor.ignatyev@oracle.com
*/
public class DeoptimizeAllTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new DeoptimizeAllTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(DeoptimizeAllTest::new, args);
}
- public DeoptimizeAllTest(TestCase testCase) {
+ private DeoptimizeAllTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -53,7 +51,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
--- a/hotspot/test/compiler/whitebox/DeoptimizeMethodTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/DeoptimizeMethodTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build DeoptimizeMethodTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* DeoptimizeMethodTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* DeoptimizeMethodTest
* @summary testing of WB::deoptimizeMethod()
* @author igor.ignatyev@oracle.com
*/
public class DeoptimizeMethodTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new DeoptimizeMethodTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(DeoptimizeMethodTest::new, args);
}
- public DeoptimizeMethodTest(TestCase testCase) {
+ private DeoptimizeMethodTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -53,7 +51,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
--- a/hotspot/test/compiler/whitebox/EnqueueMethodForCompilationTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/EnqueueMethodForCompilationTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build EnqueueMethodForCompilationTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=600 -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* EnqueueMethodForCompilationTest
+ * @run main/othervm/timeout=600 -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* EnqueueMethodForCompilationTest
* @summary testing of WB::enqueueMethodForCompilation()
* @author igor.ignatyev@oracle.com
*/
public class EnqueueMethodForCompilationTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new EnqueueMethodForCompilationTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(EnqueueMethodForCompilationTest::new, args);
}
- public EnqueueMethodForCompilationTest(TestCase testCase) {
+ private EnqueueMethodForCompilationTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
--- a/hotspot/test/compiler/whitebox/IsMethodCompilableTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/IsMethodCompilableTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -27,7 +27,7 @@
* @library /testlibrary /testlibrary/whitebox
* @build IsMethodCompilableTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* IsMethodCompilableTest
+ * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* IsMethodCompilableTest
* @summary testing of WB::isMethodCompilable()
* @author igor.ignatyev@oracle.com
*/
@@ -48,12 +48,10 @@
}
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new IsMethodCompilableTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(IsMethodCompilableTest::new, args);
}
- public IsMethodCompilableTest(TestCase testCase) {
+ private IsMethodCompilableTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -68,7 +66,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
@@ -89,7 +87,7 @@
for (long i = 0L, n = PER_METHOD_RECOMPILATION_CUTOFF - 1; i < n; ++i) {
compileAndDeoptimize();
}
- if (!testCase.isOsr && !isCompilable()) {
+ if (!testCase.isOsr() && !isCompilable()) {
// in osr test case count of deopt maybe more than iterations
throw new RuntimeException(method + " is not compilable after "
+ (PER_METHOD_RECOMPILATION_CUTOFF - 1) + " iterations");
@@ -102,7 +100,7 @@
&& isCompilable(); ++i) {
compileAndDeoptimize();
}
- if (!testCase.isOsr && i != PER_METHOD_RECOMPILATION_CUTOFF) {
+ if (!testCase.isOsr() && i != PER_METHOD_RECOMPILATION_CUTOFF) {
// in osr test case count of deopt maybe more than iterations
throw new RuntimeException(method + " is not compilable after "
+ i + " iterations, but must only after "
--- a/hotspot/test/compiler/whitebox/MakeMethodNotCompilableTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/MakeMethodNotCompilableTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -27,26 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build MakeMethodNotCompilableTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* MakeMethodNotCompilableTest
+ * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* MakeMethodNotCompilableTest
* @summary testing of WB::makeMethodNotCompilable()
* @author igor.ignatyev@oracle.com
*/
public class MakeMethodNotCompilableTest extends CompilerWhiteBoxTest {
private int bci;
public static void main(String[] args) throws Exception {
- if (args.length == 0) {
- for (TestCase test : TestCase.values()) {
- new MakeMethodNotCompilableTest(test).runTest();
- }
- } else {
- for (String name : args) {
- new MakeMethodNotCompilableTest(
- TestCase.valueOf(name)).runTest();
- }
- }
+ CompilerWhiteBoxTest.main(MakeMethodNotCompilableTest::new, args);
}
- public MakeMethodNotCompilableTest(TestCase testCase) {
+ private MakeMethodNotCompilableTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -62,7 +53,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
--- a/hotspot/test/compiler/whitebox/SetDontInlineMethodTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/SetDontInlineMethodTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build SetDontInlineMethodTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* SetDontInlineMethodTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* SetDontInlineMethodTest
* @summary testing of WB::testSetDontInlineMethod()
* @author igor.ignatyev@oracle.com
*/
public class SetDontInlineMethodTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new SetDontInlineMethodTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(SetDontInlineMethodTest::new, args);
}
- public SetDontInlineMethodTest(TestCase testCase) {
+ private SetDontInlineMethodTest(TestCase testCase) {
super(testCase);
}
--- a/hotspot/test/compiler/whitebox/SetForceInlineMethodTest.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/compiler/whitebox/SetForceInlineMethodTest.java Mon Jan 27 21:00:29 2014 -0800
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build SetForceInlineMethodTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* SetForceInlineMethodTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* SetForceInlineMethodTest
* @summary testing of WB::testSetForceInlineMethod()
* @author igor.ignatyev@oracle.com
*/
public class SetForceInlineMethodTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new SetForceInlineMethodTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(SetForceInlineMethodTest::new, args);
}
- public SetForceInlineMethodTest(TestCase testCase) {
+ private SetForceInlineMethodTest(TestCase testCase) {
super(testCase);
}
--- a/hotspot/test/gc/6941923/Test6941923.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/gc/6941923/Test6941923.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/gc/defnew/HeapChangeLogging.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/*
+ * @test HeapChangeLogging.java
+ * @bug 8027440
+ * @library /testlibrary
+ * @build HeapChangeLogging
+ * @summary Allocate to get a promotion failure and verify that that heap change logging is present.
+ * @run main HeapChangeLogging
+ *
+ * Test the output of G1SummarizeRSetStats in conjunction with G1SummarizeRSetStatsPeriod.
+ */
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.oracle.java.testlibrary.*;
+
+public class HeapChangeLogging {
+ public static void main(String[] args) throws Exception {
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xmx128m", "-Xmn100m", "-XX:+UseSerialGC", "-XX:+PrintGC", "HeapFiller");
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ String stdout = output.getStdout();
+ System.out.println(stdout);
+ Matcher stdoutMatcher = Pattern.compile("\\[GC .Allocation Failure.*K->.*K\\(.*K\\), .* secs\\]", Pattern.MULTILINE).matcher(stdout);
+ if (!stdoutMatcher.find()) {
+ throw new RuntimeException("No proper GC log line found");
+ }
+ output.shouldHaveExitValue(0);
+ }
+}
+
+class HeapFiller {
+ public static Entry root;
+ private static final int PAYLOAD_SIZE = 1000;
+
+ public static void main(String[] args) {
+ root = new Entry(PAYLOAD_SIZE, null);
+ Entry current = root;
+ try {
+ while (true) {
+ Entry newEntry = new Entry(PAYLOAD_SIZE, current);
+ current = newEntry;
+ }
+ } catch (OutOfMemoryError e) {
+ root = null;
+ }
+
+ }
+}
+
+class Entry {
+ public Entry previous;
+ public byte[] payload;
+
+ Entry(int payloadSize, Entry previous) {
+ payload = new byte[payloadSize];
+ this.previous = previous;
+ }
+}
\ No newline at end of file
--- a/hotspot/test/gc/g1/TestHumongousAllocInitialMark.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/gc/g1/TestHumongousAllocInitialMark.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/hotspot/test/runtime/6626217/Test6626217.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/6626217/Test6626217.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2013, 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
--- a/hotspot/test/runtime/7110720/Test7110720.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/7110720/Test7110720.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
--- a/hotspot/test/runtime/7162488/Test7162488.sh Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/7162488/Test7162488.sh Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2013, 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
--- a/hotspot/test/runtime/8024804/RegisterNatives.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/8024804/RegisterNatives.java Mon Jan 27 21:00:29 2014 -0800
@@ -22,10 +22,10 @@
*/
/*
- * @ignore 8028741
* @test
* @bug 8024804
- * @summary registerNatives() interface resolution should receive IAE
+ * @bug 8028741
+ * @summary interface method resolution should skip finding j.l.Object's registerNatives() and succeed in selecting class B's registerNatives()
* @run main RegisterNatives
*/
public class RegisterNatives {
@@ -38,10 +38,10 @@
try {
val.registerNatives();
} catch (IllegalAccessError e) {
- System.out.println("TEST PASSES - according to current JVM spec, IAE expected\n");
- return;
+ System.out.println("TEST FAILS - JDK 8 JVMS, static and non-public methods of j.l.Object should be ignored during interface method resolution\n");
+ e.printStackTrace();
+ throw e;
}
- System.out.println("TEST FAILS - no IAE resulted\n");
- System.exit(1);
+ System.out.println("TEST PASSES - no IAE resulted\n");
}
}
--- a/hotspot/test/runtime/NMT/CommandLineDetail.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/NMT/CommandLineDetail.java Mon Jan 27 21:00:29 2014 -0800
@@ -24,7 +24,7 @@
/*
* @test
* @key nmt
- * @summary Running with NMT detail should not result in an error or warning
+ * @summary Running with NMT detail should not result in an error
* @library /testlibrary
*/
@@ -39,7 +39,6 @@
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/runtime/NMT/CommandLineSummary.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/NMT/CommandLineSummary.java Mon Jan 27 21:00:29 2014 -0800
@@ -24,7 +24,7 @@
/*
* @test
* @key nmt
- * @summary Running with NMT summary should not result in an error or warning
+ * @summary Running with NMT summary should not result in an error
* @library /testlibrary
*/
@@ -39,7 +39,6 @@
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/runtime/NMT/CommandLineTurnOffNMT.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/NMT/CommandLineTurnOffNMT.java Mon Jan 27 21:00:29 2014 -0800
@@ -24,7 +24,7 @@
/*
* @test
* @key nmt
- * @summary Turning off NMT should not result in an error or warning
+ * @summary Turning off NMT should not result in an error
* @library /testlibrary
*/
@@ -38,7 +38,6 @@
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/runtime/NMT/PrintNMTStatistics.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/NMT/PrintNMTStatistics.java Mon Jan 27 21:00:29 2014 -0800
@@ -64,7 +64,6 @@
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldContain("Java Heap (reserved=");
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/PerfMemDestroy/PerfMemDestroy.java Mon Jan 27 21:00:29 2014 -0800
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+/*
+ * @test
+ * @bug 8030955
+ * @summary Allow multiple calls to PerfMemory::destroy() without asserting.
+ * @library /testlibrary
+ * @run main PerfMemDestroy
+ */
+
+import java.io.File;
+import java.util.Map;
+import com.oracle.java.testlibrary.*;
+
+public class PerfMemDestroy {
+ public static void main(String args[]) throws Throwable {
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+PerfAllowAtExitRegistration", "-version");
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ output.shouldHaveExitValue(0);
+ }
+}
--- a/hotspot/test/runtime/RedefineObject/Agent.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/RedefineObject/Agent.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 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
--- a/hotspot/test/runtime/RedefineObject/TestRedefineObject.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/RedefineObject/TestRedefineObject.java Mon Jan 27 21:00:29 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 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
--- a/hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Tue Jan 21 18:16:59 2014 -0800
+++ b/hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Mon Jan 27 21:00:29 2014 -0800
@@ -22,7 +22,6 @@
*/
/*
- * @ignore 8023735
* @test
* @bug 7051189 8023393
* @summary Need to suppress info message if -Xcheck:jni is used with libjsig.so
@@ -30,7 +29,8 @@
* @run main XCheckJSig
*/
-import java.util.*;
+import java.io.File;
+import java.util.Map;
import com.oracle.java.testlibrary.*;
public class XCheckJSig {
@@ -47,33 +47,36 @@
String libjsig;
String env_var;
if (Platform.isOSX()) {
- libjsig = jdk_path + "/jre/lib/server/libjsig.dylib";
env_var = "DYLD_INSERT_LIBRARIES";
+ libjsig = jdk_path + "/jre/lib/libjsig.dylib"; // jdk location
+ if (!(new File(libjsig).exists())) {
+ libjsig = jdk_path + "/lib/libjsig.dylib"; // jre location
+ }
} else {
- libjsig = jdk_path + "/jre/lib/" + os_arch + "/libjsig.so";
env_var = "LD_PRELOAD";
- }
- String java_program;
- if (Platform.isSolaris()) {
- // On Solaris, need to call the 64-bit Java directly in order for
- // LD_PRELOAD to work because libjsig.so is 64-bit.
- java_program = jdk_path + "/jre/bin/" + os_arch + "/java";
- } else {
- java_program = JDKToolFinder.getJDKTool("java");
+ libjsig = jdk_path + "/jre/lib/" + os_arch + "/libjsig.so"; // jdk location
+ if (!(new File(libjsig).exists())) {
+ libjsig = jdk_path + "/lib/" + os_arch + "/libjsig.so"; // jre location
+ }
}
// If this test fails, these might be useful to know.
System.out.println("libjsig: " + libjsig);
System.out.println("osArch: " + os_arch);
- System.out.println("java_program: " + java_program);
- ProcessBuilder pb = new ProcessBuilder(java_program, "-Xcheck:jni", "-version");
+ // Make sure the libjsig file exists.
+ if (!(new File(libjsig).exists())) {
+ System.out.println("File " + libjsig + " not found, skipping");
+ return;
+ }
+
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xcheck:jni", "-version");
Map<String, String> env = pb.environment();
env.put(env_var, libjsig);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("libjsig is activated");
output.shouldHaveExitValue(0);
- pb = new ProcessBuilder(java_program, "-Xcheck:jni", "-verbose:jni", "-version");
+ pb = ProcessTools.createJavaProcessBuilder("-Xcheck:jni", "-verbose:jni", "-version");
env = pb.environment();
env.put(env_var, libjsig);
output = new OutputAnalyzer(pb.start());