From adinn at redhat.com Thu Aug 1 02:47:25 2013 From: adinn at redhat.com (Andrew Dinn) Date: Thu, 01 Aug 2013 10:47:25 +0100 Subject: [aarch64-port-dev ] Possible problem in MacroAssembler::cmpxchgw Message-ID: <51FA2EAD.2090706@redhat.com> Code is appended below. I think the cmp in this routine probably ought be a cmpw. Does anyone know better? We /probably/ get away with this because oldv will have been written using an operation with an int destination. regards, Andrew Dinn ----------- void MacroAssembler::cmpxchgw(Register oldv, Register newv, Register addr, Register tmp, Label &succeed, Label &fail) { // oldv holds comparison value // newv holds value to write in exchange // addr identifies memory word to compare against/update // tmp returns 0/1 for success/failure Label retry_load, nope; bind(retry_load); // flush and load exclusive from the memory location // and fail if it is not what we expect ldaxrw(tmp, addr); cmp(tmp, oldv); // <----- should be cmpw? br(Assembler::NE, nope); // if we store+flush with no intervening write tmp wil be zero stlxrw(tmp, newv, addr); cbzw(tmp, succeed); // retry so we only ever return after a load fails to compare // ensures we don't return a stale value after a failed write. b(retry_load); // if the memory word differs we return it in oldv and signal a fail bind(nope); mov(oldv, tmp); b(fail); } From edward.nevill at linaro.org Thu Aug 1 03:00:21 2013 From: edward.nevill at linaro.org (edward.nevill at linaro.org) Date: Thu, 1 Aug 2013 11:00:21 +0100 Subject: [aarch64-port-dev ] RFR: Add 2 missing stubs Message-ID: <201308011000.r71A0L6Q015261@fleetfoot.lan> Hi, The following adds 2 stubs that were missing. After this the list of missing stubs is stub(dtrace_object_alloc) \ stub(deoptimize) \ stub(g1_pre_barrier_slow) \ stub(g1_post_barrier_slow) \ stub(fpu2long_stub) \ I am reviewing these. OK to push? Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1375350741 -3600 # Node ID 5cbbbf6c842f00d10e21b827c11a52c83ee97038 # Parent c1cd345fa3810a1d0e58cec9b31419025fb44ae0 Added 2 more missing stubs diff -r c1cd345fa381 -r 5cbbbf6c842f src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Mon Jul 29 18:31:19 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Thu Aug 01 10:52:21 2013 +0100 @@ -1129,6 +1129,20 @@ } break; + case throw_index_exception_id: + { StubFrame f(sasm, "index_range_check_failed", dont_gc_arguments); + oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_index_exception), true); + } + break; + + case throw_array_store_exception_id: + { StubFrame f(sasm, "throw_array_store_exception", dont_gc_arguments); + // tos + 0: link + // + 1: return address + oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), true); + } + break; + default: { StubFrame f(sasm, "unimplemented entry", dont_gc_arguments); __ mov(r0, (int)id); --- CUT HERE --- From adinn at redhat.com Thu Aug 1 03:39:25 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Thu, 01 Aug 2013 10:39:25 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130801103935.464B6484F1@hg.openjdk.java.net> Changeset: a9aa38358706 Author: adinn Date: 2013-08-01 11:33 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/a9aa38358706 Implemented most of the atomic operation support instructions LoadPLocked StorePLocked StoreLConditional StoreIConditional CompareAndSwapI CompareAndSwapL CompareAndSwapP CompareAndSwapN n.b. loadPLocked/StorePLocked have been implemented directly using independent ldaxr and stlxr calls. There is no Load{IL}Locked as the Ideal code expects Store{IL}Conditional to behave as compare and swap operations so they each use a ldaxr/stlxr pair ! src/cpu/aarch64/vm/aarch64.ad Changeset: bbb5461fbcdd Author: adinn Date: 2013-08-01 11:35 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/bbb5461fbcdd corrected error in encoding of ldrw ! src/cpu/aarch64/vm/aarch64.ad From edward.nevill at linaro.org Thu Aug 1 04:24:44 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Thu, 01 Aug 2013 12:24:44 +0100 Subject: [aarch64-port-dev ] Errors in aarch64 C1 caught by the Mauve test suite In-Reply-To: References: <51F4D4EA.5030201@redhat.com> Message-ID: <1375356284.19204.5.camel@fleetfoot.lan> On Mon, 2013-07-29 at 14:32 -0400, Andy Johnson wrote: > 18. make {This re-builds the test harness so that the newly edited path is > used} Hi Andy, I am having difficulty reproducing some of the failures you are seeing. Could you tar up the test suite as it is on your foundation model after step 18 and put it on people.linaro.org. Thanks, Ed. > 19. java Harness -vm " -Xcomp" -showpasses > java.lang.Integer > This verifies that the test harness works on aarch64. > 20. java Harness -vm " -Xcomp" test failures> (e.g. java.util.LinkedList.AcuniaLinkedListTest) From ed at camswl.com Thu Aug 1 07:59:10 2013 From: ed at camswl.com (ed at camswl.com) Date: Thu, 01 Aug 2013 14:59:10 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130801145914.209BC4850F@hg.openjdk.java.net> Changeset: dcb47c3fdac2 Author: Edward Nevill ed at camswl.com Date: 2013-08-01 15:57 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/dcb47c3fdac2 Add 2 new stubs ! src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Changeset: 672688dc73ec Author: Edward Nevill ed at camswl.com Date: 2013-08-01 15:58 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/672688dc73ec merge From aph at redhat.com Fri Aug 2 02:10:52 2013 From: aph at redhat.com (aph at redhat.com) Date: Fri, 02 Aug 2013 09:10:52 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130802091137.5EF2248564@hg.openjdk.java.net> Changeset: d9d274bdde7a Author: aph Date: 2013-08-02 10:08 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/d9d274bdde7a Add a couple of missing #includes. ! src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Changeset: 064f61f7d3a0 Author: aph Date: 2013-08-02 10:10 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/064f61f7d3a0 Merge ! src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp From aph at redhat.com Fri Aug 2 02:09:34 2013 From: aph at redhat.com (Andrew Haley) Date: Fri, 02 Aug 2013 10:09:34 +0100 Subject: [aarch64-port-dev ] Add a couple of missing #includes Message-ID: <51FB774E.5050409@redhat.com> Nothing to see here. Andrew. # HG changeset patch # User aph # Date 1375434503 -3600 # Node ID d9d274bdde7a71eb642ce320e7557d70eea7cee9 # Parent c1cd345fa3810a1d0e58cec9b31419025fb44ae0 Add a couple of missing #includes. diff -r c1cd345fa381 -r d9d274bdde7a src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Mon Jul 29 18:31:19 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Fri Aug 02 10:08:23 2013 +0100 @@ -26,10 +26,11 @@ #include "precompiled.hpp" #include "asm/assembler.hpp" +#include "c1/c1_CodeStubs.hpp" #include "c1/c1_Defs.hpp" #include "c1/c1_MacroAssembler.hpp" #include "c1/c1_Runtime1.hpp" -#include "c1/c1_CodeStubs.hpp" +#include "compiler/disassembler.hpp" #include "interpreter/interpreter.hpp" #include "nativeInst_aarch64.hpp" #include "oops/compiledICHolder.hpp" @@ -38,6 +39,7 @@ #include "register_aarch64.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/signature.hpp" +#include "runtime/vframe.hpp" #include "runtime/vframeArray.hpp" #include "vmreg_aarch64.inline.hpp" From edward.nevill at linaro.org Mon Aug 5 02:47:44 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Mon, 05 Aug 2013 10:47:44 +0100 Subject: [aarch64-port-dev ] RFR: Fix for large frame size adjusts (resend) Message-ID: <1375696064.1953.7.camel@fleetfoot.lan> Hi, The following fixes failures when the frame size is greater than 1<<12. With the fix it handles frame sizes up to 1<<24 wich should be enough? OK to push? Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1375463673 -3600 # Node ID d8e110f4b119bed7019bd4037c3d5fbb8a47d881 # Parent 6a6b3b5dc103536b9c04666219452fff6db5ec3e Fix for large frame adjust diff -r 6a6b3b5dc103 -r d8e110f4b119 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Aug 02 16:50:44 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Aug 02 18:14:33 2013 +0100 @@ -1524,7 +1524,14 @@ if (operand_valid_for_add_sub_immediate((int)imm)) { (this->*insn1)(Rd, Rn, imm); } else { - assert_different_registers(Rd, Rn); + if (Rd == Rn) { + assert(Rd == sp, "only allowed for sp"); + // We know S flag not set so can do this as sequence of add/sub + assert(labs(imm) < (1 << 24), "sp adjust too big"); + (this->*insn1)(Rd, Rn, imm & -(1 << 12)); + (this->*insn1)(Rd, Rd, imm & ((1 << 12)-1)); + return; + } assert(Rd != zr, "overflow in immediate operand"); mov(Rd, (uint64_t)imm); (this->*insn2)(Rd, Rn, Rd, LSL, 0); --- CUT HERE --- From edward.nevill at linaro.org Mon Aug 5 02:51:02 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Mon, 05 Aug 2013 10:51:02 +0100 Subject: [aarch64-port-dev ] RFR: Fix false assertion failure (resend) Message-ID: <1375696262.1953.9.camel@fleetfoot.lan> Hi, The following fixes a false assertion failue which triggers a failure in mauve with fastdebug. OK? Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1375458644 -3600 # Node ID 6a6b3b5dc103536b9c04666219452fff6db5ec3e # Parent 064f61f7d3a09ff01fd3f9b9fd193dc204fb7fd7 Fixed false assertion failure diff -r 064f61f7d3a0 -r 6a6b3b5dc103 src/share/vm/runtime/reflection.cpp --- a/src/share/vm/runtime/reflection.cpp Fri Aug 02 10:10:28 2013 +0100 +++ b/src/share/vm/runtime/reflection.cpp Fri Aug 02 16:50:44 2013 +0100 @@ -376,7 +376,8 @@ } klass = klass->array_klass(dim, CHECK_NULL); oop obj = ArrayKlass::cast(klass)->multi_allocate(len, dimensions, THREAD); - assert(obj->is_array(), "just checking"); + // obj may be NULL is one of the dimensions is 0 + assert(obj == NULL || obj->is_array(), "just checking"); return arrayOop(obj); } --- CUT HERE --- From adinn at redhat.com Mon Aug 5 02:57:53 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Mon, 05 Aug 2013 09:57:53 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130805095804.31E34485D8@hg.openjdk.java.net> Changeset: 2ca05a8b74e9 Author: adinn Date: 2013-08-05 10:54 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/2ca05a8b74e9 Fixed problem with conflation of signed and unsigned comparison Added extra unsigned flags register type to parameterise compares, cmoves and branches based on unsigned comparisons ! src/cpu/aarch64/vm/aarch64.ad Changeset: 65ced9137c19 Author: adinn Date: 2013-08-05 10:55 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/65ced9137c19 Merge From ed at camswl.com Mon Aug 5 08:03:17 2013 From: ed at camswl.com (ed at camswl.com) Date: Mon, 05 Aug 2013 15:03:17 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 3 new changesets Message-ID: <20130805150326.349D0485DB@hg.openjdk.java.net> Changeset: 6a6b3b5dc103 Author: Edward Nevill ed at camswl.com Date: 2013-08-02 16:50 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/6a6b3b5dc103 Fixed false assertion failure ! src/share/vm/runtime/reflection.cpp Changeset: d8e110f4b119 Author: Edward Nevill ed at camswl.com Date: 2013-08-02 18:14 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/d8e110f4b119 Fix for large frame adjust ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Changeset: 560f86cdf664 Author: Edward Nevill ed at camswl.com Date: 2013-08-05 16:03 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/560f86cdf664 merge From omajid at redhat.com Mon Aug 5 11:26:37 2013 From: omajid at redhat.com (Omair Majid) Date: Mon, 05 Aug 2013 14:26:37 -0400 Subject: [aarch64-port-dev ] Missing debug symbols in binaries Message-ID: <51FFEE5D.30205@redhat.com> Hi, While building the aarch64-port in Fedora, we ran into a few build problems: the binaries are missing debug symbols. jdk8 has 3 changesets that help in improving the situation. Since a sync between aarch64-port and jdk8 is not very likely right now, I would like to backport these 3 changesets (should hg-import without any problems) to aarch64-port: http://hg.openjdk.java.net/jdk8/build/jdk/rev/88125d32eb06 http://hg.openjdk.java.net/jdk8/build/jdk/rev/f559fadbf491 http://hg.openjdk.java.net/jdk8/build/rev/cb51fb4789ac Or we can simply carry these patches locally until aarch64-port updates to jdk8-b87 or later. Thanks, Omair -- PGP Key: 66484681 (http://pgp.mit.edu/) Fingerprint = F072 555B 0A17 3957 4E95 0056 F286 F14F 6648 4681 From aph at redhat.com Mon Aug 5 11:28:56 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 05 Aug 2013 19:28:56 +0100 Subject: [aarch64-port-dev ] Missing debug symbols in binaries In-Reply-To: <51FFEE5D.30205@redhat.com> References: <51FFEE5D.30205@redhat.com> Message-ID: <51FFEEE8.5030603@redhat.com> On 08/05/2013 07:26 PM, Omair Majid wrote: > Hi, > > While building the aarch64-port in Fedora, we ran into a few build > problems: the binaries are missing debug symbols. jdk8 has 3 changesets > that help in improving the situation. Since a sync between aarch64-port > and jdk8 is not very likely right now, I would like to backport these 3 > changesets (should hg-import without any problems) to aarch64-port: > > http://hg.openjdk.java.net/jdk8/build/jdk/rev/88125d32eb06 > http://hg.openjdk.java.net/jdk8/build/jdk/rev/f559fadbf491 > http://hg.openjdk.java.net/jdk8/build/rev/cb51fb4789ac OK. Andrew. From omajid at redhat.com Mon Aug 5 13:18:04 2013 From: omajid at redhat.com (Omair Majid) Date: Mon, 05 Aug 2013 16:18:04 -0400 Subject: [aarch64-port-dev ] Missing debug symbols in binaries In-Reply-To: <51FFEEE8.5030603@redhat.com> References: <51FFEE5D.30205@redhat.com> <51FFEEE8.5030603@redhat.com> Message-ID: <5200087C.3000003@redhat.com> On 08/05/2013 02:28 PM, Andrew Haley wrote: > On 08/05/2013 07:26 PM, Omair Majid wrote: >> Hi, >> >> While building the aarch64-port in Fedora, we ran into a few build >> problems: the binaries are missing debug symbols. jdk8 has 3 changesets >> that help in improving the situation. Since a sync between aarch64-port >> and jdk8 is not very likely right now, I would like to backport these 3 >> changesets (should hg-import without any problems) to aarch64-port: >> > > OK. > Whoops, I left out an important detail: >> http://hg.openjdk.java.net/jdk8/build/jdk/rev/88125d32eb06 This one needs 6e01a92ab2e4 [1] backed out first. Then it applies without any changes. 88125d32eb06 looks it fixes a superset of debug symbols, so it should work fine. Thanks, Omair [1] http://hg.openjdk.java.net/aarch64-port/jdk8/jdk/rev/6e01a92ab2e4 -- PGP Key: 66484681 (http://pgp.mit.edu/) Fingerprint = F072 555B 0A17 3957 4E95 0056 F286 F14F 6648 4681 From edward.nevill at linaro.org Fri Aug 2 10:20:18 2013 From: edward.nevill at linaro.org (edward.nevill at linaro.org) Date: Fri, 2 Aug 2013 18:20:18 +0100 Subject: [aarch64-port-dev ] RFR: Fix for large frame size adjusts Message-ID: <201308021720.r72HKI6F022676@fleetfoot.lan> Hi, The following fixes failures when the frame size is greater than 1<<12. With the fix it handles frame sizes up to 1<<24 wich should be enough? OK to push? Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1375463673 -3600 # Node ID d8e110f4b119bed7019bd4037c3d5fbb8a47d881 # Parent 6a6b3b5dc103536b9c04666219452fff6db5ec3e Fix for large frame adjust diff -r 6a6b3b5dc103 -r d8e110f4b119 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Aug 02 16:50:44 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Aug 02 18:14:33 2013 +0100 @@ -1524,7 +1524,14 @@ if (operand_valid_for_add_sub_immediate((int)imm)) { (this->*insn1)(Rd, Rn, imm); } else { - assert_different_registers(Rd, Rn); + if (Rd == Rn) { + assert(Rd == sp, "only allowed for sp"); + // We know S flag not set so can do this as sequence of add/sub + assert(labs(imm) < (1 << 24), "sp adjust too big"); + (this->*insn1)(Rd, Rn, imm & -(1 << 12)); + (this->*insn1)(Rd, Rd, imm & ((1 << 12)-1)); + return; + } assert(Rd != zr, "overflow in immediate operand"); mov(Rd, (uint64_t)imm); (this->*insn2)(Rd, Rn, Rd, LSL, 0); --- CUT HERE --- From edward.nevill at linaro.org Fri Aug 2 08:55:10 2013 From: edward.nevill at linaro.org (edward.nevill at linaro.org) Date: Fri, 2 Aug 2013 16:55:10 +0100 Subject: [aarch64-port-dev ] RFR: Fix false assertion failure Message-ID: <201308021555.r72FtABf019778@fleetfoot.lan> Hi, The following fixes a false assertion failue which triggers a failure in mauve with fastdebug. OK? Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1375458644 -3600 # Node ID 6a6b3b5dc103536b9c04666219452fff6db5ec3e # Parent 064f61f7d3a09ff01fd3f9b9fd193dc204fb7fd7 Fixed false assertion failure diff -r 064f61f7d3a0 -r 6a6b3b5dc103 src/share/vm/runtime/reflection.cpp --- a/src/share/vm/runtime/reflection.cpp Fri Aug 02 10:10:28 2013 +0100 +++ b/src/share/vm/runtime/reflection.cpp Fri Aug 02 16:50:44 2013 +0100 @@ -376,7 +376,8 @@ } klass = klass->array_klass(dim, CHECK_NULL); oop obj = ArrayKlass::cast(klass)->multi_allocate(len, dimensions, THREAD); - assert(obj->is_array(), "just checking"); + // obj may be NULL is one of the dimensions is 0 + assert(obj == NULL || obj->is_array(), "just checking"); return arrayOop(obj); } --- CUT HERE --- From edward.nevill at linaro.org Tue Aug 6 03:03:58 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Tue, 06 Aug 2013 11:03:58 +0100 Subject: [aarch64-port-dev ] Assertion failures in mauve Message-ID: <1375783438.1921.11.camel@fleetfoot.lan> Hi, There are 19 assertion failures in the mauve test suite with fastdebug, builtin sim, -Xcomp. 18 of them are # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp:1439), pid=16692, tid=139736898889472 # assert(sets_flags || uimm || Rd != Rn) failed: insn is a NOP The failing tests are java.awt.Label.PaintTest java.awt.Label.MouseMotionListenerTest java.awt.Label.MouseWheelListenerTest java.awt.Label.MouseListenerTest java.awt.List.ScrollbarPaintTest java.awt.List.PaintTestFilledList java.awt.List.PaintTestEmptyList java.awt.Panel.TestPanelRepaint java.awt.FlowLayout.PaintTestZeroGaps java.awt.FlowLayout.PaintTestBiggerHgap java.awt.FlowLayout.PaintTestZeroVgap java.awt.FlowLayout.PaintTestBiggerVgap java.awt.FlowLayout.PaintTestBasicSetup3 java.awt.FlowLayout.PaintTestBiggerGaps java.awt.FlowLayout.minimumLayoutSize java.awt.FlowLayout.PaintTestBasicSetup1 java.awt.FlowLayout.PaintTestZeroHgap java.awt.FlowLayout.PaintTestBasicSetup2 Can we simply squash this assert? And which is better a) Generate the NOP b) Just return and dont emit any instruction in this instance All the best, Ed. From aph at redhat.com Tue Aug 6 03:08:49 2013 From: aph at redhat.com (Andrew Haley) Date: Tue, 06 Aug 2013 11:08:49 +0100 Subject: [aarch64-port-dev ] RFR: Fix false assertion failure In-Reply-To: <201308021555.r72FtABf019778@fleetfoot.lan> References: <201308021555.r72FtABf019778@fleetfoot.lan> Message-ID: <5200CB31.1000707@redhat.com> On 08/02/2013 04:55 PM, edward.nevill at linaro.org wrote: > Hi, > > The following fixes a false assertion failue which triggers a failure > in mauve with fastdebug. > > OK? Yes, as corrected. if this is in the current hotspot tree, please send the patch to hotspot-dev. Andrew. > --- CUT HERE --- > exporting patch: > # HG changeset patch > # User Edward Nevill ed at camswl.com > # Date 1375458644 -3600 > # Node ID 6a6b3b5dc103536b9c04666219452fff6db5ec3e > # Parent 064f61f7d3a09ff01fd3f9b9fd193dc204fb7fd7 > Fixed false assertion failure > > diff -r 064f61f7d3a0 -r 6a6b3b5dc103 src/share/vm/runtime/reflection.cpp > --- a/src/share/vm/runtime/reflection.cpp Fri Aug 02 10:10:28 2013 +0100 > +++ b/src/share/vm/runtime/reflection.cpp Fri Aug 02 16:50:44 2013 +0100 > @@ -376,7 +376,8 @@ > } > klass = klass->array_klass(dim, CHECK_NULL); > oop obj = ArrayKlass::cast(klass)->multi_allocate(len, dimensions, THREAD); > - assert(obj->is_array(), "just checking"); > + // obj may be NULL is one of the dimensions is 0 if one of the dimensions is 0 > + assert(obj == NULL || obj->is_array(), "just checking"); > return arrayOop(obj); > } > --- CUT HERE --- > From aph at redhat.com Tue Aug 6 03:20:11 2013 From: aph at redhat.com (Andrew Haley) Date: Tue, 06 Aug 2013 11:20:11 +0100 Subject: [aarch64-port-dev ] RFR: Fix for large frame size adjusts In-Reply-To: <201308021720.r72HKI6F022676@fleetfoot.lan> References: <201308021720.r72HKI6F022676@fleetfoot.lan> Message-ID: <5200CDDB.9070502@redhat.com> On 08/02/2013 06:20 PM, edward.nevill at linaro.org wrote: > Hi, > > The following fixes failures when the frame size is greater than 1<<12. > > With the fix it handles frame sizes up to 1<<24 wich should be enough? Looking at the JVM spec, the number of locals is limited to 65536. > OK to push? I think you need to explain "S flag not set". Why is it only allowed for sp? Andrew. > > Ed. > > --- CUT HERE --- > exporting patch: > # HG changeset patch > # User Edward Nevill ed at camswl.com > # Date 1375463673 -3600 > # Node ID d8e110f4b119bed7019bd4037c3d5fbb8a47d881 > # Parent 6a6b3b5dc103536b9c04666219452fff6db5ec3e > Fix for large frame adjust > > diff -r 6a6b3b5dc103 -r d8e110f4b119 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp > --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Aug 02 16:50:44 2013 +0100 > +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Aug 02 18:14:33 2013 +0100 > @@ -1524,7 +1524,14 @@ > if (operand_valid_for_add_sub_immediate((int)imm)) { > (this->*insn1)(Rd, Rn, imm); > } else { > - assert_different_registers(Rd, Rn); > + if (Rd == Rn) { > + assert(Rd == sp, "only allowed for sp"); > + // We know S flag not set so can do this as sequence of add/sub > + assert(labs(imm) < (1 << 24), "sp adjust too big"); > + (this->*insn1)(Rd, Rn, imm & -(1 << 12)); > + (this->*insn1)(Rd, Rd, imm & ((1 << 12)-1)); > + return; > + } > assert(Rd != zr, "overflow in immediate operand"); > mov(Rd, (uint64_t)imm); > (this->*insn2)(Rd, Rn, Rd, LSL, 0); > --- CUT HERE --- > From aph at redhat.com Tue Aug 6 03:21:12 2013 From: aph at redhat.com (Andrew Haley) Date: Tue, 06 Aug 2013 11:21:12 +0100 Subject: [aarch64-port-dev ] Assertion failures in mauve In-Reply-To: <1375783438.1921.11.camel@fleetfoot.lan> References: <1375783438.1921.11.camel@fleetfoot.lan> Message-ID: <5200CE18.4010403@redhat.com> On 08/06/2013 11:03 AM, Edward Nevill wrote: > Hi, > > There are 19 assertion failures in the mauve test suite with fastdebug, builtin sim, -Xcomp. > > 18 of them are > > # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp:1439), pid=16692, tid=139736898889472 > # assert(sets_flags || uimm || Rd != Rn) failed: insn is a NOP > > The failing tests are > > java.awt.Label.PaintTest > java.awt.Label.MouseMotionListenerTest > java.awt.Label.MouseWheelListenerTest > java.awt.Label.MouseListenerTest > java.awt.List.ScrollbarPaintTest > java.awt.List.PaintTestFilledList > java.awt.List.PaintTestEmptyList > java.awt.Panel.TestPanelRepaint > java.awt.FlowLayout.PaintTestZeroGaps > java.awt.FlowLayout.PaintTestBiggerHgap > java.awt.FlowLayout.PaintTestZeroVgap > java.awt.FlowLayout.PaintTestBiggerVgap > java.awt.FlowLayout.PaintTestBasicSetup3 > java.awt.FlowLayout.PaintTestBiggerGaps > java.awt.FlowLayout.minimumLayoutSize > java.awt.FlowLayout.PaintTestBasicSetup1 > java.awt.FlowLayout.PaintTestZeroHgap > java.awt.FlowLayout.PaintTestBasicSetup2 > > Can we simply squash this assert? And which is better > > a) Generate the NOP > b) Just return and dont emit any instruction in this instance That depends on why we're generating the NOP. Can you have a look, please? Andrew. From edward.nevill at linaro.org Tue Aug 6 03:47:44 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Tue, 06 Aug 2013 11:47:44 +0100 Subject: [aarch64-port-dev ] RFR: Fix for large frame size adjusts In-Reply-To: <5200CDDB.9070502@redhat.com> References: <201308021720.r72HKI6F022676@fleetfoot.lan> <5200CDDB.9070502@redhat.com> Message-ID: <1375786064.1921.25.camel@fleetfoot.lan> On Tue, 2013-08-06 at 11:20 +0100, Andrew Haley wrote: > On 08/02/2013 06:20 PM, edward.nevill at linaro.org wrote: > > Hi, > > > > The following fixes failures when the frame size is greater than 1<<12. > > > I think you need to explain "S flag not set". > Why is it only allowed for sp? Sorry, I mean S bit, not S flag, IE bit 29 of the add/sub instruction. The S bit is never set for ADD/SUB sp, sp, #N. Therefore it is safe to do SUB Rd, Rn, # as two subtracts only when Rd == Rn == sp. Otherwise the flags could be set incorrectly. If we knew that the S bit was not set then this could be applied more generally. However, this information is not readily available in 'wrap_add_sub_imm' and would need to be derived, or passed in. In general, would it be better to transpose ADD/SUB Rd, Rn, # to two ADD/SUB instructions where possible, rather than MOV Rd, # ADD/SUB Rd, Rn, Rd ? All the best, Ed. From adinn at redhat.com Tue Aug 6 09:57:31 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Tue, 06 Aug 2013 16:57:31 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 4 new changesets Message-ID: <20130806165743.93B0E48613@hg.openjdk.java.net> Changeset: afe7594c205d Author: adinn Date: 2013-08-05 14:37 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/afe7594c205d removed Unimplemenetd to enable OptoRuntime exception blob ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Changeset: 5b2cca2d1a43 Author: adinn Date: 2013-08-05 15:42 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/5b2cca2d1a43 ensure exception blob saves sp rather than esp ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Changeset: 7d8701583c5c Author: adinn Date: 2013-08-06 17:56 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/7d8701583c5c fixed passing return address for rethrow exception ! src/cpu/aarch64/vm/aarch64.ad Changeset: abf544a531f8 Author: adinn Date: 2013-08-06 17:57 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/abf544a531f8 Merge From adinn at redhat.com Tue Aug 6 15:01:16 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Tue, 06 Aug 2013 22:01:16 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: corrected branch in tailjmp/tailcall to be a jump not a call (i.e. br not bl) Message-ID: <20130806220120.648E348633@hg.openjdk.java.net> Changeset: b40ce6e86194 Author: adinn Date: 2013-08-06 23:01 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/b40ce6e86194 corrected branch in tailjmp/tailcall to be a jump not a call (i.e. br not bl) ! src/cpu/aarch64/vm/aarch64.ad From edward.nevill at linaro.org Wed Aug 7 05:40:56 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Wed, 07 Aug 2013 13:40:56 +0100 Subject: [aarch64-port-dev ] RFR: Fix for large frame size adjusts (Take 2) Message-ID: <1375879256.3993.40.camel@fleetfoot.lan> Hi, OK. Here is my second attempt at this. I have split out wrap_add_sub_imm_insn into 2 adding a wrap_adds_subs_imm_insn. The info about whether is sets the flag is not available at this stage. It is encoded in the names of the functions passed to wrapp_add_sum_imm_insn (ie add, adds, sub, subs etc). The code for wrap_add_sub_imm_insn now generates in order of preference 1) Rd, Rn, #imm 2) Rd, Rn, #(imm & -(1 << 12)); Rd, Rd, #(imm & ((1<< 12)-1)) 3) MOV Rd, #imm; Rd, Rn, Rd The code for wrap_adds_subs_imm_insn generates 1) Rd, Rn, #imm 2) MOV Rd, #imm; Rd, Rn, Rd OK? Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1375877611 -3600 # Node ID 5230539fd8f96ce9493a9a2a4c01fc7b65c9bad6 # Parent 560f86cdf664e23f462120f2998dd4e15af7d32b Fix large immediates diff -r 560f86cdf664 -r 5230539fd8f9 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Aug 07 13:13:31 2013 +0100 @@ -1521,17 +1521,30 @@ void MacroAssembler::wrap_add_sub_imm_insn(Register Rd, Register Rn, unsigned imm, add_sub_imm_insn insn1, add_sub_reg_insn insn2) { + assert(Rd != zr, "Rd = zr and not setting flags?"); if (operand_valid_for_add_sub_immediate((int)imm)) { (this->*insn1)(Rd, Rn, imm); } else { - if (Rd == Rn) { - assert(Rd == sp, "only allowed for sp"); - // We know S flag not set so can do this as sequence of add/sub - assert(labs(imm) < (1 << 24), "sp adjust too big"); + if (labs(imm) < (1 << 24)) { (this->*insn1)(Rd, Rn, imm & -(1 << 12)); (this->*insn1)(Rd, Rd, imm & ((1 << 12)-1)); - return; + } else { + assert_different_registers(Rd, Rn); + mov(Rd, (uint64_t)imm); + (this->*insn2)(Rd, Rn, Rd, LSL, 0); } + } +} + +// Seperate vsn which sets the flags. Optimisations are more restricted +// because we must set the flags correctly. +void MacroAssembler::wrap_adds_subs_imm_insn(Register Rd, Register Rn, unsigned imm, + add_sub_imm_insn insn1, + add_sub_reg_insn insn2) { + if (operand_valid_for_add_sub_immediate((int)imm)) { + (this->*insn1)(Rd, Rn, imm); + } else { + assert_different_registers(Rd, Rn); assert(Rd != zr, "overflow in immediate operand"); mov(Rd, (uint64_t)imm); (this->*insn2)(Rd, Rn, Rd, LSL, 0); diff -r 560f86cdf664 -r 5230539fd8f9 src/cpu/aarch64/vm/macroAssembler_aarch64.hpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Aug 07 13:13:31 2013 +0100 @@ -1226,6 +1226,10 @@ void wrap_add_sub_imm_insn(Register Rd, Register Rn, unsigned imm, add_sub_imm_insn insn1, add_sub_reg_insn insn2); + // Seperate vsn which sets the flags + void wrap_adds_subs_imm_insn(Register Rd, Register Rn, unsigned imm, + add_sub_imm_insn insn1, + add_sub_reg_insn insn2); #define WRAP(INSN) \ void INSN(Register Rd, Register Rn, unsigned imm) { \ @@ -1247,6 +1251,27 @@ } WRAP(add) WRAP(addw) WRAP(sub) WRAP(subw) + +#undef WRAP +#define WRAP(INSN) \ + void INSN(Register Rd, Register Rn, unsigned imm) { \ + wrap_adds_subs_imm_insn(Rd, Rn, imm, &Assembler::INSN, &Assembler::INSN); \ + } \ + \ + void INSN(Register Rd, Register Rn, Register Rm, \ + enum shift_kind kind, unsigned shift = 0) { \ + Assembler::INSN(Rd, Rn, Rm, kind, shift); \ + } \ + \ + void INSN(Register Rd, Register Rn, Register Rm) { \ + Assembler::INSN(Rd, Rn, Rm); \ + } \ + \ + void INSN(Register Rd, Register Rn, Register Rm, \ + ext::operation option, int amount = 0) { \ + Assembler::INSN(Rd, Rn, Rm, option, amount); \ + } + WRAP(adds) WRAP(addsw) WRAP(subs) WRAP(subsw) void tableswitch(Register index, jint lowbound, jint highbound, From ed at camswl.com Wed Aug 7 06:14:12 2013 From: ed at camswl.com (Edward Nevill) Date: Wed, 07 Aug 2013 14:14:12 +0100 Subject: [aarch64-port-dev ] guarantee failure in java.awt.dnd.DnDTest Message-ID: <1375881252.3993.49.camel@fleetfoot.lan> Hi, I am getting the following guarantee failure # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/share/vm/runtime/synchronizer.cpp:1548), pid=4962, tid=139755822925568 # guarantee(!mid->is_busy()) failed: invariant in java.awt.dnd.DnDTest in the Mauve test suite. The command I am using is xvfb-run <...>/jdk8/build/linux-aarch64-normal-clientlowdebug/images/j2sdk-image/bin/java -Xcomp RunnerProcess And then on stdin I enter gnu.testlet.java.awt.dnd.DnDTest The failure is 100% repeatable. A pre-compiled copy of the Mauve test suite I am using may be downloaded from http://people.linaro.org/~andy.johnson/mauve-aarch64.tgz All the best, Ed. From aph at redhat.com Wed Aug 7 07:13:25 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 07 Aug 2013 15:13:25 +0100 Subject: [aarch64-port-dev ] guarantee failure in java.awt.dnd.DnDTest In-Reply-To: <1375881252.3993.49.camel@fleetfoot.lan> References: <1375881252.3993.49.camel@fleetfoot.lan> Message-ID: <52025605.2040805@redhat.com> On 08/07/2013 02:14 PM, Edward Nevill wrote: > Hi, > > I am getting the following guarantee failure > > # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/share/vm/runtime/synchronizer.cpp:1548), pid=4962, tid=139755822925568 > # guarantee(!mid->is_busy()) failed: invariant > > in java.awt.dnd.DnDTest in the Mauve test suite. > > The command I am using is > > xvfb-run <...>/jdk8/build/linux-aarch64-normal-clientlowdebug/images/j2sdk-image/bin/java -Xcomp RunnerProcess > > And then on stdin I enter > > gnu.testlet.java.awt.dnd.DnDTest > > The failure is 100% repeatable. > > A pre-compiled copy of the Mauve test suite I am using may be downloaded from > > http://people.linaro.org/~andy.johnson/mauve-aarch64.tgz I'll have a look. Thanks, Andrew. From ed at camswl.com Wed Aug 7 07:28:30 2013 From: ed at camswl.com (Edward Nevill) Date: Wed, 07 Aug 2013 15:28:30 +0100 Subject: [aarch64-port-dev ] Add missing --with-override-nashorn Message-ID: <1375885710.3993.55.camel@fleetfoot.lan> Hi, The following patch adds the missing --with-override-nashorn to configure. All the other options are there (--with-override-hotspot, --with-override-jdk etc), just this one is missing. This is causing problems for our CI loop. Regards, Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1375885009 -3600 # Node ID 276f43662fe277205c2497391247110796a3956d # Parent 85dd3c10d826e89f2e67234bd99f87101d6eec64 Add missing --with-overide-nashorn diff -r 85dd3c10d826 -r 276f43662fe2 common/autoconf/generated-configure.sh --- a/common/autoconf/generated-configure.sh Fri Jul 26 15:49:11 2013 +0100 +++ b/common/autoconf/generated-configure.sh Wed Aug 07 15:16:49 2013 +0100 @@ -1006,6 +1006,7 @@ with_override_jaxws with_override_hotspot with_override_jdk +with_override_nashorn with_import_hotspot with_msvcr_dll with_dxsdk @@ -1760,6 +1761,7 @@ --with-override-jaxws use this jaxws dir for the build --with-override-hotspot use this hotspot dir for the build --with-override-jdk use this jdk dir for the build + --with-override-nashorn use this nashorn dir for the build --with-import-hotspot import hotspot binaries from this jdk image or hotspot build dist dir instead of building from source @@ -15991,6 +15993,11 @@ withval=$with_override_jdk; fi +# Check whether --with-override-nashorn was given. +if test "${with_override_nashorn+set}" = set; then : + withval=$with_override_nashorn; +fi + if test "x$with_override_langtools" != x; then CURDIR="$PWD" diff -r 85dd3c10d826 -r 276f43662fe2 common/autoconf/source-dirs.m4 --- a/common/autoconf/source-dirs.m4 Fri Jul 26 15:49:11 2013 +0100 +++ b/common/autoconf/source-dirs.m4 Wed Aug 07 15:16:49 2013 +0100 @@ -180,6 +180,9 @@ AC_ARG_WITH(override-jdk, [AS_HELP_STRING([--with-override-jdk], [use this jdk dir for the build])]) +AC_ARG_WITH(override-nashorn, [AS_HELP_STRING([--with-override-nashorn], + [use this nashorn dir for the build])]) + if test "x$with_override_langtools" != x; then CURDIR="$PWD" cd "$with_override_langtools" --- CUT HERE --- From aph at redhat.com Wed Aug 7 07:34:07 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 07 Aug 2013 15:34:07 +0100 Subject: [aarch64-port-dev ] Add missing --with-override-nashorn In-Reply-To: <1375885710.3993.55.camel@fleetfoot.lan> References: <1375885710.3993.55.camel@fleetfoot.lan> Message-ID: <52025ADF.9000601@redhat.com> On 08/07/2013 03:28 PM, Edward Nevill wrote: > The following patch adds the missing --with-override-nashorn to > configure. > > All the other options are there (--with-override-hotspot, --with-override-jdk etc), just this one is missing. > > This is causing problems for our CI loop. OK, Andrew. From ed at camswl.com Wed Aug 7 07:36:05 2013 From: ed at camswl.com (ed at camswl.com) Date: Wed, 07 Aug 2013 14:36:05 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8: Add missing --with-overide-nashorn Message-ID: <20130807143605.E1DEA4867D@hg.openjdk.java.net> Changeset: 276f43662fe2 Author: Edward Nevill ed at camswl.com Date: 2013-08-07 15:16 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/rev/276f43662fe2 Add missing --with-overide-nashorn ! common/autoconf/generated-configure.sh ! common/autoconf/source-dirs.m4 From aph at redhat.com Wed Aug 7 08:33:23 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 07 Aug 2013 16:33:23 +0100 Subject: [aarch64-port-dev ] Missing debug symbols in binaries In-Reply-To: <5200087C.3000003@redhat.com> References: <51FFEE5D.30205@redhat.com> <51FFEEE8.5030603@redhat.com> <5200087C.3000003@redhat.com> Message-ID: <520268C3.40207@redhat.com> On 08/05/2013 09:18 PM, Omair Majid wrote: > On 08/05/2013 02:28 PM, Andrew Haley wrote: >> On 08/05/2013 07:26 PM, Omair Majid wrote: >>> Hi, >>> >>> While building the aarch64-port in Fedora, we ran into a few build >>> problems: the binaries are missing debug symbols. jdk8 has 3 changesets >>> that help in improving the situation. Since a sync between aarch64-port >>> and jdk8 is not very likely right now, I would like to backport these 3 >>> changesets (should hg-import without any problems) to aarch64-port: >>> >> >> OK. >> > > Whoops, I left out an important detail: > >>> http://hg.openjdk.java.net/jdk8/build/jdk/rev/88125d32eb06 > > This one needs 6e01a92ab2e4 [1] backed out first. Then it applies > without any changes. 88125d32eb06 looks it fixes a superset of debug > symbols, so it should work fine. Sure. Please go ahead. Andrew. From aph at redhat.com Wed Aug 7 09:00:19 2013 From: aph at redhat.com (aph at redhat.com) Date: Wed, 07 Aug 2013 16:00:19 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8: 2 new changesets Message-ID: <20130807160019.5692F48681@hg.openjdk.java.net> Changeset: d1e8169b98c8 Author: andrew Date: 2013-05-22 13:49 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/rev/d1e8169b98c8 8015087: Provide debugging information for programs Summary: Enable debugging info on programs in OpenJDK builds Reviewed-by: erikj ! common/makefiles/NativeCompilation.gmk Changeset: 61f0ba503520 Author: aph Date: 2013-08-07 16:48 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/rev/61f0ba503520 Merge From aph at redhat.com Wed Aug 7 08:57:49 2013 From: aph at redhat.com (aph at redhat.com) Date: Wed, 07 Aug 2013 15:57:49 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/jdk: 3 new changesets Message-ID: <20130807155937.86B9248680@hg.openjdk.java.net> Changeset: e0ca97a8cb36 Author: andrew Date: 2013-05-22 13:48 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/jdk/rev/e0ca97a8cb36 8015087: Provide debugging information for programs Summary: Add missing debug info to unpack200 and jexec Reviewed-by: erikj ! makefiles/CompileLaunchers.gmk Changeset: 73799ba02d7f Author: omajid Date: 2013-08-05 15:38 -0400 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/jdk/rev/73799ba02d7f Backout 6e01a92ab2e4 ! makefiles/CompileNativeLibraries.gmk Changeset: 29e9f26732a2 Author: andrew Date: 2013-05-04 17:04 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/jdk/rev/29e9f26732a2 8011366: Enable debug info on all libraries for OpenJDK builds Summary: The build should not be turning off debugging if it has been requested. Reviewed-by: erikj, dholmes ! makefiles/CompileNativeLibraries.gmk From aph at redhat.com Wed Aug 7 09:23:43 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 07 Aug 2013 17:23:43 +0100 Subject: [aarch64-port-dev ] Patch: Bulk rename brx86 -> blrt Message-ID: <5202748F.2010203@redhat.com> brx86 is no longer a good name for a runtime call. Renamed everywhere. Andrew. comparing with ssh://aph at hg.openjdk.java.net/aarch64-port/jdk8//hotspot searching for changes remote: X11 forwarding request failed on channel 0 changeset: 4811:a3a743a1de8a branch: aarch64_c2 user: aph date: Wed Aug 07 17:20:09 2013 +0100 summary: Bulk rename brx86 -> blrt. diff -r abf544a531f8 -r a3a743a1de8a src/cpu/aarch64/vm/assembler_aarch64.hpp --- a/src/cpu/aarch64/vm/assembler_aarch64.hpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/cpu/aarch64/vm/assembler_aarch64.hpp Wed Aug 07 17:20:09 2013 +0100 @@ -1764,8 +1764,8 @@ return from the simulator run() call with STATUS_HALT? The linking code will call fatal() when it sees STATUS_HALT. - brx86 Xn, Wm - brx86 Xn, #gpargs, #fpargs, #type + blrt Xn, Wm + blrt Xn, #gpargs, #fpargs, #type Xn holds the 64 bit x86 branch_address call format is encoded either as immediate data in the call or in register Wm. In the latter case @@ -1819,16 +1819,16 @@ 10987654321098765432109876543210 PSEUDO_HALT = 0x11100000000000000000000000000000 - PSEUDO_BRX86 = 0x11000000000000000_______________ - PSEUDO_BRX86R = 0x1100000000000000100000__________ + PSEUDO_BLRT = 0x11000000000000000_______________ + PSEUDO_BLRTR = 0x1100000000000000100000__________ PSEUDO_NOTIFY = 0x10100000000000000_______________ - instr[31,29] = op1 : 111 ==> HALT, 110 ==> BRX86/BRX86R, 101 ==> NOTIFY + instr[31,29] = op1 : 111 ==> HALT, 110 ==> BLRT/BLRTR, 101 ==> NOTIFY - for BRX86 + for BLRT instr[14,11] = #gpargs, instr[10,7] = #fpargs instr[6,5] = #type, instr[4,0] = Rn - for BRX86R + for BLRTR instr[9,5] = Rm, instr[4,0] = Rn for NOTIFY instr[14:0] = type : 0 ==> entry, 1 ==> reentry, 2 ==> exit, 3 ==> bcstart @@ -1847,7 +1847,7 @@ } } - void brx86(Register Rn, int gpargs, int fpargs, int type) { + void blrt(Register Rn, int gpargs, int fpargs, int type) { if (UseBuiltinSim) { starti; f(0b110, 31 ,29); @@ -1863,7 +1863,7 @@ } } - void brx86(Register Rn, Register Rm) { + void blrt(Register Rn, Register Rm) { if (UseBuiltinSim) { starti; f(0b110, 31 ,29); diff -r abf544a531f8 -r a3a743a1de8a src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Aug 07 17:20:09 2013 +0100 @@ -496,7 +496,7 @@ __ adr(r0, poll); __ str(r0, Address(rthread, JavaThread::saved_exception_pc_offset())); __ mov(rscratch1, CAST_FROM_FN_PTR(address, SharedRuntime::get_poll_stub)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ pop(0x3ffffffc, sp); // integer registers except lr & sp & r0 & r1 __ mov(rscratch1, r0); __ pop(0x3, sp); // r0 & r1 @@ -2126,7 +2126,7 @@ __ mov(c_rarg4, j_rarg4); if (copyfunc_addr == NULL) { // Use C version if stub was not generated __ mov(rscratch1, RuntimeAddress(C_entry)); - __ brx86(rscratch1, 5, 0, 1); + __ blrt(rscratch1, 5, 0, 1); } else { #ifndef PRODUCT if (PrintC1Statistics) { @@ -2606,7 +2606,7 @@ num_gpargs++; } } - __ brx86(rscratch1, num_gpargs, num_fpargs, type); + __ blrt(rscratch1, num_gpargs, num_fpargs, type); } if (info != NULL) { diff -r abf544a531f8 -r a3a743a1de8a src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Wed Aug 07 17:20:09 2013 +0100 @@ -61,7 +61,7 @@ // do the call mov(rscratch1, RuntimeAddress(entry)); - brx86(rscratch1, args_size + 1, 8, 1); + blrt(rscratch1, args_size + 1, 8, 1); bind(retaddr); int call_offset = offset(); // verify callee-saved register @@ -555,7 +555,7 @@ __ set_last_Java_frame(sp, rfp, retaddr, rscratch1); // do the call __ mov(rscratch1, RuntimeAddress(target)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); OopMapSet* oop_maps = new OopMapSet(); oop_maps->add_gc_map(__ offset(), oop_map); diff -r abf544a531f8 -r a3a743a1de8a src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Aug 07 17:20:09 2013 +0100 @@ -912,7 +912,7 @@ // We add 1 to number_of_arguments because the thread in arg0 is // not counted mov(rscratch1, entry_point); - brx86(rscratch1, number_of_gp_arguments + 1, number_of_fp_arguments, type); + blrt(rscratch1, number_of_gp_arguments + 1, number_of_fp_arguments, type); if (retaddr) bind(*retaddr); @@ -1500,7 +1500,7 @@ mov(c_rarg2, sp); mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64)); // call(c_rarg3); - brx86(c_rarg3, 3, 0, 1); + blrt(c_rarg3, 3, 0, 1); hlt(0); } diff -r abf544a531f8 -r a3a743a1de8a src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp --- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Wed Aug 07 17:20:09 2013 +0100 @@ -317,7 +317,7 @@ __ mov(c_rarg0, rmethod); __ mov(c_rarg1, lr); __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite))); - __ brx86(rscratch1, 2, 0, 0); + __ blrt(rscratch1, 2, 0, 0); __ pop_CPU_state(); // restore sp @@ -1171,8 +1171,8 @@ assert((unsigned)fpargs < 32, "eek!"); __ mov(rscratch1, RuntimeAddress(dest)); __ mov(rscratch2, (gpargs << 6) | (fpargs << 2) | type); - __ brx86(rscratch1, rscratch2); - // __ brx86(rscratch1, gpargs, fpargs, type); + __ blrt(rscratch1, rscratch2); + // __ blrt(rscratch1, gpargs, fpargs, type); } } @@ -1970,7 +1970,7 @@ } else { __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans_and_transition))); } - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); // Restore any method result value restore_native_result(masm, ret_type, stack_slots); @@ -2379,7 +2379,7 @@ #endif // ASSERT __ mov(c_rarg0, rthread); __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info))); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); // Need to have an oopmap that tells fetch_unroll_info where to @@ -2511,7 +2511,7 @@ __ mov(c_rarg0, rthread); __ movw(c_rarg1, rcpool); // second arg: exec_mode __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames))); - __ brx86(rscratch1, 2, 0, 0); + __ blrt(rscratch1, 2, 0, 0); // Set an oopmap for the call site // Use the same PC we used for the last java frame @@ -2595,7 +2595,7 @@ __ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap))); - __ brx86(rscratch1, 2, 0, MacroAssembler::ret_type_integral); + __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral); __ bind(retaddr); // Set an oopmap for the call site @@ -2708,7 +2708,7 @@ __ mov(c_rarg0, rthread); __ movw(c_rarg1, (unsigned)Deoptimization::Unpack_uncommon_trap); __ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames))); - __ brx86(rscratch1, 2, 0, MacroAssembler::ret_type_integral); + __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral); // Set an oopmap for the call site // Use the same PC we used for the last java frame @@ -2774,7 +2774,7 @@ // Do the call __ mov(c_rarg0, rthread); __ lea(rscratch1, RuntimeAddress(call_ptr)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); // Set an oopmap for the call site. This oopmap will map all @@ -2847,7 +2847,7 @@ __ mov(c_rarg0, rthread); __ mov(rscratch1, RuntimeAddress(destination)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); } @@ -2979,7 +2979,7 @@ __ set_last_Java_frame(sp, rfp, the_pc, rscratch1); __ mov(c_rarg0, rthread); __ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, OptoRuntime::handle_exception_C))); - __ brx86(rscratch1, 1, 0, MacroAssembler::ret_type_integral); + __ blrt(rscratch1, 1, 0, MacroAssembler::ret_type_integral); // Set an oopmap for the call site. This oopmap will only be used if we // are unwinding the stack. Hence, all locations will be dead. diff -r abf544a531f8 -r a3a743a1de8a src/cpu/aarch64/vm/stubGenerator_aarch64.cpp --- a/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Wed Aug 07 17:20:09 2013 +0100 @@ -773,7 +773,7 @@ #endif BLOCK_COMMENT("call MacroAssembler::debug"); __ mov(rscratch1, CAST_FROM_FN_PTR(address, MacroAssembler::debug64)); - __ brx86(rscratch1, 3, 0, 1); + __ blrt(rscratch1, 3, 0, 1); __ mov(sp, r19); // restore rsp __ pop(0x7fffffff, sp); __ ldr(lr, Address(sp, 0)); @@ -1278,7 +1278,7 @@ __ mov(c_rarg0, rthread); BLOCK_COMMENT("call runtime_entry"); __ mov(rscratch1, runtime_entry); - __ brx86(rscratch1, 3 /* number_of_arguments */, 0, 1); + __ blrt(rscratch1, 3 /* number_of_arguments */, 0, 1); // Generate oop map OopMap* map = new OopMap(framesize, 0); diff -r abf544a531f8 -r a3a743a1de8a src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp --- a/src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp Wed Aug 07 17:20:09 2013 +0100 @@ -941,7 +941,7 @@ __ ldrw(rscratch1, Address(rmethod, Method::call_format_offset())); // Call the native method. - __ brx86(r10, rscratch1); + __ blrt(r10, rscratch1); __ get_method(rmethod); // result potentially in r0 or v0 @@ -998,7 +998,7 @@ // __ mov(c_rarg0, rthread); __ mov(rscratch2, CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans)); - __ brx86(rscratch2, 1, 0, 0); + __ blrt(rscratch2, 1, 0, 0); __ get_method(rmethod); __ reinit_heapbase(); __ bind(Continue); @@ -1045,7 +1045,7 @@ __ pusha(); // XXX only save smashed registers __ mov(c_rarg0, rthread); __ mov(rscratch2, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages)); - __ brx86(rscratch2, 0, 0, 0); + __ blrt(rscratch2, 0, 0, 0); __ popa(); // XXX only restore smashed registers __ reinit_heapbase(); __ bind(no_reguard); diff -r abf544a531f8 -r a3a743a1de8a src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp --- a/src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp Tue Aug 06 17:57:22 2013 +0100 +++ b/src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp Wed Aug 07 17:20:09 2013 +0100 @@ -51,7 +51,7 @@ push(saved_regs, sp); mov(c_rarg0, ThreadLocalStorage::thread_index()); mov(r19, CAST_FROM_FN_PTR(address, pthread_getspecific)); - brx86(r19, 1, 0, 1); + blrt(r19, 1, 0, 1); if (dst != c_rarg0) { mov(dst, c_rarg0); } changeset: 4812:485594fad22e tag: tip parent: 4806:560f86cdf664 user: aph date: Wed Aug 07 17:22:00 2013 +0100 summary: Bulk rename brx86 -> blrt. diff -r 560f86cdf664 -r 485594fad22e src/cpu/aarch64/vm/assembler_aarch64.hpp --- a/src/cpu/aarch64/vm/assembler_aarch64.hpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/assembler_aarch64.hpp Wed Aug 07 17:22:00 2013 +0100 @@ -1764,8 +1764,8 @@ return from the simulator run() call with STATUS_HALT? The linking code will call fatal() when it sees STATUS_HALT. - brx86 Xn, Wm - brx86 Xn, #gpargs, #fpargs, #type + blrt Xn, Wm + blrt Xn, #gpargs, #fpargs, #type Xn holds the 64 bit x86 branch_address call format is encoded either as immediate data in the call or in register Wm. In the latter case @@ -1819,16 +1819,16 @@ 10987654321098765432109876543210 PSEUDO_HALT = 0x11100000000000000000000000000000 - PSEUDO_BRX86 = 0x11000000000000000_______________ - PSEUDO_BRX86R = 0x1100000000000000100000__________ + PSEUDO_BLRT = 0x11000000000000000_______________ + PSEUDO_BLRTR = 0x1100000000000000100000__________ PSEUDO_NOTIFY = 0x10100000000000000_______________ - instr[31,29] = op1 : 111 ==> HALT, 110 ==> BRX86/BRX86R, 101 ==> NOTIFY + instr[31,29] = op1 : 111 ==> HALT, 110 ==> BLRT/BLRTR, 101 ==> NOTIFY - for BRX86 + for BLRT instr[14,11] = #gpargs, instr[10,7] = #fpargs instr[6,5] = #type, instr[4,0] = Rn - for BRX86R + for BLRTR instr[9,5] = Rm, instr[4,0] = Rn for NOTIFY instr[14:0] = type : 0 ==> entry, 1 ==> reentry, 2 ==> exit, 3 ==> bcstart @@ -1847,7 +1847,7 @@ } } - void brx86(Register Rn, int gpargs, int fpargs, int type) { + void blrt(Register Rn, int gpargs, int fpargs, int type) { if (UseBuiltinSim) { starti; f(0b110, 31 ,29); @@ -1863,7 +1863,7 @@ } } - void brx86(Register Rn, Register Rm) { + void blrt(Register Rn, Register Rm) { if (UseBuiltinSim) { starti; f(0b110, 31 ,29); diff -r 560f86cdf664 -r 485594fad22e src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 @@ -496,7 +496,7 @@ __ adr(r0, poll); __ str(r0, Address(rthread, JavaThread::saved_exception_pc_offset())); __ mov(rscratch1, CAST_FROM_FN_PTR(address, SharedRuntime::get_poll_stub)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ pop(0x3ffffffc, sp); // integer registers except lr & sp & r0 & r1 __ mov(rscratch1, r0); __ pop(0x3, sp); // r0 & r1 @@ -2126,7 +2126,7 @@ __ mov(c_rarg4, j_rarg4); if (copyfunc_addr == NULL) { // Use C version if stub was not generated __ mov(rscratch1, RuntimeAddress(C_entry)); - __ brx86(rscratch1, 5, 0, 1); + __ blrt(rscratch1, 5, 0, 1); } else { #ifndef PRODUCT if (PrintC1Statistics) { @@ -2606,7 +2606,7 @@ num_gpargs++; } } - __ brx86(rscratch1, num_gpargs, num_fpargs, type); + __ blrt(rscratch1, num_gpargs, num_fpargs, type); } if (info != NULL) { diff -r 560f86cdf664 -r 485594fad22e src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 @@ -61,7 +61,7 @@ // do the call mov(rscratch1, RuntimeAddress(entry)); - brx86(rscratch1, args_size + 1, 8, 1); + blrt(rscratch1, args_size + 1, 8, 1); bind(retaddr); int call_offset = offset(); // verify callee-saved register @@ -555,7 +555,7 @@ __ set_last_Java_frame(sp, rfp, retaddr, rscratch1); // do the call __ mov(rscratch1, RuntimeAddress(target)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); OopMapSet* oop_maps = new OopMapSet(); oop_maps->add_gc_map(__ offset(), oop_map); diff -r 560f86cdf664 -r 485594fad22e src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 @@ -912,7 +912,7 @@ // We add 1 to number_of_arguments because the thread in arg0 is // not counted mov(rscratch1, entry_point); - brx86(rscratch1, number_of_gp_arguments + 1, number_of_fp_arguments, type); + blrt(rscratch1, number_of_gp_arguments + 1, number_of_fp_arguments, type); if (retaddr) bind(*retaddr); @@ -1500,7 +1500,7 @@ mov(c_rarg2, sp); mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64)); // call(c_rarg3); - brx86(c_rarg3, 3, 0, 1); + blrt(c_rarg3, 3, 0, 1); hlt(0); } diff -r 560f86cdf664 -r 485594fad22e src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp --- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 @@ -317,7 +317,7 @@ __ mov(c_rarg0, rmethod); __ mov(c_rarg1, lr); __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite))); - __ brx86(rscratch1, 2, 0, 0); + __ blrt(rscratch1, 2, 0, 0); __ pop_CPU_state(); // restore sp @@ -1171,8 +1171,8 @@ assert((unsigned)fpargs < 32, "eek!"); __ mov(rscratch1, RuntimeAddress(dest)); __ mov(rscratch2, (gpargs << 6) | (fpargs << 2) | type); - __ brx86(rscratch1, rscratch2); - // __ brx86(rscratch1, gpargs, fpargs, type); + __ blrt(rscratch1, rscratch2); + // __ blrt(rscratch1, gpargs, fpargs, type); } } @@ -1970,7 +1970,7 @@ } else { __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans_and_transition))); } - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); // Restore any method result value restore_native_result(masm, ret_type, stack_slots); @@ -2379,7 +2379,7 @@ #endif // ASSERT __ mov(c_rarg0, rthread); __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info))); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); // Need to have an oopmap that tells fetch_unroll_info where to @@ -2511,7 +2511,7 @@ __ mov(c_rarg0, rthread); __ movw(c_rarg1, rcpool); // second arg: exec_mode __ mov(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames))); - __ brx86(rscratch1, 2, 0, 0); + __ blrt(rscratch1, 2, 0, 0); // Set an oopmap for the call site // Use the same PC we used for the last java frame @@ -2595,7 +2595,7 @@ __ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap))); - __ brx86(rscratch1, 2, 0, MacroAssembler::ret_type_integral); + __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral); __ bind(retaddr); // Set an oopmap for the call site @@ -2708,7 +2708,7 @@ __ mov(c_rarg0, rthread); __ movw(c_rarg1, (unsigned)Deoptimization::Unpack_uncommon_trap); __ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames))); - __ brx86(rscratch1, 2, 0, MacroAssembler::ret_type_integral); + __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral); // Set an oopmap for the call site // Use the same PC we used for the last java frame @@ -2774,7 +2774,7 @@ // Do the call __ mov(c_rarg0, rthread); __ lea(rscratch1, RuntimeAddress(call_ptr)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); // Set an oopmap for the call site. This oopmap will map all @@ -2847,7 +2847,7 @@ __ mov(c_rarg0, rthread); __ mov(rscratch1, RuntimeAddress(destination)); - __ brx86(rscratch1, 1, 0, 1); + __ blrt(rscratch1, 1, 0, 1); __ bind(retaddr); } @@ -2980,7 +2980,7 @@ __ set_last_Java_frame(noreg, noreg, the_pc, rscratch1); __ mov(c_rarg0, rthread); __ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, OptoRuntime::handle_exception_C))); - __ brx86(rscratch1, 1, 0, MacroAssembler::ret_type_integral); + __ blrt(rscratch1, 1, 0, MacroAssembler::ret_type_integral); // Set an oopmap for the call site. This oopmap will only be used if we // are unwinding the stack. Hence, all locations will be dead. diff -r 560f86cdf664 -r 485594fad22e src/cpu/aarch64/vm/stubGenerator_aarch64.cpp --- a/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 @@ -773,7 +773,7 @@ #endif BLOCK_COMMENT("call MacroAssembler::debug"); __ mov(rscratch1, CAST_FROM_FN_PTR(address, MacroAssembler::debug64)); - __ brx86(rscratch1, 3, 0, 1); + __ blrt(rscratch1, 3, 0, 1); __ mov(sp, r19); // restore rsp __ pop(0x7fffffff, sp); __ ldr(lr, Address(sp, 0)); @@ -1278,7 +1278,7 @@ __ mov(c_rarg0, rthread); BLOCK_COMMENT("call runtime_entry"); __ mov(rscratch1, runtime_entry); - __ brx86(rscratch1, 3 /* number_of_arguments */, 0, 1); + __ blrt(rscratch1, 3 /* number_of_arguments */, 0, 1); // Generate oop map OopMap* map = new OopMap(framesize, 0); diff -r 560f86cdf664 -r 485594fad22e src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp --- a/src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 @@ -941,7 +941,7 @@ __ ldrw(rscratch1, Address(rmethod, Method::call_format_offset())); // Call the native method. - __ brx86(r10, rscratch1); + __ blrt(r10, rscratch1); __ get_method(rmethod); // result potentially in r0 or v0 @@ -998,7 +998,7 @@ // __ mov(c_rarg0, rthread); __ mov(rscratch2, CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans)); - __ brx86(rscratch2, 1, 0, 0); + __ blrt(rscratch2, 1, 0, 0); __ get_method(rmethod); __ reinit_heapbase(); __ bind(Continue); @@ -1045,7 +1045,7 @@ __ pusha(); // XXX only save smashed registers __ mov(c_rarg0, rthread); __ mov(rscratch2, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages)); - __ brx86(rscratch2, 0, 0, 0); + __ blrt(rscratch2, 0, 0, 0); __ popa(); // XXX only restore smashed registers __ reinit_heapbase(); __ bind(no_reguard); diff -r 560f86cdf664 -r 485594fad22e src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp --- a/src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp Mon Aug 05 16:03:11 2013 +0100 +++ b/src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 @@ -51,7 +51,7 @@ push(saved_regs, sp); mov(c_rarg0, ThreadLocalStorage::thread_index()); mov(r19, CAST_FROM_FN_PTR(address, pthread_getspecific)); - brx86(r19, 1, 0, 1); + blrt(r19, 1, 0, 1); if (dst != c_rarg0) { mov(dst, c_rarg0); } From aph at redhat.com Wed Aug 7 09:56:15 2013 From: aph at redhat.com (aph at redhat.com) Date: Wed, 07 Aug 2013 16:56:15 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Bulk rename brx86 -> blrt. Message-ID: <20130807165619.1AB0448689@hg.openjdk.java.net> Changeset: 074ae524f3e0 Author: aph Date: 2013-08-07 17:22 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/074ae524f3e0 Bulk rename brx86 -> blrt. ! src/cpu/aarch64/vm/assembler_aarch64.hpp ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp ! src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp ! src/cpu/aarch64/vm/stubGenerator_aarch64.cpp ! src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp ! src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp From aph at redhat.com Wed Aug 7 09:58:44 2013 From: aph at redhat.com (aph at redhat.com) Date: Wed, 07 Aug 2013 16:58:44 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130807165850.4698C4868A@hg.openjdk.java.net> Changeset: e641aad53975 Author: aph Date: 2013-08-07 17:20 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/e641aad53975 Bulk rename brx86 -> blrt. ! src/cpu/aarch64/vm/assembler_aarch64.hpp ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp ! src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp ! src/cpu/aarch64/vm/stubGenerator_aarch64.cpp ! src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp ! src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp Changeset: 944178b702b7 Author: aph Date: 2013-08-07 17:58 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/944178b702b7 merge From aph at redhat.com Wed Aug 7 10:24:15 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 07 Aug 2013 18:24:15 +0100 Subject: [aarch64-port-dev ] RFR: Fix for large frame size adjusts (Take 2) In-Reply-To: <1375879256.3993.40.camel@fleetfoot.lan> References: <1375879256.3993.40.camel@fleetfoot.lan> Message-ID: <520282BF.8070805@redhat.com> On 08/07/2013 01:40 PM, Edward Nevill wrote: > Hi, > > OK. Here is my second attempt at this. I have split out wrap_add_sub_imm_insn into 2 adding a wrap_adds_subs_imm_insn. > > The info about whether is sets the flag is not available at this stage. It is encoded in the names of the functions passed to wrapp_add_sum_imm_insn (ie add, adds, sub, subs etc). > > The code for wrap_add_sub_imm_insn now generates in order of preference > > 1) Rd, Rn, #imm > 2) Rd, Rn, #(imm & -(1 << 12)); Rd, Rd, #(imm & ((1<< 12)-1)) > 3) MOV Rd, #imm; Rd, Rn, Rd > > The code for wrap_adds_subs_imm_insn generates > > 1) Rd, Rn, #imm > 2) MOV Rd, #imm; Rd, Rn, Rd > > OK? OK, thanks. Andrew. From aph at redhat.com Wed Aug 7 09:55:23 2013 From: aph at redhat.com (aph at redhat.com) Date: Wed, 07 Aug 2013 16:55:23 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130807165528.F3D0F48687@hg.openjdk.java.net> Changeset: 8caab41f6d4d Author: aph Date: 2013-08-07 17:53 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/8caab41f6d4d Dummy commit ! THIRD_PARTY_README Changeset: 01a96b82ceb2 Author: aph Date: 2013-08-07 17:54 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/01a96b82ceb2 Merge From ed at camswl.com Thu Aug 8 01:49:15 2013 From: ed at camswl.com (ed at camswl.com) Date: Thu, 08 Aug 2013 08:49:15 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130808084922.B02F2486C9@hg.openjdk.java.net> Changeset: 349f9f9c0330 Author: Edward Nevill ed at camswl.com Date: 2013-08-08 09:47 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/349f9f9c0330 Fix large immediates ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Changeset: e7864bbb8765 Author: Edward Nevill ed at camswl.com Date: 2013-08-08 09:48 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/e7864bbb8765 merge From adinn at redhat.com Thu Aug 8 02:44:18 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Thu, 08 Aug 2013 09:44:18 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 5 new changesets Message-ID: <20130808094430.27A4A486CD@hg.openjdk.java.net> Changeset: b57677bf9acd Author: adinn Date: 2013-08-06 23:05 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/b57677bf9acd removed unnecessary compare after polling page read ! src/cpu/aarch64/vm/aarch64.ad Changeset: edf2c46dc27a Author: adinn Date: 2013-08-07 16:06 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/edf2c46dc27a Implemented PartialSubtypeCheck ! src/cpu/aarch64/vm/aarch64.ad Changeset: 520a5325de73 Author: adinn Date: 2013-08-08 10:11 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/520a5325de73 Merge Changeset: a0e02b43890b Author: adinn Date: 2013-08-08 10:11 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/a0e02b43890b Merge Changeset: aa50ef27c300 Author: adinn Date: 2013-08-08 10:43 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/aa50ef27c300 modified arch description file to use blrt instead of brx86 ! src/cpu/aarch64/vm/aarch64.ad From adinn at redhat.com Thu Aug 8 03:25:54 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Thu, 08 Aug 2013 10:25:54 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130808102600.5AA2D486CF@hg.openjdk.java.net> Changeset: 5b3f5ec73c9a Author: adinn Date: 2013-08-08 11:22 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/5b3f5ec73c9a Disabled sim bccheck callback by default -- n.b. *requires* latest sim This is only of significance for builds with BULTIN_SIM set. Note that it depends upon changes made in the simulator so don't forget to update your sim tree and remake it when you pull this change. The change means that by default the simulator will be told *not* to employ the bccheck callback. This should significantly speed up -Xcomp code but also means that stack backtraces and bytecode breaks will no longer work. Listing of compiled methods and handling of relocatable breaks should still be ok. If you want the old behaviour you need to pass -XX:-DisableBCCheck on the Java run command line. ! src/cpu/aarch64/vm/aarch64_call.cpp ! src/cpu/aarch64/vm/globals_aarch64.hpp ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp ! src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp ! src/share/vm/c1/c1_Compilation.cpp ! src/share/vm/c1/c1_Runtime1.cpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/opto/compile.cpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: 44cdbf906394 Author: adinn Date: 2013-08-08 11:24 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/44cdbf906394 Merge From edward.nevill at linaro.org Fri Aug 9 02:10:50 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Fri, 09 Aug 2013 10:10:50 +0100 Subject: [aarch64-port-dev ] Assertion failures in mauve In-Reply-To: <5200CE18.4010403@redhat.com> References: <1375783438.1921.11.camel@fleetfoot.lan> <5200CE18.4010403@redhat.com> Message-ID: <1376039450.29937.36.camel@fleetfoot.lan> On Tue, 2013-08-06 at 11:21 +0100, Andrew Haley wrote: > On 08/06/2013 11:03 AM, Edward Nevill wrote: > > > > # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp:1439), pid=16692, tid=139736898889472 > > # assert(sets_flags || uimm || Rd != Rn) failed: insn is a NOP > > > > The failing tests are > > > > java.awt.Label.PaintTest [17 more failing tests deleted] > That depends on why we're generating the NOP. Can you have a look, > please? All 18 test cases fail when trying to compile the same method 37808 1980 !b java.awt.FlowLayout::preferredLayoutSize (274 bytes) Here is the relevant section of code from jdk/src/share/classes/java/awt/FlowLayout.java ([...] indicates irrelevant sections of code which have been elided). public Dimension preferredLayoutSize(Container target) { [...] int maxAscent = 0; int maxDescent = 0; [...] int baseline = m.getBaseline(d.width, d.height); if (baseline >= 0) { maxAscent = Math.max(maxAscent, baseline); maxDescent = Math.max(maxDescent, d.height - baseline); } [...] dim.height = Math.max(maxAscent + maxDescent, dim.height); [...] } Now, m.getBaseline is inlined and either returns -1, or throws an exception. Therefore the code following is dead code eliminated. maxAscent and maxDescent are then constant propagated. The following is the LIR generated. +PrintIRWithLIR 192 1 i102 i24 + i24 move [int:0|I] [R156|I] add [R156|I] [int:0|I] [R157|I] which after register allocation becomes +PrintLIR 222 move [int:0|I] [c_rarg0|I] 224 add [c_rarg0|I] [int:0|I] [c_rarg0|I] which causes the assert failure above. My own feeling is that we should fix this by silently suppressing the generation of the NOP in the back end. Trying to fix the in the LIR is going to lead to non trivial changes in shared code. All the best, Ed. From edward.nevill at linaro.org Fri Aug 9 02:26:50 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Fri, 09 Aug 2013 10:26:50 +0100 Subject: [aarch64-port-dev ] NOPs in LIR (was Re: Assertion failures in mauve) In-Reply-To: <5200CE18.4010403@redhat.com> References: <1375783438.1921.11.camel@fleetfoot.lan> <5200CE18.4010403@redhat.com> Message-ID: <1376040410.25872.2.camel@fleetfoot.lan> On Tue, 2013-08-06 at 11:21 +0100, Andrew Haley wrote: > On 08/06/2013 11:03 AM, Edward Nevill wrote: > > > > # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp:1439), pid=16692, tid=139736898889472 > > # assert(sets_flags || uimm || Rd != Rn) failed: insn is a NOP > > > > The failing tests are > > > > java.awt.Label.PaintTest [17 more failing tests deleted] > That depends on why we're generating the NOP. Can you have a look, > please? All 18 test cases fail when trying to compile the same method 37808 1980 !b java.awt.FlowLayout::preferredLayoutSize (274 bytes) Here is the relevant section of code from jdk/src/share/classes/java/awt/FlowLayout.java ([...] indicates irrelevant sections of code which have been elided). public Dimension preferredLayoutSize(Container target) { [...] int maxAscent = 0; int maxDescent = 0; [...] int baseline = m.getBaseline(d.width, d.height); if (baseline >= 0) { maxAscent = Math.max(maxAscent, baseline); maxDescent = Math.max(maxDescent, d.height - baseline); } [...] dim.height = Math.max(maxAscent + maxDescent, dim.height); [...] } Now, m.getBaseline is inlined and either returns -1, or throws an exception. Therefore the code following is dead code eliminated. maxAscent and maxDescent are then constant propagated. The following is the LIR generated. +PrintIRWithLIR 192 1 i102 i24 + i24 move [int:0|I] [R156|I] add [R156|I] [int:0|I] [R157|I] which after register allocation becomes +PrintLIR 222 move [int:0|I] [c_rarg0|I] 224 add [c_rarg0|I] [int:0|I] [c_rarg0|I] which causes the assert failure above. My own feeling is that we should fix this by silently suppressing the generation of the NOP in the back end. Trying to fix the in the LIR is going to lead to non trivial changes in shared code. All the best, Ed. From ed at camswl.com Fri Aug 9 04:16:32 2013 From: ed at camswl.com (Edward Nevill) Date: Fri, 09 Aug 2013 12:16:32 +0100 Subject: [aarch64-port-dev ] NOPs in LIR (was Re: Assertion failures in mauve) In-Reply-To: <1376040410.25872.2.camel@fleetfoot.lan> References: <1375783438.1921.11.camel@fleetfoot.lan> <5200CE18.4010403@redhat.com> <1376040410.25872.2.camel@fleetfoot.lan> Message-ID: <1376046992.27435.5.camel@fleetfoot.lan> On Fri, 2013-08-09 at 10:26 +0100, Edward Nevill wrote: > On Tue, 2013-08-06 at 11:21 +0100, Andrew Haley wrote: > > On 08/06/2013 11:03 AM, Edward Nevill wrote: > > > > > > # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp:1439), pid=16692, tid=139736898889472 > > > # assert(sets_flags || uimm || Rd != Rn) failed: insn is a NOP > > > > > > The failing tests are > > > > > > java.awt.Label.PaintTest Apologies for the duplicate post. Mailer problems. To reproduce this in the mauve test suite with the slowdebug builtin sim vsn do <...>linux-aarch64-normal-client-slowdebug/images/j2sdk-image/bin/java -Xcomp RunnerProcess and then on stdin enter gnu.testlet.Label.PaintTest A short time later you should get the assertion failure. A pre-compiled version of mauve may be downloaded from http://people.linaro.org/~andy.johnson/mauve-aarch64.tgz Regards, Ed. From aph at redhat.com Fri Aug 9 06:42:17 2013 From: aph at redhat.com (Andrew Haley) Date: Fri, 09 Aug 2013 14:42:17 +0100 Subject: [aarch64-port-dev ] Assertion failures in mauve In-Reply-To: <1376039450.29937.36.camel@fleetfoot.lan> References: <1375783438.1921.11.camel@fleetfoot.lan> <5200CE18.4010403@redhat.com> <1376039450.29937.36.camel@fleetfoot.lan> Message-ID: <5204F1B9.4010104@redhat.com> On 08/09/2013 10:10 AM, Edward Nevill wrote: > On Tue, 2013-08-06 at 11:21 +0100, Andrew Haley wrote: >> On 08/06/2013 11:03 AM, Edward Nevill wrote: >>> >>> # Internal Error (/home/ed/work/ssl/jdk8/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp:1439), pid=16692, tid=139736898889472 >>> # assert(sets_flags || uimm || Rd != Rn) failed: insn is a NOP >>> >>> The failing tests are >>> >>> java.awt.Label.PaintTest > > [17 more failing tests deleted] > >> That depends on why we're generating the NOP. Can you have a look, >> please? > > All 18 test cases fail when trying to compile the same method > > 37808 1980 !b java.awt.FlowLayout::preferredLayoutSize (274 bytes) > > Here is the relevant section of code from jdk/src/share/classes/java/awt/FlowLayout.java ([...] indicates irrelevant sections of code which have been elided). > > public Dimension preferredLayoutSize(Container target) { > [...] > int maxAscent = 0; > int maxDescent = 0; > [...] > int baseline = m.getBaseline(d.width, d.height); > if (baseline >= 0) { > maxAscent = Math.max(maxAscent, baseline); > maxDescent = Math.max(maxDescent, d.height - baseline); > } > [...] > dim.height = Math.max(maxAscent + maxDescent, dim.height); > [...] > } > > Now, m.getBaseline is inlined and either returns -1, or throws an exception. Therefore the code following is dead code eliminated. maxAscent and maxDescent are then constant propagated. > > The following is the LIR generated. > > +PrintIRWithLIR > > 192 1 i102 i24 + i24 > move [int:0|I] [R156|I] > add [R156|I] [int:0|I] [R157|I] > > which after register allocation becomes > > +PrintLIR > > 222 move [int:0|I] [c_rarg0|I] > 224 add [c_rarg0|I] [int:0|I] [c_rarg0|I] > > which causes the assert failure above. > > My own feeling is that we should fix this by silently suppressing the generation of the NOP in the back end. Trying to fix the in the LIR is going to lead to non trivial changes in shared code. I don't think we can do that in the assembler, because I think that add w1, w1, 0 is not a NOP: it sets the top bits of X1. Fixed thusly. Andrew. changeset: 4817:62c56934d893 tag: tip parent: 4814:074ae524f3e0 user: aph date: Fri Aug 09 14:41:12 2013 +0100 summary: C1: don't generate code for add rN, rN, #0. diff -r 074ae524f3e0 -r 62c56934d893 src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Aug 07 17:22:00 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Fri Aug 09 14:41:12 2013 +0100 @@ -1661,6 +1661,11 @@ // cpu register - constant jint c = right->as_constant_ptr()->as_jint(); + assert(code == lir_add || code == lir_sub, "mismatched arithmetic op"); + if (c == 0 && dreg == lreg) { + COMMENT("effective nop elided"); + return; + } switch(left->type()) { case T_INT: switch (code) { @@ -1685,12 +1690,10 @@ } else if (left->is_double_cpu()) { Register lreg_lo = left->as_register_lo(); - Register lreg_hi = left->as_register_hi(); if (right->is_double_cpu()) { // cpu register - cpu register Register rreg_lo = right->as_register_lo(); - Register rreg_hi = right->as_register_hi(); switch (code) { case lir_add: __ add (dest->as_register_lo(), lreg_lo, rreg_lo); break; case lir_sub: __ sub (dest->as_register_lo(), lreg_lo, rreg_lo); break; @@ -1703,9 +1706,15 @@ } else if (right->is_constant()) { jlong c = right->as_constant_ptr()->as_jlong_bits(); + Register dreg = as_reg(dest); + assert(code == lir_add || code == lir_sub, "mismatched arithmetic op"); + if (c == 0 && dreg == lreg_lo) { + COMMENT("effective nop elided"); + return; + } switch (code) { - case lir_add: __ add(dest->as_register_lo(), lreg_lo, c); break; - case lir_sub: __ sub(dest->as_register_lo(), lreg_lo, c); break; + case lir_add: __ add(dreg, lreg_lo, c); break; + case lir_sub: __ sub(dreg, lreg_lo, c); break; default: ShouldNotReachHere(); } From aph at redhat.com Fri Aug 9 06:49:09 2013 From: aph at redhat.com (aph at redhat.com) Date: Fri, 09 Aug 2013 13:49:09 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130809134917.685C74874B@hg.openjdk.java.net> Changeset: 62c56934d893 Author: aph Date: 2013-08-09 14:41 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/62c56934d893 C1: don't generate code for add rN, rN, #0. ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Changeset: 64eb1c82b7fe Author: aph Date: 2013-08-09 14:48 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/64eb1c82b7fe merge From adinn at redhat.com Fri Aug 9 09:38:58 2013 From: adinn at redhat.com (Andrew Dinn) Date: Fri, 09 Aug 2013 17:38:58 +0100 Subject: [aarch64-port-dev ] Request review of fix for forward_exception_handler Message-ID: <52051B22.5090809@redhat.com> The following patch to StubGenerator::generate_forward_exception() appears to be necessary to make exception forwarding work. diff -r 0d89d051c190 src/cpu/aarch64/vm/stubGenerator_aarch64.cpp --- a/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Fri Aug 09 16:25:29 2013 +0100 +++ b/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Fri Aug 09 16:26:08 2013 +0100 @@ -504,6 +504,8 @@ __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), rthread, c_rarg1); + // restore lr + __ mov(lr, r19); // setup r0 & r3 & clear pending exception __ mov(r3, r19); __ mov(r19, r0); The reason for this is less than obvious so I'll explain where it goes wrong under C2 -- n.b. I think the fact that we are entering this routine is itself an error but I am not thereby convinced that the patch is unnecesaary. I am seeing an exception return from a call to native method java/security/AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; The native wrapper method checks for a pending exception when the native code returns and punts to Stub::forward exception when it finds it is not null. Before doing so it calls leave(). simcputrace shows it executing this: 0x00007fffed1708d0: mov sp, xfp 0x00007fffed1708d4: ldp xfp, xlr, [sp],#16 0x00007fffed1708d8: ldr xscratch1, [xthread,#8] 0x00007fffed1708dc: cbnz xscratch1, 0x00007fffed1708e4 0x00007fffed1708e4: b Stub::forward exception ; {runtime_call} So, when we enter the exception forwarding code we have no frame and the return address into the caller of AccessController.doPrivileged is in register lr. The exception forwarder calls into the runtime to find the relevant handler passing the thread and return address. It loads the exception from the thread into r0, clearing the thread field and jumps to the returned address 0x00007fffed07a5a0: ldr xscratch1, [xthread,#8] 0x00007fffed07a5a4: cbnz xscratch1, Stub::forward exception+120 0x0x7fffed07a618 0x00007fffed07a618: mov x1, xlr 0x00007fffed07a61c: mov x19, xlr 0x00007fffed07a620: mov x0, xthread 0x00007fffed07a624: stp xscratch1, xmethod, [sp,#-16]! 0x00007fffed07a628: movz xscratch1, #0xcc92 0x00007fffed07a62c: movk xscratch1, #0xf74b, lsl #16 0x00007fffed07a630: movk xscratch1, #0x7fff, lsl #32 0x00007fffed07a634: brx86 xscratch1, #3, #0, #1 0x00007fffed07a638: ldp xscratch1, xmethod, [sp],#16 0x00007fffed07a63c: mov x3, x19 0x00007fffed07a640: mov x19, x0 0x00007fffed07a644: ldr x0, [xthread,#8] 0x00007fffed07a648: str xzr, [xthread,#8] 0x00007fffed07a64c: cbnz x0, Stub::forward exception+288 0x0x7fffed07a6c0 0x00007fffed07a6c0: br x19 n.b. 0x7ffff74bcc92 is SharedRuntime::exception_handler_for_return_address(JavaThread*, unsigned char*). Note that the exception forward handler saves xlr in x19 as well as passing it into the native call via x1 so it can restore it into r3 after the call -- the handler expects an oop in r0 and a return address in r3. On x86 this pair of moves is not needed because the call to leave has still left the return address on the stack. Instead the x86 code pops the top of the stack into rdx after the branch into the runtime. The important thing to note here is that on AArch64 the brx86 call trashes lr, leaving it containing the address after the brx86 call. Whereas on x86 the return address passed in rdx is for the caller of the native wrapper. This is the thing I believe to be wrong. Her eis how it continues to calamity. In the case I am looking at exception_handler_for_return_address uses the value passed in x1 to identify the correct caller continuation (it is at the end of method java/net/URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;) 0x00007fffed07a6c0: br x19 [Exception Handler] 0x00007fffed1b8750: b 0x00007fffed07f060 ; {runtime_call} As you can see it immediately punts to the opto handling method OptoRuntime::handle_exception_Java: 0x00007fffed07f060: stp xfp, xlr, [sp,#-16]! 0x00007fffed07f064: str x0, [xthread,#704] 0x00007fffed07f068: str x3, [xthread,#712] 0x00007fffed07f06c: adr xscratch1, 0x00007fffed07f06c 0x00007fffed07f070: str xscratch1, [xthread,#512] 0x00007fffed07f074: mov xscratch1, sp 0x00007fffed07f078: str xscratch1, [xthread,#504] 0x00007fffed07f07c: str xfp, [xthread,#520] 0x00007fffed07f080: mov x0, xthread ;; 0x7FFFF74B3018 0x00007fffed07f084: movz xscratch1, #0x3018 0x00007fffed07f088: movk xscratch1, #0xf74b, lsl #16 0x00007fffed07f08c: movk xscratch1, #0x7fff, lsl #32 0x00007fffed07f090: movk xscratch1, #0x0, lsl #48 0x00007fffed07f094: brx86 xscratch1, #1, #0, #1 OptoRuntime::handle_exception_Java sets up details of the current java sp/fp/pc in the thread and then calls OptoRuntime::handle_exception_C. Note that it creates a frame for itself at entry. Unfortunately, the value in xlr is not the address in URLClassLoader.findClass where the exception occurred but the address in forward_exception just following the brx86. OptoRuntime::handle_exception_C looks 2 frames up to find this address and asserts that it belongs to a nmethod. Only it doesn't! So, my fix makes the exception forwarder code copy r19 back to xlr after the brx86 call as well as copying it into r1. I think this analysis is correct. It certainly allows the code to continue further albeit only to the point where the uncaught exception (an NPE) pops out of main. Can anyone see any problems with this? regards, Andrew Dinn ----------- From aph at redhat.com Fri Aug 9 10:04:58 2013 From: aph at redhat.com (Andrew Haley) Date: Fri, 09 Aug 2013 18:04:58 +0100 Subject: [aarch64-port-dev ] Request review of fix for forward_exception_handler In-Reply-To: <52051B22.5090809@redhat.com> References: <52051B22.5090809@redhat.com> Message-ID: <5205213A.80208@redhat.com> On 08/09/2013 05:38 PM, Andrew Dinn wrote: > Can anyone see any problems with this? I don't think so. In essence, the assertion is bogus: the throwing PC has been correctly saved in r3, so it doesn't need to be saved in the stack as well. Please add a comment that explains why we need to do this, with a pointer to the assertion. I'd be tempted to #ifdef ASSERT it as well. Andrew. From aph at redhat.com Sat Aug 10 02:27:08 2013 From: aph at redhat.com (Andrew Haley) Date: Sat, 10 Aug 2013 10:27:08 +0100 Subject: [aarch64-port-dev ] Request review of fix for forward_exception_handler In-Reply-To: <5205213A.80208@redhat.com> References: <52051B22.5090809@redhat.com> <5205213A.80208@redhat.com> Message-ID: <5206076C.2010202@redhat.com> On 08/09/2013 06:04 PM, Andrew Haley wrote: > I'd be tempted to #ifdef ASSERT it as well. On second thoughts I wouldn't so that, though. Andrew. From adinn at redhat.com Mon Aug 12 01:50:17 2013 From: adinn at redhat.com (Andrew Dinn) Date: Mon, 12 Aug 2013 09:50:17 +0100 Subject: [aarch64-port-dev ] Mixing of aarch64_c2 and default branch code Message-ID: <5208A1C9.905@redhat.com> As of revision 4769 (SHA1 Id: 08a289cd5e41) of the hotspot tree my C2 changes in the aarch64_c2 branch started being merged into the default branch. Specifically, these are changes to file aarch64.ad and sharedRuntime_aarch64.cpp which are the only files which contains different code to default. So, at revision 4768 file aarch64.ad contains the small set of dummy rules which existed before the aarch64_c2 branch was created. At revision 4769 it contains the fairly large set of rules I had developed up to that point in the aarch64_c2 branch. Similarly, at revision 4768 sharedRuntime_aarch64.cpp contains empty definitions for the code which generates several of the C2-specific handlers whereas at 4769 it contains the definitions I added to aarch64_c2. I am not sure what happened at the merge point but it looks as if the aarch64_c2 changes were pulled into the default branch rather than the other way round. This conflation of aarch64_c2 and default code appears to have continued from that point on (again I am not sure exactly how) because the latest revision for the default tree (4827) appears to include my latest copy of aarch64.ad. This doesn't actually matter as far as building the C1/C2 variants goes because the C2 code (in aarch64.ad or generated from it) does not get included in the build process unless you configure either a tiered or a C2 build. However, it does make it a little easier for me to make changes which break C1. I don't know whether it is worth continuing with a separate aarch64_c2 branch given that the code bases are now effectively merged. Anyone have any opinions on this? regards, Andrew Dinn ----------- From edward.nevill at linaro.org Mon Aug 12 02:41:34 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Mon, 12 Aug 2013 10:41:34 +0100 Subject: [aarch64-port-dev ] Mixing of aarch64_c2 and default branch code In-Reply-To: <5208A1C9.905@redhat.com> References: <5208A1C9.905@redhat.com> Message-ID: <1376300494.1960.8.camel@fleetfoot.lan> On Mon, 2013-08-12 at 09:50 +0100, Andrew Dinn wrote: > This doesn't actually matter as far as building the C1/C2 variants goes > because the C2 code (in aarch64.ad or generated from it) does not get > included in the build process unless you configure either a tiered or a > C2 build. However, it does make it a little easier for me to make > changes which break C1. I don't know whether it is worth continuing with > a separate aarch64_c2 branch given that the code bases are now > effectively merged. Anyone have any opinions on this? Hi Andrew, Yes, I vote for merging to a single branch. Can the jvm.cfg read -client KNOWN -server IGNORE This is for the CI loop running jtreg. jtreg specifies -server on many of the tests. For C2 this would need to be manually changed to -server KNOWN. All the best, Ed. From aph at redhat.com Mon Aug 12 03:28:14 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 12 Aug 2013 11:28:14 +0100 Subject: [aarch64-port-dev ] Mixing of aarch64_c2 and default branch code In-Reply-To: <5208A1C9.905@redhat.com> References: <5208A1C9.905@redhat.com> Message-ID: <5208B8BE.6020705@redhat.com> On 08/12/2013 09:50 AM, Andrew Dinn wrote: > This doesn't actually matter as far as building the C1/C2 variants goes > because the C2 code (in aarch64.ad or generated from it) does not get > included in the build process unless you configure either a tiered or a > C2 build. However, it does make it a little easier for me to make > changes which break C1. I don't know whether it is worth continuing with > a separate aarch64_c2 branch given that the code bases are now > effectively merged. Anyone have any opinions on this? Branches are a Bad Thing. Merging them has been a continuing PITA. Andrew. From adinn at redhat.com Mon Aug 12 03:29:10 2013 From: adinn at redhat.com (Andrew Dinn) Date: Mon, 12 Aug 2013 11:29:10 +0100 Subject: [aarch64-port-dev ] Mixing of aarch64_c2 and default branch code In-Reply-To: <1376300494.1960.8.camel@fleetfoot.lan> References: <5208A1C9.905@redhat.com> <1376300494.1960.8.camel@fleetfoot.lan> Message-ID: <5208B8F6.8070100@redhat.com> On 12/08/13 10:41, Edward Nevill wrote: > On Mon, 2013-08-12 at 09:50 +0100, Andrew Dinn wrote: > >> This doesn't actually matter as far as building the C1/C2 variants goes >> because the C2 code (in aarch64.ad or generated from it) does not get >> included in the build process unless you configure either a tiered or a >> C2 build. However, it does make it a little easier for me to make >> changes which break C1. I don't know whether it is worth continuing with >> a separate aarch64_c2 branch given that the code bases are now >> effectively merged. Anyone have any opinions on this? > > Yes, I vote for merging to a single branch. Hmm, I didn't realise I had called a vote. Could you, perhaps, offer an opinion backed with a justification scholastic enough to bamboozle Andrew (Haley) into agreeing to it. > Can the jvm.cfg read > > -client KNOWN > -server IGNORE > > This is for the CI loop running jtreg. jtreg specifies -server on many of the tests. > > For C2 this would need to be manually changed to -server KNOWN. This is in the jdk tree, not the hotspot tree. Since we only have an aarch64_c2 branch in hotspot this is really a separate issue. Anyway, let's start with the status quo. The current config specifies -server IF_SERVER_CLASS KNOWN which means that i) when one passes -server to a C2 or C1+C2 JVM it works as expected ii) should one pass -server to a C1 JVM it says WTF all of which looks good to me. If we institute your change then i) passing -server to a C2 JVM will fail because the JVM will actually be told to execute as -client which it will not recognise ii) passing -server to a C1 or C1+C2 JVM will work against normal here'sexpectation because it will run as a client JVM. If the justification for adopting the latter config is that it makes jtreg tests which expect -server work then I don't think I buy it. Presumably, the tests specify -server because they are intended to exercise C2 compiled code. So, making them work by running as -client doesn't seem to me to be a valid step. So, more arcane scholastism will be needed if you want me to agree to this. regards, Andrew Dinn ----------- From adinn at redhat.com Mon Aug 12 03:44:01 2013 From: adinn at redhat.com (Andrew Dinn) Date: Mon, 12 Aug 2013 11:44:01 +0100 Subject: [aarch64-port-dev ] Mixing of aarch64_c2 and default branch code In-Reply-To: <5208B8BE.6020705@redhat.com> References: <5208A1C9.905@redhat.com> <5208B8BE.6020705@redhat.com> Message-ID: <5208BC71.2010305@redhat.com> On 12/08/13 11:28, Andrew Haley wrote: > Branches are a Bad Thing. Merging them has been a continuing PITA. Well, as Humpty-Dumpty said "That's logic", albeit an enthymeme and missing any inference steps. Yet, somehow, I am immediately convinced by it*** So, I will close branch aarch64_c2 and make all further changes in default. regards, Andrew Dinn ----------- *** 1 merging branches is a PITA 2 if merging branches is a PITA then branches are a bad thing 3 if branches are a bad thing then branches should be discarded 4 branches are a bad thing [1, 2, modus ponens] 5 we ought to remove our branches [4, 3, modus ponens] So, {1, 2, 3} |- 5 (we ought to remove our branches) From aph at redhat.com Mon Aug 12 03:47:03 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 12 Aug 2013 11:47:03 +0100 Subject: [aarch64-port-dev ] Mixing of aarch64_c2 and default branch code In-Reply-To: <5208BC71.2010305@redhat.com> References: <5208A1C9.905@redhat.com> <5208B8BE.6020705@redhat.com> <5208BC71.2010305@redhat.com> Message-ID: <5208BD27.7060500@redhat.com> On 08/12/2013 11:44 AM, Andrew Dinn wrote: > *** > 1 merging branches is a PITA > > 2 if merging branches is a PITA then branches are a bad thing > > 3 if branches are a bad thing then branches should be discarded > > 4 branches are a bad thing [1, 2, modus ponens] > > 5 we ought to remove our branches [4, 3, modus ponens] > > So, {1, 2, 3} |- 5 (we ought to remove our branches) You have too much time on your hands. Andrew. From aph at redhat.com Mon Aug 12 10:01:40 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 12 Aug 2013 18:01:40 +0100 Subject: [aarch64-port-dev ] Bug of the month In-Reply-To: <1375881252.3993.49.camel@fleetfoot.lan> References: <1375881252.3993.49.camel@fleetfoot.lan> Message-ID: <520914F4.3010907@redhat.com> This is some broken code that's a hangover from x86. It causes SP to contain a pointer not into the stack but to somewhere else altogether. It only happens in the fairly rare case of a synchronized native method that fails to acquire a lock. Then we execute complete_monitor_unlocking_C with a bogus SP, but as soon as we return we restore SP to a sane value. So, for a little while the native stack is somewhere in the middle of the heap. Ewww... It's taken me about two days to find this because the symptoms seemed to suggest a cause that was quite different. A couple of things occur to me. Firstly, the later in a project the harder it is to find things like this. Secondly, we have an amazingly low defect rate when you consider just how much hand-carved assembly code like this there is in the VM. Andrew. changeset: 4828:31390de29c4b tag: tip user: aph date: Mon Aug 12 17:49:56 2013 +0100 summary: Delete bogus stack pointer adjustment diff -r 64eb1c82b7fe -r 31390de29c4b src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp --- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Fri Aug 09 14:48:44 2013 +0100 +++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Mon Aug 12 17:49:56 2013 +0100 @@ -2132,10 +2132,7 @@ } __ lea(c_rarg1, Address(sp, lock_slot_offset * VMRegImpl::stack_slot_size)); - __ mov(c_rarg0, obj_reg); - __ mov(r20, sp); // remember sp - __ andr(sp, rscratch1, -16); // align stack as required by ABI // Save pending exception around call to VM (which contains an EXCEPTION_MARK) // NOTE that obj_reg == r19 currently @@ -2143,7 +2140,7 @@ __ str(zr, Address(rthread, in_bytes(Thread::pending_exception_offset()))); rt_call(masm, CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C), 2, 0, 1); - __ mov(sp, r20); // restore sp + #ifdef ASSERT { Label L; From aph at redhat.com Mon Aug 12 10:01:59 2013 From: aph at redhat.com (aph at redhat.com) Date: Mon, 12 Aug 2013 17:01:59 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Delete bogus stack pointer adjustment Message-ID: <20130812170206.52A6E487CA@hg.openjdk.java.net> Changeset: 31390de29c4b Author: aph Date: 2013-08-12 17:49 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/31390de29c4b Delete bogus stack pointer adjustment ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp From aph at redhat.com Tue Aug 13 09:04:14 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:04:14 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/corba: Added tag aarch64-20130813 for changeset 410fe5f3d3a4 Message-ID: <20130813160415.5C1F248818@hg.openjdk.java.net> Changeset: 9adf449c644f Author: aph Date: 2013-08-13 17:03 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/corba/rev/9adf449c644f Added tag aarch64-20130813 for changeset 410fe5f3d3a4 ! .hgtags From aph at redhat.com Tue Aug 13 09:05:23 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:05:23 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/jaxws: Added tag aarch64-20130813 for changeset ce74f449d5d3 Message-ID: <20130813160525.A3BD84881B@hg.openjdk.java.net> Changeset: 4789319fb2ab Author: aph Date: 2013-08-13 17:05 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/jaxws/rev/4789319fb2ab Added tag aarch64-20130813 for changeset ce74f449d5d3 ! .hgtags From aph at redhat.com Tue Aug 13 09:04:28 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:04:28 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8: Added tag aarch64-20130813 for changeset 61f0ba503520 Message-ID: <20130813160428.C19E748819@hg.openjdk.java.net> Changeset: a0d4da6811b0 Author: aph Date: 2013-08-13 17:03 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/rev/a0d4da6811b0 Added tag aarch64-20130813 for changeset 61f0ba503520 ! .hgtags From aph at redhat.com Tue Aug 13 09:05:00 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:05:00 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/langtools: Added tag aarch64-20130813 for changeset 90a26666a077 Message-ID: <20130813160503.A086A4881A@hg.openjdk.java.net> Changeset: 410cc10bc125 Author: aph Date: 2013-08-13 17:04 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/langtools/rev/410cc10bc125 Added tag aarch64-20130813 for changeset 90a26666a077 ! .hgtags From aph at redhat.com Tue Aug 13 09:06:15 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:06:15 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/nashorn: Added tag aarch64-20130813 for changeset e0378f0a50da Message-ID: <20130813160616.30D4E4881C@hg.openjdk.java.net> Changeset: 6df690683b49 Author: aph Date: 2013-08-13 17:06 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/nashorn/rev/6df690683b49 Added tag aarch64-20130813 for changeset e0378f0a50da ! .hgtags From aph at redhat.com Tue Aug 13 09:06:38 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:06:38 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/jaxp: Added tag aarch64-20130813 for changeset aa68d933af52 Message-ID: <20130813160640.9EDAC4881D@hg.openjdk.java.net> Changeset: 102bfdf5036d Author: aph Date: 2013-08-13 17:06 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/jaxp/rev/102bfdf5036d Added tag aarch64-20130813 for changeset aa68d933af52 ! .hgtags From aph at redhat.com Tue Aug 13 09:07:11 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:07:11 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/jdk: Added tag aarch64-20130813 for changeset 29e9f26732a2 Message-ID: <20130813160727.95C8D4881E@hg.openjdk.java.net> Changeset: ddd3675163c0 Author: aph Date: 2013-08-13 17:07 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/jdk/rev/ddd3675163c0 Added tag aarch64-20130813 for changeset 29e9f26732a2 ! .hgtags From aph at redhat.com Tue Aug 13 09:15:51 2013 From: aph at redhat.com (aph at redhat.com) Date: Tue, 13 Aug 2013 16:15:51 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Added tag aarch64-20130813 for changeset 31390de29c4b Message-ID: <20130813161553.C56884881F@hg.openjdk.java.net> Changeset: ce185e108678 Author: aph Date: 2013-08-13 17:15 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/ce185e108678 Added tag aarch64-20130813 for changeset 31390de29c4b ! .hgtags From thuhc at yahoo.com Wed Aug 14 02:40:30 2013 From: thuhc at yahoo.com (Cao Hoang Thu) Date: Wed, 14 Aug 2013 02:40:30 -0700 (PDT) Subject: [aarch64-port-dev ] Undefined reference to `vtable for MachEpilogNode' Message-ID: <1376473230.46014.YahooMailNeo@web164605.mail.gq1.yahoo.com> Hi all, I built jvm client/server normal, but?I got error when build jvm server, release Making signal interposition lib... **NOTICE** Dtrace support disabled: /usr/include/sys/sdt.h not found Compiling /home/thcao/ws/java/jdk8/hotspot/src/share/vm/runtime/vm_version.cpp Linking vm... Linking launcher... /home/thcao/ws/java/jdk8/build/linux-aarch64-normal-server-release/hotspot/linux_aarch64_compiler2/product/libjvm.so: undefined reference to `vtable for MachEpilogNode' collect2: error: ld returned 1 exit status gmake[6]: *** [gamma] Error 1 gmake[5]: *** [the_vm] Error 2 gmake[4]: *** [product] Error 2 gmake[3]: *** [generic_build2] Error 2 gmake[2]: *** [product] Error 2 gmake[1]: *** [/home/thcao/ws/java/jdk8/build/linux-aarch64-normal-server-release/hotspot/_hotspot.timestamp] Error 2 make: *** [hotspot-only] Error 2 Regards, Thu Cao From edward.nevill at linaro.org Wed Aug 14 04:23:27 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Wed, 14 Aug 2013 12:23:27 +0100 Subject: [aarch64-port-dev ] Fix SEGV in JTReg test Message-ID: <1376479407.30964.3.camel@fleetfoot.lan> Hi, Test7103261 in JTReg fails with a SEGV due to a missing implicit null check. The patch below fixes this. OK? Ed. --- cut here --- # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1376479124 -3600 # Node ID 2fee62abab5d36bf37a16b43620f7834879b89f3 # Parent ce185e10867844cdd00b4cd1b2c96c524a0706dc Fix SEGV in JTReg Test7103261 diff -r ce185e108678 -r 2fee62abab5d src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Tue Aug 13 17:15:41 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Aug 14 12:18:44 2013 +0100 @@ -713,6 +713,7 @@ ShouldNotReachHere(); } + if (info) add_debug_info_for_null_check_here(info); (_masm->*insn)(zr, as_Address(to_addr, rscratch1)); } --- cut here --- From ed at camswl.com Wed Aug 14 04:48:11 2013 From: ed at camswl.com (ed at camswl.com) Date: Wed, 14 Aug 2013 11:48:11 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Fix SEGV in JTReg Test7103261 Message-ID: <20130814114813.7865048878@hg.openjdk.java.net> Changeset: 2fee62abab5d Author: Edward Nevill ed at camswl.com Date: 2013-08-14 12:18 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/2fee62abab5d Fix SEGV in JTReg Test7103261 ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp From aph at redhat.com Wed Aug 14 05:41:51 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 14 Aug 2013 13:41:51 +0100 Subject: [aarch64-port-dev ] Fix SEGV in JTReg test In-Reply-To: <1376479407.30964.3.camel@fleetfoot.lan> References: <1376479407.30964.3.camel@fleetfoot.lan> Message-ID: <520B7B0F.9050403@redhat.com> On 08/14/2013 12:23 PM, Edward Nevill wrote: > Hi, > > Test7103261 in JTReg fails with a SEGV due to a missing implicit null > check. > > The patch below fixes this. > > OK? OK. I'd quibble that the formatting is a bit eccentric. It's like this in most pleases, although we're not quite consistent everywhere: if (info != NULL) { add_debug_info_for_null_check(null_check_here, info); } Andrew. From edward.nevill at linaro.org Wed Aug 14 06:13:06 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Wed, 14 Aug 2013 14:13:06 +0100 Subject: [aarch64-port-dev ] Make server build work for release Message-ID: <1376485986.29998.3.camel@fleetfoot.lan> Hi, The server build only works for fastdebug or slowdebug at the moment due to a misplaced endif. The following patch fixes this. Ed. --- cut here --- # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1376485698 -3600 # Node ID 80e741fc14e2cda15b58ba9190b5910ad52d5ad4 # Parent 2fee62abab5d36bf37a16b43620f7834879b89f3 Make release server build work diff -r 2fee62abab5d -r 80e741fc14e2 src/cpu/aarch64/vm/aarch64.ad --- a/src/cpu/aarch64/vm/aarch64.ad Wed Aug 14 12:18:44 2013 +0100 +++ b/src/cpu/aarch64/vm/aarch64.ad Wed Aug 14 14:08:18 2013 +0100 @@ -974,6 +974,7 @@ st->print("ldr zr, [rscratch1]\n\t"); } } +#endif void MachEpilogNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const { Compile* C = ra_->C; @@ -1025,7 +1026,6 @@ assert(do_polling(), "no return for this epilog node"); return 0; } -#endif --- cut here --- From ed at camswl.com Wed Aug 14 06:58:53 2013 From: ed at camswl.com (ed at camswl.com) Date: Wed, 14 Aug 2013 13:58:53 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Make release server build work Message-ID: <20130814135857.B5BCA48881@hg.openjdk.java.net> Changeset: 80e741fc14e2 Author: Edward Nevill ed at camswl.com Date: 2013-08-14 14:08 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/80e741fc14e2 Make release server build work ! src/cpu/aarch64/vm/aarch64.ad From edward.nevill at linaro.org Wed Aug 14 07:10:50 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Wed, 14 Aug 2013 15:10:50 +0100 Subject: [aarch64-port-dev ] Undefined reference to `vtable for MachEpilogNode' In-Reply-To: <1376473230.46014.YahooMailNeo@web164605.mail.gq1.yahoo.com> References: <1376473230.46014.YahooMailNeo@web164605.mail.gq1.yahoo.com> Message-ID: <1376489450.29998.13.camel@fleetfoot.lan> On Wed, 2013-08-14 at 02:40 -0700, Cao Hoang Thu wrote: > /home/thcao/ws/java/jdk8/build/linux-aarch64-normal-server-release/hotspot/linux_aarch64_compiler2/product/libjvm.so: undefined reference to `vtable for MachEpilogNode' > collect2: error: ld returned 1 exit status > Regards, > Thu Cao Hi Thu Cao, There was problem with the release server build. I have pushed a fix for this. If you update your sources you should find the release server builds ok now. In order to run the server vsn you will need to explicitly specify -server on the java command line. IE. java -server However, the server compiler is still under development. While it compiles many methods it still exits frequently with a "fatal error". The client compiler is pretty solid now and we would appreciate any feedback you have. All the best, Edward Nevill From thuhc at yahoo.com Wed Aug 14 07:30:16 2013 From: thuhc at yahoo.com (Cao Hoang Thu) Date: Wed, 14 Aug 2013 07:30:16 -0700 (PDT) Subject: [aarch64-port-dev ] Undefined reference to `vtable for MachEpilogNode' In-Reply-To: <1376489450.29998.13.camel@fleetfoot.lan> References: <1376473230.46014.YahooMailNeo@web164605.mail.gq1.yahoo.com> <1376489450.29998.13.camel@fleetfoot.lan> Message-ID: <1376490616.30080.YahooMailNeo@web164603.mail.gq1.yahoo.com> Hi?Edward Nevill, I compile server release ok with new patch. Thanks for everybody! I ran jvm client-release with spec2005jbb ok...? Now I'm testing hadoop, jvm client-release had problems (not crash but failed when run), so I want to compile jvm server-release Best Regards, Thu Cao? ________________________________ From: Edward Nevill To: aarch64-port-dev at openjdk.java.net Cc: thuhc at yahoo.com Sent: Wednesday, August 14, 2013 9:10 PM Subject: Re: [aarch64-port-dev ] Undefined reference to `vtable for MachEpilogNode' On Wed, 2013-08-14 at 02:40 -0700, Cao Hoang Thu wrote: > /home/thcao/ws/java/jdk8/build/linux-aarch64-normal-server-release/hotspot/linux_aarch64_compiler2/product/libjvm.so: undefined reference to `vtable for MachEpilogNode' > collect2: error: ld returned 1 exit status > Regards, > Thu Cao Hi Thu Cao, There was problem with the release server build. I have pushed a fix for this. If you update your sources you should find the release server builds ok now. In order to run the server vsn you will need to explicitly specify -server on the java command line. IE. java -server However, the server compiler is still under development. While it compiles many methods it still exits frequently with a "fatal error". The client compiler is pretty solid now and we would appreciate any feedback you have. All the best, Edward Nevill From aph at redhat.com Wed Aug 14 07:45:13 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 14 Aug 2013 15:45:13 +0100 Subject: [aarch64-port-dev ] Undefined reference to `vtable for MachEpilogNode' In-Reply-To: <1376490616.30080.YahooMailNeo@web164603.mail.gq1.yahoo.com> References: <1376473230.46014.YahooMailNeo@web164605.mail.gq1.yahoo.com> <1376489450.29998.13.camel@fleetfoot.lan> <1376490616.30080.YahooMailNeo@web164603.mail.gq1.yahoo.com> Message-ID: <520B97F9.2060409@redhat.com> On 08/14/2013 03:30 PM, Cao Hoang Thu wrote: > Now I'm testing hadoop, jvm client-release had problems (not crash but failed when run), so I want to compile jvm server-release There is no server release. It will crash. Andrew. From aph at redhat.com Thu Aug 15 06:45:41 2013 From: aph at redhat.com (Andrew Haley) Date: Thu, 15 Aug 2013 14:45:41 +0100 Subject: [aarch64-port-dev ] More build fixes Message-ID: <520CDB85.7010908@redhat.com> Every time I turn away I discover that debuginfo stripping has returned. It's like an endless game of Groundhog Day cum Whack-A-Mole or the vampire that cannot be killed no matter how many times you drive a stake through their heart. It turns out that if you want to stop debuginfo from being stripped you not only have to set STRIP_POLICY=no_strip you also have to set POST_STRIP_CMD="" or it strips your binaries anyway. (Argh! Aieeee! How many hours have I wasted on this?!) Ahem. Normal service will now be resumed. Andrew. -------------- next part -------------- comparing with ssh://hg.openjdk.java.net/aarch64-port/jdk8/ searching for changes remote: X11 forwarding request failed on channel 0 changeset: 703:69119b05aa8c tag: tip user: aph date: Thu Aug 15 14:39:16 2013 +0100 summary: Build script fixes diff -r a0d4da6811b0 -r 69119b05aa8c common/autoconf/generated-configure.sh --- a/common/autoconf/generated-configure.sh Tue Aug 13 17:03:45 2013 +0100 +++ b/common/autoconf/generated-configure.sh Thu Aug 15 14:39:16 2013 +0100 @@ -3774,7 +3774,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1372760061 +DATE_WHEN_GENERATED=1374148947 ############################################################################### # @@ -29073,7 +29073,7 @@ # case $COMPILER_NAME in gcc ) - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-unused-parameter -Wno-parentheses \ + CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Wno-unused -Wno-unused-parameter -Wno-parentheses \ -pipe \ -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" case $OPENJDK_TARGET_CPU_ARCH in diff -r a0d4da6811b0 -r 69119b05aa8c common/autoconf/toolchain.m4 --- a/common/autoconf/toolchain.m4 Tue Aug 13 17:03:45 2013 +0100 +++ b/common/autoconf/toolchain.m4 Thu Aug 15 14:39:16 2013 +0100 @@ -808,7 +808,7 @@ # case $COMPILER_NAME in gcc ) - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-unused-parameter -Wno-parentheses \ + CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Wno-unused -Wno-unused-parameter -Wno-parentheses \ -pipe \ -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" case $OPENJDK_TARGET_CPU_ARCH in diff -r a0d4da6811b0 -r 69119b05aa8c cross_compile --- a/cross_compile Tue Aug 13 17:03:45 2013 +0100 +++ b/cross_compile Thu Aug 15 14:39:16 2013 +0100 @@ -9,4 +9,4 @@ mkdir -p /tmp/oe_45434e/jenkins-setup/build/tmp-eglibc ln -f -s $IWD/sysroots /tmp/oe_45434e/jenkins-setup/build/tmp-eglibc/ ALT_SDT_H=$IWD/sysroots/genericarmv8/usr/include/sys/sdt.h -make images +make STRIP_POLICY=no_strip POST_STRIP_CMD="" images diff -r a0d4da6811b0 -r 69119b05aa8c cross_configure --- a/cross_configure Tue Aug 13 17:03:45 2013 +0100 +++ b/cross_configure Thu Aug 15 14:39:16 2013 +0100 @@ -25,4 +25,4 @@ export AS="aarch64-oe-linux-as" export AR="aarch64-oe-linux-ar" export PATH="$IWD/sysroots/x86_64-linux/usr/bin/aarch64-oe-linux:$IWD/sysroots/genericarmv8/usr/bin/crossscripts:$IWD/sysroots/x86_64-linux/usr/sbin:$IWD/sysroots/x86_64-linux/usr/bin:$IWD/sysroots/x86_64-linux/sbin:$IWD/sysroots/x86_64-linux//bin:/usr/sbin:/usr/bin:/sbin:/bin" -sh ./configure --with-debug-level=release --with-jvm-variants=client --with-sys-root=$IWD/sysroots/genericarmv8 --enable-unlimited-crypto --openjdk-target=aarch64-oe-linux --with-cacerts-file=$IWD/sysroots/x86_64-linux/usr/lib/jvm/icedtea7-native/jre/lib/security/cacerts --with-zlib=system --with-stdc++lib=dynamic --with-boot-jdk=$IWD/sysroots/x86_64-linux/usr/lib/jvm/icedtea7-native +sh ./configure --with-debug-level=fastdebug --with-jvm-variants=client --with-sys-root=$IWD/sysroots/genericarmv8 --enable-unlimited-crypto --openjdk-target=aarch64-oe-linux --with-cacerts-file=$IWD/sysroots/x86_64-linux/usr/lib/jvm/icedtea7-native/jre/lib/security/cacerts --with-zlib=system --with-stdc++lib=dynamic --with-boot-jdk=$IWD/sysroots/x86_64-linux/usr/lib/jvm/icedtea7-native diff -r a0d4da6811b0 -r 69119b05aa8c sim_compile --- a/sim_compile Tue Aug 13 17:03:45 2013 +0100 +++ b/sim_compile Thu Aug 15 14:39:16 2013 +0100 @@ -10,7 +10,7 @@ (export BINUTILS=`cd .. ; pwd`/binutils ; cd hotspot/src/share/tools/hsdis ; make BUILD_AARCH64=true) fi -make STRIP_POLICY=no_strip LOG="debug" JOBS=4 BUILTIN_SIM=true images +make STRIP_POLICY=no_strip POST_STRIP_CMD="" LOG="debug" BUILTIN_SIM=true images # ensure hsdis lib is installed if [ ! -f build/linux-aarch64-normal-client-slowdebug/images/j2sdk-image/jre/lib/aarch64/hsdis-aarch64.so ] ; then From aph at redhat.com Thu Aug 15 06:46:02 2013 From: aph at redhat.com (aph at redhat.com) Date: Thu, 15 Aug 2013 13:46:02 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8: Build script fixes Message-ID: <20130815134603.174AC488BF@hg.openjdk.java.net> Changeset: 69119b05aa8c Author: aph Date: 2013-08-15 14:39 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/rev/69119b05aa8c Build script fixes POST_STRIP_CMD="" Disable -Wall ! common/autoconf/generated-configure.sh ! common/autoconf/toolchain.m4 ! cross_compile ! cross_configure ! sim_compile From adinn at redhat.com Thu Aug 15 09:07:33 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Thu, 15 Aug 2013 16:07:33 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130815160737.2CD01488C9@hg.openjdk.java.net> Changeset: 3b4120f337dc Author: adinn Date: 2013-08-15 17:06 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/3b4120f337dc Added entry and exit notification for native method code ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Changeset: 4f9a564bca97 Author: adinn Date: 2013-08-15 17:07 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/4f9a564bca97 Extended bccheck to recognise call stub return address in backtraces ! src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp From adinn at redhat.com Thu Aug 15 08:59:27 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Thu, 15 Aug 2013 15:59:27 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 7 new changesets Message-ID: <20130815155947.346AB488C7@hg.openjdk.java.net> Changeset: ef7e701010e8 Author: adinn Date: 2013-08-12 09:58 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/ef7e701010e8 Merge Changeset: da2d25b877bf Author: adinn Date: 2013-08-12 10:00 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/da2d25b877bf Ensured native wrapper methods notify both compile and relocate to simulator ! src/share/vm/code/nmethod.cpp Changeset: 5f18f01904ec Author: adinn Date: 2013-08-12 10:05 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/5f18f01904ec ensured callee return address is not trashed by rehtrow handler lookup this changes the forward handler code used in common by C1 and C2 but is only needed to avoid tripping an assert in the C2 handler lookup. ! src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Changeset: 352dc20c1aa7 Author: adinn Date: 2013-08-12 10:07 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/352dc20c1aa7 Merge Changeset: 513ec20a7c4f Author: adinn Date: 2013-08-15 16:52 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/513ec20a7c4f Merge Changeset: 3ed73310a6a5 Author: adinn Date: 2013-08-15 16:55 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/3ed73310a6a5 Merge Changeset: a7df113b2df8 Author: adinn Date: 2013-08-15 16:57 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/a7df113b2df8 closing aarch64_c2 as all changes now merged into default From aph at redhat.com Fri Aug 16 04:12:34 2013 From: aph at redhat.com (aph at redhat.com) Date: Fri, 16 Aug 2013 11:12:34 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8: Reorganize README file to prioritize the small aarch64 simulator. Message-ID: <20130816111234.DC5964892D@hg.openjdk.java.net> Changeset: e9b5be85ca1d Author: aph Date: 2013-08-16 12:12 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/rev/e9b5be85ca1d Reorganize README file to prioritize the small aarch64 simulator. ! README.aarch64 From adinn at redhat.com Fri Aug 16 06:10:52 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Fri, 16 Aug 2013 13:10:52 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 3 new changesets Message-ID: <20130816131104.44B8A48933@hg.openjdk.java.net> Changeset: 8b75a801341f Author: adinn Date: 2013-08-16 14:04 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/8b75a801341f converted / to . in class name passed to notifyCompile from C2 ! src/share/vm/opto/compile.cpp Changeset: 6b3c723e603e Author: adinn Date: 2013-08-16 14:05 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/6b3c723e603e Improved method lookup in bccheck so sim debug handles various stubs correctly ! src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp Changeset: a7f1e6ff729d Author: adinn Date: 2013-08-16 14:10 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/a7f1e6ff729d use correct register for hidden klass argument passed to unverified entry point the unverified entry was expecting the recipient klass in r0 when it should have been in rscratch2. this caused true virtual calls to pick up the wrong method implementation causing File.hash to be used in place of CodeSource.hash (took several days to find this one :-) ! src/cpu/aarch64/vm/aarch64.ad From adinn at redhat.com Fri Aug 16 06:15:23 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Fri, 16 Aug 2013 13:15:23 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130816131527.6DA8B48934@hg.openjdk.java.net> Changeset: 71cc0ea0cd4c Author: adinn Date: 2013-08-16 14:12 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/71cc0ea0cd4c merge Changeset: 631801f9c924 Author: adinn Date: 2013-08-16 14:14 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/631801f9c924 really try to close branch aarch64_c2 From aph at redhat.com Fri Aug 16 10:31:39 2013 From: aph at redhat.com (Andrew Haley) Date: Fri, 16 Aug 2013 18:31:39 +0100 Subject: [aarch64-port-dev ] AArch64 Fedora OpenJDK pre-release Message-ID: <520E61FB.9090203@redhat.com> See http://aphredhat.wordpress.com/2013/08/16/openjdk-aarch64-and-fedora/ Andrew. From adinn at redhat.com Mon Aug 19 01:51:33 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Mon, 19 Aug 2013 08:51:33 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 3 new changesets Message-ID: <20130819085144.76BA348987@hg.openjdk.java.net> Changeset: 8c3c214e27f1 Author: adinn Date: 2013-08-16 15:27 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/8c3c214e27f1 Implemented integral/float shuffles stack <-> reg or reg <-> reg with no convert ! src/cpu/aarch64/vm/aarch64.ad Changeset: 3f316ede5ab3 Author: adinn Date: 2013-08-19 09:50 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/3f316ede5ab3 Added fp conditional select instructions fpcsels and fpcseld ! src/cpu/aarch64/vm/assembler_aarch64.hpp Changeset: f476f73aa00d Author: adinn Date: 2013-08-19 09:51 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/f476f73aa00d Implemented CMoveF and CMoveD instructions ! src/cpu/aarch64/vm/aarch64.ad From adinn at redhat.com Mon Aug 19 02:02:53 2013 From: adinn at redhat.com (Andrew Dinn) Date: Mon, 19 Aug 2013 10:02:53 +0100 Subject: [aarch64-port-dev ] AArch64: C2 completes bootstrap with -Xcomp!! Message-ID: <5211DF3D.8040903@redhat.com> Enclosed below (after my signature) is the output from running the latest C2 build with the following command line arguments -server -Xcomp -XX:-UseCompressedOops -XX:-TieredCompilation -XX:+PrintCompilation -XX:+TraceNMethodInstalls -XX:-DisableBCCheck HelloC3 n.b. the various SIGSEGVs are expected. n.b.b. the arguments: force C2 compilation of everything (-Xcomp -XX:-TieredCompilation) switch off packing 64 bit oops into 32 bit slots (-XX:-UseCompressedOops) trace compilation of each individual method (-XX:+PrintCompilation) trace installation of each compiled method (-XX:+TraceNMethodInstalls) HelloC3 just runs a few simple loop methods one of which invokes the other, the latter updating some local state: class HelloC3 { public HelloC3 next; public static void main(String[] args) { int count = 256; if (args.length > 0) { count = Integer.valueOf(args[0]); } HelloC3 h = new HelloC3(); HelloC3 h2 = new HelloC3(); h.test(h2, count); } public int test(HelloC3 h, int count) { for (int i = 0 ; i < count; i++) { this.next = h; count = h.test2(this, count); } return count; } public int test2(HelloC3 h, int count) { this.next = h; h.next = this; return count--; } } regards, Andrew Dinn ----------- (gdb) run Starting program: /ssd/home/adinn/redhat/openjdk/arm/ARM64/hg/jdk8-aarch64/build/linux-aarch64-normal-server-slowdebug/images/j2sdk-image/bin/java -server -Xcomp -XX:-UseCompressedOops -XX:-TieredCompilation -XX:+PrintCompilation -XX:+TraceNMethodInstalls -XX:-DisableBCCheck HelloC3 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". [New Thread 0x7ffff69aa700 (LWP 20264)] [New Thread 0x7ffff4981700 (LWP 20265)] [New Thread 0x7ffff4780700 (LWP 20266)] [New Thread 0x7ffff457f700 (LWP 20267)] [New Thread 0x7ffff437e700 (LWP 20268)] [New Thread 0x7ffef551b700 (LWP 20269)] [New Thread 0x7ffef5299700 (LWP 20270)] [New Thread 0x7ffef5017700 (LWP 20271)] [New Thread 0x7ffef4d61700 (LWP 20272)] [New Thread 0x7ffef4b60700 (LWP 20273)] [New Thread 0x7ffef495f700 (LWP 20274)] 2634 1 b java.lang.Thread:: (49 bytes) Installing method (4) java.lang.Thread.(Ljava/lang/ThreadGroup;Ljava/lang/String;)V 2658 2 b java.lang.Thread::init (202 bytes) Installing method (4) java.lang.Thread.init(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V 2684 3 b java.lang.System::getSecurityManager (4 bytes) Installing method (4) java.lang.System.getSecurityManager()Ljava/lang/SecurityManager; 2687 4 b java.lang.ThreadGroup::checkAccess (14 bytes) Installing method (4) java.lang.ThreadGroup.checkAccess()V 2689 5 !b java.lang.ThreadGroup::addUnstarted (40 bytes) Installing method (4) java.lang.ThreadGroup.addUnstarted()V 2696 6 b java.lang.Thread::isDaemon (5 bytes) Installing method (4) java.lang.Thread.isDaemon()Z 2698 7 b java.lang.Thread::getPriority (5 bytes) Installing method (4) java.lang.Thread.getPriority()I 2700 8 b java.lang.String::toCharArray (25 bytes) Installing method (4) java.lang.String.toCharArray()[C 2708 9 b java.lang.Thread::getContextClassLoader (44 bytes) Installing method (4) java.lang.Thread.getContextClassLoader()Ljava/lang/ClassLoader; 2715 10 b java.security.AccessController::getContext (23 bytes) Installing method (4) java.security.AccessController.getContext()Ljava/security/AccessControlContext; 2721 11 n java.security.AccessController::getStackAccessControlContext (native) (static) 2721 12 b java.security.AccessControlContext::optimize (319 bytes) Installing method (4) java.security.AccessControlContext.optimize()Ljava/security/AccessControlContext; 2772 13 n java.security.AccessController::getInheritedAccessControlContext (native) (static) 2772 14 b java.lang.Thread::setPriority (56 bytes) Installing method (4) java.lang.Thread.setPriority(I)V 2776 15 b java.lang.Thread::checkAccess (14 bytes) Installing method (4) java.lang.Thread.checkAccess()V 2780 16 b java.lang.Thread::getThreadGroup (5 bytes) Installing method (4) java.lang.Thread.getThreadGroup()Ljava/lang/ThreadGroup; 2781 17 b java.lang.ThreadGroup::getMaxPriority (5 bytes) Installing method (4) java.lang.ThreadGroup.getMaxPriority()I 2783 18 n java.lang.Thread::setPriority0 (native) 2783 19 s b java.lang.Thread::nextThreadID (10 bytes) Installing method (4) java.lang.Thread.nextThreadID()J [New Thread 0x7ffef475e700 (LWP 20275)] 2788 20 b java.lang.System::getProperty (25 bytes) Installing method (4) java.lang.System.getProperty(Ljava/lang/String;)Ljava/lang/String; 2791 21 b java.lang.System::checkKey (34 bytes) Installing method (4) java.lang.System.checkKey(Ljava/lang/String;)V 2793 22 b java.lang.String::equals (81 bytes) Installing method (4) java.lang.String.equals(Ljava/lang/Object;)Z 2813 23 b java.util.Properties::getProperty (46 bytes) Installing method (4) java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String; 2824 24 s b java.util.Hashtable::get (70 bytes) Installing method (4) java.util.Hashtable.get(Ljava/lang/Object;)Ljava/lang/Object; 2837 25 b java.util.Hashtable::hash (48 bytes) Installing method (4) java.util.Hashtable.hash(Ljava/lang/Object;)I 2847 26 b java.lang.String::hash32 (45 bytes) Installing method (4) java.lang.String.hash32()I 2852 27 b sun.misc.Hashing::murmur3_32 (188 bytes) Installing method (4) sun.misc.Hashing.murmur3_32(I[CII)I 2867 28 b java.lang.Integer::rotateLeft (9 bytes) Installing method (4) java.lang.Integer.rotateLeft(II)I [New Thread 0x7ffef455d700 (LWP 20276)] 2881 29 b sun.launcher.LauncherHelper:: (67 bytes) Installing method (4) sun.launcher.LauncherHelper.()V 2883 29 sun.launcher.LauncherHelper:: (67 bytes) made not entrant 2884 30 b sun.launcher.LauncherHelper:: (7 bytes) Installing method (4) sun.launcher.LauncherHelper.(Ljava/lang/String;I)V 2887 31 b java.lang.Enum:: (15 bytes) Installing method (4) java.lang.Enum.(Ljava/lang/String;I)V 2892 32 b java.lang.Object:: (1 bytes) Installing method (4) java.lang.Object.()V 2896 33 b java.lang.StringBuilder:: (7 bytes) Installing method (4) java.lang.StringBuilder.()V 2903 34 b sun.misc.VM::getSavedProperty (27 bytes) Installing method (4) sun.misc.VM.getSavedProperty(Ljava/lang/String;)Ljava/lang/String; 2909 35 s b java.util.Hashtable::isEmpty (13 bytes) Installing method (4) java.util.Hashtable.isEmpty()Z Program received signal SIGSEGV, Segmentation fault. 2915 23 java.util.Properties::getProperty (46 bytes) made not entrant 2915 36 b java.lang.ClassLoader::getSystemClassLoader (44 bytes) Installing method (4) java.lang.ClassLoader.getSystemClassLoader()Ljava/lang/ClassLoader; 2922 37 s!b java.lang.ClassLoader::initSystemClassLoader (109 bytes) Installing method (4) java.lang.ClassLoader.initSystemClassLoader()V 2944 38 !b sun.launcher.LauncherHelper::makePlatformString (70 bytes) Installing method (4) sun.launcher.LauncherHelper.makePlatformString(Z[B)Ljava/lang/String; 2953 39 b sun.launcher.LauncherHelper::initOutput (17 bytes) Installing method (4) sun.launcher.LauncherHelper.initOutput(Z)V 2958 40 b java.util.Properties::getProperty (46 bytes) Installing method (4) java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String; 2966 41 b java.nio.charset.Charset::isSupported (13 bytes) Installing method (4) java.nio.charset.Charset.isSupported(Ljava/lang/String;)Z 2969 42 b java.nio.charset.Charset::lookup (44 bytes) Installing method (4) java.nio.charset.Charset.lookup(Ljava/lang/String;)Ljava/nio/charset/Charset; 2974 38 ! sun.launcher.LauncherHelper::makePlatformString (70 bytes) made not entrant 2974 43 b java.lang.String:: (10 bytes) Installing method (4) java.lang.String.([BLjava/lang/String;)V 2984 44 !b java.lang.StringCoding::decode (120 bytes) Installing method (4) java.lang.StringCoding.decode(Ljava/lang/String;[BII)[C 3003 45 b java.lang.StringCoding::deref (19 bytes) Installing method (4) java.lang.StringCoding.deref(Ljava/lang/ThreadLocal;)Ljava/lang/Object; 3009 46 b java.lang.ThreadLocal::get (38 bytes) Installing method (4) java.lang.ThreadLocal.get()Ljava/lang/Object; 3015 47 b java.lang.ThreadLocal::getMap (5 bytes) Installing method (4) java.lang.ThreadLocal.getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap; 3019 48 b java.lang.ThreadLocal$ThreadLocalMap::access$000 (6 bytes) Installing method (4) java.lang.ThreadLocal$ThreadLocalMap.access$000(Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; 3021 49 b java.lang.ThreadLocal$ThreadLocalMap::getEntry (42 bytes) Installing method (4) java.lang.ThreadLocal$ThreadLocalMap.getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; 3031 50 b java.lang.ThreadLocal::access$400 (5 bytes) Installing method (4) java.lang.ThreadLocal.access$400(Ljava/lang/ThreadLocal;)I 3033 51 b java.lang.ref.SoftReference::get (29 bytes) Installing method (4) java.lang.ref.SoftReference.get()Ljava/lang/Object; 3038 52 b java.lang.StringCoding$StringDecoder::requestedCharsetName (5 bytes) Installing method (4) java.lang.StringCoding$StringDecoder.requestedCharsetName()Ljava/lang/String; 3040 53 !b java.lang.StringCoding$StringDecoder::decode (179 bytes) Installing method (4) java.lang.StringCoding$StringDecoder.decode([BII)[C 3056 54 b java.nio.charset.CharsetDecoder::maxCharsPerByte (5 bytes) Installing method (4) java.nio.charset.CharsetDecoder.maxCharsPerByte()F 3058 55 b java.lang.StringCoding::access$000 (6 bytes) Installing method (4) java.lang.StringCoding.access$000(IF)I 3059 56 b java.lang.StringCoding::scale (7 bytes) Installing method (4) java.lang.StringCoding.scale(IF)I 3060 57 b sun.nio.cs.UTF_8$Decoder::decode (759 bytes) Installing method (4) sun.nio.cs.UTF_8$Decoder.decode([BII[C)I 3156 58 b java.lang.StringCoding::access$100 (8 bytes) Installing method (4) java.lang.StringCoding.access$100([CILjava/nio/charset/Charset;Z)[C 3159 59 b java.lang.StringCoding::safeTrim (24 bytes) Installing method (4) java.lang.StringCoding.safeTrim([CILjava/nio/charset/Charset;Z)[C 3163 60 !b sun.launcher.LauncherHelper::checkAndLoadMain (159 bytes) Installing method (4) sun.launcher.LauncherHelper.checkAndLoadMain(ZILjava/lang/String;)Ljava/lang/Class; 3172 61 b java.lang.String::replace (127 bytes) Installing method (4) java.lang.String.replace(CC)Ljava/lang/String; 3216 62 b java.lang.ClassLoader::loadClass (7 bytes) Installing method (4) java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; 3220 63 b sun.misc.Launcher$AppClassLoader::loadClass (40 bytes) Installing method (4) sun.misc.Launcher$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; 3225 64 b java.lang.String::lastIndexOf (13 bytes) Installing method (4) java.lang.String.lastIndexOf(I)I 3227 65 b java.lang.String::lastIndexOf (52 bytes) Installing method (4) java.lang.String.lastIndexOf(II)I 3240 66 !b java.lang.ClassLoader::loadClass (122 bytes) Installing method (4) java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; 3251 67 b java.lang.ClassLoader::getClassLoadingLock (35 bytes) Installing method (4) java.lang.ClassLoader.getClassLoadingLock(Ljava/lang/String;)Ljava/lang/Object; 3256 68 b java.util.concurrent.ConcurrentHashMap::putIfAbsent (79 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap.putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3266 69 b java.util.concurrent.ConcurrentHashMap::hash (74 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap.hash(Ljava/lang/Object;)I 3277 70 b java.util.concurrent.ConcurrentHashMap::ensureSegment (144 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap.ensureSegment(I)Ljava/util/concurrent/ConcurrentHashMap$Segment; 3298 71 !b java.util.concurrent.ConcurrentHashMap$Segment::put (237 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap$Segment.put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object; 3321 72 b java.util.concurrent.locks.ReentrantLock::tryLock (9 bytes) Installing method (4) java.util.concurrent.locks.ReentrantLock.tryLock()Z 3324 73 b java.util.concurrent.locks.ReentrantLock$Sync::nonfairTryAcquire (67 bytes) Installing method (4) java.util.concurrent.locks.ReentrantLock$Sync.nonfairTryAcquire(I)Z 3329 74 b java.util.concurrent.locks.AbstractQueuedSynchronizer::getState (5 bytes) Installing method (4) java.util.concurrent.locks.AbstractQueuedSynchronizer.getState()I 3331 75 b java.util.concurrent.locks.AbstractQueuedSynchronizer::compareAndSetState (13 bytes) Installing method (4) java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetState(II)Z 3333 76 b java.util.concurrent.locks.AbstractOwnableSynchronizer::setExclusiveOwnerThread (6 bytes) Installing method (4) java.util.concurrent.locks.AbstractOwnableSynchronizer.setExclusiveOwnerThread(Ljava/lang/Thread;)V 3336 77 b java.util.concurrent.ConcurrentHashMap::entryAt (29 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap.entryAt([Ljava/util/concurrent/ConcurrentHashMap$HashEntry;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry; 3338 78 b java.util.concurrent.ConcurrentHashMap::setEntryAt (19 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap.setEntryAt([Ljava/util/concurrent/ConcurrentHashMap$HashEntry;ILjava/util/concurrent/ConcurrentHashMap$HashEntry;)V 3341 79 b java.util.concurrent.locks.ReentrantLock::unlock (10 bytes) Installing method (4) java.util.concurrent.locks.ReentrantLock.unlock()V 3346 80 b java.util.concurrent.locks.AbstractQueuedSynchronizer::release (33 bytes) Installing method (4) java.util.concurrent.locks.AbstractQueuedSynchronizer.release(I)Z 3355 81 b java.util.concurrent.locks.ReentrantLock$Sync::tryRelease (45 bytes) Installing method (4) java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(I)Z 3364 82 b java.util.concurrent.locks.AbstractOwnableSynchronizer::getExclusiveOwnerThread (5 bytes) Installing method (4) java.util.concurrent.locks.AbstractOwnableSynchronizer.getExclusiveOwnerThread()Ljava/lang/Thread; 3366 83 b java.util.concurrent.locks.AbstractQueuedSynchronizer::setState (6 bytes) Installing method (4) java.util.concurrent.locks.AbstractQueuedSynchronizer.setState(I)V 3368 84 b java.lang.ClassLoader::findLoadedClass (16 bytes) Installing method (4) java.lang.ClassLoader.findLoadedClass(Ljava/lang/String;)Ljava/lang/Class; 3374 85 b java.lang.ClassLoader::checkName (43 bytes) Installing method (4) java.lang.ClassLoader.checkName(Ljava/lang/String;)Z 3383 86 b java.lang.String::length (6 bytes) Installing method (4) java.lang.String.length()I 3387 87 b java.lang.String::indexOf (7 bytes) Installing method (4) java.lang.String.indexOf(I)I 3390 88 b java.lang.String::indexOf (70 bytes) Installing method (4) java.lang.String.indexOf(II)I 3404 89 b sun.misc.VM::allowArraySyntax (4 bytes) Installing method (4) sun.misc.VM.allowArraySyntax()Z 3405 90 b java.lang.String::charAt (29 bytes) Installing method (4) java.lang.String.charAt(I)C 3408 91 n java.lang.ClassLoader::findLoadedClass0 (native) 3409 92 b java.lang.ClassLoader::findBootstrapClassOrNull (16 bytes) Installing method (4) java.lang.ClassLoader.findBootstrapClassOrNull(Ljava/lang/String;)Ljava/lang/Class; 3412 93 n java.lang.ClassLoader::findBootstrapClass (native) 3413 94 !b java.net.URLClassLoader::findClass (29 bytes) Installing method (4) java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; 3415 94 ! java.net.URLClassLoader::findClass (29 bytes) made not entrant 3416 95 b java.net.URLClassLoader$1:: (15 bytes) Installing method (4) java.net.URLClassLoader$1.(Ljava/net/URLClassLoader;Ljava/lang/String;)V 3420 96 !b java.lang.ClassLoader::findNative (86 bytes) Installing method (4) java.lang.ClassLoader.findNative(Ljava/lang/ClassLoader;Ljava/lang/String;)J 3432 97 s b java.util.Vector::size (5 bytes) Installing method (4) java.util.Vector.size()I 3435 98 s b java.util.Vector::elementAt (48 bytes) Installing method (4) java.util.Vector.elementAt(I)Ljava/lang/Object; 3439 99 b java.util.Vector::elementData (7 bytes) Installing method (4) java.util.Vector.elementData(I)Ljava/lang/Object; 3442 100 n java.lang.ClassLoader$NativeLibrary::find (native) 3443 101 n java.security.AccessController::doPrivileged (native) (static) 3443 102 b java.net.URLClassLoader$1::run (5 bytes) Installing method (4) java.net.URLClassLoader$1.run()Ljava/lang/Object; 3445 103 !b java.net.URLClassLoader$1::run (73 bytes) Installing method (4) java.net.URLClassLoader$1.run()Ljava/lang/Class; 3456 104 b java.lang.String::concat (47 bytes) Installing method (4) java.lang.String.concat(Ljava/lang/String;)Ljava/lang/String; 3467 105 b java.util.Arrays::copyOf (19 bytes) Installing method (4) java.util.Arrays.copyOf([CI)[C 3474 106 b java.lang.String::getChars (16 bytes) Installing method (4) java.lang.String.getChars([CI)V 3479 107 b java.net.URLClassLoader::access$000 (5 bytes) Installing method (4) java.net.URLClassLoader.access$000(Ljava/net/URLClassLoader;)Lsun/misc/URLClassPath; 3481 108 b sun.misc.URLClassPath::getResource (74 bytes) Installing method (4) sun.misc.URLClassPath.getResource(Ljava/lang/String;Z)Lsun/misc/Resource; 3484 109 s!b sun.misc.URLClassPath::getLoader (154 bytes) Installing method (4) sun.misc.URLClassPath.getLoader(I)Lsun/misc/URLClassPath$Loader; 3497 110 b java.util.ArrayList::size (5 bytes) Installing method (4) java.util.ArrayList.size()I 3498 111 b java.util.Stack::empty (13 bytes) Installing method (4) java.util.Stack.empty()Z 3500 112 s b java.util.Stack::pop (19 bytes) Installing method (4) java.util.Stack.pop()Ljava/lang/Object; 3504 113 s b java.util.Stack::peek (25 bytes) Installing method (4) java.util.Stack.peek()Ljava/lang/Object; 3511 114 s b java.util.Vector::removeElementAt (115 bytes) Installing method (4) java.util.Vector.removeElementAt(I)V 3521 109 s! sun.misc.URLClassPath::getLoader (154 bytes) made not entrant 3521 115 b sun.net.util.URLUtil::urlNoFragString (114 bytes) Installing method (4) sun.net.util.URLUtil.urlNoFragString(Ljava/net/URL;)Ljava/lang/String; 3523 115 sun.net.util.URLUtil::urlNoFragString (114 bytes) made not entrant 3523 116 b java.net.URL::getProtocol (5 bytes) Installing method (4) java.net.URL.getProtocol()Ljava/lang/String; 3524 117 b java.lang.String::toLowerCase (8 bytes) Installing method (4) java.lang.String.toLowerCase()Ljava/lang/String; 3527 118 b java.util.Locale::getDefault (4 bytes) Installing method (4) java.util.Locale.getDefault()Ljava/util/Locale; 3528 119 b java.lang.String::toLowerCase (472 bytes) Installing method (4) java.lang.String.toLowerCase(Ljava/util/Locale;)Ljava/lang/String; 3585 120 b java.lang.Character::toLowerCase (6 bytes) Installing method (4) java.lang.Character.toLowerCase(C)C 3588 121 b java.lang.Character::toLowerCase (9 bytes) Installing method (4) java.lang.Character.toLowerCase(I)I 3590 122 b java.lang.CharacterData::of (120 bytes) Installing method (4) java.lang.CharacterData.of(I)Ljava/lang/CharacterData; 3593 123 b java.lang.CharacterDataLatin1::toLowerCase (39 bytes) Installing method (4) java.lang.CharacterDataLatin1.toLowerCase(I)I 3595 124 b java.lang.CharacterDataLatin1::getProperties (11 bytes) Installing method (4) java.lang.CharacterDataLatin1.getProperties(I)I 3596 125 b java.lang.StringBuilder::append (8 bytes) Installing method (4) java.lang.StringBuilder.append(Ljava/lang/String;)Ljava/lang/StringBuilder; 3598 126 b java.lang.AbstractStringBuilder::append (48 bytes) Installing method (4) java.lang.AbstractStringBuilder.append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; 3601 127 b java.lang.AbstractStringBuilder::ensureCapacityInternal (16 bytes) Installing method (4) java.lang.AbstractStringBuilder.ensureCapacityInternal(I)V 3604 128 b java.lang.String::getChars (62 bytes) Installing method (4) java.lang.String.getChars(II[CI)V 3615 129 b java.net.URL::getHost (5 bytes) Installing method (4) java.net.URL.getHost()Ljava/lang/String; 3618 130 b java.net.URL::getPort (5 bytes) Installing method (4) java.net.URL.getPort()I 3619 131 b java.net.URL::getDefaultPort (8 bytes) Installing method (4) java.net.URL.getDefaultPort()I 3621 132 b java.net.URLStreamHandler::getDefaultPort (2 bytes) Installing method (4) java.net.URLStreamHandler.getDefaultPort()I 3622 133 b java.net.URL::getFile (5 bytes) Installing method (4) java.net.URL.getFile()Ljava/lang/String; 3623 134 b java.lang.AbstractStringBuilder::expandCapacity (50 bytes) Installing method (4) java.lang.AbstractStringBuilder.expandCapacity(I)V 3627 135 b java.lang.StringBuilder::toString (17 bytes) Installing method (4) java.lang.StringBuilder.toString()Ljava/lang/String; 3634 136 b java.util.Arrays::copyOfRange (63 bytes) Installing method (4) java.util.Arrays.copyOfRange([CII)[C 3641 137 b java.util.HashMap::containsKey (14 bytes) Installing method (4) java.util.HashMap.containsKey(Ljava/lang/Object;)Z 3643 138 b java.util.HashMap::getEntry (77 bytes) Installing method (4) java.util.HashMap.getEntry(Ljava/lang/Object;)Ljava/util/HashMap$Entry; 3653 139 b java.util.HashMap::hash (48 bytes) Installing method (4) java.util.HashMap.hash(Ljava/lang/Object;)I 3661 140 b java.util.HashMap::indexFor (6 bytes) Installing method (4) java.util.HashMap.indexFor(II)I 3663 141 !b sun.misc.URLClassPath::getLoader (25 bytes) Installing method (4) sun.misc.URLClassPath.getLoader(Ljava/net/URL;)Lsun/misc/URLClassPath$Loader; 3666 141 ! sun.misc.URLClassPath::getLoader (25 bytes) made not entrant 3667 142 b sun.misc.URLClassPath$3:: (15 bytes) Installing method (4) sun.misc.URLClassPath$3.(Lsun/misc/URLClassPath;Ljava/net/URL;)V 3671 143 n java.security.AccessController::doPrivileged (native) (static) 3671 144 b sun.misc.URLClassPath$3::run (5 bytes) Installing method (4) sun.misc.URLClassPath$3.run()Ljava/lang/Object; 3674 145 b sun.misc.URLClassPath$3::run (86 bytes) Installing method (4) sun.misc.URLClassPath$3.run()Lsun/misc/URLClassPath$Loader; 3685 146 b java.lang.String::endsWith (17 bytes) Installing method (4) java.lang.String.endsWith(Ljava/lang/String;)Z 3689 147 b java.lang.String::startsWith (72 bytes) Installing method (4) java.lang.String.startsWith(Ljava/lang/String;I)Z 3704 145 sun.misc.URLClassPath$3::run (86 bytes) made not entrant 3705 148 b sun.misc.URLClassPath::access$100 (5 bytes) Installing method (4) sun.misc.URLClassPath.access$100(Lsun/misc/URLClassPath;)Ljava/net/URLStreamHandler; 3707 149 b sun.misc.URLClassPath$JarLoader:: (141 bytes) Installing method (4) sun.misc.URLClassPath$JarLoader.(Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap;)V 3708 149 sun.misc.URLClassPath$JarLoader:: (141 bytes) made not entrant 3708 150 b java.lang.StringBuilder::append (9 bytes) Installing method (4) java.lang.StringBuilder.append(Ljava/lang/Object;)Ljava/lang/StringBuilder; 3710 23 java.util.Properties::getProperty (46 bytes) made zombie 3710 151 b java.lang.String::valueOf (14 bytes) Installing method (4) java.lang.String.valueOf(Ljava/lang/Object;)Ljava/lang/String; 3711 29 sun.launcher.LauncherHelper:: (67 bytes) made zombie 3711 152 b java.net.URL::toString (5 bytes) Installing method (4) java.net.URL.toString()Ljava/lang/String; 3713 38 ! sun.launcher.LauncherHelper::makePlatformString (70 bytes) made zombie 3713 153 b java.net.URL::toExternalForm (9 bytes) Installing method (4) java.net.URL.toExternalForm()Ljava/lang/String; 3715 154 b java.net.URLStreamHandler::toExternalForm (219 bytes) Installing method (4) java.net.URLStreamHandler.toExternalForm(Ljava/net/URL;)Ljava/lang/String; 3729 155 b java.net.URL::getAuthority (5 bytes) Installing method (4) java.net.URL.getAuthority()Ljava/lang/String; 3733 156 b java.net.URL::getPath (5 bytes) Installing method (4) java.net.URL.getPath()Ljava/lang/String; 3735 157 b java.net.URL::getQuery (5 bytes) Installing method (4) java.net.URL.getQuery()Ljava/lang/String; 3737 158 b java.net.URL::getRef (5 bytes) Installing method (4) java.net.URL.getRef()Ljava/lang/String; 3739 154 java.net.URLStreamHandler::toExternalForm (219 bytes) made not entrant 3742 159 b java.lang.StringBuffer:: (53 bytes) Installing method (4) java.lang.StringBuffer.()V 3745 159 java.lang.StringBuffer:: (53 bytes) made not entrant 3746 160 b java.io.ObjectStreamField:: (8 bytes) Installing method (4) java.io.ObjectStreamField.(Ljava/lang/String;Ljava/lang/Class;)V 3789 161 b java.lang.StringBuilder::append (8 bytes) Installing method (4) java.lang.StringBuilder.append(C)Ljava/lang/StringBuilder; 3792 162 b java.lang.AbstractStringBuilder::append (29 bytes) Installing method (4) java.lang.AbstractStringBuilder.append(C)Ljava/lang/AbstractStringBuilder; 3796 163 n java.lang.String::intern (native) 3798 164 b java.lang.StringBuffer:: (6 bytes) Installing method (4) java.lang.StringBuffer.(I)V 3802 165 b java.lang.AbstractStringBuilder:: (12 bytes) Installing method (4) java.lang.AbstractStringBuilder.(I)V 3807 166 s b java.lang.StringBuffer::append (8 bytes) Installing method (4) java.lang.StringBuffer.append(Ljava/lang/String;)Ljava/lang/StringBuffer; 3816 167 s b java.lang.StringBuffer::toString (17 bytes) Installing method (4) java.lang.StringBuffer.toString()Ljava/lang/String; 3819 167 s java.lang.StringBuffer::toString (17 bytes) made not entrant 3820 168 b java.lang.String:: (67 bytes) Installing method (4) java.lang.String.([CII)V 3828 169 b java.net.URL:: (308 bytes) Installing method (4) java.net.URL.(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V 3883 170 b java.net.Parts::getPath (5 bytes) Installing method (4) java.net.Parts.getPath()Ljava/lang/String; 3884 171 b java.net.Parts::getQuery (5 bytes) Installing method (4) java.net.Parts.getQuery()Ljava/lang/String; 3885 172 b java.net.Parts::getRef (5 bytes) Installing method (4) java.net.Parts.getRef()Ljava/lang/String; 3886 173 b sun.misc.URLClassPath$Loader:: (10 bytes) Installing method (4) sun.misc.URLClassPath$Loader.(Ljava/net/URL;)V 3890 174 b sun.misc.URLClassPath$JarLoader::isOptimizable (10 bytes) Installing method (4) sun.misc.URLClassPath$JarLoader.isOptimizable(Ljava/net/URL;)Z 3894 175 !b sun.net.www.ParseUtil::decode (316 bytes) Installing method (4) sun.net.www.ParseUtil.decode(Ljava/lang/String;)Ljava/lang/String; 3904 176 b java.io.File:: (42 bytes) Installing method (4) java.io.File.(Ljava/lang/String;)V 3908 177 b java.io.UnixFileSystem::normalize (75 bytes) Installing method (4) java.io.UnixFileSystem.normalize(Ljava/lang/String;)Ljava/lang/String; 3920 178 b java.io.UnixFileSystem::prefixLength (25 bytes) Installing method (4) java.io.UnixFileSystem.prefixLength(Ljava/lang/String;)I 3926 179 b sun.misc.MetaIndex::forJar (13 bytes) Installing method (4) sun.misc.MetaIndex.forJar(Ljava/io/File;)Lsun/misc/MetaIndex; 3930 180 !b sun.misc.MetaIndex::getJarMap (62 bytes) Installing method (4) sun.misc.MetaIndex.getJarMap()Ljava/util/Map; 3950 181 b java.util.HashMap::get (20 bytes) Installing method (4) java.util.HashMap.get(Ljava/lang/Object;)Ljava/lang/Object; 3955 182 b java.io.File::hashCode (8 bytes) Installing method (4) java.io.File.hashCode()I 3958 183 b java.io.UnixFileSystem::hashCode (11 bytes) Installing method (4) java.io.UnixFileSystem.hashCode(Ljava/io/File;)I 3960 184 b java.io.File::getPath (5 bytes) Installing method (4) java.io.File.getPath()Ljava/lang/String; 3962 185 b java.lang.String::hashCode (55 bytes) Installing method (4) java.lang.String.hashCode()I 3979 186 b java.io.File::equals (30 bytes) Installing method (4) java.io.File.equals(Ljava/lang/Object;)Z 3982 187 b java.io.File::compareTo (9 bytes) Installing method (4) java.io.File.compareTo(Ljava/io/File;)I 3986 188 b java.io.UnixFileSystem::compare (12 bytes) Installing method (4) java.io.UnixFileSystem.compare(Ljava/io/File;Ljava/io/File;)I 3993 189 b java.lang.String::compareTo (78 bytes) Installing method (4) java.lang.String.compareTo(Ljava/lang/String;)I 4014 190 b java.util.HashMap$Entry::getValue (5 bytes) Installing method (4) java.util.HashMap$Entry.getValue()Ljava/lang/Object; 4015 191 b java.io.File::exists (34 bytes) Installing method (4) java.io.File.exists()Z 4018 192 b java.io.UnixFileSystem::getBooleanAttributes (49 bytes) Installing method (4) java.io.UnixFileSystem.getBooleanAttributes(Ljava/io/File;)I 4024 193 n java.io.UnixFileSystem::getBooleanAttributes0 (native) 4024 194 b java.lang.String::getBytes (27 bytes) Installing method (4) java.lang.String.getBytes(Ljava/lang/String;)[B 4032 195 !b java.lang.StringCoding::encode (120 bytes) Installing method (4) java.lang.StringCoding.encode(Ljava/lang/String;[CII)[B 4050 196 b java.lang.StringCoding$StringEncoder::requestedCharsetName (5 bytes) Installing method (4) java.lang.StringCoding$StringEncoder.requestedCharsetName()Ljava/lang/String; 4054 197 !b java.lang.StringCoding$StringEncoder::encode (179 bytes) Installing method (4) java.lang.StringCoding$StringEncoder.encode([CII)[B 4066 198 b java.nio.charset.CharsetEncoder::maxBytesPerChar (5 bytes) Installing method (4) java.nio.charset.CharsetEncoder.maxBytesPerChar()F 4067 199 b sun.nio.cs.UTF_8$Encoder::encode (361 bytes) Installing method (4) sun.nio.cs.UTF_8$Encoder.encode([CII[B)I 4097 200 b java.lang.StringCoding::access$300 (8 bytes) Installing method (4) java.lang.StringCoding.access$300([BILjava/nio/charset/Charset;Z)[B 4100 201 b java.lang.StringCoding::safeTrim (24 bytes) Installing method (4) java.lang.StringCoding.safeTrim([BILjava/nio/charset/Charset;Z)[B 4103 202 b java.util.Arrays::copyOf (19 bytes) Installing method (4) java.util.Arrays.copyOf([BI)[B 4116 203 b java.io.File::getName (42 bytes) Installing method (4) java.io.File.getName()Ljava/lang/String; 4120 204 b java.lang.String::substring (56 bytes) Installing method (4) java.lang.String.substring(I)Ljava/lang/String; 4128 205 b sun.misc.URLClassPath$JarLoader::getClassPath (111 bytes) Installing method (4) sun.misc.URLClassPath$JarLoader.getClassPath()[Ljava/net/URL; 4134 206 b java.util.HashMap::put (124 bytes) Installing method (4) java.util.HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 4150 207 b java.util.HashMap::addEntry (69 bytes) Installing method (4) java.util.HashMap.addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V 4158 208 b java.util.HashMap::createEntry (39 bytes) Installing method (4) java.util.HashMap.createEntry(ILjava/lang/Object;Ljava/lang/Object;I)V 4169 209 b java.util.ArrayList::get (11 bytes) Installing method (4) java.util.ArrayList.get(I)Ljava/lang/Object; 4173 210 b java.util.ArrayList::rangeCheck (22 bytes) Installing method (4) java.util.ArrayList.rangeCheck(I)V 4175 211 b java.util.ArrayList::elementData (7 bytes) Installing method (4) java.util.ArrayList.elementData(I)Ljava/lang/Object; 4180 108 sun.misc.URLClassPath::getResource (74 bytes) made not entrant 4181 212 !b sun.misc.URLClassPath$JarLoader::getResource (85 bytes) Installing method (4) sun.misc.URLClassPath$JarLoader.getResource(Ljava/lang/String;Z)Lsun/misc/Resource; 4194 213 b sun.misc.MetaIndex::mayContain (51 bytes) Installing method (4) sun.misc.MetaIndex.mayContain(Ljava/lang/String;)Z 4201 214 b java.lang.String::startsWith (7 bytes) Installing method (4) java.lang.String.startsWith(Ljava/lang/String;)Z 4202 215 s!b sun.misc.URLClassPath::getLoader (154 bytes) Installing method (4) sun.misc.URLClassPath.getLoader(I)Lsun/misc/URLClassPath$Loader; 4231 216 b sun.net.util.URLUtil::urlNoFragString (114 bytes) Installing method (4) sun.net.util.URLUtil.urlNoFragString(Ljava/net/URL;)Ljava/lang/String; 4256 217 !b sun.misc.URLClassPath::getLoader (25 bytes) Installing method (4) sun.misc.URLClassPath.getLoader(Ljava/net/URL;)Lsun/misc/URLClassPath$Loader; 4266 218 b sun.misc.URLClassPath$3::run (86 bytes) Installing method (4) sun.misc.URLClassPath$3.run()Lsun/misc/URLClassPath$Loader; 4307 219 b java.net.URLStreamHandler::toExternalForm (219 bytes) Installing method (4) java.net.URLStreamHandler.toExternalForm(Ljava/net/URL;)Ljava/lang/String; 4335 220 s b java.lang.StringBuffer::toString (17 bytes) Installing method (4) java.lang.StringBuffer.toString()Ljava/lang/String; 4346 221 b java.util.ArrayList::add (29 bytes) Installing method (4) java.util.ArrayList.add(Ljava/lang/Object;)Z 4351 222 b java.util.ArrayList::ensureCapacityInternal (26 bytes) Installing method (4) java.util.ArrayList.ensureCapacityInternal(I)V 4402 103 ! java.net.URLClassLoader$1::run (73 bytes) made not entrant 4402 223 b java.lang.ClassNotFoundException:: (7 bytes) Installing method (4) java.lang.ClassNotFoundException.(Ljava/lang/String;)V 4405 224 b java.lang.ReflectiveOperationException:: (7 bytes) Installing method (4) java.lang.ReflectiveOperationException.(Ljava/lang/String;Ljava/lang/Throwable;)V 4406 225 b java.lang.Exception:: (7 bytes) Installing method (4) java.lang.Exception.(Ljava/lang/String;Ljava/lang/Throwable;)V 4408 226 b java.lang.Throwable:: (39 bytes) Installing method (4) java.lang.Throwable.(Ljava/lang/String;Ljava/lang/Throwable;)V 4411 227 s b java.lang.Throwable::fillInStackTrace (29 bytes) Installing method (4) java.lang.Throwable.fillInStackTrace()Ljava/lang/Throwable; 4415 228 n java.lang.Throwable::fillInStackTrace (native) 4417 229 b java.security.PrivilegedActionException:: (14 bytes) Installing method (4) java.security.PrivilegedActionException.(Ljava/lang/Exception;)V 4419 230 b java.lang.Exception:: (6 bytes) Installing method (4) java.lang.Exception.(Ljava/lang/Throwable;)V 4427 231 b java.security.PrivilegedActionException::getException (5 bytes) Installing method (4) java.security.PrivilegedActionException.getException()Ljava/lang/Exception; 4429 232 !b java.net.URLClassLoader::findClass (29 bytes) Installing method (4) java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; 4438 233 !b java.net.URLClassLoader$1::run (73 bytes) Installing method (4) java.net.URLClassLoader$1.run()Ljava/lang/Class; 4451 234 b sun.misc.URLClassPath::getResource (74 bytes) Installing method (4) sun.misc.URLClassPath.getResource(Ljava/lang/String;Z)Lsun/misc/Resource; 4463 218 sun.misc.URLClassPath$3::run (86 bytes) made not entrant 4464 235 b sun.misc.URLClassPath$FileLoader:: (61 bytes) Installing method (4) sun.misc.URLClassPath$FileLoader.(Ljava/net/URL;)V 4474 235 sun.misc.URLClassPath$FileLoader:: (61 bytes) made not entrant 4475 236 b java.io.UnixFileSystem::normalize (132 bytes) Installing method (4) java.io.UnixFileSystem.normalize(Ljava/lang/String;II)Ljava/lang/String; 4480 236 java.io.UnixFileSystem::normalize (132 bytes) made not entrant 4481 237 b java.io.File::getCanonicalFile (21 bytes) Installing method (4) java.io.File.getCanonicalFile()Ljava/io/File; 4485 238 b java.io.File::getCanonicalPath (14 bytes) Installing method (4) java.io.File.getCanonicalPath()Ljava/lang/String; 4489 239 b java.io.UnixFileSystem::resolve (27 bytes) Installing method (4) java.io.UnixFileSystem.resolve(Ljava/io/File;)Ljava/lang/String; 4494 240 b java.io.UnixFileSystem::isAbsolute (13 bytes) Installing method (4) java.io.UnixFileSystem.isAbsolute(Ljava/io/File;)Z 4497 241 b java.io.File::getPrefixLength (5 bytes) Installing method (4) java.io.File.getPrefixLength()I 4498 242 b java.io.UnixFileSystem::canonicalize (232 bytes) Installing method (4) java.io.UnixFileSystem.canonicalize(Ljava/lang/String;)Ljava/lang/String; 4537 243 s b java.io.ExpiringCache::get (39 bytes) Installing method (4) java.io.ExpiringCache.get(Ljava/lang/String;)Ljava/lang/String; 4547 244 b java.io.ExpiringCache::entryFor (57 bytes) Installing method (4) java.io.ExpiringCache.entryFor(Ljava/lang/String;)Ljava/io/ExpiringCache$Entry; 4555 245 b java.util.LinkedHashMap::get (25 bytes) Installing method (4) java.util.LinkedHashMap.get(Ljava/lang/Object;)Ljava/lang/Object; Program received signal SIGSEGV, Segmentation fault. 4565 245 java.util.LinkedHashMap::get (25 bytes) made not entrant Program received signal SIGSEGV, Segmentation fault. 4565 244 java.io.ExpiringCache::entryFor (57 bytes) made not entrant 4565 246 b java.io.UnixFileSystem::parentOrNull (118 bytes) Installing method (4) java.io.UnixFileSystem.parentOrNull(Ljava/lang/String;)Ljava/lang/String; 4578 247 b java.lang.String::substring (79 bytes) Installing method (4) java.lang.String.substring(II)Ljava/lang/String; 4590 248 b java.io.ExpiringCache::entryFor (57 bytes) Installing method (4) java.io.ExpiringCache.entryFor(Ljava/lang/String;)Ljava/io/ExpiringCache$Entry; 4597 249 b java.util.LinkedHashMap::get (25 bytes) Installing method (4) java.util.LinkedHashMap.get(Ljava/lang/Object;)Ljava/lang/Object; 4604 250 n java.io.UnixFileSystem::canonicalize0 (native) 4605 251 s b java.io.ExpiringCache::put (70 bytes) Installing method (4) java.io.ExpiringCache.put(Ljava/lang/String;Ljava/lang/String;)V 4620 252 !b sun.misc.URLClassPath$FileLoader::getResource (164 bytes) Installing method (4) sun.misc.URLClassPath$FileLoader.getResource(Ljava/lang/String;Z)Lsun/misc/Resource; 4682 253 b sun.misc.URLClassPath$Loader::getBaseURL (5 bytes) Installing method (4) sun.misc.URLClassPath$Loader.getBaseURL()Ljava/net/URL; 4684 254 !b java.net.URL:: (543 bytes) Installing method (4) java.net.URL.(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V 4741 255 b java.lang.String::regionMatches (149 bytes) Installing method (4) java.lang.String.regionMatches(ZILjava/lang/String;II)Z 4757 256 b sun.net.www.protocol.file.Handler::parseURL (18 bytes) Installing method (4) sun.net.www.protocol.file.Handler.parseURL(Ljava/net/URL;Ljava/lang/String;II)V 4766 257 b java.net.URLStreamHandler::parseURL (1158 bytes) Installing method (4) java.net.URLStreamHandler.parseURL(Ljava/net/URL;Ljava/lang/String;II)V 4816 258 b java.net.URL::getUserInfo (5 bytes) Installing method (4) java.net.URL.getUserInfo()Ljava/lang/String; 4818 257 java.net.URLStreamHandler::parseURL (1158 bytes) made not entrant 4820 259 b java.lang.String::indexOf (7 bytes) Installing method (4) java.lang.String.indexOf(Ljava/lang/String;)I 4822 260 b java.lang.String::indexOf (25 bytes) Installing method (4) java.lang.String.indexOf(Ljava/lang/String;I)I 4825 94 ! java.net.URLClassLoader::findClass (29 bytes) made zombie 4825 261 b java.lang.String::indexOf (166 bytes) Installing method (4) java.lang.String.indexOf([CII[CIII)I 4873 115 sun.net.util.URLUtil::urlNoFragString (114 bytes) made zombie 4873 109 s! sun.misc.URLClassPath::getLoader (154 bytes) made zombie 4874 141 ! sun.misc.URLClassPath::getLoader (25 bytes) made zombie 4876 262 b java.net.URLStreamHandler::setURL (40 bytes) Installing method (4) java.net.URLStreamHandler.setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V 4886 263 !b java.net.URL::set (114 bytes) Installing method (4) java.net.URL.set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V 4904 264 b sun.net.www.ParseUtil::encodePath (336 bytes) Installing method (4) sun.net.www.ParseUtil.encodePath(Ljava/lang/String;Z)Ljava/lang/String; 4977 265 b java.util.BitSet::get (69 bytes) Installing method (4) java.util.BitSet.get(I)Z 4982 266 b java.util.BitSet::checkInvariants (111 bytes) Installing method (4) java.util.BitSet.checkInvariants()V 4984 267 b java.util.BitSet::wordIndex (5 bytes) Installing method (4) java.util.BitSet.wordIndex(I)I 4988 268 b java.lang.Character::toUpperCase (6 bytes) Installing method (4) java.lang.Character.toUpperCase(C)C 4989 269 b java.lang.Character::toUpperCase (9 bytes) Installing method (4) java.lang.Character.toUpperCase(I)I 4997 270 b java.lang.CharacterDataLatin1::toUpperCase (53 bytes) Installing method (4) java.lang.CharacterDataLatin1.toUpperCase(I)I 5004 271 b java.net.URLStreamHandler::parseURL (1158 bytes) Installing method (4) java.net.URLStreamHandler.parseURL(Ljava/net/URL;Ljava/lang/String;II)V 5188 272 b java.io.UnixFileSystem::resolve (103 bytes) Installing method (4) java.io.UnixFileSystem.resolve(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 5213 252 ! sun.misc.URLClassPath$FileLoader::getResource (164 bytes) made not entrant 5213 273 b sun.misc.URLClassPath$FileLoader$1:: (26 bytes) Installing method (4) sun.misc.URLClassPath$FileLoader$1.(Lsun/misc/URLClassPath$FileLoader;Ljava/lang/String;Ljava/net/URL;Ljava/io/File;)V 5219 274 b sun.misc.Resource:: (5 bytes) Installing method (4) sun.misc.Resource.()V 5221 275 b java.net.URLClassLoader::access$100 (7 bytes) Installing method (4) java.net.URLClassLoader.access$100(Ljava/net/URLClassLoader;Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class; 5226 276 !b java.net.URLClassLoader::defineClass (224 bytes) Installing method (4) java.net.URLClassLoader.defineClass(Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class; 5242 277 b sun.misc.URLClassPath$FileLoader$1::getCodeSourceURL (8 bytes) Installing method (4) sun.misc.URLClassPath$FileLoader$1.getCodeSourceURL()Ljava/net/URL; 5247 278 b sun.misc.Resource::getByteBuffer (24 bytes) Installing method (4) sun.misc.Resource.getByteBuffer()Ljava/nio/ByteBuffer; 5248 279 s b sun.misc.Resource::cachedInputStream (20 bytes) Installing method (4) sun.misc.Resource.cachedInputStream()Ljava/io/InputStream; 5253 280 b sun.misc.URLClassPath$FileLoader$1::getInputStream (12 bytes) Installing method (4) sun.misc.URLClassPath$FileLoader$1.getInputStream()Ljava/io/InputStream; 5254 280 sun.misc.URLClassPath$FileLoader$1::getInputStream (12 bytes) made not entrant 5254 281 b java.io.FileInputStream:: (88 bytes) Installing method (4) java.io.FileInputStream.(Ljava/io/File;)V 5263 282 b java.lang.ref.Finalizer::register (10 bytes) Installing method (4) java.lang.ref.Finalizer.register(Ljava/lang/Object;)V 5272 283 s b java.io.FileDescriptor::attach (73 bytes) Installing method (4) java.io.FileDescriptor.attach(Ljava/io/Closeable;)V 5278 284 n java.io.FileInputStream::open (native) 5278 278 sun.misc.Resource::getByteBuffer (24 bytes) made not entrant 5279 285 !b sun.misc.Resource::getBytes (242 bytes) Installing method (4) sun.misc.Resource.getBytes()[B 5298 286 b java.lang.Thread::interrupted (8 bytes) Installing method (4) java.lang.Thread.interrupted()Z 5300 287 b sun.misc.URLClassPath$FileLoader$1::getContentLength (9 bytes) Installing method (4) sun.misc.URLClassPath$FileLoader$1.getContentLength()I 5302 288 b java.io.File::length (24 bytes) Installing method (4) java.io.File.length()J 5305 289 n java.io.UnixFileSystem::getLength (native) 5307 290 b java.io.FileInputStream::read (8 bytes) Installing method (4) java.io.FileInputStream.read([BII)I 5309 291 n java.io.FileInputStream::readBytes (native) 5309 292 !b java.io.FileInputStream::close (62 bytes) Installing method (4) java.io.FileInputStream.close()V 5316 293 s!b java.io.FileDescriptor::closeAll (215 bytes) Installing method (4) java.io.FileDescriptor.closeAll(Ljava/io/Closeable;)V 5337 294 b java.io.FileInputStream$1::close (8 bytes) Installing method (4) java.io.FileInputStream$1.close()V 5338 295 b java.io.FileInputStream::access$000 (5 bytes) Installing method (4) java.io.FileInputStream.access$000(Ljava/io/FileInputStream;)V 5341 296 n java.io.FileInputStream::close0 (native) 5342 297 b sun.misc.Resource::getCodeSigners (2 bytes) Installing method (4) sun.misc.Resource.getCodeSigners()[Ljava/security/CodeSigner; 5343 276 ! java.net.URLClassLoader::defineClass (224 bytes) made not entrant 5344 298 b java.security.CodeSource:: (40 bytes) Installing method (4) java.security.CodeSource.(Ljava/net/URL;[Ljava/security/CodeSigner;)V 5354 299 b sun.misc.PerfCounter:: (17 bytes) Installing method (4) sun.misc.PerfCounter.()V 5355 299 sun.misc.PerfCounter:: (17 bytes) made not entrant 5356 300 b sun.misc.Perf$GetPerfAction:: (5 bytes) Installing method (4) sun.misc.Perf$GetPerfAction.()V 5357 301 n java.security.AccessController::doPrivileged (native) (static) 5357 302 b sun.misc.Perf$GetPerfAction::run (5 bytes) Installing method (4) sun.misc.Perf$GetPerfAction.run()Ljava/lang/Object; 5361 303 b sun.misc.Perf$GetPerfAction::run (4 bytes) Installing method (4) sun.misc.Perf$GetPerfAction.run()Lsun/misc/Perf; 5362 303 sun.misc.Perf$GetPerfAction::run (4 bytes) made not entrant 5363 304 b sun.misc.Perf:: (14 bytes) Installing method (4) sun.misc.Perf.()V 5365 305 n sun.misc.Perf::registerNatives (native) (static) 5365 304 sun.misc.Perf:: (14 bytes) made not entrant 5365 306 b sun.misc.Perf:: (5 bytes) Installing method (4) sun.misc.Perf.()V 5366 307 b sun.misc.Perf::getPerf (27 bytes) Installing method (4) sun.misc.Perf.getPerf()Lsun/misc/Perf; 5368 302 sun.misc.Perf$GetPerfAction::run (5 bytes) made not entrant 5368 308 b sun.misc.PerfCounter::getReadClassBytesTime (4 bytes) Installing method (4) sun.misc.PerfCounter.getReadClassBytesTime()Lsun/misc/PerfCounter; 5370 308 sun.misc.PerfCounter::getReadClassBytesTime (4 bytes) made not entrant 5370 309 b sun.misc.PerfCounter$CoreCounters:: (49 bytes) Installing method (4) sun.misc.PerfCounter$CoreCounters.()V 5376 310 b sun.misc.PerfCounter::newPerfCounter (10 bytes) Installing method (4) sun.misc.PerfCounter.newPerfCounter(Ljava/lang/String;)Lsun/misc/PerfCounter; 5383 311 n sun.misc.Perf::createLong (native) 5386 57 sun.nio.cs.UTF_8$Decoder::decode (759 bytes) made not entrant 5386 175 ! sun.net.www.ParseUtil::decode (316 bytes) made not entrant 5386 310 sun.misc.PerfCounter::newPerfCounter (10 bytes) made not entrant 5387 312 b java.nio.DirectByteBuffer:: (43 bytes) Installing method (4) java.nio.DirectByteBuffer.()V 5391 103 ! java.net.URLClassLoader$1::run (73 bytes) made zombie 5391 313 !b java.lang.Class::desiredAssertionStatus (54 bytes) Installing method (4) java.lang.Class.desiredAssertionStatus()Z 5399 314 b java.lang.Class::getClassLoader (40 bytes) Installing method (4) java.lang.Class.getClassLoader()Ljava/lang/ClassLoader; 5404 315 n java.lang.Class::getClassLoader0 (native) 5405 316 n java.lang.Class::desiredAssertionStatus0 (native) (static) 5405 317 b java.nio.Bits::unsafe (4 bytes) Installing method (4) java.nio.Bits.unsafe()Lsun/misc/Unsafe; 5406 318 n sun.misc.Unsafe::arrayBaseOffset (native) 5407 319 b java.nio.Bits::unaligned (78 bytes) Installing method (4) java.nio.Bits.unaligned()Z 5410 319 java.nio.Bits::unaligned (78 bytes) made not entrant 5410 320 b sun.security.action.GetPropertyAction:: (10 bytes) Installing method (4) sun.security.action.GetPropertyAction.(Ljava/lang/String;)V 5411 108 sun.misc.URLClassPath::getResource (74 bytes) made zombie 5411 321 b sun.security.action.GetPropertyAction::run (5 bytes) Installing method (4) sun.security.action.GetPropertyAction.run()Ljava/lang/Object; 5413 149 sun.misc.URLClassPath$JarLoader:: (141 bytes) made zombie 5413 322 b sun.security.action.GetPropertyAction::run (21 bytes) Installing method (4) sun.security.action.GetPropertyAction.run()Ljava/lang/String; 5415 145 sun.misc.URLClassPath$3::run (86 bytes) made zombie 5416 323 b java.nio.DirectByteBuffer:: (24 bytes) Installing method (4) java.nio.DirectByteBuffer.(JI)V 5419 159 java.lang.StringBuffer:: (53 bytes) made zombie 5419 154 java.net.URLStreamHandler::toExternalForm (219 bytes) made zombie 5419 167 s java.lang.StringBuffer::toString (17 bytes) made zombie 5419 324 b java.nio.MappedByteBuffer:: (15 bytes) Installing method (4) java.nio.MappedByteBuffer.(IIII)V 5423 325 b java.nio.ByteBuffer:: (12 bytes) Installing method (4) java.nio.ByteBuffer.(IIII)V 5430 326 b java.nio.Bits::byteOrder (20 bytes) Installing method (4) java.nio.Bits.byteOrder()Ljava/nio/ByteOrder; 5433 218 sun.misc.URLClassPath$3::run (86 bytes) made zombie 5434 327 b java.nio.ByteOrder::nativeOrder (4 bytes) Installing method (4) java.nio.ByteOrder.nativeOrder()Ljava/nio/ByteOrder; 5435 235 sun.misc.URLClassPath$FileLoader:: (61 bytes) made zombie 5435 236 java.io.UnixFileSystem::normalize (132 bytes) made zombie 5435 244 java.io.ExpiringCache::entryFor (57 bytes) made zombie 5435 245 java.util.LinkedHashMap::get (25 bytes) made zombie 5435 328 b java.nio.ByteBuffer::order (48 bytes) Installing method (4) java.nio.ByteBuffer.order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; 5445 329 b java.nio.DirectByteBuffer::asLongBuffer (151 bytes) Installing method (4) java.nio.DirectByteBuffer.asLongBuffer()Ljava/nio/LongBuffer; 5449 330 b java.nio.Buffer::position (5 bytes) Installing method (4) java.nio.Buffer.position()I 5450 331 b java.nio.Buffer::limit (5 bytes) Installing method (4) java.nio.Buffer.limit()I 5453 329 java.nio.DirectByteBuffer::asLongBuffer (151 bytes) made not entrant 5454 332 b java.nio.DirectLongBufferU:: (43 bytes) Installing method (4) java.nio.DirectLongBufferU.()V 5458 333 b java.nio.Bits::unaligned (78 bytes) Installing method (4) java.nio.Bits.unaligned()Z 5469 334 b java.nio.DirectLongBufferU:: (30 bytes) Installing method (4) java.nio.DirectLongBufferU.(Lsun/nio/ch/DirectBuffer;IIIII)V 5473 335 b java.nio.LongBuffer:: (12 bytes) Installing method (4) java.nio.LongBuffer.(IIII)V 5474 336 b java.nio.LongBuffer:: (22 bytes) Installing method (4) java.nio.LongBuffer.(IIII[JI)V 5477 337 b java.nio.Buffer:: (121 bytes) Installing method (4) java.nio.Buffer.(IIII)V 5481 338 b java.nio.Buffer::limit (62 bytes) Installing method (4) java.nio.Buffer.limit(I)Ljava/nio/Buffer; 5485 339 b java.nio.Buffer::position (43 bytes) Installing method (4) java.nio.Buffer.position(I)Ljava/nio/Buffer; 5487 340 b java.nio.DirectByteBuffer::address (5 bytes) Installing method (4) java.nio.DirectByteBuffer.address()J 5489 341 b sun.misc.PerfCounter::newPerfCounter (10 bytes) Installing method (4) sun.misc.PerfCounter.newPerfCounter(Ljava/lang/String;)Lsun/misc/PerfCounter; 5498 342 b java.nio.DirectByteBuffer::asLongBuffer (151 bytes) Installing method (4) java.nio.DirectByteBuffer.asLongBuffer()Ljava/nio/LongBuffer; 5512 343 b sun.misc.PerfCounter::addElapsedTimeFrom (10 bytes) Installing method (4) sun.misc.PerfCounter.addElapsedTimeFrom(J)V 5515 344 s b sun.misc.PerfCounter::add (18 bytes) Installing method (4) sun.misc.PerfCounter.add(J)V 5518 345 s b sun.misc.PerfCounter::get (9 bytes) Installing method (4) sun.misc.PerfCounter.get()J 5521 346 b java.nio.DirectLongBufferU::get (16 bytes) Installing method (4) java.nio.DirectLongBufferU.get(I)J 5523 347 b java.nio.Buffer::checkIndex (22 bytes) Installing method (4) java.nio.Buffer.checkIndex(I)I 5526 348 b java.nio.DirectLongBufferU::ix (10 bytes) Installing method (4) java.nio.DirectLongBufferU.ix(I)J 5527 349 b java.nio.DirectLongBufferU::put (18 bytes) Installing method (4) java.nio.DirectLongBufferU.put(IJ)Ljava/nio/LongBuffer; 5532 350 b java.security.SecureClassLoader::defineClass (16 bytes) Installing method (4) java.security.SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class; 5534 351 !b java.security.SecureClassLoader::getProtectionDomain (114 bytes) Installing method (4) java.security.SecureClassLoader.getProtectionDomain(Ljava/security/CodeSource;)Ljava/security/ProtectionDomain; 5546 352 s b java.net.URL::hashCode (30 bytes) Installing method (4) java.net.URL.hashCode()I 5551 353 b java.net.URLStreamHandler::hashCode (128 bytes) Installing method (4) java.net.URLStreamHandler.hashCode(Ljava/net/URL;)I 5563 354 s!b java.net.URLStreamHandler::getHostAddress (54 bytes) Installing method (4) java.net.URLStreamHandler.getHostAddress(Ljava/net/URL;)Ljava/net/InetAddress; Program received signal SIGSEGV, Segmentation fault. 5569 351 ! java.security.SecureClassLoader::getProtectionDomain (114 bytes) made not entrant 5571 355 b sun.misc.Launcher$AppClassLoader::getPermissions (21 bytes) Installing method (4) sun.misc.Launcher$AppClassLoader.getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection; 5573 356 !b java.net.URLClassLoader::getPermissions (287 bytes) Installing method (4) java.net.URLClassLoader.getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection; 5581 357 b java.security.SecureClassLoader::getPermissions (12 bytes) Installing method (4) java.security.SecureClassLoader.getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection; 5583 358 b java.security.SecureClassLoader::check (18 bytes) Installing method (4) java.security.SecureClassLoader.check()V 5588 357 java.security.SecureClassLoader::getPermissions (12 bytes) made not entrant 5589 359 b java.security.Permissions:: (38 bytes) Installing method (4) java.security.Permissions.()V 5591 359 java.security.Permissions:: (38 bytes) made not entrant 5593 360 b java.lang.Class::getName (21 bytes) Installing method (4) java.lang.Class.getName()Ljava/lang/String; 5599 361 n java.lang.Class::getName0 (native) 5603 362 b java.security.Permissions:: (28 bytes) Installing method (4) java.security.Permissions.()V 5608 362 java.security.Permissions:: (28 bytes) made not entrant 5608 363 b java.util.HashMap:: (8 bytes) Installing method (4) java.util.HashMap.(I)V 5622 364 b sun.misc.Hashing::randomHashSeed (103 bytes) Installing method (4) sun.misc.Hashing.randomHashSeed(Ljava/lang/Object;)I 5638 365 b sun.misc.VM::isBooted (4 bytes) Installing method (4) sun.misc.VM.isBooted()Z 5639 366 b java.util.Random::nextInt (7 bytes) Installing method (4) java.util.Random.nextInt()I 5640 367 b java.util.Random::next (47 bytes) Installing method (4) java.util.Random.next(I)I 5646 368 b java.util.concurrent.atomic.AtomicLong::get (5 bytes) Installing method (4) java.util.concurrent.atomic.AtomicLong.get()J 5647 369 b java.util.concurrent.atomic.AtomicLong::compareAndSet (13 bytes) Installing method (4) java.util.concurrent.atomic.AtomicLong.compareAndSet(JJ)Z 5649 370 b java.lang.Float::isNaN (12 bytes) Installing method (4) java.lang.Float.isNaN(F)Z 5652 371 b java.lang.Math::min (46 bytes) Installing method (4) java.lang.Math.min(FF)F 5654 372 b java.util.HashMap::init (1 bytes) Installing method (4) java.util.HashMap.init()V 5656 373 b java.security.CodeSource::getLocation (5 bytes) Installing method (4) java.security.CodeSource.getLocation()Ljava/net/URL; 5662 374 b java.net.URL::openConnection (9 bytes) Installing method (4) java.net.URL.openConnection()Ljava/net/URLConnection; 5666 375 s b sun.net.www.protocol.file.Handler::openConnection (7 bytes) Installing method (4) sun.net.www.protocol.file.Handler.openConnection(Ljava/net/URL;)Ljava/net/URLConnection; 5674 376 s!b sun.net.www.protocol.file.Handler::openConnection (194 bytes) Installing method (4) sun.net.www.protocol.file.Handler.openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection; 5687 376 s! sun.net.www.protocol.file.Handler::openConnection (194 bytes) made not entrant 5687 377 !b sun.net.www.ParseUtil::decode (316 bytes) Installing method (4) sun.net.www.ParseUtil.decode(Ljava/lang/String;)Ljava/lang/String; 5699 378 b java.io.UnixFileSystem::normalize (132 bytes) Installing method (4) java.io.UnixFileSystem.normalize(Ljava/lang/String;II)Ljava/lang/String; 5719 379 b sun.net.www.protocol.file.Handler::createFileURLConnection (10 bytes) Installing method (4) sun.net.www.protocol.file.Handler.createFileURLConnection(Ljava/net/URL;Ljava/io/File;)Ljava/net/URLConnection; 5723 379 sun.net.www.protocol.file.Handler::createFileURLConnection (10 bytes) made not entrant 5725 380 b java.net.URLConnection:: (23 bytes) Installing method (4) java.net.URLConnection.()V 5727 380 java.net.URLConnection:: (23 bytes) made not entrant 5727 381 b java.util.Hashtable:: (9 bytes) Installing method (4) java.util.Hashtable.()V 5739 382 b sun.net.www.URLConnection:: (11 bytes) Installing method (4) sun.net.www.URLConnection.()V 5741 382 sun.net.www.URLConnection:: (11 bytes) made not entrant 5741 383 b java.util.HashMap:: (9 bytes) Installing method (4) java.util.HashMap.()V 5752 384 b sun.net.www.protocol.file.FileURLConnection:: (21 bytes) Installing method (4) sun.net.www.protocol.file.FileURLConnection.()V 5756 385 b sun.net.www.protocol.file.FileURLConnection:: (38 bytes) Installing method (4) sun.net.www.protocol.file.FileURLConnection.(Ljava/net/URL;Ljava/io/File;)V 5759 386 b sun.net.www.URLConnection:: (22 bytes) Installing method (4) sun.net.www.URLConnection.(Ljava/net/URL;)V 5761 387 b java.net.URLConnection:: (44 bytes) Installing method (4) java.net.URLConnection.(Ljava/net/URL;)V 5767 386 sun.net.www.URLConnection:: (22 bytes) made not entrant 5767 388 b sun.net.www.MessageHeader:: (9 bytes) Installing method (4) sun.net.www.MessageHeader.()V 5770 389 b sun.net.www.MessageHeader::grow (92 bytes) Installing method (4) sun.net.www.MessageHeader.grow()V 5797 356 ! java.net.URLClassLoader::getPermissions (287 bytes) made not entrant 5798 390 b sun.net.www.protocol.file.FileURLConnection::getPermission (70 bytes) Installing method (4) sun.net.www.protocol.file.FileURLConnection.getPermission()Ljava/security/Permission; 5804 390 sun.net.www.protocol.file.FileURLConnection::getPermission (70 bytes) made not entrant 5805 391 b java.io.FilePermission:: (14 bytes) Installing method (4) java.io.FilePermission.(Ljava/lang/String;Ljava/lang/String;)V 5811 392 b java.security.Permission:: (10 bytes) Installing method (4) java.security.Permission.(Ljava/lang/String;)V 5814 393 b java.io.FilePermission::getMask (948 bytes) Installing method (4) java.io.FilePermission.getMask(Ljava/lang/String;)I 5887 394 b java.io.FilePermission::init (228 bytes) Installing method (4) java.io.FilePermission.init(I)V 5896 395 b java.security.Permission::getName (5 bytes) Installing method (4) java.security.Permission.getName()Ljava/lang/String; 5898 394 java.io.FilePermission::init (228 bytes) made not entrant 5898 396 b java.io.FilePermission$1:: (10 bytes) Installing method (4) java.io.FilePermission$1.(Ljava/io/FilePermission;)V 5900 397 b java.io.FilePermission$1::run (5 bytes) Installing method (4) java.io.FilePermission$1.run()Ljava/lang/Object; 5903 398 !b java.io.FilePermission$1::run (116 bytes) Installing method (4) java.io.FilePermission$1.run()Ljava/lang/String; 5909 399 b java.io.FilePermission::access$000 (5 bytes) Installing method (4) java.io.FilePermission.access$000(Ljava/io/FilePermission;)Ljava/lang/String; 5910 398 ! java.io.FilePermission$1::run (116 bytes) made not entrant 5914 400 b java.util.LinkedHashMap$Entry::recordAccess (35 bytes) Installing method (4) java.util.LinkedHashMap$Entry.recordAccess(Ljava/util/HashMap;)V 5920 401 b java.util.LinkedHashMap::access$000 (5 bytes) Installing method (4) java.util.LinkedHashMap.access$000(Ljava/util/LinkedHashMap;)Z 5922 402 b java.io.ExpiringCache$Entry::timestamp (5 bytes) Installing method (4) java.io.ExpiringCache$Entry.timestamp()J 5923 403 b java.io.ExpiringCache$Entry::val (5 bytes) Installing method (4) java.io.ExpiringCache$Entry.val()Ljava/lang/String; 5925 404 b java.io.FilePermission::init (228 bytes) Installing method (4) java.io.FilePermission.init(I)V 5943 405 !b java.io.FilePermission$1::run (116 bytes) Installing method (4) java.io.FilePermission$1.run()Ljava/lang/String; 5965 406 b sun.nio.cs.UTF_8$Decoder::decode (759 bytes) Installing method (4) sun.nio.cs.UTF_8$Decoder.decode([BII[C)I 6063 407 b java.util.HashMap::resize (57 bytes) Installing method (4) java.util.HashMap.resize(I)V 6070 408 b java.util.LinkedHashMap::transfer (51 bytes) Installing method (4) java.util.LinkedHashMap.transfer([Ljava/util/HashMap$Entry;)V 6082 409 !b java.security.Permissions::add (70 bytes) Installing method (4) java.security.Permissions.add(Ljava/security/Permission;)V 6088 410 b java.security.PermissionCollection::isReadOnly (5 bytes) Installing method (4) java.security.PermissionCollection.isReadOnly()Z 6089 411 b java.security.Permissions::getPermissionCollection (107 bytes) Installing method (4) java.security.Permissions.getPermissionCollection(Ljava/security/Permission;Z)Ljava/security/PermissionCollection; Program received signal SIGSEGV, Segmentation fault. 6096 411 java.security.Permissions::getPermissionCollection (107 bytes) made not entrant 6096 412 b java.io.FilePermission::newPermissionCollection (8 bytes) Installing method (4) java.io.FilePermission.newPermissionCollection()Ljava/security/PermissionCollection; 6100 278 sun.misc.Resource::getByteBuffer (24 bytes) made zombie 6101 276 ! java.net.URLClassLoader::defineClass (224 bytes) made zombie 6101 410 java.security.PermissionCollection::isReadOnly (5 bytes) made not entrant 6101 412 java.io.FilePermission::newPermissionCollection (8 bytes) made not entrant 6101 409 ! java.security.Permissions::add (70 bytes) made not entrant 6101 413 b java.io.FilePermissionCollection:: (23 bytes) Installing method (4) java.io.FilePermissionCollection.()V 6103 413 java.io.FilePermissionCollection:: (23 bytes) made not entrant 6105 414 b java.io.FilePermissionCollection:: (16 bytes) Installing method (4) java.io.FilePermissionCollection.()V 6108 415 b java.security.PermissionCollection:: (5 bytes) Installing method (4) java.security.PermissionCollection.()V 6109 414 java.io.FilePermissionCollection:: (16 bytes) made not entrant 6110 416 b java.util.ArrayList:: (7 bytes) Installing method (4) java.util.ArrayList.()V 6120 417 !b java.io.FilePermissionCollection::add (77 bytes) Installing method (4) java.io.FilePermissionCollection.add(Ljava/security/Permission;)V 6133 418 b java.security.PermissionCollection::isReadOnly (5 bytes) Installing method (4) java.security.PermissionCollection.isReadOnly()Z 6136 355 sun.misc.Launcher$AppClassLoader::getPermissions (21 bytes) made not entrant 6137 419 b java.lang.RuntimePermission:: (6 bytes) Installing method (4) java.lang.RuntimePermission.(Ljava/lang/String;)V 6145 420 !b java.security.Permissions::add (70 bytes) Installing method (4) java.security.Permissions.add(Ljava/security/Permission;)V 6152 421 b java.security.Permissions::getPermissionCollection (107 bytes) Installing method (4) java.security.Permissions.getPermissionCollection(Ljava/security/Permission;Z)Ljava/security/PermissionCollection; 6165 422 b java.security.BasicPermission::newPermissionCollection (12 bytes) Installing method (4) java.security.BasicPermission.newPermissionCollection()Ljava/security/PermissionCollection; 6167 308 sun.misc.PerfCounter::getReadClassBytesTime (4 bytes) made zombie 6169 422 java.security.BasicPermission::newPermissionCollection (12 bytes) made not entrant 6170 423 b java.security.BasicPermissionCollection:: (53 bytes) Installing method (4) java.security.BasicPermissionCollection.()V 6171 423 java.security.BasicPermissionCollection:: (53 bytes) made not entrant 6171 252 ! sun.misc.URLClassPath$FileLoader::getResource (164 bytes) made zombie 6171 257 java.net.URLStreamHandler::parseURL (1158 bytes) made zombie 6171 280 sun.misc.URLClassPath$FileLoader$1::getInputStream (12 bytes) made zombie 6173 424 n java.lang.Object::getClass (native) 6173 425 b java.security.BasicPermissionCollection:: (28 bytes) Installing method (4) java.security.BasicPermissionCollection.(Ljava/lang/Class;)V 6178 425 java.security.BasicPermissionCollection:: (28 bytes) made not entrant 6181 299 sun.misc.PerfCounter:: (17 bytes) made zombie 6181 304 sun.misc.Perf:: (14 bytes) made zombie 6181 303 sun.misc.Perf$GetPerfAction::run (4 bytes) made zombie 6181 302 sun.misc.Perf$GetPerfAction::run (5 bytes) made zombie 6182 426 !b java.security.BasicPermissionCollection::add (168 bytes) Installing method (4) java.security.BasicPermissionCollection.add(Ljava/security/Permission;)V 6192 427 b java.security.BasicPermission::getCanonicalName (17 bytes) Installing method (4) java.security.BasicPermission.getCanonicalName()Ljava/lang/String; 6197 428 b java.security.ProtectionDomain:: (99 bytes) Installing method (4) java.security.ProtectionDomain.(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V 6210 429 b java.security.PermissionCollection::setReadOnly (6 bytes) Installing method (4) java.security.PermissionCollection.setReadOnly()V 6213 430 b java.lang.ClassLoader::defineClass (43 bytes) Installing method (4) java.lang.ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class; 6217 431 b java.lang.ClassLoader::preDefineClass (109 bytes) Installing method (4) java.lang.ClassLoader.preDefineClass(Ljava/lang/String;Ljava/security/ProtectionDomain;)Ljava/security/ProtectionDomain; 6226 432 b java.security.ProtectionDomain::getCodeSource (5 bytes) Installing method (4) java.security.ProtectionDomain.getCodeSource()Ljava/security/CodeSource; 6227 433 !b java.lang.ClassLoader::checkCerts (195 bytes) Installing method (4) java.lang.ClassLoader.checkCerts(Ljava/lang/String;Ljava/security/CodeSource;)V 6247 434 b java.security.CodeSource::getCertificates (98 bytes) Installing method (4) java.security.CodeSource.getCertificates()[Ljava/security/cert/Certificate; Program received signal SIGSEGV, Segmentation fault. 6253 433 ! java.lang.ClassLoader::checkCerts (195 bytes) made not entrant 6254 435 b java.lang.ClassLoader::defineClassSourceLocation (28 bytes) Installing method (4) java.lang.ClassLoader.defineClassSourceLocation(Ljava/security/ProtectionDomain;)Ljava/lang/String; 6260 436 n java.lang.ClassLoader::defineClass1 (native) 6262 437 b java.util.concurrent.ConcurrentHashMap$Segment::rehash (262 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap$Segment.rehash(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V 6297 438 b java.util.concurrent.ConcurrentHashMap$HashEntry::setNext (12 bytes) Installing method (4) java.util.concurrent.ConcurrentHashMap$HashEntry.setNext(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V 6299 439 b java.lang.ClassLoader::checkPackageAccess (73 bytes) Installing method (4) java.lang.ClassLoader.checkPackageAccess(Ljava/lang/Class;Ljava/security/ProtectionDomain;)V 6305 440 !b java.util.Collections$SynchronizedCollection::add (25 bytes) Installing method (4) java.util.Collections$SynchronizedCollection.add(Ljava/lang/Object;)Z 6309 441 b java.util.HashSet::add (20 bytes) Installing method (4) java.util.HashSet.add(Ljava/lang/Object;)Z 6312 442 b java.lang.ClassLoader::addClass (9 bytes) Installing method (4) java.lang.ClassLoader.addClass(Ljava/lang/Class;)V 6314 443 s b java.util.Vector::addElement (38 bytes) Installing method (4) java.util.Vector.addElement(Ljava/lang/Object;)V 6320 444 b java.util.Vector::ensureCapacityHelper (16 bytes) Installing method (4) java.util.Vector.ensureCapacityHelper(I)V 6324 445 b java.lang.ClassLoader::postDefineClass (26 bytes) Installing method (4) java.lang.ClassLoader.postDefineClass(Ljava/lang/Class;Ljava/security/ProtectionDomain;)V 6329 66 ! java.lang.ClassLoader::loadClass (122 bytes) made not entrant 6329 446 b sun.misc.PerfCounter::getParentDelegationTime (4 bytes) Installing method (4) sun.misc.PerfCounter.getParentDelegationTime()Lsun/misc/PerfCounter; 6331 447 b sun.misc.PerfCounter::addTime (6 bytes) Installing method (4) sun.misc.PerfCounter.addTime(J)V 6333 448 b sun.misc.PerfCounter::getFindClassTime (4 bytes) Installing method (4) sun.misc.PerfCounter.getFindClassTime()Lsun/misc/PerfCounter; 6334 449 b sun.misc.PerfCounter::getFindClasses (4 bytes) Installing method (4) sun.misc.PerfCounter.getFindClasses()Lsun/misc/PerfCounter; 6335 450 b sun.misc.PerfCounter::increment (6 bytes) Installing method (4) sun.misc.PerfCounter.increment()V 6338 60 ! sun.launcher.LauncherHelper::checkAndLoadMain (159 bytes) made not entrant 6339 451 b java.lang.Object::equals (11 bytes) Installing method (4) java.lang.Object.equals(Ljava/lang/Object;)Z 6340 452 b sun.launcher.LauncherHelper$FXHelper:: (17 bytes) Installing method (4) sun.launcher.LauncherHelper$FXHelper.()V 6343 453 b sun.launcher.LauncherHelper$FXHelper::access$100 (5 bytes) Installing method (4) sun.launcher.LauncherHelper$FXHelper.access$100(Ljava/lang/Class;)Z 6345 454 b sun.launcher.LauncherHelper$FXHelper::doesExtendFXApplication (33 bytes) Installing method (4) sun.launcher.LauncherHelper$FXHelper.doesExtendFXApplication(Ljava/lang/Class;)Z 6354 455 !b sun.launcher.LauncherHelper::validateMainClass (112 bytes) Installing method (4) sun.launcher.LauncherHelper.validateMainClass(Ljava/lang/Class;)V 6371 456 b java.lang.Class::getMethod (63 bytes) Installing method (4) java.lang.Class.getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; 6374 457 b java.lang.ClassLoader::getCallerClassLoader (16 bytes) Installing method (4) java.lang.ClassLoader.getCallerClassLoader()Ljava/lang/ClassLoader; 6376 458 n sun.reflect.Reflection::getCallerClass (native) (static) 6377 459 b java.lang.Class::checkMemberAccess (107 bytes) Installing method (4) java.lang.Class.checkMemberAccess(ILjava/lang/ClassLoader;Z)V 6379 460 b java.lang.Class::getMethod0 (95 bytes) Installing method (4) java.lang.Class.getMethod0(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; 6390 461 b java.lang.Class::privateGetDeclaredMethods (67 bytes) Installing method (4) java.lang.Class.privateGetDeclaredMethods(Z)[Ljava/lang/reflect/Method; 6396 462 b java.lang.Class::checkInitted (19 bytes) Installing method (4) java.lang.Class.checkInitted()V 6402 463 b java.lang.Class::reflectionData (49 bytes) Installing method (4) java.lang.Class.reflectionData()Ljava/lang/Class$ReflectionData; 6408 464 b java.lang.Class::newReflectionData (74 bytes) Installing method (4) java.lang.Class.newReflectionData(Ljava/lang/ref/SoftReference;I)Ljava/lang/Class$ReflectionData; 6432 465 b java.lang.Class$ReflectionData::compareAndSwap (13 bytes) Installing method (4) java.lang.Class$ReflectionData.compareAndSwap(Ljava/lang/Class;Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;)Z 6434 466 n java.lang.Class::getDeclaredMethods0 (native) 6435 467 !b java.lang.ClassLoader::loadClass (122 bytes) Installing method (4) java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; 6454 468 b java.util.HashMap$Entry::recordAccess (1 bytes) Installing method (4) java.util.HashMap$Entry.recordAccess(Ljava/util/HashMap;)V 6455 469 b sun.reflect.Reflection::filterMethods (31 bytes) Installing method (4) sun.reflect.Reflection.filterMethods(Ljava/lang/Class;[Ljava/lang/reflect/Method;)[Ljava/lang/reflect/Method; Program received signal SIGSEGV, Segmentation fault. 6467 469 sun.reflect.Reflection::filterMethods (31 bytes) made not entrant 6467 470 b java.lang.Class::searchMethods (90 bytes) Installing method (4) java.lang.Class.searchMethods([Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; 6486 471 b java.lang.reflect.Method::getName (5 bytes) Installing method (4) java.lang.reflect.Method.getName()Ljava/lang/String; 6489 472 b java.lang.reflect.Method::getParameterTypes (11 bytes) Installing method (4) java.lang.reflect.Method.getParameterTypes()[Ljava/lang/Class; 6493 473 b java.lang.Class::arrayContentsEq (70 bytes) Installing method (4) java.lang.Class.arrayContentsEq([Ljava/lang/Object;[Ljava/lang/Object;)Z 6514 474 b java.lang.Class::getReflectionFactory (26 bytes) Installing method (4) java.lang.Class.getReflectionFactory()Lsun/reflect/ReflectionFactory; 6519 475 b sun.reflect.ReflectionFactory::copyMethod (10 bytes) Installing method (4) sun.reflect.ReflectionFactory.copyMethod(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; 6521 476 b sun.reflect.ReflectionFactory::langReflectAccess (15 bytes) Installing method (4) sun.reflect.ReflectionFactory.langReflectAccess()Lsun/reflect/LangReflectAccess; 6523 477 b java.lang.reflect.ReflectAccess::copyMethod (5 bytes) Installing method (4) java.lang.reflect.ReflectAccess.copyMethod(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; 6525 478 b java.lang.reflect.Method::copy (75 bytes) Installing method (4) java.lang.reflect.Method.copy()Ljava/lang/reflect/Method; 6526 478 java.lang.reflect.Method::copy (75 bytes) made not entrant 6527 479 b java.lang.reflect.Method:: (68 bytes) Installing method (4) java.lang.reflect.Method.(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B[B)V 6531 480 b java.lang.reflect.Executable:: (5 bytes) Installing method (4) java.lang.reflect.Executable.()V 6532 481 b java.lang.reflect.Method::getModifiers (5 bytes) Installing method (4) java.lang.reflect.Method.getModifiers()I 6534 482 b java.lang.reflect.Modifier::isStatic (13 bytes) Installing method (4) java.lang.reflect.Modifier.isStatic(I)Z 6535 483 b java.lang.reflect.Method::getReturnType (5 bytes) Installing method (4) java.lang.reflect.Method.getReturnType()Ljava/lang/Class; 6537 455 ! sun.launcher.LauncherHelper::validateMainClass (112 bytes) made not entrant 6538 484 b java.lang.Void:: (9 bytes) Installing method (4) java.lang.Void.()V 6543 485 n java.lang.Class::getPrimitiveClass (native) (static) 6544 486 b sun.launcher.LauncherHelper::getApplicationClass (4 bytes) Installing method (4) sun.launcher.LauncherHelper.getApplicationClass()Ljava/lang/Class; 6547 487 b HelloC3::main (43 bytes) Installing method (4) HelloC3.main([Ljava/lang/String;)V 6553 487 HelloC3::main (43 bytes) made not entrant 6554 488 b HelloC3:: (5 bytes) Installing method (4) HelloC3.()V 6557 489 b HelloC3::test (27 bytes) Installing method (4) HelloC3.test(LHelloC3;I)I 6568 490 b HelloC3::test2 (15 bytes) Installing method (4) HelloC3.test2(LHelloC3;I)I 6583 491 b java.lang.Thread::exit (51 bytes) Installing method (4) java.lang.Thread.exit()V 6588 492 !b java.lang.ThreadGroup::threadTerminated (63 bytes) Installing method (4) java.lang.ThreadGroup.threadTerminated(Ljava/lang/Thread;)V 6594 493 !b java.lang.ThreadGroup::remove (94 bytes) Installing method (4) java.lang.ThreadGroup.remove(Ljava/lang/Thread;)V 6618 494 n java.lang.Object::notifyAll (native) 6627 495 !b java.lang.ThreadGroup::add (110 bytes) Installing method (4) java.lang.ThreadGroup.add(Ljava/lang/Thread;)V 6642 496 b java.lang.Shutdown:: (43 bytes) Installing method (4) java.lang.Shutdown.()V 6653 496 java.lang.Shutdown:: (43 bytes) made not entrant 6654 497 b java.lang.Shutdown$Lock:: (5 bytes) Installing method (4) java.lang.Shutdown$Lock.(Ljava/lang/Shutdown$1;)V 6656 498 b java.lang.Shutdown$Lock:: (5 bytes) Installing method (4) java.lang.Shutdown$Lock.()V 6660 499 !b java.lang.Shutdown::shutdown (73 bytes) Installing method (4) java.lang.Shutdown.shutdown()V 6673 500 !b java.lang.Shutdown::sequence (61 bytes) Installing method (4) java.lang.Shutdown.sequence()V 6686 501 !b java.lang.Shutdown::runHooks (69 bytes) Installing method (4) java.lang.Shutdown.runHooks()V [Thread 0x7ffef455d700 (LWP 20276) exited] [Thread 0x7ffef4d61700 (LWP 20272) exited] [Thread 0x7ffef551b700 (LWP 20269) exited] [Thread 0x7ffff69aa700 (LWP 20264) exited] [Thread 0x7ffef5299700 (LWP 20270) exited] [Thread 0x7ffef475e700 (LWP 20275) exited] [Thread 0x7ffef4b60700 (LWP 20273) exited] [Thread 0x7ffef5017700 (LWP 20271) exited] [Thread 0x7ffff437e700 (LWP 20268) exited] [Thread 0x7ffff457f700 (LWP 20267) exited] [Thread 0x7ffff4780700 (LWP 20266) exited] [Thread 0x7ffff4981700 (LWP 20265) exited] [Thread 0x7ffff7dbf740 (LWP 20263) exited] [Inferior 1 (process 20263) exited normally] (gdb) From aph at redhat.com Mon Aug 19 05:34:18 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 19 Aug 2013 13:34:18 +0100 Subject: [aarch64-port-dev ] Fix profile counters in tiered compilation Message-ID: <521210CA.3050006@redhat.com> This seems to be the only missing piece in the tiered compilation puzzle. Andrew. # HG changeset patch # User aph # Date 1376909605 -3600 # Node ID 0cc30c126c9211f17223e01c9b62abec98fc0017 # Parent 80e741fc14e2cda15b58ba9190b5910ad52d5ad4 Fix profile counters used by tiered compilation. diff -r 80e741fc14e2 -r 0cc30c126c92 src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Aug 14 14:08:18 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Mon Aug 19 11:53:25 2013 +0100 @@ -1275,7 +1275,34 @@ void LIR_Assembler::type_profile_helper(Register mdo, ciMethodData *md, ciProfileData *data, - Register recv, Label* update_done) { Unimplemented(); } + Register recv, Label* update_done) { + for (uint i = 0; i < ReceiverTypeData::row_limit(); i++) { + Label next_test; + // See if the receiver is receiver[n]. + __ lea(rscratch1, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)))); + __ cmp(recv, rscratch1); + __ br(Assembler::NE, next_test); + Address data_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_count_offset(i))); + __ ldr(rscratch1, data_addr); + __ add(rscratch1, rscratch1, DataLayout::counter_increment); + __ str(rscratch1, data_addr); + __ b(*update_done); + __ bind(next_test); + } + + // Didn't find receiver; find next empty slot and fill it in + for (uint i = 0; i < ReceiverTypeData::row_limit(); i++) { + Label next_test; + Address recv_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i))); + __ ldr(rscratch1, recv_addr); + __ cbnz(rscratch1, next_test); + __ str(recv, recv_addr); + __ mov(rscratch1, DataLayout::counter_increment); + __ str(rscratch1, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_count_offset(i)))); + __ b(*update_done); + __ bind(next_test); + } +} void LIR_Assembler::emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, Label* failure, Label* obj_is_null) { // we always need a stub for the failure case. @@ -2513,9 +2540,7 @@ __ mov_metadata(rscratch1, known_klass->constant_encoding()); __ str(rscratch1, recv_addr); Address data_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i))); - __ ldr(rscratch1, data_addr); - __ add(rscratch1, rscratch1, DataLayout::counter_increment); - __ str(rscratch1, data_addr); + __ addptr(counter_addr, DataLayout::counter_increment); return; } } @@ -2531,9 +2556,7 @@ } } else { // Static call - __ ldr(rscratch1, counter_addr); - __ add(rscratch1, rscratch1, DataLayout::counter_increment); - __ str(rscratch1, counter_addr); + __ addptr(counter_addr, DataLayout::counter_increment); } } diff -r 80e741fc14e2 -r 0cc30c126c92 src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Wed Aug 14 14:08:18 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Mon Aug 19 11:53:25 2013 +0100 @@ -260,9 +260,20 @@ void LIRGenerator::increment_counter(LIR_Address* addr, int step) { - LIR_Opr reg = new_register(T_INT); + LIR_Opr imm = NULL; + switch(addr->type()) { + case T_INT: + imm = LIR_OprFact::intConst(step); + break; + case T_LONG: + imm = LIR_OprFact::longConst(step); + break; + default: + ShouldNotReachHere(); + } + LIR_Opr reg = new_register(addr->type()); __ load(addr, reg); - __ add(reg, reg, LIR_OprFact::intConst(step)); + __ add(reg, imm, reg); __ store(reg, addr); } diff -r 80e741fc14e2 -r 0cc30c126c92 src/cpu/aarch64/vm/macroAssembler_aarch64.hpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Aug 14 14:08:18 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Mon Aug 19 11:53:25 2013 +0100 @@ -1020,7 +1020,11 @@ // Arithmetics - void addptr(Address dst, int32_t src) { Unimplemented(); } + void addptr(Address dst, int32_t src) { + ldr(rscratch1, dst); + add(rscratch1, rscratch1, src); + str(rscratch1, dst); +} // unimplemented #if 0 void addptr(Address dst, Register src); # HG changeset patch # User aph # Date 1376913627 -3600 # Node ID c0cc4bab989c6cd86781f6d90a6177b6b5bb5cb9 # Parent e73fcb59a72704e777fe61075eaede2d4a5ff232 Fix profile counters used by tiered compilation. diff -r e73fcb59a727 -r c0cc4bab989c src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Mon Aug 19 11:54:18 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Mon Aug 19 13:00:27 2013 +0100 @@ -1279,13 +1279,11 @@ for (uint i = 0; i < ReceiverTypeData::row_limit(); i++) { Label next_test; // See if the receiver is receiver[n]. - __ lea(rscratch1, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)))); + __ ldr(rscratch1, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)))); __ cmp(recv, rscratch1); __ br(Assembler::NE, next_test); Address data_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_count_offset(i))); - __ ldr(rscratch1, data_addr); - __ add(rscratch1, rscratch1, DataLayout::counter_increment); - __ str(rscratch1, data_addr); + __ addptr(data_addr, DataLayout::counter_increment); __ b(*update_done); __ bind(next_test); } From aph at redhat.com Mon Aug 19 05:34:47 2013 From: aph at redhat.com (aph at redhat.com) Date: Mon, 19 Aug 2013 12:34:47 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 3 new changesets Message-ID: <20130819123458.457D848998@hg.openjdk.java.net> Changeset: 0cc30c126c92 Author: aph Date: 2013-08-19 11:53 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/0cc30c126c92 Fix profile counters used by tiered compilation. ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp ! src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Changeset: e73fcb59a727 Author: aph Date: 2013-08-19 11:54 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/e73fcb59a727 merge Changeset: c0cc4bab989c Author: aph Date: 2013-08-19 13:00 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/c0cc4bab989c Fix profile counters used by tiered compilation. ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp From aph at redhat.com Mon Aug 19 05:37:18 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 19 Aug 2013 13:37:18 +0100 Subject: [aarch64-port-dev ] C2: mplement breakpoints Message-ID: <5212117E.2040508@redhat.com> OK to commit? Andrew. changeset: 4852:d7a95f380cb8 tag: tip user: aph date: Mon Aug 19 13:35:41 2013 +0100 summary: Implement breakpoints. diff -r c0cc4bab989c -r d7a95f380cb8 src/cpu/aarch64/vm/aarch64.ad --- a/src/cpu/aarch64/vm/aarch64.ad Mon Aug 19 13:00:27 2013 +0100 +++ b/src/cpu/aarch64/vm/aarch64.ad Mon Aug 19 13:35:41 2013 +0100 @@ -792,17 +792,16 @@ #ifndef PRODUCT void MachBreakpointNode::format(PhaseRegAlloc *ra_, outputStream *st) const { - Unimplemented(); st->print("BREAKPOINT"); } #endif void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const { - Unimplemented(); + MacroAssembler _masm(&cbuf); + __ brk(0); } uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const { - Unimplemented(); return MachNode::size(ra_); } From adinn at redhat.com Mon Aug 19 06:46:17 2013 From: adinn at redhat.com (Andrew Dinn) Date: Mon, 19 Aug 2013 14:46:17 +0100 Subject: [aarch64-port-dev ] C2: mplement breakpoints In-Reply-To: <5212117E.2040508@redhat.com> References: <5212117E.2040508@redhat.com> Message-ID: <521221A9.6050308@redhat.com> On 19/08/13 13:37, Andrew Haley wrote: > OK to commit? > > Andrew. Yes, looks good to me. > changeset: 4852:d7a95f380cb8 > tag: tip > user: aph > date: Mon Aug 19 13:35:41 2013 +0100 > summary: Implement breakpoints. > > diff -r c0cc4bab989c -r d7a95f380cb8 src/cpu/aarch64/vm/aarch64.ad > --- a/src/cpu/aarch64/vm/aarch64.ad Mon Aug 19 13:00:27 2013 +0100 > +++ b/src/cpu/aarch64/vm/aarch64.ad Mon Aug 19 13:35:41 2013 +0100 > @@ -792,17 +792,16 @@ > > #ifndef PRODUCT > void MachBreakpointNode::format(PhaseRegAlloc *ra_, outputStream *st) const { > - Unimplemented(); > st->print("BREAKPOINT"); > } > #endif > > void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const { > - Unimplemented(); > + MacroAssembler _masm(&cbuf); > + __ brk(0); > } > > uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const { > - Unimplemented(); > return MachNode::size(ra_); > } regards, Andrew Dinn ----------- Principal Software Engineer Red Hat UK Ltd Registered in UK and Wales under Company Registration No. 3798903 Directors: Michael Cunningham (USA), Mark Hegarty (Ireland), Matt Parson (USA), Charlie Peters (USA) From voodoon42 at gmail.com Mon Aug 19 07:40:02 2013 From: voodoon42 at gmail.com (Voo) Date: Mon, 19 Aug 2013 16:40:02 +0200 Subject: [aarch64-port-dev ] gmake error when cross compiling Message-ID: Freshly set up VM with OpenSUSE 12.2 64bit. I follow the steps described in README.aarch64 to cross compile it for running under Foundation model simulator: extract sysroots from http://people.linaro.org/~edward.nevill/sysroots.tar.gz to ~ hg clone http://hg.openjdk.java.net/aarch64-port/jdk8 bash get_source bash cross_configure bash cross_compile cross_configure output: http://pastebin.com/n0s5s3z4 cross_compile output: http://pastebin.com/w8jDzjHQ Seems like it passes arguments to make and forgot to quote $@? gmake --version says: GNU Make 3.82 Built for x86_64-unknown-linux-gnu From aph at redhat.com Mon Aug 19 08:02:39 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 19 Aug 2013 16:02:39 +0100 Subject: [aarch64-port-dev ] gmake error when cross compiling In-Reply-To: References: Message-ID: <5212338F.3020101@redhat.com> On 08/19/2013 03:40 PM, Voo wrote: > Freshly set up VM with OpenSUSE 12.2 64bit. > I follow the steps described in README.aarch64 to cross compile it for > running under Foundation model simulator: > > extract sysroots from > http://people.linaro.org/~edward.nevill/sysroots.tar.gz to ~ > hg clone http://hg.openjdk.java.net/aarch64-port/jdk8 > bash get_source > bash cross_configure > bash cross_compile > > cross_configure output: http://pastebin.com/n0s5s3z4 > cross_compile output: http://pastebin.com/w8jDzjHQ > > Seems like it passes arguments to make and forgot to quote $@? WARNING: The result of this configuration has overridden an older configuration. You *should* run 'make clean' to make sure you get a proper build. Failure to do so might result in strange build problems. You did do this? > > gmake --version says: > GNU Make 3.82 > Built for x86_64-unknown-linux-gnu > From voodoon42 at gmail.com Mon Aug 19 08:11:34 2013 From: voodoon42 at gmail.com (Voo) Date: Mon, 19 Aug 2013 17:11:34 +0200 Subject: [aarch64-port-dev ] gmake error when cross compiling In-Reply-To: <5212338F.3020101@redhat.com> References: <5212338F.3020101@redhat.com> Message-ID: > > WARNING: The result of this configuration has overridden an older > configuration. You *should* run 'make clean' to make sure you get a > proper build. Failure to do so might result in strange build problems. > > You did do this? I tried it several times and didn't chose the first output from all tools, sorry. But yes I did use make clean and the same error appears already the first time the commands are run so without any pre existing configuration. From aph at redhat.com Mon Aug 19 08:29:15 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 19 Aug 2013 16:29:15 +0100 Subject: [aarch64-port-dev ] gmake error when cross compiling In-Reply-To: References: <5212338F.3020101@redhat.com> Message-ID: <521239CB.4060108@redhat.com> On 08/19/2013 04:11 PM, Voo wrote: >> >> WARNING: The result of this configuration has overridden an older >> configuration. You *should* run 'make clean' to make sure you get a >> proper build. Failure to do so might result in strange build problems. >> >> You did do this? > > > I tried it several times and didn't chose the first output from all tools, > sorry. But yes I did use make clean and the same error appears already the > first time the commands are run so without any pre existing configuration. It is really hard for me to understand what might have happened. Your output from make looks nothing remotely like what I see. In particular, the make output should look like http://aph.fedorapeople.org/make.log Andrew. From aph at redhat.com Mon Aug 19 08:38:03 2013 From: aph at redhat.com (aph at redhat.com) Date: Mon, 19 Aug 2013 15:38:03 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130819153812.A1B42489A0@hg.openjdk.java.net> Changeset: d7a95f380cb8 Author: aph Date: 2013-08-19 13:35 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/d7a95f380cb8 Implement breakpoints. ! src/cpu/aarch64/vm/aarch64.ad Changeset: 66282d868b9c Author: aph Date: 2013-08-19 16:37 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/66282d868b9c Fix address overflow in profile data collection. ! src/cpu/aarch64/vm/assembler_aarch64.hpp ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp From aph at redhat.com Mon Aug 19 08:51:14 2013 From: aph at redhat.com (Andrew Haley) Date: Mon, 19 Aug 2013 16:51:14 +0100 Subject: [aarch64-port-dev ] gmake error when cross compiling In-Reply-To: References: <5212338F.3020101@redhat.com> <521239CB.4060108@redhat.com> Message-ID: <52123EF2.8020506@redhat.com> On 08/19/2013 04:49 PM, Voo wrote: > On 19 August 2013 17:29, Andrew Haley wrote: > >> It is really hard for me to understand what might have happened. Your >> output from make looks nothing remotely like what I see. In particular, >> the make output should look like >> >> http://aph.fedorapeople.org/make.log > > How strange. That's the result for cross_compile (not the normal make) on > your machine? Stumped. > > What distribution are you using? Since I'm running this in a VM > anyhow, it's probably the easiest to just get as close as possible > to the same setup as you have. This is Fedora 18. Andrew. From voodoon42 at gmail.com Mon Aug 19 08:49:00 2013 From: voodoon42 at gmail.com (Voo) Date: Mon, 19 Aug 2013 17:49:00 +0200 Subject: [aarch64-port-dev ] gmake error when cross compiling In-Reply-To: <521239CB.4060108@redhat.com> References: <5212338F.3020101@redhat.com> <521239CB.4060108@redhat.com> Message-ID: How strange. That's the result for cross_compile (not the normal make) on your machine? Stumped. What distribution are you using? Since I'm running this in a VM anyhow, it's probably the easiest to just get as close as possible to the same setup as you have. On 19 August 2013 17:29, Andrew Haley wrote: > On 08/19/2013 04:11 PM, Voo wrote: > >> > >> WARNING: The result of this configuration has overridden an older > >> configuration. You *should* run 'make clean' to make sure you get a > >> proper build. Failure to do so might result in strange build problems. > >> > >> You did do this? > > > > > > I tried it several times and didn't chose the first output from all > tools, > > sorry. But yes I did use make clean and the same error appears already > the > > first time the commands are run so without any pre existing > configuration. > > It is really hard for me to understand what might have happened. Your > output from make looks nothing remotely like what I see. In particular, > the make output should look like > > http://aph.fedorapeople.org/make.log > > Andrew. > > > From andy.johnson at linaro.org Mon Aug 19 12:26:40 2013 From: andy.johnson at linaro.org (Andy Johnson) Date: Mon, 19 Aug 2013 15:26:40 -0400 Subject: [aarch64-port-dev ] gmake error when cross compiling Message-ID: I got this error too, until I realized that the cross_configure is now configuring a "fastdebug" build, where previously it configured a "release" build. If you had done a previous build of linux-aarch64-normal-client-release, that might be your problem. Try setting CONF=linux-aarch64-normal-client-fastdebug prior to running the cross_compile script. From voodoon42 at gmail.com Mon Aug 19 13:17:50 2013 From: voodoon42 at gmail.com (Voo) Date: Mon, 19 Aug 2013 22:17:50 +0200 Subject: [aarch64-port-dev ] gmake error when cross compiling In-Reply-To: <52123EF2.8020506@redhat.com> References: <5212338F.3020101@redhat.com> <521239CB.4060108@redhat.com> <52123EF2.8020506@redhat.com> Message-ID: Just for closure: Using Fedora 18 in the VM (after figuring out why it threw an error when trying to install gcc) compiles the code without any errors. Still no idea what the problem is - same gmake version on fedora (3.82), just compiled for x86_64-redhat-linux-gnu isntead of x86_64-unknown-linux-gnu - surprising if that would make a difference, but maybe it does. On 19 August 2013 17:51, Andrew Haley wrote: > On 08/19/2013 04:49 PM, Voo wrote: > > > On 19 August 2013 17:29, Andrew Haley wrote: > > > >> It is really hard for me to understand what might have happened. Your > >> output from make looks nothing remotely like what I see. In particular, > >> the make output should look like > >> > >> http://aph.fedorapeople.org/make.log > > > > How strange. That's the result for cross_compile (not the normal make) on > > your machine? Stumped. > > > > What distribution are you using? Since I'm running this in a VM > > anyhow, it's probably the easiest to just get as close as possible > > to the same setup as you have. > > This is Fedora 18. > > Andrew. > From adinn at redhat.com Tue Aug 20 10:05:08 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Tue, 20 Aug 2013 17:05:08 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130820170518.6F3A1489EF@hg.openjdk.java.net> Changeset: b177b5978e64 Author: adinn Date: 2013-08-20 17:54 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/b177b5978e64 made C2 work with -XX:+CompressedOoops this version still dumb about loading 32 bit narrow oop or narrow klass constants into registers. it currently loads the 64-bit uncompressed constant and then encodes it into 32 bits. that's because the relocate code doesn't yet know how to spot a 32-bit load vs a 64 bit load and so cannot guarantee to relocate the load correctly (it assumes such reloc operations are 64 bit). This needs fixing. ! src/cpu/aarch64/vm/aarch64.ad ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Changeset: 2b2366f0c87a Author: adinn Date: 2013-08-20 17:56 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/2b2366f0c87a Merge ! src/cpu/aarch64/vm/aarch64.ad ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp From adinn at redhat.com Wed Aug 21 05:41:42 2013 From: adinn at redhat.com (adinn at redhat.com) Date: Wed, 21 Aug 2013 12:41:42 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: fixed problem in polling page read generation Message-ID: <20130821124149.6D11E48A41@hg.openjdk.java.net> Changeset: 468a6eecbf46 Author: adinn Date: 2013-08-21 13:41 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/468a6eecbf46 fixed problem in polling page read generation old inline code encoding Safepoint instruction was not marking the ldrw with the necessary reloc info. moved method read_polling_page from class c1_MacroAssembler into class macroAssembler so both compilers can use it and calle dit to plant the code. ! src/cpu/aarch64/vm/aarch64.ad ! src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.hpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp From edward.nevill at linaro.org Wed Aug 21 07:28:41 2013 From: edward.nevill at linaro.org (Edward Nevill) Date: Wed, 21 Aug 2013 15:28:41 +0100 Subject: [aarch64-port-dev ] RFR: merge cache flush Message-ID: <1377095321.23604.5.camel@fleetfoot.lan> Hi, The following patch merges in the ICache flush code from the Linux kernel sources, Ok to push? Ed. --- CUT HERE --- exporting patch: # HG changeset patch # User Edward Nevill ed at camswl.com # Date 1377094905 -3600 # Node ID 02f6ac42d4400f5e88c79436784e048656e8ca74 # Parent 468a6eecbf46148c67103161ed28da590b7bebb8 Merged in icache flush code from Linux kernel diff -r 468a6eecbf46 -r 02f6ac42d440 src/cpu/aarch64/vm/assembler_aarch64.hpp --- a/src/cpu/aarch64/vm/assembler_aarch64.hpp Wed Aug 21 13:41:18 2013 +0100 +++ b/src/cpu/aarch64/vm/assembler_aarch64.hpp Wed Aug 21 15:21:45 2013 +0100 @@ -930,6 +930,14 @@ rf(rt, 0); } + void dc(Register Rt) { + system(0b01, 0b011, 0b0111, 0b1011, 0b001, Rt); + } + + void ic(Register Rt) { + system(0b01, 0b011, 0b0111, 0b0101, 0b001, Rt); + } + void hint(int imm) { system(0b00, 0b011, 0b0010, imm, 0b000); } diff -r 468a6eecbf46 -r 02f6ac42d440 src/cpu/aarch64/vm/icache_aarch64.cpp --- a/src/cpu/aarch64/vm/icache_aarch64.cpp Wed Aug 21 13:41:18 2013 +0100 +++ b/src/cpu/aarch64/vm/icache_aarch64.cpp Wed Aug 21 15:21:45 2013 +0100 @@ -63,6 +63,35 @@ // and a memory and data synchronization barrier but we will find // out when we get real hardware :-) +#ifndef BUILTIN_SIM + Label l99, l1, l2; + + __ cmp(r1, zr); + __ br(Assembler::EQ, l99); + + __ mov(r4, r0); + __ mov(r3, r1); + +__ bind(l1); + __ dc(r4); + __ add(r4, r4, ICache::line_size); + __ subs(r3, r3, 1); + __ br(Assembler::NE, l1); + + __ dsb(Assembler::SY); + + __ mov(r4, r0); + __ mov(r3, r1); + +__ bind(l2); + __ ic(r4); + __ add(r4, r4, ICache::line_size); + __ subs(r3, r3, 1); + __ br(Assembler::NE, l2); + +__ bind(l99); +#endif + // n.b. SY means a system wide barrier which is the overkill option address loop = __ pc(); diff -r 468a6eecbf46 -r 02f6ac42d440 src/share/vm/runtime/icache.cpp --- a/src/share/vm/runtime/icache.cpp Wed Aug 21 13:41:18 2013 +0100 +++ b/src/share/vm/runtime/icache.cpp Wed Aug 21 15:21:45 2013 +0100 @@ -55,8 +55,8 @@ static int magic = 0xbaadbabe; int auto_magic = magic; // Make a local copy to avoid race condition - // int r = (*_flush_icache_stub)(start, lines, auto_magic); - // guarantee(r == auto_magic, "flush stub routine did not execute"); + int r = (*_flush_icache_stub)(start, lines, auto_magic); + guarantee(r == auto_magic, "flush stub routine did not execute"); ++magic; } From aph at redhat.com Wed Aug 21 08:31:29 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 21 Aug 2013 16:31:29 +0100 Subject: [aarch64-port-dev ] C1: Implement UnsafeGetAndSetObject Message-ID: <5214DD51.80104@redhat.com> We were missing a chunk of native code for UnsafeGetAndSetObject. Fixed thusly. Andrew. # HG changeset patch # User aph # Date 1377083252 -3600 # Node ID a8ce62237e186cc9af276a7d7625c5b87c8e8002 # Parent 66282d868b9c92b6e5ec31a57783d3062dfaced4 C1: Implement UnsafeGetAndSetObject. diff -r 66282d868b9c -r a8ce62237e18 src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Mon Aug 19 16:37:09 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Aug 21 12:07:32 2013 +0100 @@ -161,6 +161,21 @@ return op->is_double_cpu() ? op->as_register_lo() : op->as_register(); } +static jlong as_long(LIR_Opr data) { + jlong result; + switch (data->type()) { + case T_INT: + result = (data->as_jint()); + break; + case T_LONG: + result = (data->as_jlong()); + break; + default: + ShouldNotReachHere(); + } + return result; +} + static bool is_reg(LIR_Opr op) { return op->is_double_cpu() | op->is_single_cpu(); } @@ -1574,6 +1589,7 @@ void LIR_Assembler::emit_compare_and_swap(LIR_OpCompareAndSwap* op) { + assert(VM_Version::supports_cx8(), "wrong machine"); Register addr = as_reg(op->addr()); Register newval = as_reg(op->new_value()); Register cmpval = as_reg(op->cmp_value()); @@ -2965,6 +2981,90 @@ } } -void LIR_Assembler::atomic_op(LIR_Code code, LIR_Opr src, LIR_Opr data, LIR_Opr dest, LIR_Opr tmp) { Unimplemented(); } +void LIR_Assembler::atomic_op(LIR_Code code, LIR_Opr src, LIR_Opr data, LIR_Opr dest, LIR_Opr tmp_op) { + Address addr = as_Address(src->as_address_ptr(), noreg); + BasicType type = src->type(); + bool is_oop = type == T_OBJECT || type == T_ARRAY; + + void (MacroAssembler::* lda)(Register Rd, Register Ra); + void (MacroAssembler::* add)(Register Rd, Register Rn, RegisterOrConstant increment); + void (MacroAssembler::* stl)(Register Rs, Register Rt, Register Rn); + + switch(type) { + case T_INT: + lda = &MacroAssembler::ldaxrw; + add = &MacroAssembler::addw; + stl = &MacroAssembler::stlxrw; + break; + case T_LONG: + lda = &MacroAssembler::ldaxr; + add = &MacroAssembler::add; + stl = &MacroAssembler::stlxr; + break; + case T_OBJECT: + case T_ARRAY: + if (UseCompressedOops) { + lda = &MacroAssembler::ldaxrw; + add = &MacroAssembler::addw; + stl = &MacroAssembler::stlxrw; + } else { + lda = &MacroAssembler::ldaxr; + add = &MacroAssembler::add; + stl = &MacroAssembler::stlxr; + } + break; + default: + ShouldNotReachHere(); + } + + switch (code) { + case lir_xadd: + { + RegisterOrConstant inc; + Register tmp = as_reg(tmp_op); + Register dst = as_reg(dest); + if (data->is_constant()) { + inc = RegisterOrConstant(as_long(data)); + assert_different_registers(dst, addr.base(), tmp, + rscratch1, rscratch2); + } else { + inc = RegisterOrConstant(as_reg(data)); + assert_different_registers(inc.as_register(), dst, addr.base(), tmp, + rscratch1, rscratch2); + } + Label again; + __ lea(tmp, addr); + __ bind(again); + (_masm->*lda)(dst, tmp); + (_masm->*add)(rscratch1, dst, inc); + (_masm->*stl)(rscratch2, rscratch1, tmp); + __ cbnzw(rscratch2, again); + break; + } + case lir_xchg: + { + Register tmp = tmp_op->as_register(); + Register obj = as_reg(data); + Register dst = as_reg(dest); + if (is_oop && UseCompressedOops) { + __ encode_heap_oop(obj); + } + assert_different_registers(obj, addr.base(), tmp, rscratch2, dst); + Label again; + __ lea(tmp, addr); + __ bind(again); + (_masm->*lda)(dst, tmp); + (_masm->*stl)(rscratch2, obj, tmp); + __ cbnzw(rscratch2, again); + if (is_oop && UseCompressedOops) { + __ decode_heap_oop(dst); + } + } + break; + default: + ShouldNotReachHere(); + } + asm("nop"); +} #undef __ diff -r 66282d868b9c -r a8ce62237e18 src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Mon Aug 19 16:37:09 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Wed Aug 21 12:07:32 2013 +0100 @@ -1294,4 +1294,56 @@ } } -void LIRGenerator::do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) { Unimplemented(); } +void LIRGenerator::do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) { + BasicType type = x->basic_type(); + LIRItem src(x->object(), this); + LIRItem off(x->offset(), this); + LIRItem value(x->value(), this); + + src.load_item(); + off.load_nonconstant(); + + if (! (value.is_constant() && can_inline_as_constant(x->value()))) { + value.load_item(); + } + + LIR_Opr dst = rlock_result(x, type); + LIR_Opr data = value.result(); + bool is_obj = (type == T_ARRAY || type == T_OBJECT); + LIR_Opr offset = off.result(); + + if (data == dst) { + LIR_Opr tmp = new_register(data->type()); + __ move(data, tmp); + data = tmp; + } + + LIR_Address* addr; + if (offset->is_constant()) { + jlong l = offset->as_jlong(); + assert((jlong)((jint)l) == l, "offset too large for constant"); + jint c = (jint)l; + addr = new LIR_Address(src.result(), c, type); + } else { + addr = new LIR_Address(src.result(), offset, type); + } + + LIR_Opr tmp = new_register(T_INT); + LIR_Opr ptr = LIR_OprFact::illegalOpr; + + if (x->is_add()) { + __ xadd(LIR_OprFact::address(addr), data, dst, tmp); + } else { + if (is_obj) { + // Do the pre-write barrier, if any. + ptr = new_pointer_register(); + __ add(src.result(), off.result(), ptr); + pre_barrier(ptr, LIR_OprFact::illegalOpr /* pre_val */, + true /* do_load */, false /* patch */, NULL); + } + __ xchg(LIR_OprFact::address(addr), data, dst, tmp); + if (is_obj) { + post_barrier(ptr, data); + } + } +} # HG changeset patch # User aph # Date 1377083300 -3600 # Node ID 6ca74c561b2e3af452a8ceb78245581d8214269f # Parent a8ce62237e186cc9af276a7d7625c5b87c8e8002 C1: Implement UnsafeGetAndSetObject. diff -r a8ce62237e18 -r 6ca74c561b2e src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Aug 21 12:07:32 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Aug 21 12:08:20 2013 +0100 @@ -1587,6 +1587,22 @@ } +void MacroAssembler::add(Register Rd, Register Rn, RegisterOrConstant increment) { + if (increment.is_register()) { + add(Rd, Rn, increment.as_register()); + } else { + add(Rd, Rn, increment.as_constant()); + } +} + +void MacroAssembler::addw(Register Rd, Register Rn, RegisterOrConstant increment) { + if (increment.is_register()) { + add(Rd, Rn, increment.as_register()); + } else { + add(Rd, Rn, increment.as_constant()); + } +} + #ifdef ASSERT static Register spill_registers[] = { rheapbase, diff -r a8ce62237e18 -r 6ca74c561b2e src/cpu/aarch64/vm/macroAssembler_aarch64.hpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Aug 21 12:07:32 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Aug 21 12:08:20 2013 +0100 @@ -1278,6 +1278,9 @@ WRAP(adds) WRAP(addsw) WRAP(subs) WRAP(subsw) + void add(Register Rd, Register Rn, RegisterOrConstant increment); + void addw(Register Rd, Register Rn, RegisterOrConstant increment); + void tableswitch(Register index, jint lowbound, jint highbound, Label &jumptable, Label &jumptable_end) { adr(rscratch1, jumptable); diff -r a8ce62237e18 -r 6ca74c561b2e src/cpu/aarch64/vm/vm_version_aarch64.cpp --- a/src/cpu/aarch64/vm/vm_version_aarch64.cpp Wed Aug 21 12:07:32 2013 +0100 +++ b/src/cpu/aarch64/vm/vm_version_aarch64.cpp Wed Aug 21 12:08:20 2013 +0100 @@ -71,7 +71,7 @@ // TODO : redefine fields in CpuidInfo and generate // code to fill them in - __ ret(r30); + __ ret(lr); # undef __ @@ -81,7 +81,11 @@ void VM_Version::get_processor_features() { - // TODO : define relevant processor features and initialise them + _supports_cx8 = true; + _supports_atomic_getset4 = true; + _supports_atomic_getadd4 = true; + _supports_atomic_getset8 = true; + _supports_atomic_getadd8 = true; } void VM_Version::initialize() { From aph at redhat.com Wed Aug 21 08:33:41 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 21 Aug 2013 16:33:41 +0100 Subject: [aarch64-port-dev ] C1: Fix save/restore native result Message-ID: <5214DDD5.3040105@redhat.com> If we ever detect a safepoint in progress in a native transition, we die. Fixed thusly. Andrew. # HG changeset patch # User aph # Date 1377096180 -3600 # Node ID 5011c5a7feecc9abccfa2e3962195bc2af04b07f # Parent 6ca74c561b2e3af452a8ceb78245581d8214269f Correct save/restore native result diff -r 6ca74c561b2e -r 5011c5a7feec src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp --- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Wed Aug 21 12:08:20 2013 +0100 +++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Wed Aug 21 15:43:00 2013 +0100 @@ -1024,6 +1024,23 @@ // which by this time is free to use switch (ret_type) { case T_FLOAT: + __ strs(v0, Address(rfp, -wordSize)); + break; + case T_DOUBLE: + __ strd(v0, Address(rfp, -wordSize)); + break; + case T_VOID: break; + default: { + __ str(r0, Address(rfp, -wordSize)); + } + } +} + +void SharedRuntime::restore_native_result(MacroAssembler *masm, BasicType ret_type, int frame_slots) { + // We always ignore the frame_slots arg and just use the space just below frame pointer + // which by this time is free to use + switch (ret_type) { + case T_FLOAT: __ ldrs(v0, Address(rfp, -wordSize)); break; case T_DOUBLE: @@ -1035,23 +1052,6 @@ } } } - -void SharedRuntime::restore_native_result(MacroAssembler *masm, BasicType ret_type, int frame_slots) { - // We always ignore the frame_slots arg and just use the space just below frame pointer - // which by this time is free to use - switch (ret_type) { - case T_FLOAT: - __ strs(v0, Address(rfp, -wordSize)); - break; - case T_DOUBLE: - __ strd(v0, Address(rfp, -wordSize)); - break; - case T_VOID: break; - default: { - __ str(r0, Address(rfp, -wordSize)); - } - } -} static void save_args(MacroAssembler *masm, int arg_count, int first_arg, VMRegPair *args) { unsigned long x = 0; // Register bit vector for ( int i = first_arg ; i < arg_count ; i++ ) { From aph at redhat.com Wed Aug 21 08:46:48 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 21 Aug 2013 16:46:48 +0100 Subject: [aarch64-port-dev ] RFR: merge cache flush In-Reply-To: <1377095321.23604.5.camel@fleetfoot.lan> References: <1377095321.23604.5.camel@fleetfoot.lan> Message-ID: <5214E0E8.2060308@redhat.com> On 08/21/2013 03:28 PM, Edward Nevill wrote: > Ok to push? OK, thanks. Andrew. From ed at camswl.com Wed Aug 21 08:48:18 2013 From: ed at camswl.com (ed at camswl.com) Date: Wed, 21 Aug 2013 15:48:18 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Merged in icache flush code from Linux kernel Message-ID: <20130821154824.E438548A47@hg.openjdk.java.net> Changeset: 02f6ac42d440 Author: Edward Nevill ed at camswl.com Date: 2013-08-21 15:21 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/02f6ac42d440 Merged in icache flush code from Linux kernel ! src/cpu/aarch64/vm/assembler_aarch64.hpp ! src/cpu/aarch64/vm/icache_aarch64.cpp ! src/share/vm/runtime/icache.cpp From ed at camswl.com Wed Aug 21 09:16:23 2013 From: ed at camswl.com (ed at camswl.com) Date: Wed, 21 Aug 2013 16:16:23 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Backed out changeset 02f6ac42d440 Message-ID: <20130821161628.1CD7A48A49@hg.openjdk.java.net> Changeset: a42e0f4448a0 Author: Edward Nevill ed at camswl.com Date: 2013-08-21 17:16 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/a42e0f4448a0 Backed out changeset 02f6ac42d440 ! src/cpu/aarch64/vm/assembler_aarch64.hpp ! src/cpu/aarch64/vm/icache_aarch64.cpp ! src/share/vm/runtime/icache.cpp From aph at redhat.com Wed Aug 21 10:22:31 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 21 Aug 2013 18:22:31 +0100 Subject: [aarch64-port-dev ] Weird code in generate_call_stub() Message-ID: <5214F757.2010306@redhat.com> I want to delete this code. As far as I can see it doesn't do anything useful. // AED: this should fix Ed's problem -- we only save the sender's SP for our sim #ifdef BUILTIN_SIM // Save sender's SP for stack traces. // ECN: FIXME // #if 0 __ mov(rscratch1, sp); __ str(rscratch1, Address(__ pre(sp, -2 * wordSize))); #endif Andrew Dinn? Ed? What say you? Andrew. From aph at redhat.com Wed Aug 21 10:27:50 2013 From: aph at redhat.com (Andrew Haley) Date: Wed, 21 Aug 2013 18:27:50 +0100 Subject: [aarch64-port-dev ] Do not allow constant operands in xchg Message-ID: <5214F896.5010701@redhat.com> Fix a minor thinko. Andrew. # HG changeset patch # User aph # Date 1377105920 -3600 # Node ID f1e3cda176010e3dd204938a661fb3b4e773f7d0 # Parent 4405de290d7ae4f77eeff6866ae65b6bfd32b253 Do not allow constant operands in xchg diff -r 4405de290d7a -r f1e3cda17601 src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Wed Aug 21 16:34:04 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Wed Aug 21 18:25:20 2013 +0100 @@ -1303,7 +1303,10 @@ src.load_item(); off.load_nonconstant(); - if (! (value.is_constant() && can_inline_as_constant(x->value()))) { + // We can cope with a constant increment in an xadd + if (! (x->is_add() + && value.is_constant() + && can_inline_as_constant(x->value()))) { value.load_item(); } From aph at redhat.com Wed Aug 21 10:26:21 2013 From: aph at redhat.com (aph at redhat.com) Date: Wed, 21 Aug 2013 17:26:21 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 6 new changesets Message-ID: <20130821172634.DF42148A4E@hg.openjdk.java.net> Changeset: a8ce62237e18 Author: aph Date: 2013-08-21 12:07 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/a8ce62237e18 C1: Implement UnsafeGetAndSetObject. ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp ! src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Changeset: 6ca74c561b2e Author: aph Date: 2013-08-21 12:08 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/6ca74c561b2e C1: Implement UnsafeGetAndSetObject. ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp ! src/cpu/aarch64/vm/vm_version_aarch64.cpp Changeset: 5011c5a7feec Author: aph Date: 2013-08-21 15:43 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/5011c5a7feec Correct save/restore native result ! src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Changeset: 4405de290d7a Author: aph Date: 2013-08-21 16:34 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/4405de290d7a Merge ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Changeset: f1e3cda17601 Author: aph Date: 2013-08-21 18:25 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/f1e3cda17601 Do not allow constant operands in xchg ! src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Changeset: 3fc92a2940e6 Author: aph Date: 2013-08-21 18:26 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/3fc92a2940e6 Merge From adinn at redhat.com Thu Aug 22 09:29:16 2013 From: adinn at redhat.com (Andrew Dinn) Date: Thu, 22 Aug 2013 17:29:16 +0100 Subject: [aarch64-port-dev ] Weird code in generate_call_stub() In-Reply-To: <5214F757.2010306@redhat.com> References: <5214F757.2010306@redhat.com> Message-ID: <52163C5C.6030208@redhat.com> Do delete the two lines // ECN: FIXME // #if 0 However, please leave the rest. It allows the simulator to identify the linkage through the call stub frame when it is printing stack backtraces. On 21/08/13 18:22, Andrew Haley wrote: > I want to delete this code. As far as I can see it doesn't do > anything useful. > > // AED: this should fix Ed's problem -- we only save the sender's SP for our sim > #ifdef BUILTIN_SIM > // Save sender's SP for stack traces. > // ECN: FIXME > // #if 0 > __ mov(rscratch1, sp); > __ str(rscratch1, Address(__ pre(sp, -2 * wordSize))); > #endif > > Andrew Dinn? Ed? What say you? Hmm, I commented out Ed's #if 0 and replaced it with #ifdef BUILTIN_SIM because I thought this was needed to make the sim debug routines work. But looking at it again I think it is redundant. So, yes, it can go. regards, Andrew Dinn ----------- Principal Software Engineer Red Hat UK Ltd Registered in UK and Wales under Company Registration No. 3798903 Directors: Michael Cunningham (USA), Mark Hegarty (Ireland), Matt Parson (USA), Charlie Peters (USA) From aph at redhat.com Thu Aug 22 11:04:37 2013 From: aph at redhat.com (Andrew Haley) Date: Thu, 22 Aug 2013 19:04:37 +0100 Subject: [aarch64-port-dev ] Fix overflow in ADRP Message-ID: <521652B5.4080503@redhat.com> I came across a case where ADRP couldn't reach its target. I fixed this by allowing the ADRP macro to generate a full 64-bit address if needs be. Andrew. comparing with ssh://hg.openjdk.java.net/aarch64-port/jdk8//hotspot searching for changes remote: X11 forwarding request failed on channel 0 changeset: 4865:b0a65a4a6094 tag: tip user: aph date: Thu Aug 22 19:02:06 2013 +0100 summary: Allow adrp macro to handle full 64-bit offsets. diff -r 3fc92a2940e6 -r b0a65a4a6094 src/cpu/aarch64/vm/assembler_aarch64.cpp --- a/src/cpu/aarch64/vm/assembler_aarch64.cpp Wed Aug 21 18:26:08 2013 +0100 +++ b/src/cpu/aarch64/vm/assembler_aarch64.cpp Thu Aug 22 19:02:06 2013 +0100 @@ -1286,10 +1286,7 @@ } void Assembler::adrp(Register reg1, const Address &dest, unsigned long &byte_offset) { - InstructionMark im(this); - code_section()->relocate(inst_mark(), dest.rspec()); - byte_offset = (uint64_t)dest.target() & 0xfff; - _adrp(reg1, dest.target()); + ShouldNotReachHere(); } #undef __ diff -r 3fc92a2940e6 -r b0a65a4a6094 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Aug 21 18:26:08 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Thu Aug 22 19:02:06 2013 +0100 @@ -2575,3 +2575,18 @@ ldrw(zr, Address(r, off)); return inst_mark(); } + +void MacroAssembler::adrp(Register reg1, const Address &dest, unsigned long &byte_offset) { + if (labs(pc() - dest.target()) >= (1LL << 32)) { + // Out of range. This doesn't happen very often, but we have to + // handle it + mov(reg1, dest); + byte_offset = 0; + } else { + InstructionMark im(this); + code_section()->relocate(inst_mark(), dest.rspec()); + byte_offset = (uint64_t)dest.target() & 0xfff; + _adrp(reg1, dest.target()); + } +} + diff -r 3fc92a2940e6 -r b0a65a4a6094 src/cpu/aarch64/vm/macroAssembler_aarch64.hpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Aug 21 18:26:08 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Thu Aug 22 19:02:06 2013 +0100 @@ -1281,6 +1281,8 @@ void add(Register Rd, Register Rn, RegisterOrConstant increment); void addw(Register Rd, Register Rn, RegisterOrConstant increment); + void adrp(Register reg1, const Address &dest, unsigned long &byte_offset); + void tableswitch(Register index, jint lowbound, jint highbound, Label &jumptable, Label &jumptable_end) { adr(rscratch1, jumptable); diff -r 3fc92a2940e6 -r b0a65a4a6094 src/cpu/aarch64/vm/nativeInst_aarch64.cpp --- a/src/cpu/aarch64/vm/nativeInst_aarch64.cpp Wed Aug 21 18:26:08 2013 +0100 +++ b/src/cpu/aarch64/vm/nativeInst_aarch64.cpp Thu Aug 22 19:02:06 2013 +0100 @@ -180,8 +180,23 @@ }; bool NativeInstruction::is_safepoint_poll() { - address addr = addr_at(-4); - return os::is_poll_address(MacroAssembler::pd_call_destination(addr)); + /* We expect a safepoint poll to be either + + adrp(reg, polling_page); + ldr(reg, offset); + + or + + mov(reg, polling_page); + ldr(reg, Address(reg, 0)); + */ + + if (is_adrp_at(addr_at(-4))) { + address addr = addr_at(-4); + return os::is_poll_address(MacroAssembler::pd_call_destination(addr)); + } else { + return os::is_poll_address(MacroAssembler::pd_call_destination(addr_at(-16))); + } } bool NativeInstruction::is_adrp_at(address instr) { From adinn at redhat.com Fri Aug 23 01:14:09 2013 From: adinn at redhat.com (Andrew Dinn) Date: Fri, 23 Aug 2013 09:14:09 +0100 Subject: [aarch64-port-dev ] Weird code in generate_call_stub() In-Reply-To: <52163C5C.6030208@redhat.com> References: <5214F757.2010306@redhat.com> <52163C5C.6030208@redhat.com> Message-ID: <521719D1.2020602@redhat.com> Oops, that last post was a tad confusing . . . I thought it was needed but then decided it wasn't and didn't delete my initial comments. So, yes this code can go. regards, Andrew Dinn ----------- On 22/08/13 17:29, Andrew Dinn wrote: > Do delete the two lines > > // ECN: FIXME > // #if 0 > > However, please leave the rest. It allows the simulator to identify the > linkage through the call stub frame when it is printing stack backtraces. > On 21/08/13 18:22, Andrew Haley wrote: >> I want to delete this code. As far as I can see it doesn't do >> anything useful. >> >> // AED: this should fix Ed's problem -- we only save the sender's SP for our sim >> #ifdef BUILTIN_SIM >> // Save sender's SP for stack traces. >> // ECN: FIXME >> // #if 0 >> __ mov(rscratch1, sp); >> __ str(rscratch1, Address(__ pre(sp, -2 * wordSize))); >> #endif >> >> Andrew Dinn? Ed? What say you? > > Hmm, I commented out Ed's #if 0 and replaced it with #ifdef BUILTIN_SIM > because I thought this was needed to make the sim debug routines work. > But looking at it again I think it is redundant. So, yes, it can go. > > regards, > > > Andrew Dinn > ----------- > Principal Software Engineer > Red Hat UK Ltd > Registered in UK and Wales under Company Registration No. 3798903 > Directors: Michael Cunningham (USA), Mark Hegarty (Ireland), Matt Parson > (USA), Charlie Peters (USA) > > From aph at redhat.com Fri Aug 23 07:27:47 2013 From: aph at redhat.com (Andrew Haley) Date: Fri, 23 Aug 2013 15:27:47 +0100 Subject: [aarch64-port-dev ] Enable breakpoints and watchpoints Message-ID: <52177163.5050605@redhat.com> I've done some simple smoke tests with Eclipse. It'll need a bit more bashing before it's solid. Andrew. # HG changeset patch # User aph # Date 1377267977 -3600 # Node ID 356ebc1be1d9454649e921fe83abf19e1c5da59b # Parent b0a65a4a60949130760398a2db5da7138738369e Enable breakpoints and watchpoints diff -r b0a65a4a6094 -r 356ebc1be1d9 src/cpu/aarch64/vm/interp_masm_aarch64.cpp --- a/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Thu Aug 22 19:02:06 2013 +0100 +++ b/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Fri Aug 23 15:26:17 2013 +0100 @@ -51,7 +51,23 @@ void InterpreterMacroAssembler::check_and_handle_popframe(Register java_thread) { if (JvmtiExport::can_pop_frame()) { - Unimplemented(); + Label L; + // Initiate popframe handling only if it is not already being + // processed. If the flag has the popframe_processing bit set, it + // means that this code is called *during* popframe handling - we + // don't want to reenter. + // This method is only called just after the call into the vm in + // call_VM_base, so the arg registers are available. + ldr(rscratch1, Address(rthread, JavaThread::popframe_condition_offset())); + tst(rscratch1, JavaThread::popframe_pending_bit); + br(Assembler::EQ, L); + tst(rscratch1, JavaThread::popframe_processing_bit); + br(Assembler::NE, L); + // Call Interpreter::remove_activation_preserving_args_entry() to get the + // address of the same-named entrypoint in the generated interpreter code. + call_VM_leaf(CAST_FROM_FN_PTR(address, Interpreter::remove_activation_preserving_args_entry)); + br(r0); + bind(L); } } @@ -62,9 +78,26 @@ } void InterpreterMacroAssembler::check_and_handle_earlyret(Register java_thread) { - if (JvmtiExport::can_force_early_return()) { - Unimplemented(); - } + if (JvmtiExport::can_force_early_return()) { + Label L; + ldr(rscratch1, Address(rthread, JavaThread::jvmti_thread_state_offset())); + cbz(rscratch1, L); // if (thread->jvmti_thread_state() == NULL) exit; + + // Initiate earlyret handling only if it is not already being processed. + // If the flag has the earlyret_processing bit set, it means that this code + // is called *during* earlyret handling - we don't want to reenter. + ldrw(rscratch1, Address(rscratch1, JvmtiThreadState::earlyret_state_offset())); + cmpw(rscratch1, JvmtiThreadState::earlyret_pending); + br(Assembler::NE, L); + + // Call Interpreter::remove_activation_early_entry() to get the address of the + // same-named entrypoint in the generated interpreter code. + ldr(rscratch1, Address(rthread, JavaThread::jvmti_thread_state_offset())); + ldrw(rscratch1, Address(rscratch1, JvmtiThreadState::earlyret_tos_offset())); + call_VM_leaf(CAST_FROM_FN_PTR(address, Interpreter::remove_activation_early_entry), rscratch1); + br(r0); + bind(L); + } } void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp( @@ -102,6 +135,13 @@ } } +// Return +// Rindex: index into constant pool +// Rcache: address of cache entry - ConstantPoolCache::base_offset() +// +// A caller must add ConstantPoolCache::base_offset() to Rcache to get +// the true address of the cache entry. +// void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset, @@ -1298,11 +1338,38 @@ void InterpreterMacroAssembler::notify_method_exit( TosState state, NotifyMethodExitMode mode) { + // Whenever JVMTI is interp_only_mode, method entry/exit events are sent to + // track stack depth. If it is possible to enter interp_only_mode we add + // the code to check if the event should be sent. if (mode == NotifyJVMTI && JvmtiExport::can_post_interpreter_events()) { - call_Unimplemented(); + Label L; + // Note: frame::interpreter_frame_result has a dependency on how the + // method result is saved across the call to post_method_exit. If this + // is changed then the interpreter_frame_result implementation will + // need to be updated too. + + // For c++ interpreter the result is always stored at a known location in the frame + // template interpreter will leave it on the top of the stack. + NOT_CC_INTERP(push(state);) + ldrw(r3, Address(rthread, JavaThread::interp_only_mode_offset())); + cbz(r3, L); + call_VM(noreg, + CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_exit)); + bind(L); + NOT_CC_INTERP(pop(state)); + } + + { + SkipIfEqual skip(this, &DTraceMethodProbes, false); + NOT_CC_INTERP(push(state)); + get_method(c_rarg1); + call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), + rthread, c_rarg1); + NOT_CC_INTERP(pop(state)); } } + // Jump if ((*counter_addr += increment) & mask) satisfies the condition. void InterpreterMacroAssembler::increment_mask_and_jump(Address counter_addr, int increment, int mask, diff -r b0a65a4a6094 -r 356ebc1be1d9 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Thu Aug 22 19:02:06 2013 +0100 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Aug 23 15:26:17 2013 +0100 @@ -360,11 +360,9 @@ // Only interpreter should have to clear fp reset_last_Java_frame(true, false); -#ifndef CC_INTERP // C++ interp handles this in the interpreter check_and_handle_popframe(java_thread); check_and_handle_earlyret(java_thread); -#endif /* CC_INTERP */ if (check_exceptions) { // check for pending exceptions (java_thread is set upon return) diff -r b0a65a4a6094 -r 356ebc1be1d9 src/cpu/aarch64/vm/templateTable_aarch64.cpp --- a/src/cpu/aarch64/vm/templateTable_aarch64.cpp Thu Aug 22 19:02:06 2013 +0100 +++ b/src/cpu/aarch64/vm/templateTable_aarch64.cpp Fri Aug 23 15:26:17 2013 +0100 @@ -2197,13 +2197,36 @@ // The registers cache and index expected to be set before call. // Correct values of the cache and index registers are preserved. void TemplateTable::jvmti_post_field_access(Register cache, Register index, - bool is_static, bool has_tos) -{ + bool is_static, bool has_tos) { // do the JVMTI work here to avoid disturbing the register state below // We use c_rarg registers here because we want to use the register used in // the call to the VM if (JvmtiExport::can_post_field_access()) { - __ call_Unimplemented(); + // Check to see if a field access watch has been set before we + // take the time to call into the VM. + Label L1; + assert_different_registers(cache, index, r0); + __ lea(rscratch1, ExternalAddress((address) JvmtiExport::get_field_access_count_addr())); + __ ldrw(r0, Address(rscratch1)); + __ cbzw(r0, L1); + + __ get_cache_and_index_at_bcp(c_rarg2, c_rarg3, 1); + __ lea(c_rarg2, Address(c_rarg2, in_bytes(ConstantPoolCache::base_offset()))); + + if (is_static) { + __ mov(c_rarg1, zr); // NULL object reference + } else { + __ ldr(c_rarg1, at_tos()); // get object pointer without popping it + __ verify_oop(c_rarg1); + } + // c_rarg1: object pointer or NULL + // c_rarg2: cache entry pointer + // c_rarg3: jvalue object on the stack + __ call_VM(noreg, CAST_FROM_FN_PTR(address, + InterpreterRuntime::post_field_access), + c_rarg1, c_rarg2, c_rarg3); + __ get_cache_and_index_at_bcp(cache, index, 1); + __ bind(L1); } } @@ -2363,10 +2386,59 @@ // The registers cache and index expected to be set before call. // The function may destroy various registers, just not the cache and index registers. -void TemplateTable::jvmti_post_field_mod(Register cache, Register index, bool is_static) -{ +void TemplateTable::jvmti_post_field_mod(Register cache, Register index, bool is_static) { + transition(vtos, vtos); + + ByteSize cp_base_offset = ConstantPoolCache::base_offset(); + if (JvmtiExport::can_post_field_modification()) { - __ call_Unimplemented(); + // Check to see if a field modification watch has been set before + // we take the time to call into the VM. + Label L1; + assert_different_registers(cache, index, r0); + __ mov(rscratch1, ExternalAddress((address)JvmtiExport::get_field_modification_count_addr())); + __ ldrw(r0, Address(rscratch1)); + __ cbz(r0, L1); + + __ get_cache_and_index_at_bcp(c_rarg2, rscratch1, 1); + + if (is_static) { + // Life is simple. Null out the object pointer. + __ mov(c_rarg1, zr); + } else { + // Life is harder. The stack holds the value on top, followed by + // the object. We don't know the size of the value, though; it + // could be one or two words depending on its type. As a result, + // we must find the type to determine where the object is. + __ ldrw(c_rarg3, Address(c_rarg2, + in_bytes(cp_base_offset + + ConstantPoolCacheEntry::flags_offset()))); + __ lsr(c_rarg3, c_rarg3, + ConstantPoolCacheEntry::tos_state_shift); + ConstantPoolCacheEntry::verify_tos_state_shift(); + Label nope2, done, ok; + __ ldr(c_rarg1, at_tos_p1()); // initially assume a one word jvalue + __ cmpw(c_rarg3, ltos); + __ br(Assembler::EQ, ok); + __ cmpw(c_rarg3, dtos); + __ br(Assembler::NE, nope2); + __ bind(ok); + __ ldr(c_rarg1, at_tos_p2()); // ltos (two word jvalue) + __ bind(nope2); + } + // cache entry pointer + __ add(c_rarg2, c_rarg2, in_bytes(cp_base_offset)); + // object (tos) + __ mov(c_rarg3, esp); + // c_rarg1: object pointer set up above (NULL if static) + // c_rarg2: cache entry pointer + // c_rarg3: jvalue object on the stack + __ call_VM(noreg, + CAST_FROM_FN_PTR(address, + InterpreterRuntime::post_field_modification), + c_rarg1, c_rarg2, c_rarg3); + __ get_cache_and_index_at_bcp(cache, index, 1); + __ bind(L1); } } @@ -2381,7 +2453,7 @@ const Register bc = r4; resolve_cache_and_index(byte_no, cache, index, sizeof(u2)); - jvmti_post_field_mod(rcpool, index, is_static); + jvmti_post_field_mod(cache, index, is_static); load_field_cp_cache_entry(obj, cache, index, off, flags, is_static); Label Done; @@ -3333,9 +3405,29 @@ //----------------------------------------------------------------------------- // Breakpoints -void TemplateTable::_breakpoint() -{ - __ call_Unimplemented(); +void TemplateTable::_breakpoint() { + // Note: We get here even if we are single stepping.. + // jbug inists on setting breakpoints at every bytecode + // even if we are in single step mode. + + transition(vtos, vtos); + + // get the unpatched byte code + __ get_method(c_rarg1); + __ call_VM(noreg, + CAST_FROM_FN_PTR(address, + InterpreterRuntime::get_original_bytecode_at), + c_rarg1, rbcp); + __ mov(r19, r0); + + // post the breakpoint event + __ call_VM(noreg, + CAST_FROM_FN_PTR(address, InterpreterRuntime::_breakpoint), + rmethod, rbcp); + + // complete the execution of original bytecode + __ mov(rscratch1, r19); + __ dispatch_only_normal(vtos); } //----------------------------------------------------------------------------- From aph at redhat.com Fri Aug 23 07:30:54 2013 From: aph at redhat.com (aph at redhat.com) Date: Fri, 23 Aug 2013 14:30:54 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: 2 new changesets Message-ID: <20130823143100.9660448B09@hg.openjdk.java.net> Changeset: b0a65a4a6094 Author: aph Date: 2013-08-22 19:02 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/b0a65a4a6094 Allow adrp macro to handle full 64-bit offsets. Move adrp from Assembler to MacroAssembler. ! src/cpu/aarch64/vm/assembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.hpp ! src/cpu/aarch64/vm/nativeInst_aarch64.cpp Changeset: 356ebc1be1d9 Author: aph Date: 2013-08-23 15:26 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/356ebc1be1d9 Enable breakpoints and watchpoints ! src/cpu/aarch64/vm/interp_masm_aarch64.cpp ! src/cpu/aarch64/vm/macroAssembler_aarch64.cpp ! src/cpu/aarch64/vm/templateTable_aarch64.cpp From andy.johnson at linaro.org Fri Aug 23 12:17:36 2013 From: andy.johnson at linaro.org (Andy Johnson) Date: Fri, 23 Aug 2013 15:17:36 -0400 Subject: [aarch64-port-dev ] JTREG hotspot issues Message-ID: The JTREG regression tests in hotspot/test are finding the following errors, all a result of finding Unimplemented stubs: runtime/6294277/SourceDebugExtension.java # Internal Error (~/openjdk-8/jdk8/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp:54), pid=2981, tid=547984654864 # Error: Unimplemented() void InterpreterMacroAssembler::check_and_handle_popframe(Register java_thread) { if (JvmtiExport::can_pop_frame()) { Unimplemented(); } } gc/8000311/Test8000311.java gc/TestG1ZeroPGCTJcmdThreadPrint gc/7168848/HumongousAlloc # Internal Error (~/openjdk-8/jdk8/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp:2254), pid=1341, tid=548143497744 # Error: Unimplemented() void MacroAssembler::g1_write_barrier_pre(Register obj, Register pre_val, Register thread, Register tmp, bool tosca_live, bool expand_call) { Unimplemented(); } Is there any plan to implement these features? There may be periodic failures in the G1 garbage collector if the latter is not implemented, unless there is a way to bypass this call, other than specifying an alternate garbage collector. From thuhc at yahoo.com Mon Aug 26 23:56:41 2013 From: thuhc at yahoo.com (Cao Hoang Thu) Date: Mon, 26 Aug 2013 23:56:41 -0700 (PDT) Subject: [aarch64-port-dev ] Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=2545, tid=547560092176 In-Reply-To: References: Message-ID: <1377586601.4410.YahooMailNeo@web164602.mail.gq1.yahoo.com> VM Arguments: jvm_args: -Dproc_datanode -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote -Dhadoop.log.dir=/usr/lib/jvm/hadoop-1.0.3/libexec/../logs -Dhadoop.log.file=hadoop-hduser-datanode-master.log -Dhadoop.home.dir=/usr/lib/jvm/hadoop-1.0.3/libexec/.. -Dhadoop.id.str=hduser -Dhadoop.root.logger=INFO,DRFA -Dhadoop.security.logger=INFO,NullAppender -Djava.library.path=/usr/lib/jvm/hadoop-1.0.3/libexec/../lib/native/Linux-aarch64-64 -Dhadoop.policy.file=hadoop-policy.xml? java_command: org.apache.hadoop.hdfs.server.datanode.DataNode # A fatal error has been detected by the Java Runtime Environment: # # ?Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=1920, tid=546312299024 # ?Error: ShouldNotReachHere() # # JRE version: OpenJDK Runtime Environment (8.0) (build 1.8.0-internal-thcao_2013_08_27_11_03-b00) # Java VM: OpenJDK 64-Bit Client VM (25.0-b22 mixed mode linux-aarch64 ) # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # # If you would like to submit a bug report, please visit: # ? http://bugreport.sun.com/bugreport/crash.jsp # --------------- ?T H R E A D ?--------------- Current thread (0x0000007f74094320): ?JavaThread "C1 CompilerThread0" daemon [_thread_in_native, id=1953, stack(0x0000007f32a03000,0x0000007f32c03000)] Stack: [0x0000007f32a03000,0x0000007f32c03000], ?sp=0x0000007f32c001f0, ?free space=2036k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V ?[libjvm.so+0x570e24] ?JVM_handle_linux_signal+0xf9c04 V ?[libjvm.so+0x21c250] ?operator new[](unsigned long)+0x21c250 V ?[libjvm.so+0x119cf8] ?operator new[](unsigned long)+0x119cf8 V ?[libjvm.so+0x111a20] ?operator new[](unsigned long)+0x111a20 V ?[libjvm.so+0xe4948] ?operator new[](unsigned long)+0xe4948 V ?[libjvm.so+0xe4d2c] ?operator new[](unsigned long)+0xe4d2c V ?[libjvm.so+0xe4ee4] ?operator new[](unsigned long)+0xe4ee4 V ?[libjvm.so+0xe52c4] ?operator new[](unsigned long)+0xe52c4 V ?[libjvm.so+0xe5bd4] ?operator new[](unsigned long)+0xe5bd4 V ?[libjvm.so+0x1df9d8] ?operator new[](unsigned long)+0x1df9d8 V ?[libjvm.so+0x1e0c7c] ?operator new[](unsigned long)+0x1e0c7c V ?[libjvm.so+0x53c7b4] ?JVM_handle_linux_signal+0xc5594 V ?[libjvm.so+0x46ecd4] ?JVM_FindSignal+0x118634 C ?[libpthread.so.0+0x7d0c] ?start_thread+0xac Current CompileTask: C1: ?42407 1144 ? ? ? ? ? ? java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl::getAndSet (63 bytes) From aph at redhat.com Tue Aug 27 10:15:56 2013 From: aph at redhat.com (Andrew Haley) Date: Tue, 27 Aug 2013 18:15:56 +0100 Subject: [aarch64-port-dev ] Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=2545, tid=547560092176 In-Reply-To: <1377586601.4410.YahooMailNeo@web164602.mail.gq1.yahoo.com> References: <1377586601.4410.YahooMailNeo@web164602.mail.gq1.yahoo.com> Message-ID: <521CDECC.4040407@redhat.com> On 08/27/2013 07:56 AM, Cao Hoang Thu wrote: > VM Arguments: > jvm_args: -Dproc_datanode -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote -Dhadoop.log.dir=/usr/lib/jvm/hadoop-1.0.3/libexec/../logs -Dhadoop.log.file=hadoop-hduser-datanode-master.log -Dhadoop.home.dir=/usr/lib/jvm/hadoop-1.0.3/libexec/.. -Dhadoop.id.str=hduser -Dhadoop.root.logger=INFO,DRFA -Dhadoop.security.logger=INFO,NullAppender -Djava.library.path=/usr/lib/jvm/hadoop-1.0.3/libexec/../lib/native/Linux-aarch64-64 -Dhadoop.policy.file=hadoop-policy.xml > java_command: org.apache.hadoop.hdfs.server.datanode.DataNode Can you please tell me how to reproduce this? Thanks, Andrew. From aph at redhat.com Tue Aug 27 10:20:31 2013 From: aph at redhat.com (Andrew Haley) Date: Tue, 27 Aug 2013 18:20:31 +0100 Subject: [aarch64-port-dev ] JTREG hotspot issues In-Reply-To: References: Message-ID: <521CDFDF.2050201@redhat.com> On 08/23/2013 08:17 PM, Andy Johnson wrote: > The JTREG regression tests in hotspot/test are finding the following > errors, all a result of finding Unimplemented stubs: > > runtime/6294277/SourceDebugExtension.java > # Internal Error > (~/openjdk-8/jdk8/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp:54), > pid=2981, tid=547984654864 > # Error: Unimplemented() > void InterpreterMacroAssembler::check_and_handle_popframe(Register > java_thread) { > if (JvmtiExport::can_pop_frame()) { > Unimplemented(); > } > } > > gc/8000311/Test8000311.java > gc/TestG1ZeroPGCTJcmdThreadPrint > gc/7168848/HumongousAlloc > # Internal Error > (~/openjdk-8/jdk8/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp:2254), > pid=1341, tid=548143497744 > # Error: Unimplemented() > void MacroAssembler::g1_write_barrier_pre(Register obj, > Register pre_val, > Register thread, > Register tmp, > bool tosca_live, > bool expand_call) { > Unimplemented(); } > > Is there any plan to implement these features? The first one should be fixed already. Please update your sources. > There may be periodic > failures in the G1 garbage collector if the latter is not implemented, > unless there is a way to bypass this call, other than specifying an > alternate garbage collector. > We don't claim to support anything beyond Java's defaults right now. However, if you can provide proper details of how to reproduce these issues I can have a look. Andrew. From andy.johnson at linaro.org Tue Aug 27 12:09:05 2013 From: andy.johnson at linaro.org (Andy Johnson) Date: Tue, 27 Aug 2013 15:09:05 -0400 Subject: [aarch64-port-dev ] Running hotspot JTREG tests Message-ID: 1. Download the pre-built binary for JTREG from http://download.java.net/openjdk/jtreg/ I installed it in the jdk8 directory. 2. Create a shell script named do_hotspot_test with the following in the jtreg directory: /home/root/j2sdk-image/bin/java -jar lib/jtreg.jar -timeout:15 -vmoption:-Xmixed -othervm -v1 -a -ignore:quiet -w:work_hotspot/JTwork -r:report_hotspot/JTreport -jdk:/home/root/j2sdk-image ../hotspot/test/$1 I run the cross_configure and cross_compile scripts in the aarch64-port clone and then copy build/linux-aarch64-normal-client-fastdebug/images/j2sdk-image to /home/root in the OpenEmbedded image. 3. ./do_hotspot_test gc/8000311/Test8000311.java 4. Run the same command on the other two tests. It is worth noting that the Makefile in hotspot/test doesn't run any of these tests. The Makefile targets only run demos. You have to run them using the jtreg harness directly, either individually or as a collection (i.e. specifying ../hotspot/test will run all tests in the hotspot/test directory). From thuhc at yahoo.com Tue Aug 27 21:42:08 2013 From: thuhc at yahoo.com (Cao Hoang Thu) Date: Tue, 27 Aug 2013 21:42:08 -0700 (PDT) Subject: [aarch64-port-dev ] Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=2545, tid=547560092176 In-Reply-To: <521CDECC.4040407@redhat.com> References: <1377586601.4410.YahooMailNeo@web164602.mail.gq1.yahoo.com> <521CDECC.4040407@redhat.com> Message-ID: <1377664928.8297.YahooMailNeo@web164606.mail.gq1.yahoo.com> Hi Andrew, Step 1: Download/Extract hadoop-1.0.3 Step 2: Configure hadoop with single node Step 3: Start hadoop:? bin/start-all.sh Step 4: Run test gen:? bin/hadoop jar hadoop-*examples*.jar teragen?10000000 /data1GB Regards, Thu Cao ________________________________ From: Andrew Haley To: Cao Hoang Thu Cc: "aarch64-port-dev at openjdk.java.net" Sent: Wednesday, August 28, 2013 12:15 AM Subject: Re: [aarch64-port-dev ] Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=2545, tid=547560092176 On 08/27/2013 07:56 AM, Cao Hoang Thu wrote: > VM Arguments: > jvm_args: -Dproc_datanode -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote -Dhadoop.log.dir=/usr/lib/jvm/hadoop-1.0.3/libexec/../logs -Dhadoop.log.file=hadoop-hduser-datanode-master.log -Dhadoop.home.dir=/usr/lib/jvm/hadoop-1.0.3/libexec/.. -Dhadoop.id.str=hduser -Dhadoop.root.logger=INFO,DRFA -Dhadoop.security.logger=INFO,NullAppender -Djava.library.path=/usr/lib/jvm/hadoop-1.0.3/libexec/../lib/native/Linux-aarch64-64 -Dhadoop.policy.file=hadoop-policy.xml > java_command: org.apache.hadoop.hdfs.server.datanode.DataNode Can you please tell me how to reproduce this? Thanks, Andrew. From trivikram at iitj.ac.in Thu Aug 29 09:14:21 2013 From: trivikram at iitj.ac.in (Trivikram Chaudhary) Date: Thu, 29 Aug 2013 21:44:21 +0530 Subject: [aarch64-port-dev ] How to start Message-ID: Hi I have taken up a project to port java compiler on a new processor. The processor architecture is not yet given to me but I want to ask some doubt. I know JVM is machine dependent and javac compiler is machine independent. So when I start porting the compiler, do I have to change anything in javac compiler or I need to take care of JVM only. If at all I have to make changes in javac compiler what type of changes are they? Any answer or reading material can really help me. Thank You From aph at redhat.com Thu Aug 29 09:18:51 2013 From: aph at redhat.com (Andrew Haley) Date: Thu, 29 Aug 2013 17:18:51 +0100 Subject: [aarch64-port-dev ] Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=2545, tid=547560092176 In-Reply-To: <1377586601.4410.YahooMailNeo@web164602.mail.gq1.yahoo.com> References: <1377586601.4410.YahooMailNeo@web164602.mail.gq1.yahoo.com> Message-ID: <521F746B.7070602@redhat.com> On 08/27/2013 07:56 AM, Cao Hoang Thu wrote: > VM Arguments: > jvm_args: -Dproc_datanode -Xmx1000m -Dcom.sun.management.jmxremote ... > java_command: org.apache.hadoop.hdfs.server.datanode.DataNode > > # A fatal error has been detected by the Java Runtime Environment: > # > # Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=1920, tid=546312299024 > # Error: ShouldNotReachHere() Fixed thusly: changeset: 4867:3a09edaa2c42 tag: tip user: aph date: Thu Aug 29 17:15:33 2013 +0100 files: src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp description: C1: Support add of obj+long diff -r 356ebc1be1d9 -r 3a09edaa2c42 src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Fri Aug 23 15:26:17 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Thu Aug 29 17:15:33 2013 +0100 @@ -1702,6 +1702,15 @@ default: ShouldNotReachHere(); } + } else if (right->is_double_cpu()) { + Register rreg = right->as_register_lo(); + // single_cpu + double_cpu: can happen with obj+long + assert(code == lir_add || code == lir_sub, "mismatched arithmetic op"); + switch (code) { + case lir_add: __ add(dreg, lreg, rreg); break; + case lir_sub: __ sub(dreg, lreg, rreg); break; + default: ShouldNotReachHere(); + } } else if (right->is_constant()) { // cpu register - constant jint c = right->as_constant_ptr()->as_jint(); Andrew. From aph at redhat.com Thu Aug 29 09:19:23 2013 From: aph at redhat.com (aph at redhat.com) Date: Thu, 29 Aug 2013 16:19:23 +0000 Subject: [aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: C1: Support add of obj+long Message-ID: <20130829161933.8C664623B0@hg.openjdk.java.net> Changeset: 3a09edaa2c42 Author: aph Date: 2013-08-29 17:15 +0100 URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/3a09edaa2c42 C1: Support add of obj+long ! src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp From aph at redhat.com Thu Aug 29 09:37:16 2013 From: aph at redhat.com (Andrew Haley) Date: Thu, 29 Aug 2013 17:37:16 +0100 Subject: [aarch64-port-dev ] How to start In-Reply-To: References: Message-ID: <521F78BC.4020005@redhat.com> On 08/29/2013 05:14 PM, Trivikram Chaudhary wrote: > I have taken up a project to port java compiler on a new processor. The > processor architecture is not yet given to me but I want to ask some doubt. > > I know JVM is machine dependent and javac compiler is machine independent. > So when I start porting the compiler, do I have to change anything in javac > compiler or I need to take care of JVM only. If at all I have to make > changes in javac compiler what type of changes are they? > > Any answer or reading material can really help me. Don't worry. There is no need to change javac: the only changes you need are to the HotSpot back end and a few minor changes in other files. You're in Jodhpur, right? I'm thinking of running a Porting OpenJDK training course later in the year, but it'll probably be in London, England. Andrew. From thuhc at yahoo.com Thu Aug 29 20:50:22 2013 From: thuhc at yahoo.com (Cao Hoang Thu) Date: Thu, 29 Aug 2013 20:50:22 -0700 (PDT) Subject: [aarch64-port-dev ] Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=2545, tid=547560092176 In-Reply-To: <521F746B.7070602@redhat.com> References: <1377586601.4410.YahooMailNeo@web164602.mail.gq1.yahoo.com> <521F746B.7070602@redhat.com> Message-ID: <1377834622.83738.YahooMailNeo@web164605.mail.gq1.yahoo.com> Thanks ?I will check it now... Best Regards, Thu Cao ________________________________ From: Andrew Haley To: Cao Hoang Thu Cc: "aarch64-port-dev at openjdk.java.net" Sent: Thursday, August 29, 2013 11:18 PM Subject: Re: [aarch64-port-dev ] Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=2545, tid=547560092176 On 08/27/2013 07:56 AM, Cao Hoang Thu wrote: > VM Arguments: > jvm_args: -Dproc_datanode -Xmx1000m -Dcom.sun.management.jmxremote ... > java_command: org.apache.hadoop.hdfs.server.datanode.DataNode > > # A fatal error has been detected by the Java Runtime Environment: > # > #? Internal Error (c1_LIRAssembler_aarch64.cpp:1733), pid=1920, tid=546312299024 > #? Error: ShouldNotReachHere() Fixed thusly: changeset:? 4867:3a09edaa2c42 tag:? ? ? ? tip user:? ? ? ? aph date:? ? ? ? Thu Aug 29 17:15:33 2013 +0100 files:? ? ? src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp description: C1: Support add of obj+long diff -r 356ebc1be1d9 -r 3a09edaa2c42 src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp??? Fri Aug 23 15:26:17 2013 +0100 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp??? Thu Aug 29 17:15:33 2013 +0100 @@ -1702,6 +1702,15 @@ ? ? ? default:? ? ? ShouldNotReachHere(); ? ? ? } +? ? } else if (right->is_double_cpu()) { +? ? ? Register rreg = right->as_register_lo(); +? ? ? // single_cpu + double_cpu: can happen with obj+long +? ? ? assert(code == lir_add || code == lir_sub, "mismatched arithmetic op"); +? ? ? switch (code) { +? ? ? case lir_add: __ add(dreg, lreg, rreg); break; +? ? ? case lir_sub: __ sub(dreg, lreg, rreg); break; +? ? ? default: ShouldNotReachHere(); +? ? ? } ? ? } else if (right->is_constant()) { ? ? ? // cpu register - constant ? ? ? jint c = right->as_constant_ptr()->as_jint(); Andrew.