summaryrefslogtreecommitdiffstats
path: root/source.local/l/openjdk/patches/icedtea_zero_buildfix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source.local/l/openjdk/patches/icedtea_zero_buildfix.patch')
-rw-r--r--source.local/l/openjdk/patches/icedtea_zero_buildfix.patch349
1 files changed, 349 insertions, 0 deletions
diff --git a/source.local/l/openjdk/patches/icedtea_zero_buildfix.patch b/source.local/l/openjdk/patches/icedtea_zero_buildfix.patch
new file mode 100644
index 0000000..902e0cc
--- /dev/null
+++ b/source.local/l/openjdk/patches/icedtea_zero_buildfix.patch
@@ -0,0 +1,349 @@
+
+# HG changeset patch
+# User Andrew John Hughes <gnu_andrew@member.fsf.org>
+# Date 1358298469 0
+# Node ID 5fc3319dea01730bb3fdc1cd1b156f37e153553f
+# Parent fa200daee35457cb507ab8bf4b55cd3b3535e0b8
+Fix application of 6924259 to Zero's HotSpot, which was broken by addition of 7158800 in 2.1.3.
+
+2013-01-16 Andrew John Hughes <gnu.andrew@member.fsf.org>
+
+ * patches/hotspot/zero/6924259-string_offset.patch:
+ Fix patch to apply against HotSpot from 2.1.3.
+
+diff -r fa200daee354 -r 5fc3319dea01 ChangeLog
+--- a/ChangeLog Tue Jan 15 09:43:14 2013 +0000
++++ b/ChangeLog Wed Jan 16 01:07:49 2013 +0000
+@@ -1,3 +1,8 @@
++2013-01-16 Andrew John Hughes <gnu.andrew@member.fsf.org>
++
++ * patches/hotspot/zero/6924259-string_offset.patch:
++ Fix patch to apply against HotSpot from 2.1.3.
++
+ 2013-01-15 Andrew John Hughes <gnu.andrew@member.fsf.org>
+
+ * NEWS: Mention PaX bug fix from Gentoo,
+diff -r fa200daee354 -r 5fc3319dea01 patches/hotspot/zero/6924259-string_offset.patch
+--- a/patches/hotspot/zero/6924259-string_offset.patch Tue Jan 15 09:43:14 2013 +0000
++++ b/patches/hotspot/zero/6924259-string_offset.patch Wed Jan 16 01:07:49 2013 +0000
+@@ -1,15 +1,6 @@
+-# HG changeset patch
+-# User kvn
+-# Date 1337013360 25200
+-# Node ID 3facbb14e873f14af743e05139e6e48b5890ffcc
+-# Parent ea3152ff2a498749bf5d889b247902f5d02915be
+-6924259: Remove String.count/String.offset
+-Summary: Allow a version of String class that doesn't have count and offset fields.
+-Reviewed-by: never, coleenp
+-
+-diff --git a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+---- openjdk/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+-+++ openjdk/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
++diff -Nru openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp openjdk/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
++--- openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp 2013-01-16 00:42:59.059088003 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+@@ -99,9 +90,9 @@
+
+ __ lduh(base0, limit, chr0);
+ __ bind(Lloop);
+-diff --git a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+---- openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+-+++ openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
++diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
++--- openjdk.orig/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp 2013-01-16 00:41:43.257866830 +0000
+++++ openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp 2013-01-16 00:42:59.059088003 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+@@ -109,7 +100,7 @@
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+-@@ -505,19 +505,28 @@
++@@ -506,19 +506,28 @@
+
+ // Get addresses of first characters from both Strings
+ __ load_heap_oop(rsi, Address(rax, java_lang_String::value_offset_in_bytes()));
+@@ -145,9 +136,9 @@
+ __ mov (rcx, rbx);
+ __ subptr(rbx, rax); // subtract lengths
+ __ push (rbx); // result
+-diff --git a/src/share/vm/classfile/javaClasses.cpp b/src/share/vm/classfile/javaClasses.cpp
+---- openjdk/hotspot/src/share/vm/classfile/javaClasses.cpp
+-+++ openjdk/hotspot/src/share/vm/classfile/javaClasses.cpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/classfile/javaClasses.cpp openjdk/hotspot/src/share/vm/classfile/javaClasses.cpp
++--- openjdk.orig/hotspot/src/share/vm/classfile/javaClasses.cpp 2013-01-16 00:41:43.273867087 +0000
+++++ openjdk/hotspot/src/share/vm/classfile/javaClasses.cpp 2013-01-16 00:42:59.071088195 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+@@ -155,7 +146,7 @@
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+-@@ -143,7 +143,27 @@
++@@ -144,7 +144,27 @@
+ }
+
+
+@@ -224,9 +215,9 @@
+
+ // java.lang.Class
+
+-diff --git a/src/share/vm/classfile/javaClasses.hpp b/src/share/vm/classfile/javaClasses.hpp
+---- openjdk/hotspot/src/share/vm/classfile/javaClasses.hpp
+-+++ openjdk/hotspot/src/share/vm/classfile/javaClasses.hpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/classfile/javaClasses.hpp openjdk/hotspot/src/share/vm/classfile/javaClasses.hpp
++--- openjdk.orig/hotspot/src/share/vm/classfile/javaClasses.hpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/classfile/javaClasses.hpp 2013-01-16 00:42:59.071088195 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+@@ -349,10 +340,10 @@
+ }
+ static int utf8_length(oop java_string);
+
+-diff --git a/src/share/vm/classfile/systemDictionary.cpp b/src/share/vm/classfile/systemDictionary.cpp
+---- openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+-+++ openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+-@@ -1971,6 +1971,9 @@
++diff -Nru openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
++--- openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp 2013-01-16 00:42:59.075088258 +0000
++@@ -1953,6 +1953,9 @@
+ // first do Object, String, Class
+ initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK);
+
+@@ -362,10 +353,10 @@
+ java_lang_Class::compute_offsets();
+
+ // Fixup mirrors for classes loaded before java.lang.Class.
+-diff --git a/src/share/vm/classfile/vmSymbols.hpp b/src/share/vm/classfile/vmSymbols.hpp
+---- openjdk/hotspot/src/share/vm/classfile/vmSymbols.hpp
+-+++ openjdk/hotspot/src/share/vm/classfile/vmSymbols.hpp
+-@@ -339,6 +339,9 @@
++diff -Nru openjdk.orig/hotspot/src/share/vm/classfile/vmSymbols.hpp openjdk/hotspot/src/share/vm/classfile/vmSymbols.hpp
++--- openjdk.orig/hotspot/src/share/vm/classfile/vmSymbols.hpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/classfile/vmSymbols.hpp 2013-01-16 00:42:59.083088388 +0000
++@@ -337,6 +337,9 @@
+ template(park_event_name, "nativeParkEventPointer") \
+ template(cache_field_name, "cache") \
+ template(value_name, "value") \
+@@ -375,9 +366,9 @@
+ template(frontCacheEnabled_name, "frontCacheEnabled") \
+ template(stringCacheEnabled_name, "stringCacheEnabled") \
+ template(numberOfLeadingZeros_name, "numberOfLeadingZeros") \
+-diff --git a/src/share/vm/memory/dump.cpp b/src/share/vm/memory/dump.cpp
+---- openjdk/hotspot/src/share/vm/memory/dump.cpp
+-+++ openjdk/hotspot/src/share/vm/memory/dump.cpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/memory/dump.cpp openjdk/hotspot/src/share/vm/memory/dump.cpp
++--- openjdk.orig/hotspot/src/share/vm/memory/dump.cpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/memory/dump.cpp 2013-01-16 00:43:46.135846474 +0000
+ @@ -78,8 +78,8 @@
+ void do_oop(oop* p) {
+ if (p != NULL) {
+@@ -386,12 +377,12 @@
+ -
+ + if (obj->klass() == SystemDictionary::String_klass() &&
+ + java_lang_String::has_hash_field()) {
+- int hash = java_lang_String::hash_string(obj);
++ int hash = java_lang_String::to_hash(obj);
+ obj->int_field_put(hash_offset, hash);
+ }
+-diff --git a/src/share/vm/opto/graphKit.cpp b/src/share/vm/opto/graphKit.cpp
+---- openjdk/hotspot/src/share/vm/opto/graphKit.cpp
+-+++ openjdk/hotspot/src/share/vm/opto/graphKit.cpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/opto/graphKit.cpp openjdk/hotspot/src/share/vm/opto/graphKit.cpp
++--- openjdk.orig/hotspot/src/share/vm/opto/graphKit.cpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/opto/graphKit.cpp 2013-01-16 00:42:59.091088517 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+@@ -399,7 +390,7 @@
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+-@@ -3748,3 +3748,81 @@
++@@ -3730,3 +3730,81 @@
+ final_sync(ideal);
+ }
+ #undef __
+@@ -481,9 +472,9 @@
+ + store_to_memory(ctrl, basic_plus_adr(str, count_offset),
+ + value, T_INT, count_field_idx);
+ +}
+-diff --git a/src/share/vm/opto/graphKit.hpp b/src/share/vm/opto/graphKit.hpp
+---- openjdk/hotspot/src/share/vm/opto/graphKit.hpp
+-+++ openjdk/hotspot/src/share/vm/opto/graphKit.hpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/opto/graphKit.hpp openjdk/hotspot/src/share/vm/opto/graphKit.hpp
++--- openjdk.orig/hotspot/src/share/vm/opto/graphKit.hpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/opto/graphKit.hpp 2013-01-16 00:42:59.095088581 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+@@ -506,9 +497,9 @@
+ // Handy for making control flow
+ IfNode* create_and_map_if(Node* ctrl, Node* tst, float prob, float cnt) {
+ IfNode* iff = new (C, 2) IfNode(ctrl, tst, prob, cnt);// New IfNode's
+-diff --git a/src/share/vm/opto/library_call.cpp b/src/share/vm/opto/library_call.cpp
+---- openjdk/hotspot/src/share/vm/opto/library_call.cpp
+-+++ openjdk/hotspot/src/share/vm/opto/library_call.cpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/opto/library_call.cpp openjdk/hotspot/src/share/vm/opto/library_call.cpp
++--- openjdk.orig/hotspot/src/share/vm/opto/library_call.cpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/opto/library_call.cpp 2013-01-16 00:42:59.095088581 +0000
+ @@ -147,7 +147,8 @@
+ return generate_method_call(method_id, true, false);
+ }
+@@ -519,7 +510,7 @@
+ bool inline_string_compareTo();
+ bool inline_string_indexOf();
+ Node* string_indexOf(Node* string_object, ciTypeArray* target_array, jint offset, jint cache_i, jint md2_i);
+-@@ -844,48 +845,45 @@
++@@ -844,48 +845,76 @@
+
+
+ //------------------------------make_string_method_node------------------------
+@@ -588,13 +579,18 @@
+ result = new (C, 5) StrEqualsNode(control(), memory(TypeAryPtr::CHARS),
+ - str1_start, str2_start, cnt1);
+ + str1_start, str2_start, str1_len);
+- break;
+- default:
+- ShouldNotReachHere();
+-@@ -898,15 +896,42 @@
+- return _gvn.transform(result);
+- }
+-
+++ break;
+++ default:
+++ ShouldNotReachHere();
+++ return NULL;
+++ }
+++
+++ // All these intrinsics have checks.
+++ C->set_has_split_ifs(true); // Has chance for split-if optimization
+++
+++ return _gvn.transform(result);
+++}
+++
+ +// Helper method for String intrinsic functions. This version is called
+ +// with str1 and str2 pointing to char[] nodes, with cnt1 and cnt2 pointing
+ +// to Int nodes containing the lenghts of str1 and str2.
+@@ -614,20 +610,10 @@
+ + case Op_StrEquals:
+ + result = new (C, 5) StrEqualsNode(control(), memory(TypeAryPtr::CHARS),
+ + str1_start, str2_start, cnt1);
+-+ break;
+-+ default:
+-+ ShouldNotReachHere();
+-+ return NULL;
+-+ }
+-+
+-+ // All these intrinsics have checks.
+-+ C->set_has_split_ifs(true); // Has chance for split-if optimization
+-+
+-+ return _gvn.transform(result);
+-+}
+-+
+- //------------------------------inline_string_compareTo------------------------
+- bool LibraryCallKit::inline_string_compareTo() {
++ break;
++ default:
++ ShouldNotReachHere();
++@@ -903,10 +932,6 @@
+
+ if (!Matcher::has_match_rule(Op_StrComp)) return false;
+
+@@ -690,9 +676,6 @@
+ - // Get counts for string and argument
+ - Node* receiver_cnta = basic_plus_adr(receiver, receiver, count_offset);
+ - receiver_cnt = make_load(no_ctrl, receiver_cnta, TypeInt::INT, T_INT, string_type->add_offset(count_offset));
+--
+-- Node* argument_cnta = basic_plus_adr(argument, argument, count_offset);
+-- argument_cnt = make_load(no_ctrl, argument_cnta, TypeInt::INT, T_INT, string_type->add_offset(count_offset));
+ + Node* no_ctrl = NULL;
+ +
+ + // Get start addr of receiver
+@@ -707,7 +690,9 @@
+ + Node* argument_val = load_String_value(no_ctrl, argument);
+ + Node* argument_offset = load_String_offset(no_ctrl, argument);
+ + Node* argument_start = array_element_address(argument_val, argument_offset, T_CHAR);
+-+
++
++- Node* argument_cnta = basic_plus_adr(argument, argument, count_offset);
++- argument_cnt = make_load(no_ctrl, argument_cnta, TypeInt::INT, T_INT, string_type->add_offset(count_offset));
+ + // Get length of argument
+ + Node* argument_cnt = load_String_length(no_ctrl, argument);
+
+@@ -718,16 +703,14 @@
+ region->init_req(4, if_ne);
+ }
+ - }
+--
++
+ - // Check for count == 0 is done by mach node StrEquals.
+--
+++ // Check for count == 0 is done by assembler code for StrEquals.
++
+ - if (!stopped()) {
+ - Node* equals = make_string_method_node(Op_StrEquals, receiver, receiver_cnt, argument, argument_cnt);
+ - phi->init_req(1, equals);
+ - region->init_req(1, control());
+-+
+-+ // Check for count == 0 is done by assembler code for StrEquals.
+-+
+ + if (!stopped()) {
+ + Node* equals = make_string_method_node(Op_StrEquals, receiver_start, receiver_cnt, argument_start, argument_cnt);
+ + phi->init_req(1, equals);
+@@ -778,9 +761,6 @@
+ - // Get counts for string and substr
+ - Node* source_cnta = basic_plus_adr(receiver, receiver, count_offset);
+ - Node* source_cnt = make_load(no_ctrl, source_cnta, TypeInt::INT, T_INT, string_type->add_offset(count_offset));
+--
+-- Node* substr_cnta = basic_plus_adr(argument, argument, count_offset);
+-- Node* substr_cnt = make_load(no_ctrl, substr_cnta, TypeInt::INT, T_INT, string_type->add_offset(count_offset));
+ + // Get start addr of source string
+ + Node* source = load_String_value(no_ctrl, receiver);
+ + Node* source_offset = load_String_offset(no_ctrl, receiver);
+@@ -793,7 +773,9 @@
+ + Node* substr = load_String_value(no_ctrl, argument);
+ + Node* substr_offset = load_String_offset(no_ctrl, argument);
+ + Node* substr_start = array_element_address(substr, substr_offset, T_CHAR);
+-+
++
++- Node* substr_cnta = basic_plus_adr(argument, argument, count_offset);
++- Node* substr_cnt = make_load(no_ctrl, substr_cnta, TypeInt::INT, T_INT, string_type->add_offset(count_offset));
+ + // Get length of source string
+ + Node* substr_cnt = load_String_length(no_ctrl, argument);
+
+@@ -831,9 +813,9 @@
+ // constant strings have no offset and count == length which
+ // simplifies the resulting code somewhat so lets optimize for that.
+ if (o != 0 || c != pat->length()) {
+-diff --git a/src/share/vm/opto/stringopts.cpp b/src/share/vm/opto/stringopts.cpp
+---- openjdk/hotspot/src/share/vm/opto/stringopts.cpp
+-+++ openjdk/hotspot/src/share/vm/opto/stringopts.cpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/opto/stringopts.cpp openjdk/hotspot/src/share/vm/opto/stringopts.cpp
++--- openjdk.orig/hotspot/src/share/vm/opto/stringopts.cpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/opto/stringopts.cpp 2013-01-16 00:42:59.099088646 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+@@ -912,9 +894,9 @@
+
+ // hook up the outgoing control and result
+ kit.replace_call(sc->end(), result);
+-diff --git a/src/share/vm/opto/stringopts.hpp b/src/share/vm/opto/stringopts.hpp
+---- openjdk/hotspot/src/share/vm/opto/stringopts.hpp
+-+++ openjdk/hotspot/src/share/vm/opto/stringopts.hpp
++diff -Nru openjdk.orig/hotspot/src/share/vm/opto/stringopts.hpp openjdk/hotspot/src/share/vm/opto/stringopts.hpp
++--- openjdk.orig/hotspot/src/share/vm/opto/stringopts.hpp 2012-10-17 08:52:30.000000000 +0100
+++++ openjdk/hotspot/src/share/vm/opto/stringopts.hpp 2013-01-16 00:42:59.103088711 +0000
+ @@ -1,5 +1,5 @@
+ /*
+ - * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+
+