summaryrefslogtreecommitdiff
path: root/java/openjdk6/files
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2011-08-09 22:56:40 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2011-08-09 22:56:40 +0000
commit84b67b4564e60469e3f404cf4b4a5cd7211c1f57 (patch)
tree3edae630a6604510fb654e5f3bd6a498a094f771 /java/openjdk6/files
parent- Pass maintainership to Eitan Adler (diff)
- Add an additional patch to support i386 CPUs without CMOV instruction
under ICEDTEA option. [1] - Chase default Korean font directory change. PR: ports/158304 [1] Obtained from: IcedTea Project [1]
Notes
Notes: svn path=/head/; revision=279374
Diffstat (limited to 'java/openjdk6/files')
-rw-r--r--java/openjdk6/files/fontconfig.properties8
-rw-r--r--java/openjdk6/files/icedtea/7032388-work_without_cmov_instruction.patch178
2 files changed, 182 insertions, 4 deletions
diff --git a/java/openjdk6/files/fontconfig.properties b/java/openjdk6/files/fontconfig.properties
index 00b2202ec1b0..0fbfe753edc1 100644
--- a/java/openjdk6/files/fontconfig.properties
+++ b/java/openjdk6/files/fontconfig.properties
@@ -184,7 +184,7 @@ filename.Sazanami_Gothic=/usr/local/lib/X11/fonts/TTF/sazanami-gothic.ttf
filename.Sazanami_Mincho=/usr/local/lib/X11/fonts/TTF/sazanami-mincho.ttf
filename.AR_PL_UMing=/usr/local/lib/X11/fonts/TrueType/uming.ttc
filename.AR_PL_UKai=/usr/local/lib/X11/fonts/TrueType/ukai.ttc
-filename.UnDotum=/usr/local/lib/X11/fonts/TrueType/UnDotum.ttf
-filename.UnDotum_Bold=/usr/local/lib/X11/fonts/TrueType/UnDotumBold.ttf
-filename.UnBatang=/usr/local/lib/X11/fonts/TrueType/UnBatang.ttf
-filename.UnBatang_Bold=/usr/local/lib/X11/fonts/TrueType/UnBatangBold.ttf
+filename.UnDotum=/usr/local/lib/X11/fonts/unfonts-core/UnDotum.ttf
+filename.UnDotum_Bold=/usr/local/lib/X11/fonts/unfonts-core/UnDotumBold.ttf
+filename.UnBatang=/usr/local/lib/X11/fonts/unfonts-core/UnBatang.ttf
+filename.UnBatang_Bold=/usr/local/lib/X11/fonts/unfonts-core/UnBatangBold.ttf
diff --git a/java/openjdk6/files/icedtea/7032388-work_without_cmov_instruction.patch b/java/openjdk6/files/icedtea/7032388-work_without_cmov_instruction.patch
new file mode 100644
index 000000000000..532ad68b9565
--- /dev/null
+++ b/java/openjdk6/files/icedtea/7032388-work_without_cmov_instruction.patch
@@ -0,0 +1,178 @@
+--- hotspot/src/cpu/x86/vm/assembler_x86.cpp 2011-03-30 11:31:16.408872134 -0700
++++ hotspot/src/cpu/x86/vm/assembler_x86.cpp 2011-03-30 11:31:16.084614406 -0700
+@@ -7769,6 +7769,28 @@
+ }
+ }
+
++void MacroAssembler::cmov32(Condition cc, Register dst, Address src) {
++ if (VM_Version::supports_cmov()) {
++ cmovl(cc, dst, src);
++ } else {
++ Label L;
++ jccb(negate_condition(cc), L);
++ movl(dst, src);
++ bind(L);
++ }
++}
++
++void MacroAssembler::cmov32(Condition cc, Register dst, Register src) {
++ if (VM_Version::supports_cmov()) {
++ cmovl(cc, dst, src);
++ } else {
++ Label L;
++ jccb(negate_condition(cc), L);
++ movl(dst, src);
++ bind(L);
++ }
++}
++
+ void MacroAssembler::verify_oop(Register reg, const char* s) {
+ if (!VerifyOops) return;
+
+@@ -9019,14 +9041,7 @@
+ movl(result, cnt1);
+ subl(cnt1, cnt2);
+ push(cnt1);
+- if (VM_Version::supports_cmov()) {
+- cmovl(Assembler::lessEqual, cnt2, result);
+- } else {
+- Label GT_LABEL;
+- jccb(Assembler::greater, GT_LABEL);
+- movl(cnt2, result);
+- bind(GT_LABEL);
+- }
++ cmov32(Assembler::lessEqual, cnt2, result);
+
+ // Is the minimum length zero?
+ testl(cnt2, cnt2);
+--- hotspot/src/cpu/x86/vm/assembler_x86.hpp 2011-03-30 11:31:17.757655562 -0700
++++ hotspot/src/cpu/x86/vm/assembler_x86.hpp 2011-03-30 11:31:17.553920606 -0700
+@@ -2244,10 +2244,13 @@
+
+ // Data
+
+- void cmov(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
++ void cmov32( Condition cc, Register dst, Address src);
++ void cmov32( Condition cc, Register dst, Register src);
+
+- void cmovptr(Condition cc, Register dst, Address src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
+- void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
++ void cmov( Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
++
++ void cmovptr(Condition cc, Register dst, Address src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
++ void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
+
+ void movoop(Register dst, jobject obj);
+ void movoop(Address dst, jobject obj);
+--- hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp 2011-03-30 11:31:18.743456717 -0700
++++ hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp 2011-03-30 11:31:18.541656202 -0700
+@@ -23,6 +23,7 @@
+ */
+
+ #include "precompiled.hpp"
++#include "asm/assembler.hpp"
+ #include "c1/c1_Compilation.hpp"
+ #include "c1/c1_LIRAssembler.hpp"
+ #include "c1/c1_MacroAssembler.hpp"
+@@ -569,24 +570,13 @@
+ __ lea (rdi, Address(rdi, rcx, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
+
+ // compute minimum length (in rax) and difference of lengths (on top of stack)
+- if (VM_Version::supports_cmov()) {
+- __ movl (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
+- __ movl (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
+- __ mov (rcx, rbx);
+- __ subptr (rbx, rax); // subtract lengths
+- __ push (rbx); // result
+- __ cmov (Assembler::lessEqual, rax, rcx);
+- } else {
+- Label L;
+- __ movl (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
+- __ movl (rcx, Address(rax, java_lang_String::count_offset_in_bytes()));
+- __ mov (rax, rbx);
+- __ subptr (rbx, rcx);
+- __ push (rbx);
+- __ jcc (Assembler::lessEqual, L);
+- __ mov (rax, rcx);
+- __ bind (L);
+- }
++ __ movl (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
++ __ movl (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
++ __ mov (rcx, rbx);
++ __ subptr(rbx, rax); // subtract lengths
++ __ push (rbx); // result
++ __ cmov (Assembler::lessEqual, rax, rcx);
++
+ // is minimum length 0?
+ Label noLoop, haveResult;
+ __ testptr (rax, rax);
+--- hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp 2011-03-30 11:31:19.824124145 -0700
++++ hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp 2011-03-30 11:31:19.606167752 -0700
+@@ -23,6 +23,7 @@
+ */
+
+ #include "precompiled.hpp"
++#include "asm/assembler.hpp"
+ #include "c1/c1_Defs.hpp"
+ #include "c1/c1_MacroAssembler.hpp"
+ #include "c1/c1_Runtime1.hpp"
+--- hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp 2011-03-30 11:31:20.910918826 -0700
++++ hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp 2011-03-30 11:31:20.703693030 -0700
+@@ -23,6 +23,7 @@
+ */
+
+ #include "precompiled.hpp"
++#include "asm/assembler.hpp"
+ #include "interpreter/interpreter.hpp"
+ #include "interpreter/interpreterRuntime.hpp"
+ #include "interpreter/templateTable.hpp"
+@@ -1939,18 +1940,10 @@
+ __ movl(temp, Address(array, h, Address::times_8, 0*wordSize));
+ __ bswapl(temp);
+ __ cmpl(key, temp);
+- if (VM_Version::supports_cmov()) {
+- __ cmovl(Assembler::less , j, h); // j = h if (key < array[h].fast_match())
+- __ cmovl(Assembler::greaterEqual, i, h); // i = h if (key >= array[h].fast_match())
+- } else {
+- Label set_i, end_of_if;
+- __ jccb(Assembler::greaterEqual, set_i); // {
+- __ mov(j, h); // j = h;
+- __ jmp(end_of_if); // }
+- __ bind(set_i); // else {
+- __ mov(i, h); // i = h;
+- __ bind(end_of_if); // }
+- }
++ // j = h if (key < array[h].fast_match())
++ __ cmov32(Assembler::less , j, h);
++ // i = h if (key >= array[h].fast_match())
++ __ cmov32(Assembler::greaterEqual, i, h);
+ // while (i+1 < j)
+ __ bind(entry);
+ __ leal(h, Address(i, 1)); // i+1
+@@ -3478,22 +3471,14 @@
+
+ // find a free slot in the monitor block (result in rdx)
+ { Label entry, loop, exit;
+- __ movptr(rcx, monitor_block_top); // points to current entry, starting with top-most entry
+- __ lea(rbx, monitor_block_bot); // points to word before bottom of monitor block
++ __ movptr(rcx, monitor_block_top); // points to current entry, starting with top-most entry
++
++ __ lea(rbx, monitor_block_bot); // points to word before bottom of monitor block
+ __ jmpb(entry);
+
+ __ bind(loop);
+ __ cmpptr(Address(rcx, BasicObjectLock::obj_offset_in_bytes()), (int32_t)NULL_WORD); // check if current entry is used
+-
+-// TODO - need new func here - kbt
+- if (VM_Version::supports_cmov()) {
+- __ cmov(Assembler::equal, rdx, rcx); // if not used then remember entry in rdx
+- } else {
+- Label L;
+- __ jccb(Assembler::notEqual, L);
+- __ mov(rdx, rcx); // if not used then remember entry in rdx
+- __ bind(L);
+- }
++ __ cmovptr(Assembler::equal, rdx, rcx); // if not used then remember entry in rdx
+ __ cmpptr(rax, Address(rcx, BasicObjectLock::obj_offset_in_bytes())); // check if current entry is for same object
+ __ jccb(Assembler::equal, exit); // if same object then stop searching
+ __ addptr(rcx, entry_size); // otherwise advance to next entry