--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HelloWorld.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HelloWorld.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -55,7 +55,7 @@
synchronized(lock) {
if (useMethodInvoke) {
try {
- Method method = HelloWorld.class.getMethod("e", null);
+ Method method = HelloWorld.class.getMethod("e");
Integer result = (Integer) method.invoke(null, new Object[0]);
return result.intValue();
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ByteValueImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ByteValueImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,12 +52,10 @@
return intValue();
}
- public int compareTo(Object obj) {
- byte other = ((ByteValue)obj).value();
- return value() - other;
+ public int compareTo(ByteValue byteVal) {
+ return value() - byteVal.value();
}
-
public Type type() {
return vm.theByteType();
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/CharValueImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/CharValueImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,9 +52,8 @@
return intValue();
}
- public int compareTo(Object obj) {
- char other = ((CharValue)obj).value();
- return value() - other;
+ public int compareTo(CharValue charVal) {
+ return value() - charVal.value();
}
public Type type() {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ConnectorImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ConnectorImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -186,7 +186,7 @@
// assert isVMVersionMismatch(throwable), "not a VMVersionMismatch"
Class expClass = throwable.getClass();
Method targetVersionMethod = expClass.getMethod("getTargetVersion", new Class[0]);
- return (String) targetVersionMethod.invoke(throwable, null);
+ return (String) targetVersionMethod.invoke(throwable);
}
/** If the causal chain has a sun.jvm.hotspot.runtime.VMVersionMismatchException,
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/DoubleValueImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/DoubleValueImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,8 +45,8 @@
}
}
- public int compareTo(Object obj) {
- double other = ((DoubleValue)obj).value();
+ public int compareTo(DoubleValue doubleVal) {
+ double other = doubleVal.value();
if (value() < other) {
return -1;
} else if (value() == other) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/FieldImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/FieldImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -145,8 +145,7 @@
}
// From interface Comparable
- public int compareTo(Object object) {
- Field field = (Field)object;
+ public int compareTo(Field field) {
ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType();
int rc = declaringType.compareTo(field.declaringType());
if (rc == 0) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/FloatValueImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/FloatValueImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,8 +52,8 @@
return intValue();
}
- public int compareTo(Object obj) {
- float other = ((FloatValue)obj).value();
+ public int compareTo(FloatValue floatVal) {
+ float other = floatVal.value();
if (value() < other) {
return -1;
} else if (value() == other) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/IntegerValueImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/IntegerValueImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,9 +52,8 @@
return intValue();
}
- public int compareTo(Object obj) {
- int other = ((IntegerValue)obj).value();
- return value() - other;
+ public int compareTo(IntegerValue integerVal) {
+ return value() - integerVal.value();
}
public Type type() {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/LocalVariableImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/LocalVariableImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,8 +67,8 @@
return (int)method.hashCode() + slot();
}
- public int compareTo(Object object) {
- LocalVariableImpl other = (LocalVariableImpl)object;
+ public int compareTo(LocalVariable localVar) {
+ LocalVariableImpl other = (LocalVariableImpl) localVar;
int rc = method.compareTo(other.method);
if (rc == 0) {
rc = slot() - other.slot();
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/LocationImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/LocationImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -78,8 +78,7 @@
return method().hashCode() + (int)codeIndex();
}
- public int compareTo(Object object) {
- LocationImpl other = (LocationImpl)object;
+ public int compareTo(Location other) {
int rc = method().compareTo(other.method());
if (rc == 0) {
long diff = codeIndex() - other.codeIndex();
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/LongValueImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/LongValueImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,8 +52,8 @@
return intValue();
}
- public int compareTo(Object obj) {
- long other = ((LongValue)obj).value();
+ public int compareTo(LongValue longVal) {
+ long other = longVal.value();
if (value() < other) {
return -1;
} else if (value() == other) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/MethodImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/MethodImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -200,8 +200,7 @@
}
// From interface Comparable
- public int compareTo(Object object) {
- Method method = (Method)object;
+ public int compareTo(Method method) {
ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType();
int rc = declaringType.compareTo(method.declaringType());
if (rc == 0) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -99,7 +99,7 @@
return saKlass.hashCode();
}
- public int compareTo(Object object) {
+ public int compareTo(ReferenceType refType) {
/*
* Note that it is critical that compareTo() == 0
* implies that equals() == true. Otherwise, TreeSet
@@ -108,7 +108,7 @@
* (Classes of the same name loaded by different class loaders
* or in different VMs must not return 0).
*/
- ReferenceTypeImpl other = (ReferenceTypeImpl)object;
+ ReferenceTypeImpl other = (ReferenceTypeImpl)refType;
int comp = name().compareTo(other.name());
if (comp == 0) {
Oop rf1 = ref();
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ShortValueImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ShortValueImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,9 +52,8 @@
return intValue();
}
- public int compareTo(Object obj) {
- short other = ((ShortValue)obj).value();
- return value() - other;
+ public int compareTo(ShortValue shortVal) {
+ return value() - shortVal.value();
}
public Type type() {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -798,12 +798,11 @@
}
public String description() {
- String[] versionParts = {"" + vmmgr.majorInterfaceVersion(),
- "" + vmmgr.minorInterfaceVersion(),
- name()};
return java.text.MessageFormat.format(java.util.ResourceBundle.
getBundle("com.sun.tools.jdi.resources.jdi").getString("version_format"),
- versionParts);
+ "" + vmmgr.majorInterfaceVersion(),
+ "" + vmmgr.minorInterfaceVersion(),
+ name());
}
public String version() {
--- a/hotspot/make/linux/makefiles/sa.make Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/make/linux/makefiles/sa.make Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -97,8 +97,8 @@
$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
+ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
+ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
$(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
--- a/hotspot/make/linux/makefiles/vm.make Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/make/linux/makefiles/vm.make Tue Apr 12 14:18:53 2011 -0700
@@ -142,13 +142,15 @@
COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
COMPILER2_PATHS += $(GENERATED)/adfiles
+SHARK_PATHS := $(GAMMADIR)/src/share/vm/shark
+
# Include dirs per type.
Src_Dirs/CORE := $(CORE_PATHS)
Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
Src_Dirs/TIERED := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
Src_Dirs/ZERO := $(CORE_PATHS)
-Src_Dirs/SHARK := $(CORE_PATHS)
+Src_Dirs/SHARK := $(CORE_PATHS) $(SHARK_PATHS)
Src_Dirs := $(Src_Dirs/$(TYPE))
COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp chaitin\* c2_\* runtime_\*
--- a/hotspot/make/solaris/makefiles/sa.make Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/make/solaris/makefiles/sa.make Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -88,8 +88,8 @@
$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
- $(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
- $(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
+ $(QUIETLY) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
+ $(QUIETLY) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
$(QUIETLY) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
--- a/hotspot/make/windows/makefiles/sa.make Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/make/windows/makefiles/sa.make Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -55,9 +55,9 @@
$(GENERATED)\sa-jdi.jar: $(AGENT_FILES1:/=\) $(AGENT_FILES2:/=\)
@if not exist $(SA_CLASSDIR) mkdir $(SA_CLASSDIR)
@echo ...Building sa-jdi.jar
- @echo ...$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -d $(SA_CLASSDIR) ....
- @$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1:/=\)
- @$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2:/=\)
+ @echo ...$(COMPILE_JAVAC) -classpath $(SA_CLASSPATH) -d $(SA_CLASSDIR) ....
+ @$(COMPILE_JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1:/=\)
+ @$(COMPILE_JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2:/=\)
$(COMPILE_RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
$(QUIETLY) echo $(SA_BUILD_VERSION_PROP)> $(SA_PROPERTIES)
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
--- a/hotspot/src/os/linux/vm/os_linux.cpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/os/linux/vm/os_linux.cpp Tue Apr 12 14:18:53 2011 -0700
@@ -2648,45 +2648,39 @@
// writing thread stacks don't use growable mappings (i.e. those
// creeated with MAP_GROWSDOWN), and aren't marked "[stack]", so this
// only applies to the main thread.
-static bool
-get_stack_bounds(uintptr_t *bottom, uintptr_t *top)
-{
- FILE *f = fopen("/proc/self/maps", "r");
- if (f == NULL)
+
+static
+bool get_stack_bounds(uintptr_t *bottom, uintptr_t *top) {
+
+ char buf[128];
+ int fd, sz;
+
+ if ((fd = ::open("/proc/self/maps", O_RDONLY)) < 0) {
return false;
-
- while (!feof(f)) {
- size_t dummy;
- char *str = NULL;
- ssize_t len = getline(&str, &dummy, f);
- if (len == -1) {
- fclose(f);
- return false;
- }
-
- if (len > 0 && str[len-1] == '\n') {
- str[len-1] = 0;
- len--;
- }
-
- static const char *stack_str = "[stack]";
- if (len > (ssize_t)strlen(stack_str)
- && (strcmp(str + len - strlen(stack_str), stack_str) == 0)) {
- if (sscanf(str, "%" SCNxPTR "-%" SCNxPTR, bottom, top) == 2) {
- uintptr_t sp = (uintptr_t)__builtin_frame_address(0);
- if (sp >= *bottom && sp <= *top) {
- free(str);
- fclose(f);
- return true;
+ }
+
+ const char kw[] = "[stack]";
+ const int kwlen = sizeof(kw)-1;
+
+ // Address part of /proc/self/maps couldn't be more than 128 bytes
+ while ((sz = os::get_line_chars(fd, buf, sizeof(buf))) > 0) {
+ if (sz > kwlen && ::memcmp(buf+sz-kwlen, kw, kwlen) == 0) {
+ // Extract addresses
+ if (sscanf(buf, "%" SCNxPTR "-%" SCNxPTR, bottom, top) == 2) {
+ uintptr_t sp = (uintptr_t) __builtin_frame_address(0);
+ if (sp >= *bottom && sp <= *top) {
+ ::close(fd);
+ return true;
+ }
}
- }
- }
- free(str);
+ }
}
- fclose(f);
+
+ ::close(fd);
return false;
}
+
// If the (growable) stack mapping already extends beyond the point
// where we're going to put our guard pages, truncate the mapping at
// that point by munmap()ping it. This ensures that when we later
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java Tue Apr 12 14:18:53 2011 -0700
@@ -497,6 +497,9 @@
addAttr(rv, "TargetMachine", "MachineX64");
}
+ // We always want the /DEBUG option to get full symbol information in the pdb files
+ addAttr(rv, "GenerateDebugInformation", "true");
+
return rv;
}
@@ -504,8 +507,7 @@
Vector getDebugLinkerFlags() {
Vector rv = new Vector();
- // /DEBUG option
- addAttr(rv, "GenerateDebugInformation", "true");
+ // Empty now that /DEBUG option is used by all configs
return rv;
}
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp Tue Apr 12 14:18:53 2011 -0700
@@ -1431,32 +1431,41 @@
}
}
#ifdef ASSERT
- assert(st_method() == method && st.bci() == bci,
- "Wrong stack trace");
- st.next();
- // vframeStream::method isn't GC-safe so store off a copy
- // of the methodOop in case we GC.
- if (!st.at_end()) {
- st_method = st.method();
- }
+ assert(st_method() == method && st.bci() == bci,
+ "Wrong stack trace");
+ st.next();
+ // vframeStream::method isn't GC-safe so store off a copy
+ // of the methodOop in case we GC.
+ if (!st.at_end()) {
+ st_method = st.method();
+ }
#endif
+
+ // the format of the stacktrace will be:
+ // - 1 or more fillInStackTrace frames for the exception class (skipped)
+ // - 0 or more <init> methods for the exception class (skipped)
+ // - rest of the stack
+
if (!skip_fillInStackTrace_check) {
- // check "fillInStackTrace" only once, so we negate the flag
- // after the first time check.
- skip_fillInStackTrace_check = true;
- if (method->name() == vmSymbols::fillInStackTrace_name()) {
+ if ((method->name() == vmSymbols::fillInStackTrace_name() ||
+ method->name() == vmSymbols::fillInStackTrace0_name()) &&
+ throwable->is_a(method->method_holder())) {
continue;
}
+ else {
+ skip_fillInStackTrace_check = true; // gone past them all
+ }
}
- // skip <init> methods of the exceptions klass. If there is <init> methods
- // that belongs to a superclass of the exception we are going to skipping
- // them in stack trace. This is simlar to classic VM.
if (!skip_throwableInit_check) {
+ assert(skip_fillInStackTrace_check, "logic error in backtrace filtering");
+
+ // skip <init> methods of the exception class and superclasses
+ // This is simlar to classic VM.
if (method->name() == vmSymbols::object_initializer_name() &&
throwable->is_a(method->method_holder())) {
continue;
} else {
- // if no "Throwable.init()" method found, we stop checking it next time.
+ // there are none or we've seen them all - either way stop checking
skip_throwableInit_check = true;
}
}
--- a/hotspot/src/share/vm/classfile/stackMapFrame.cpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/classfile/stackMapFrame.cpp Tue Apr 12 14:18:53 2011 -0700
@@ -208,8 +208,10 @@
return true;
}
-bool StackMapFrame::is_assignable_to(const StackMapFrame* target, TRAPS) const {
- if (_max_locals != target->max_locals() || _stack_size != target->stack_size()) {
+bool StackMapFrame::is_assignable_to(
+ const StackMapFrame* target, bool is_exception_handler, TRAPS) const {
+ if (_max_locals != target->max_locals() ||
+ _stack_size != target->stack_size()) {
return false;
}
// Only need to compare type elements up to target->locals() or target->stack().
@@ -222,7 +224,7 @@
bool match_flags = (_flags | target->flags()) == target->flags();
return match_locals && match_stack &&
- (match_flags || has_flag_match_exception(target));
+ (match_flags || (is_exception_handler && has_flag_match_exception(target)));
}
VerificationType StackMapFrame::pop_stack_ex(VerificationType type, TRAPS) {
--- a/hotspot/src/share/vm/classfile/stackMapFrame.hpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/classfile/stackMapFrame.hpp Tue Apr 12 14:18:53 2011 -0700
@@ -134,7 +134,8 @@
void copy_stack(const StackMapFrame* src);
// Return true if this stack map frame is assignable to target.
- bool is_assignable_to(const StackMapFrame* target, TRAPS) const;
+ bool is_assignable_to(const StackMapFrame* target,
+ bool is_exception_handler, TRAPS) const;
// Push type into stack type array.
inline void push_stack(VerificationType type, TRAPS) {
--- a/hotspot/src/share/vm/classfile/stackMapTable.cpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/classfile/stackMapTable.cpp Tue Apr 12 14:18:53 2011 -0700
@@ -98,10 +98,13 @@
bool result = true;
StackMapFrame *stackmap_frame = _frame_array[frame_index];
if (match) {
+ // when checking handler target, match == true && update == false
+ bool is_exception_handler = !update;
// Has direct control flow from last instruction, need to match the two
// frames.
result = frame->is_assignable_to(
- stackmap_frame, CHECK_VERIFY_(frame->verifier(), false));
+ stackmap_frame, is_exception_handler,
+ CHECK_VERIFY_(frame->verifier(), false));
}
if (update) {
// Use the frame in stackmap table as current frame
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp Tue Apr 12 14:18:53 2011 -0700
@@ -301,6 +301,7 @@
template(dispatch_name, "dispatch") \
template(getSystemClassLoader_name, "getSystemClassLoader") \
template(fillInStackTrace_name, "fillInStackTrace") \
+ template(fillInStackTrace0_name, "fillInStackTrace0") \
template(getCause_name, "getCause") \
template(initCause_name, "initCause") \
template(setProperty_name, "setProperty") \
--- a/hotspot/src/share/vm/runtime/arguments.cpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Tue Apr 12 14:18:53 2011 -0700
@@ -59,7 +59,8 @@
#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
#endif
-#define DEFAULT_VENDOR_URL_BUG "http://java.sun.com/webapps/bugreport/crash.jsp"
+// Note: This is a special bug reporting site for the JVM
+#define DEFAULT_VENDOR_URL_BUG "http://bugreport.sun.com/bugreport/crash.jsp"
#define DEFAULT_JAVA_LAUNCHER "generic"
char** Arguments::_jvm_flags_array = NULL;
--- a/hotspot/src/share/vm/runtime/os.cpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/runtime/os.cpp Tue Apr 12 14:18:53 2011 -0700
@@ -1291,3 +1291,41 @@
}
return result;
}
+
+// Read file line by line, if line is longer than bsize,
+// skip rest of line.
+int os::get_line_chars(int fd, char* buf, const size_t bsize){
+ size_t sz, i = 0;
+
+ // read until EOF, EOL or buf is full
+ while ((sz = (int) read(fd, &buf[i], 1)) == 1 && i < (bsize-1) && buf[i] != '\n') {
+ ++i;
+ }
+
+ if (buf[i] == '\n') {
+ // EOL reached so ignore EOL character and return
+
+ buf[i] = 0;
+ return (int) i;
+ }
+
+ buf[i+1] = 0;
+
+ if (sz != 1) {
+ // EOF reached. if we read chars before EOF return them and
+ // return EOF on next call otherwise return EOF
+
+ return (i == 0) ? -1 : (int) i;
+ }
+
+ // line is longer than size of buf, skip to EOL
+ int ch;
+ while (read(fd, &ch, 1) == 1 && ch != '\n') {
+ // Do nothing
+ }
+
+ // return initial part of line that fits in buf.
+ // If we reached EOF, it will be returned on next call.
+
+ return (int) i;
+}
--- a/hotspot/src/share/vm/runtime/os.hpp Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/src/share/vm/runtime/os.hpp Tue Apr 12 14:18:53 2011 -0700
@@ -658,6 +658,10 @@
// Hook for os specific jvm options that we don't want to abort on seeing
static bool obsolete_option(const JavaVMOption *option);
+ // Read file line by line. If line is longer than bsize,
+ // rest of line is skipped. Returns number of bytes read or -1 on EOF
+ static int get_line_chars(int fd, char *buf, const size_t bsize);
+
// Platform dependent stuff
#ifdef TARGET_OS_FAMILY_linux
# include "os_linux.hpp"
--- a/hotspot/test/compiler/6795161/Test.java Sat Apr 09 21:16:12 2011 -0700
+++ b/hotspot/test/compiler/6795161/Test.java Tue Apr 12 14:18:53 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
* @test
* @bug 6795161
* @summary Escape analysis leads to data corruption
- * @run main/othervm -server -Xcomp -XX:CompileOnly=Test -XX:+DoEscapeAnalysis Test
+ * @run main/othervm -server -XX:+IgnoreUnrecognizedVMOptions -Xcomp -XX:CompileOnly=Test -XX:+DoEscapeAnalysis Test
*/
class Test_Class_1 {