提交 9e148566 编写于 作者: C coleenp

Merge

/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -55,7 +55,7 @@ public class HelloWorld { ...@@ -55,7 +55,7 @@ public class HelloWorld {
synchronized(lock) { synchronized(lock) {
if (useMethodInvoke) { if (useMethodInvoke) {
try { try {
Method method = HelloWorld.class.getMethod("e", null); Method method = HelloWorld.class.getMethod("e");
Integer result = (Integer) method.invoke(null, new Object[0]); Integer result = (Integer) method.invoke(null, new Object[0]);
return result.intValue(); return result.intValue();
} }
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -52,12 +52,10 @@ public class ByteValueImpl extends PrimitiveValueImpl ...@@ -52,12 +52,10 @@ public class ByteValueImpl extends PrimitiveValueImpl
return intValue(); return intValue();
} }
public int compareTo(Object obj) { public int compareTo(ByteValue byteVal) {
byte other = ((ByteValue)obj).value(); return value() - byteVal.value();
return value() - other;
} }
public Type type() { public Type type() {
return vm.theByteType(); return vm.theByteType();
} }
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -52,9 +52,8 @@ public class CharValueImpl extends PrimitiveValueImpl ...@@ -52,9 +52,8 @@ public class CharValueImpl extends PrimitiveValueImpl
return intValue(); return intValue();
} }
public int compareTo(Object obj) { public int compareTo(CharValue charVal) {
char other = ((CharValue)obj).value(); return value() - charVal.value();
return value() - other;
} }
public Type type() { public Type type() {
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -186,7 +186,7 @@ abstract class ConnectorImpl implements Connector { ...@@ -186,7 +186,7 @@ abstract class ConnectorImpl implements Connector {
// assert isVMVersionMismatch(throwable), "not a VMVersionMismatch" // assert isVMVersionMismatch(throwable), "not a VMVersionMismatch"
Class expClass = throwable.getClass(); Class expClass = throwable.getClass();
Method targetVersionMethod = expClass.getMethod("getTargetVersion", new Class[0]); 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, /** If the causal chain has a sun.jvm.hotspot.runtime.VMVersionMismatchException,
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -45,8 +45,8 @@ public class DoubleValueImpl extends PrimitiveValueImpl ...@@ -45,8 +45,8 @@ public class DoubleValueImpl extends PrimitiveValueImpl
} }
} }
public int compareTo(Object obj) { public int compareTo(DoubleValue doubleVal) {
double other = ((DoubleValue)obj).value(); double other = doubleVal.value();
if (value() < other) { if (value() < other) {
return -1; return -1;
} else if (value() == other) { } else if (value() == other) {
......
...@@ -145,8 +145,7 @@ public class FieldImpl extends TypeComponentImpl implements Field { ...@@ -145,8 +145,7 @@ public class FieldImpl extends TypeComponentImpl implements Field {
} }
// From interface Comparable // From interface Comparable
public int compareTo(Object object) { public int compareTo(Field field) {
Field field = (Field)object;
ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType(); ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType();
int rc = declaringType.compareTo(field.declaringType()); int rc = declaringType.compareTo(field.declaringType());
if (rc == 0) { if (rc == 0) {
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -52,8 +52,8 @@ public class FloatValueImpl extends PrimitiveValueImpl ...@@ -52,8 +52,8 @@ public class FloatValueImpl extends PrimitiveValueImpl
return intValue(); return intValue();
} }
public int compareTo(Object obj) { public int compareTo(FloatValue floatVal) {
float other = ((FloatValue)obj).value(); float other = floatVal.value();
if (value() < other) { if (value() < other) {
return -1; return -1;
} else if (value() == other) { } else if (value() == other) {
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -52,9 +52,8 @@ public class IntegerValueImpl extends PrimitiveValueImpl ...@@ -52,9 +52,8 @@ public class IntegerValueImpl extends PrimitiveValueImpl
return intValue(); return intValue();
} }
public int compareTo(Object obj) { public int compareTo(IntegerValue integerVal) {
int other = ((IntegerValue)obj).value(); return value() - integerVal.value();
return value() - other;
} }
public Type type() { public Type type() {
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -67,8 +67,8 @@ public class LocalVariableImpl extends MirrorImpl ...@@ -67,8 +67,8 @@ public class LocalVariableImpl extends MirrorImpl
return (int)method.hashCode() + slot(); return (int)method.hashCode() + slot();
} }
public int compareTo(Object object) { public int compareTo(LocalVariable localVar) {
LocalVariableImpl other = (LocalVariableImpl)object; LocalVariableImpl other = (LocalVariableImpl) localVar;
int rc = method.compareTo(other.method); int rc = method.compareTo(other.method);
if (rc == 0) { if (rc == 0) {
rc = slot() - other.slot(); rc = slot() - other.slot();
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -78,8 +78,7 @@ public class LocationImpl extends MirrorImpl implements Location { ...@@ -78,8 +78,7 @@ public class LocationImpl extends MirrorImpl implements Location {
return method().hashCode() + (int)codeIndex(); return method().hashCode() + (int)codeIndex();
} }
public int compareTo(Object object) { public int compareTo(Location other) {
LocationImpl other = (LocationImpl)object;
int rc = method().compareTo(other.method()); int rc = method().compareTo(other.method());
if (rc == 0) { if (rc == 0) {
long diff = codeIndex() - other.codeIndex(); long diff = codeIndex() - other.codeIndex();
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -52,8 +52,8 @@ public class LongValueImpl extends PrimitiveValueImpl ...@@ -52,8 +52,8 @@ public class LongValueImpl extends PrimitiveValueImpl
return intValue(); return intValue();
} }
public int compareTo(Object obj) { public int compareTo(LongValue longVal) {
long other = ((LongValue)obj).value(); long other = longVal.value();
if (value() < other) { if (value() < other) {
return -1; return -1;
} else if (value() == other) { } else if (value() == other) {
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -200,8 +200,7 @@ public abstract class MethodImpl extends TypeComponentImpl implements Method { ...@@ -200,8 +200,7 @@ public abstract class MethodImpl extends TypeComponentImpl implements Method {
} }
// From interface Comparable // From interface Comparable
public int compareTo(Object object) { public int compareTo(Method method) {
Method method = (Method)object;
ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType(); ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType();
int rc = declaringType.compareTo(method.declaringType()); int rc = declaringType.compareTo(method.declaringType());
if (rc == 0) { if (rc == 0) {
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -99,7 +99,7 @@ implements ReferenceType { ...@@ -99,7 +99,7 @@ implements ReferenceType {
return saKlass.hashCode(); return saKlass.hashCode();
} }
public int compareTo(Object object) { public int compareTo(ReferenceType refType) {
/* /*
* Note that it is critical that compareTo() == 0 * Note that it is critical that compareTo() == 0
* implies that equals() == true. Otherwise, TreeSet * implies that equals() == true. Otherwise, TreeSet
...@@ -108,7 +108,7 @@ implements ReferenceType { ...@@ -108,7 +108,7 @@ implements ReferenceType {
* (Classes of the same name loaded by different class loaders * (Classes of the same name loaded by different class loaders
* or in different VMs must not return 0). * or in different VMs must not return 0).
*/ */
ReferenceTypeImpl other = (ReferenceTypeImpl)object; ReferenceTypeImpl other = (ReferenceTypeImpl)refType;
int comp = name().compareTo(other.name()); int comp = name().compareTo(other.name());
if (comp == 0) { if (comp == 0) {
Oop rf1 = ref(); Oop rf1 = ref();
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -52,9 +52,8 @@ public class ShortValueImpl extends PrimitiveValueImpl ...@@ -52,9 +52,8 @@ public class ShortValueImpl extends PrimitiveValueImpl
return intValue(); return intValue();
} }
public int compareTo(Object obj) { public int compareTo(ShortValue shortVal) {
short other = ((ShortValue)obj).value(); return value() - shortVal.value();
return value() - other;
} }
public Type type() { public Type type() {
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -798,12 +798,11 @@ public class VirtualMachineImpl extends MirrorImpl implements PathSearchingVirtu ...@@ -798,12 +798,11 @@ public class VirtualMachineImpl extends MirrorImpl implements PathSearchingVirtu
} }
public String description() { public String description() {
String[] versionParts = {"" + vmmgr.majorInterfaceVersion(),
"" + vmmgr.minorInterfaceVersion(),
name()};
return java.text.MessageFormat.format(java.util.ResourceBundle. return java.text.MessageFormat.format(java.util.ResourceBundle.
getBundle("com.sun.tools.jdi.resources.jdi").getString("version_format"), getBundle("com.sun.tools.jdi.resources.jdi").getString("version_format"),
versionParts); "" + vmmgr.majorInterfaceVersion(),
"" + vmmgr.minorInterfaceVersion(),
name());
} }
public String version() { public String version() {
......
# #
# 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. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -97,8 +97,8 @@ $(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2) ...@@ -97,8 +97,8 @@ $(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2)
$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST))) $(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_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) -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_FILES2_LIST)
$(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer $(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
......
...@@ -142,13 +142,15 @@ COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto ...@@ -142,13 +142,15 @@ COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto
COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
COMPILER2_PATHS += $(GENERATED)/adfiles COMPILER2_PATHS += $(GENERATED)/adfiles
SHARK_PATHS := $(GAMMADIR)/src/share/vm/shark
# Include dirs per type. # Include dirs per type.
Src_Dirs/CORE := $(CORE_PATHS) Src_Dirs/CORE := $(CORE_PATHS)
Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS) Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS) Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
Src_Dirs/TIERED := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS) Src_Dirs/TIERED := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
Src_Dirs/ZERO := $(CORE_PATHS) Src_Dirs/ZERO := $(CORE_PATHS)
Src_Dirs/SHARK := $(CORE_PATHS) Src_Dirs/SHARK := $(CORE_PATHS) $(SHARK_PATHS)
Src_Dirs := $(Src_Dirs/$(TYPE)) Src_Dirs := $(Src_Dirs/$(TYPE))
COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp chaitin\* c2_\* runtime_\* COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp chaitin\* c2_\* runtime_\*
......
# #
# 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. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -88,8 +88,8 @@ $(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2) ...@@ -88,8 +88,8 @@ $(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2)
$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST))) $(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_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) -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_FILES2_LIST)
$(QUIETLY) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer $(QUIETLY) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
......
# #
# 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. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -55,9 +55,9 @@ default:: $(GENERATED)\sa-jdi.jar ...@@ -55,9 +55,9 @@ default:: $(GENERATED)\sa-jdi.jar
$(GENERATED)\sa-jdi.jar: $(AGENT_FILES1:/=\) $(AGENT_FILES2:/=\) $(GENERATED)\sa-jdi.jar: $(AGENT_FILES1:/=\) $(AGENT_FILES2:/=\)
@if not exist $(SA_CLASSDIR) mkdir $(SA_CLASSDIR) @if not exist $(SA_CLASSDIR) mkdir $(SA_CLASSDIR)
@echo ...Building sa-jdi.jar @echo ...Building sa-jdi.jar
@echo ...$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -d $(SA_CLASSDIR) .... @echo ...$(COMPILE_JAVAC) -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) -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:/=\) @$(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 $(COMPILE_RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
$(QUIETLY) echo $(SA_BUILD_VERSION_PROP)> $(SA_PROPERTIES) $(QUIETLY) echo $(SA_BUILD_VERSION_PROP)> $(SA_PROPERTIES)
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js $(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
......
...@@ -2648,45 +2648,39 @@ bool os::uncommit_memory(char* addr, size_t size) { ...@@ -2648,45 +2648,39 @@ bool os::uncommit_memory(char* addr, size_t size) {
// writing thread stacks don't use growable mappings (i.e. those // writing thread stacks don't use growable mappings (i.e. those
// creeated with MAP_GROWSDOWN), and aren't marked "[stack]", so this // creeated with MAP_GROWSDOWN), and aren't marked "[stack]", so this
// only applies to the main thread. // 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)
return false;
while (!feof(f)) { static
size_t dummy; bool get_stack_bounds(uintptr_t *bottom, uintptr_t *top) {
char *str = NULL;
ssize_t len = getline(&str, &dummy, f); char buf[128];
if (len == -1) { int fd, sz;
fclose(f);
if ((fd = ::open("/proc/self/maps", O_RDONLY)) < 0) {
return false; return false;
} }
if (len > 0 && str[len-1] == '\n') { const char kw[] = "[stack]";
str[len-1] = 0; const int kwlen = sizeof(kw)-1;
len--;
}
static const char *stack_str = "[stack]"; // Address part of /proc/self/maps couldn't be more than 128 bytes
if (len > (ssize_t)strlen(stack_str) while ((sz = os::get_line_chars(fd, buf, sizeof(buf))) > 0) {
&& (strcmp(str + len - strlen(stack_str), stack_str) == 0)) { if (sz > kwlen && ::memcmp(buf+sz-kwlen, kw, kwlen) == 0) {
if (sscanf(str, "%" SCNxPTR "-%" SCNxPTR, bottom, top) == 2) { // Extract addresses
uintptr_t sp = (uintptr_t)__builtin_frame_address(0); if (sscanf(buf, "%" SCNxPTR "-%" SCNxPTR, bottom, top) == 2) {
uintptr_t sp = (uintptr_t) __builtin_frame_address(0);
if (sp >= *bottom && sp <= *top) { if (sp >= *bottom && sp <= *top) {
free(str); ::close(fd);
fclose(f);
return true; return true;
} }
} }
} }
free(str);
} }
fclose(f);
::close(fd);
return false; return false;
} }
// If the (growable) stack mapping already extends beyond the point // If the (growable) stack mapping already extends beyond the point
// where we're going to put our guard pages, truncate the mapping at // 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 // that point by munmap()ping it. This ensures that when we later
......
...@@ -497,6 +497,9 @@ class CompilerInterfaceVC10 extends CompilerInterface { ...@@ -497,6 +497,9 @@ class CompilerInterfaceVC10 extends CompilerInterface {
addAttr(rv, "TargetMachine", "MachineX64"); 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; return rv;
} }
...@@ -504,8 +507,7 @@ class CompilerInterfaceVC10 extends CompilerInterface { ...@@ -504,8 +507,7 @@ class CompilerInterfaceVC10 extends CompilerInterface {
Vector getDebugLinkerFlags() { Vector getDebugLinkerFlags() {
Vector rv = new Vector(); Vector rv = new Vector();
// /DEBUG option // Empty now that /DEBUG option is used by all configs
addAttr(rv, "GenerateDebugInformation", "true");
return rv; return rv;
} }
......
...@@ -1440,23 +1440,32 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, TRAPS) { ...@@ -1440,23 +1440,32 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, TRAPS) {
st_method = st.method(); st_method = st.method();
} }
#endif #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) { if (!skip_fillInStackTrace_check) {
// check "fillInStackTrace" only once, so we negate the flag if ((method->name() == vmSymbols::fillInStackTrace_name() ||
// after the first time check. method->name() == vmSymbols::fillInStackTrace0_name()) &&
skip_fillInStackTrace_check = true; throwable->is_a(method->method_holder())) {
if (method->name() == vmSymbols::fillInStackTrace_name()) {
continue; 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) { 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() && if (method->name() == vmSymbols::object_initializer_name() &&
throwable->is_a(method->method_holder())) { throwable->is_a(method->method_holder())) {
continue; continue;
} else { } 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; skip_throwableInit_check = true;
} }
} }
......
...@@ -208,8 +208,10 @@ bool StackMapFrame::has_flag_match_exception( ...@@ -208,8 +208,10 @@ bool StackMapFrame::has_flag_match_exception(
return true; return true;
} }
bool StackMapFrame::is_assignable_to(const StackMapFrame* target, TRAPS) const { bool StackMapFrame::is_assignable_to(
if (_max_locals != target->max_locals() || _stack_size != target->stack_size()) { const StackMapFrame* target, bool is_exception_handler, TRAPS) const {
if (_max_locals != target->max_locals() ||
_stack_size != target->stack_size()) {
return false; return false;
} }
// Only need to compare type elements up to target->locals() or target->stack(). // Only need to compare type elements up to target->locals() or target->stack().
...@@ -222,7 +224,7 @@ bool StackMapFrame::is_assignable_to(const StackMapFrame* target, TRAPS) const { ...@@ -222,7 +224,7 @@ bool StackMapFrame::is_assignable_to(const StackMapFrame* target, TRAPS) const {
bool match_flags = (_flags | target->flags()) == target->flags(); bool match_flags = (_flags | target->flags()) == target->flags();
return match_locals && match_stack && 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) { VerificationType StackMapFrame::pop_stack_ex(VerificationType type, TRAPS) {
......
...@@ -134,7 +134,8 @@ class StackMapFrame : public ResourceObj { ...@@ -134,7 +134,8 @@ class StackMapFrame : public ResourceObj {
void copy_stack(const StackMapFrame* src); void copy_stack(const StackMapFrame* src);
// Return true if this stack map frame is assignable to target. // 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. // Push type into stack type array.
inline void push_stack(VerificationType type, TRAPS) { inline void push_stack(VerificationType type, TRAPS) {
......
...@@ -98,10 +98,13 @@ bool StackMapTable::match_stackmap( ...@@ -98,10 +98,13 @@ bool StackMapTable::match_stackmap(
bool result = true; bool result = true;
StackMapFrame *stackmap_frame = _frame_array[frame_index]; StackMapFrame *stackmap_frame = _frame_array[frame_index];
if (match) { 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 // Has direct control flow from last instruction, need to match the two
// frames. // frames.
result = frame->is_assignable_to( result = frame->is_assignable_to(
stackmap_frame, CHECK_VERIFY_(frame->verifier(), false)); stackmap_frame, is_exception_handler,
CHECK_VERIFY_(frame->verifier(), false));
} }
if (update) { if (update) {
// Use the frame in stackmap table as current frame // Use the frame in stackmap table as current frame
......
...@@ -301,6 +301,7 @@ ...@@ -301,6 +301,7 @@
template(dispatch_name, "dispatch") \ template(dispatch_name, "dispatch") \
template(getSystemClassLoader_name, "getSystemClassLoader") \ template(getSystemClassLoader_name, "getSystemClassLoader") \
template(fillInStackTrace_name, "fillInStackTrace") \ template(fillInStackTrace_name, "fillInStackTrace") \
template(fillInStackTrace0_name, "fillInStackTrace0") \
template(getCause_name, "getCause") \ template(getCause_name, "getCause") \
template(initCause_name, "initCause") \ template(initCause_name, "initCause") \
template(setProperty_name, "setProperty") \ template(setProperty_name, "setProperty") \
......
...@@ -59,7 +59,8 @@ ...@@ -59,7 +59,8 @@
#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp" #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
#endif #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" #define DEFAULT_JAVA_LAUNCHER "generic"
char** Arguments::_jvm_flags_array = NULL; char** Arguments::_jvm_flags_array = NULL;
......
...@@ -1291,3 +1291,41 @@ bool os::is_server_class_machine() { ...@@ -1291,3 +1291,41 @@ bool os::is_server_class_machine() {
} }
return result; 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;
}
...@@ -658,6 +658,10 @@ class os: AllStatic { ...@@ -658,6 +658,10 @@ class os: AllStatic {
// Hook for os specific jvm options that we don't want to abort on seeing // Hook for os specific jvm options that we don't want to abort on seeing
static bool obsolete_option(const JavaVMOption *option); 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 // Platform dependent stuff
#ifdef TARGET_OS_FAMILY_linux #ifdef TARGET_OS_FAMILY_linux
# include "os_linux.hpp" # include "os_linux.hpp"
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
* @test * @test
* @bug 6795161 * @bug 6795161
* @summary Escape analysis leads to data corruption * @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 { class Test_Class_1 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册