/hg/release/icedtea7-forest-2.2/hotspot: 5 new changesets

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Tue Jun 12 15:53:27 PDT 2012


changeset da956f0dff7b in /hg/release/icedtea7-forest-2.2/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/hotspot?cmd=changeset;node=da956f0dff7b
author: kamg
date: Thu Mar 29 13:22:24 2012 -0400

	7110720: Issue with vm config file loadingIssue with vm config file loading
	Summary: disabling default config files if -XX:-ReadDefaultConfigFiles
	Reviewed-by: phh, jrose, dcubed, dholmes


changeset ab2cea71db14 in /hg/release/icedtea7-forest-2.2/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/hotspot?cmd=changeset;node=ab2cea71db14
author: never
date: Wed Apr 04 20:44:37 2012 -0700

	7152811: Issues in client compiler
	Reviewed-by: kvn, jrose


changeset 031bc89014f7 in /hg/release/icedtea7-forest-2.2/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/hotspot?cmd=changeset;node=031bc89014f7
author: never
date: Wed Apr 11 17:38:20 2012 -0700

	7160677: missing else in fix for 7152811
	Reviewed-by: kvn


changeset 158d5b869cf1 in /hg/release/icedtea7-forest-2.2/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/hotspot?cmd=changeset;node=158d5b869cf1
author: kamg
date: Thu May 03 15:57:16 2012 -0400

	7160757: Problem with hotspot/runtime_classfile
	Summary: Allow only current and super invokespecials of <init>
	Reviewed-by: never, coleenp, dcubed


changeset 889dffcf4a54 in /hg/release/icedtea7-forest-2.2/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/hotspot?cmd=changeset;node=889dffcf4a54
author: andrew
date: Thu Jun 07 15:30:51 2012 +0100

	Added tag icedtea-2.2.1 for changeset 158d5b869cf1


diffstat:

 .hgtags                                  |   1 +
 src/share/vm/ci/ciField.cpp              |  37 +++++++++++++++++++++++++------
 src/share/vm/ci/ciField.hpp              |   5 ++-
 src/share/vm/classfile/verifier.cpp      |   6 ++--
 src/share/vm/compiler/compilerOracle.cpp |  19 +++++++++++++--
 src/share/vm/compiler/compilerOracle.hpp |   6 ++++-
 src/share/vm/opto/runtime.cpp            |   5 ++-
 src/share/vm/runtime/arguments.cpp       |   2 +
 8 files changed, 63 insertions(+), 18 deletions(-)

diffs (245 lines):

diff -r bfe5efd70bce -r 889dffcf4a54 .hgtags
--- a/.hgtags	Wed May 30 22:19:21 2012 +0100
+++ b/.hgtags	Thu Jun 07 15:30:51 2012 +0100
@@ -281,3 +281,4 @@
 c7c6b00122cf49c4147229689904a20779e73b85 jdk7u4-b30
 93ec23d55b87d46bada8f32b84eb67b427436858 jdk7u4-b21
 b11130d646c2949fce6b32485209e6c17b0a7863 icedtea-2.2
+158d5b869cf10d5817f236d3b68985990b0d4040 icedtea-2.2.1
diff -r bfe5efd70bce -r 889dffcf4a54 src/share/vm/ci/ciField.cpp
--- a/src/share/vm/ci/ciField.cpp	Wed May 30 22:19:21 2012 +0100
+++ b/src/share/vm/ci/ciField.cpp	Thu Jun 07 15:30:51 2012 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * 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,7 +67,7 @@
 
 // ------------------------------------------------------------------
 // ciField::ciField
-ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with(NULL) {
+ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with_put(NULL), _known_to_link_with_get(NULL) {
   ASSERT_IN_VM;
   CompilerThread *thread = CompilerThread::current();
 
@@ -143,7 +143,7 @@
   initialize_from(&field_desc);
 }
 
-ciField::ciField(fieldDescriptor *fd): _known_to_link_with(NULL) {
+ciField::ciField(fieldDescriptor *fd): _known_to_link_with_put(NULL), _known_to_link_with_get(NULL) {
   ASSERT_IN_VM;
 
   _cp_index = -1;
@@ -315,6 +315,10 @@
 bool ciField::will_link(ciInstanceKlass* accessing_klass,
                         Bytecodes::Code bc) {
   VM_ENTRY_MARK;
+  assert(bc == Bytecodes::_getstatic || bc == Bytecodes::_putstatic ||
+         bc == Bytecodes::_getfield  || bc == Bytecodes::_putfield,
+         "unexpected bytecode");
+
   if (_offset == -1) {
     // at creation we couldn't link to our holder so we need to
     // maintain that stance, otherwise there's no safe way to use this
@@ -322,8 +326,22 @@
     return false;
   }
 
-  if (_known_to_link_with == accessing_klass) {
-    return true;
+  // Check for static/nonstatic mismatch
+  bool is_static = (bc == Bytecodes::_getstatic || bc == Bytecodes::_putstatic);
+  if (is_static != this->is_static()) {
+    return false;
+  }
+
+  // Get and put can have different accessibility rules
+  bool is_put    = (bc == Bytecodes::_putfield  || bc == Bytecodes::_putstatic);
+  if (is_put) {
+    if (_known_to_link_with_put == accessing_klass) {
+      return true;
+    }
+  } else {
+    if (_known_to_link_with_get == accessing_klass) {
+      return true;
+    }
   }
 
   FieldAccessInfo result;
@@ -334,8 +352,13 @@
                               true, false, KILL_COMPILE_ON_FATAL_(false));
 
   // update the hit-cache, unless there is a problem with memory scoping:
-  if (accessing_klass->is_shared() || !is_shared())
-    _known_to_link_with = accessing_klass;
+  if (accessing_klass->is_shared() || !is_shared()) {
+    if (is_put) {
+      _known_to_link_with_put = accessing_klass;
+    } else {
+      _known_to_link_with_get = accessing_klass;
+    }
+  }
 
   return true;
 }
diff -r bfe5efd70bce -r 889dffcf4a54 src/share/vm/ci/ciField.hpp
--- a/src/share/vm/ci/ciField.hpp	Wed May 30 22:19:21 2012 +0100
+++ b/src/share/vm/ci/ciField.hpp	Thu Jun 07 15:30:51 2012 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -49,7 +49,8 @@
   ciType*          _type;
   int              _offset;
   bool             _is_constant;
-  ciInstanceKlass* _known_to_link_with;
+  ciInstanceKlass* _known_to_link_with_put;
+  ciInstanceKlass* _known_to_link_with_get;
   ciConstant       _constant_value;
 
   // Used for will_link
diff -r bfe5efd70bce -r 889dffcf4a54 src/share/vm/classfile/verifier.cpp
--- a/src/share/vm/classfile/verifier.cpp	Wed May 30 22:19:21 2012 +0100
+++ b/src/share/vm/classfile/verifier.cpp	Thu Jun 07 15:30:51 2012 +0100
@@ -1880,10 +1880,10 @@
   VerificationType type = current_frame->pop_stack(
     VerificationType::reference_check(), CHECK_VERIFY(this));
   if (type == VerificationType::uninitialized_this_type()) {
-    // The method must be an <init> method of either this class, or one of its
-    // superclasses
+    // The method must be an <init> method of this class or its superclass
+    klassOop superk = current_class()->super();
     if (ref_class_type.name() != current_class()->name() &&
-        !name_in_supers(ref_class_type.name(), current_class())) {
+        ref_class_type.name() != superk->klass_part()->name()) {
       verify_error(bci, "Bad <init> method call");
       return;
     }
diff -r bfe5efd70bce -r 889dffcf4a54 src/share/vm/compiler/compilerOracle.cpp
--- a/src/share/vm/compiler/compilerOracle.cpp	Wed May 30 22:19:21 2012 +0100
+++ b/src/share/vm/compiler/compilerOracle.cpp	Thu Jun 07 15:30:51 2012 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -551,13 +551,22 @@
 }
 
 static const char* cc_file() {
-  if (CompileCommandFile == NULL)
+#ifdef ASSERT
+  if (CompileCommandFile == NULL) {
     return ".hotspot_compiler";
+  }
+#endif
   return CompileCommandFile;
 }
+
+bool CompilerOracle::has_command_file() {
+  return cc_file() != NULL;
+}
+
 bool CompilerOracle::_quiet = false;
 
 void CompilerOracle::parse_from_file() {
+  assert(has_command_file(), "command file must be specified");
   FILE* stream = fopen(cc_file(), "rt");
   if (stream == NULL) return;
 
@@ -600,6 +609,7 @@
 }
 
 void CompilerOracle::append_comment_to_file(const char* message) {
+  assert(has_command_file(), "command file must be specified");
   fileStream stream(fopen(cc_file(), "at"));
   stream.print("# ");
   for (int index = 0; message[index] != '\0'; index++) {
@@ -610,6 +620,7 @@
 }
 
 void CompilerOracle::append_exclude_to_file(methodHandle method) {
+  assert(has_command_file(), "command file must be specified");
   fileStream stream(fopen(cc_file(), "at"));
   stream.print("exclude ");
   Klass::cast(method->method_holder())->name()->print_symbol_on(&stream);
@@ -624,7 +635,9 @@
 void compilerOracle_init() {
   CompilerOracle::parse_from_string(CompileCommand, CompilerOracle::parse_from_line);
   CompilerOracle::parse_from_string(CompileOnly, CompilerOracle::parse_compile_only);
-  CompilerOracle::parse_from_file();
+  if (CompilerOracle::has_command_file()) {
+    CompilerOracle::parse_from_file();
+  }
   if (lists[PrintCommand] != NULL) {
     if (PrintAssembly) {
       warning("CompileCommand and/or .hotspot_compiler file contains 'print' commands, but PrintAssembly is also enabled");
diff -r bfe5efd70bce -r 889dffcf4a54 src/share/vm/compiler/compilerOracle.hpp
--- a/src/share/vm/compiler/compilerOracle.hpp	Wed May 30 22:19:21 2012 +0100
+++ b/src/share/vm/compiler/compilerOracle.hpp	Thu Jun 07 15:30:51 2012 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,10 @@
   static bool _quiet;
 
  public:
+
+  // True if the command file has been specified or is implicit
+  static bool has_command_file();
+
   // Reads from file and adds to lists
   static void parse_from_file();
 
diff -r bfe5efd70bce -r 889dffcf4a54 src/share/vm/opto/runtime.cpp
--- a/src/share/vm/opto/runtime.cpp	Wed May 30 22:19:21 2012 +0100
+++ b/src/share/vm/opto/runtime.cpp	Thu Jun 07 15:30:51 2012 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -896,7 +896,8 @@
       methodOop method = ((nmethod*)n)->method();
       tty->print_cr("# Method where it happened %s.%s ", Klass::cast(method->method_holder())->name()->as_C_string(), method->name()->as_C_string());
       tty->print_cr("#");
-      if (ShowMessageBoxOnError && UpdateHotSpotCompilerFileOnError) {
+      if (ShowMessageBoxOnError && UpdateHotSpotCompilerFileOnError &&
+          CompilerOracle::has_command_file()) {
         const char* title    = "HotSpot Runtime Error";
         const char* question = "Do you want to exclude compilation of this method in future runs?";
         if (os::message_box(title, question)) {
diff -r bfe5efd70bce -r 889dffcf4a54 src/share/vm/runtime/arguments.cpp
--- a/src/share/vm/runtime/arguments.cpp	Wed May 30 22:19:21 2012 +0100
+++ b/src/share/vm/runtime/arguments.cpp	Thu Jun 07 15:30:51 2012 +0100
@@ -3000,12 +3000,14 @@
     }
   }
 
+#ifdef ASSERT
   // Parse default .hotspotrc settings file
   if (!settings_file_specified) {
     if (!process_settings_file(".hotspotrc", false, args->ignoreUnrecognized)) {
       return JNI_EINVAL;
     }
   }
+#endif
 
   if (PrintVMOptions) {
     for (index = 0; index < args->nOptions; index++) {



More information about the distro-pkg-dev mailing list