From doko at ubuntu.com Sat Jan 2 07:02:47 2010 From: doko at ubuntu.com (Matthias Klose) Date: Sat, 02 Jan 2010 16:02:47 +0100 Subject: build problems on sparc64-linux Message-ID: <4B3F6017.9000009@ubuntu.com> I see a build failure of current 6b17 from the IcedTea6 branch on sparc64-linux using the original hotspot, but not on sparc-linux (32bit). The build fails building abstractCompiler.cpp in build/linux-sparcv9/hotspot/outputdir/linux_sparcv9_compiler2/product .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1069: error: inline function 'void Assembler::emit_long(int)' used but never defined .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1083: error: inline function 'void Assembler::add(RegisterImpl*, int, RegisterImpl*, relocInfo::relocType)' used but never defined .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1514: error: inline function 'void Assembler::stb(RegisterImpl*, const Address&, int)' used but never defined .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1291: error: inline function 'void Assembler::ldsb(const Address&, RegisterImpl*, int)' used but never defined .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1507: error: inline function 'void Assembler::st(RegisterImpl*, RegisterImpl*, RegisterImpl*)' used but never defined these are all defined in assembler_sparc.inline.hpp. not using precompiled headers and -save-temps shows that assembler_sparc.inline.hpp is not included in the saved .ii file. I currently fail to see how assembler_x86.inline.hpp and assembler_zero.inline.hpp are included (or assembler_sparc.inline.hpp on sparc 32bit). Any hints? patches/icedtea-sparc-trapsfix.patch is patched to include asm/traps.h instead of asm-sparc/traps.h only for one sparc architecture. I don't see asm-sparc/traps.h anymore with recent kernel headers. maybe this should be build configure check depending on the kernel headers used? the fedora packaging repository does have two sparc patches not found in IcedTea. Are these still applied? Does the fedora build acctually build and work in it's current state? Thanks, Matthias From gbenson at icedtea.classpath.org Tue Jan 5 02:03:47 2010 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 05 Jan 2010 10:03:47 +0000 Subject: /hg/icedtea6: 2010-01-05 Gary Benson Message-ID: changeset c99b9280fdcf in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c99b9280fdcf author: Gary Benson date: Tue Jan 05 10:09:26 2010 +0000 2010-01-05 Gary Benson * patches/zero/6909153.patch: New file. * patches/zero/6913869.patch: Likewise. * Makefile.am (ICEDTEA_PATCHES): Added the above. diffstat: 4 files changed, 60 insertions(+) ChangeLog | 6 ++++++ Makefile.am | 2 ++ patches/zero/6909153.patch | 40 ++++++++++++++++++++++++++++++++++++++++ patches/zero/6913869.patch | 12 ++++++++++++ diffs (85 lines): diff -r 5e600a55ee80 -r c99b9280fdcf ChangeLog --- a/ChangeLog Thu Dec 24 14:00:06 2009 -0500 +++ b/ChangeLog Tue Jan 05 10:09:26 2010 +0000 @@ -1,3 +1,9 @@ 2009-12-24 Deepak Bhole + + * patches/zero/6909153.patch: New file. + * patches/zero/6913869.patch: Likewise. + * Makefile.am (ICEDTEA_PATCHES): Added the above. + 2009-12-24 Deepak Bhole * Makefile.am: Define XP_UNIX, without which critical plugin API diff -r 5e600a55ee80 -r c99b9280fdcf Makefile.am --- a/Makefile.am Thu Dec 24 14:00:06 2009 -0500 +++ b/Makefile.am Tue Jan 05 10:09:26 2010 +0000 @@ -199,6 +199,8 @@ ICEDTEA_PATCHES = \ patches/zero/6891677.patch \ patches/zero/6896043.patch \ patches/zero/6903453.patch \ + patches/zero/6909153.patch \ + patches/zero/6913869.patch \ patches/icedtea-notice-safepoints.patch \ patches/icedtea-parisc-opt.patch \ patches/icedtea-lucene-crash.patch \ diff -r 5e600a55ee80 -r c99b9280fdcf patches/zero/6909153.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6909153.patch Tue Jan 05 10:09:26 2010 +0000 @@ -0,0 +1,40 @@ +diff -r 1ea456c6f2b7 -r 40e7c1d24e4a src/share/vm/compiler/compileBroker.cpp +--- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp Tue Dec 22 17:56:03 2009 -0800 ++++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp Mon Jan 04 00:22:57 2010 -0800 +@@ -1820,9 +1820,11 @@ + CompileBroker::_t_standard_compilation.seconds(), + CompileBroker::_t_standard_compilation.seconds() / CompileBroker::_total_standard_compile_count); + tty->print_cr(" On stack replacement : %6.3f s, Average : %2.3f", CompileBroker::_t_osr_compilation.seconds(), CompileBroker::_t_osr_compilation.seconds() / CompileBroker::_total_osr_compile_count); +- compiler(CompLevel_fast_compile)->print_timers(); +- if (compiler(CompLevel_fast_compile) != compiler(CompLevel_highest_tier)) { +- compiler(CompLevel_highest_tier)->print_timers(); ++ ++ if (compiler(CompLevel_fast_compile)) { ++ compiler(CompLevel_fast_compile)->print_timers(); ++ if (compiler(CompLevel_fast_compile) != compiler(CompLevel_highest_tier)) ++ compiler(CompLevel_highest_tier)->print_timers(); + } + + tty->cr(); +diff -r 1ea456c6f2b7 -r 40e7c1d24e4a src/share/vm/runtime/arguments.cpp +--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Tue Dec 22 17:56:03 2009 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Mon Jan 04 00:22:57 2010 -0800 +@@ -2756,9 +2756,16 @@ + set_aggressive_opts_flags(); + + #ifdef CC_INTERP +- // Biased locking is not implemented with c++ interpreter ++ // Clear flags not supported by the C++ interpreter ++ FLAG_SET_DEFAULT(ProfileInterpreter, false); + FLAG_SET_DEFAULT(UseBiasedLocking, false); +-#endif /* CC_INTERP */ ++ LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedOops, false)); ++#endif // CC_INTERP ++ ++#ifdef ZERO ++ // Clear flags not supported by Zero ++ FLAG_SET_DEFAULT(TaggedStackInterpreter, false); ++#endif // ZERO + + #ifdef COMPILER2 + if (!UseBiasedLocking || EmitSync != 0) { diff -r 5e600a55ee80 -r c99b9280fdcf patches/zero/6913869.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6913869.patch Tue Jan 05 10:09:26 2010 +0000 @@ -0,0 +1,12 @@ +diff -r 40e7c1d24e4a -r 896da934748c src/share/vm/prims/jni.cpp +--- openjdk/hotspot/src/share/vm/prims/jni.cpp Mon Jan 04 00:22:57 2010 -0800 ++++ openjdk/hotspot/src/share/vm/prims/jni.cpp Mon Jan 04 03:34:40 2010 -0800 +@@ -3241,7 +3241,7 @@ + jint b = Atomic::xchg(0xdeadbeef, &a); + void *c = &a; + void *d = Atomic::xchg_ptr(&b, &c); +- assert(a == 0xdeadbeef && b == (jint) 0xcafebabe, "Atomic::xchg() works"); ++ assert(a == (jint) 0xdeadbeef && b == (jint) 0xcafebabe, "Atomic::xchg() works"); + assert(c == &b && d == &a, "Atomic::xchg_ptr() works"); + } + #endif // ZERO && ASSERT From bugzilla-daemon at icedtea.classpath.org Tue Jan 5 08:45:38 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 05 Jan 2010 16:45:38 +0000 Subject: [Bug 423] New: Iced tea openjdk1.6 and jdk1.7 crashes in remote x server (cygwin) environment Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=423 Summary: Iced tea openjdk1.6 and jdk1.7 crashes in remote x server (cygwin) environment Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: balajiraman at ge.com A simple java application crashes in remote x server environment for both openjdk1.6 and jdk1.7 when xrendering pipeline is enabled. Both the jvm and the xserver crashes. The remote x server uses NX (www.nomachine.com) technology for compression of X traffic. Some interesting findings: The xrendering pipeline does not crash in remote x server environment if we change the look feel to one of our custom look and feel. The xrendering pipeline does not crash for any look and feel in LOCAL X SERVER environment on Cent 0S 5.3. There are no crash logs, but while running the JGears demo using a debugger we found that a crash occured during a call to sun.java2d.SunGraphics2D. I am not quite sure whether it is a java issue, or x server issue or NX issue. OS version: SUSE Linux Enterprise Server 11 x86_64 VERSION = 11 PATCHLEVEL=0 JDK Version 1.6 java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6) (suse-33.2-x86_64) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) JDK Version 1.7 java version "1.7.0_0-icedtea" OpenJDK Runtime Environment (IcedTea7 1.11) (build 1.7.0_0-icedtea-b66) OpenJDK 64-Bit Server VM (build 16.0-b06, mixed mode) X server version Vendor: The Cygwin/X Project Release: 6.8.2.0-0 JAVA CODE: import java.awt.Container; import java.awt.Dimension; import javax.swing.JButton; import javax.swing.JFrame; public class TestSwing{ public static void main(String[] args) { JFrame f = new JFrame("This is a test"); System.out.println("THis is a test"); Container content = f.getContentPane(); content.add(new JButton("Button 1")); f.setSize(new Dimension(500,500)); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Jan 5 08:48:00 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 05 Jan 2010 16:48:00 +0000 Subject: [Bug 423] Iced tea openjdk1.6 and jdk1.7 crashes in remote x server (cygwin) environment Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=423 ------- Comment #1 from aph at redhat.com 2010-01-05 16:48 ------- Have you got any kind of backtrace for this, or a crash dump? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From gnu_andrew at member.fsf.org Tue Jan 5 10:02:12 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 5 Jan 2010 18:02:12 +0000 Subject: /hg/icedtea6: 2010-01-05 Gary Benson In-Reply-To: References: Message-ID: <17c6771e1001051002j18231f5bi57052cf77c0af5a1@mail.gmail.com> 2010/1/5 : > changeset c99b9280fdcf in /hg/icedtea6 > details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c99b9280fdcf > author: Gary Benson > date: Tue Jan 05 10:09:26 2010 +0000 > > ? ? ? ?2010-01-05 Gary Benson > > ? ? ? ? * patches/zero/6909153.patch: New file. > ? ? ? ? ? ? ? ?* patches/zero/6913869.patch: Likewise. > ? ? ? ? ? ? ? ?* Makefile.am (ICEDTEA_PATCHES): Added the above. > > Err... these are probably great and all, but I don't know what they are without looking up the Sun bug reports. This ChangeLog is pretty unhelpful in working out what these do and I didn't see a mail to the list. or anything on the wiki. It's just I'm well aware of what a pain this can be when patches later break or need to be dropped. Cheers, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From Thomas.Rodriguez at Sun.COM Tue Jan 5 10:13:17 2010 From: Thomas.Rodriguez at Sun.COM (Tom Rodriguez) Date: Tue, 05 Jan 2010 10:13:17 -0800 Subject: State of openjdk on hppa In-Reply-To: <4B1D338C.703@ubuntu.com> References: <4B1D338C.703@ubuntu.com> Message-ID: <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> > openjdk builds on hppa, but doesn't run (yet). Andrew Haley once debugged it and found out at least one things which would need to be fixed: the assumption in the C++ interpreter that the stack always grows downwards, and not upwards as on hppa. > > please could one of the hotspot developers sched some light on this, how easy this might to be fix, and if there are other assumptions? Could you give more detail on where exactly the direction of growth is being assumed? I know there's an accessor in frame that's supposed to describe the direction of growth of the expression stack which is used a few places in the code: // expression stack (may go up or down, direction == 1 or -1) public: intptr_t* interpreter_frame_expression_stack() const; static jint interpreter_frame_expression_stack_direction(); I would think this has to be set correctly for HPPA to work. Is it? It's possible that the C++ interpreter would also need to consult this when pushing values for it to work correctly. tom > > thanks, Matthias From aph at redhat.com Tue Jan 5 10:17:01 2010 From: aph at redhat.com (Andrew Haley) Date: Tue, 05 Jan 2010 18:17:01 +0000 Subject: State of openjdk on hppa In-Reply-To: <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> Message-ID: <4B43821D.3000406@redhat.com> On 01/05/2010 06:13 PM, Tom Rodriguez wrote: >> openjdk builds on hppa, but doesn't run (yet). Andrew Haley once >> debugged it and found out at least one things which would need to >> be fixed: the assumption in the C++ interpreter that the stack >> always grows downwards, and not upwards as on hppa. >> >> please could one of the hotspot developers sched some light on >> this, how easy this might to be fix, and if there are other >> assumptions? > > Could you give more detail on where exactly the direction of growth > is being assumed? I know there's an accessor in frame that's > supposed to describe the direction of growth of the expression stack > which is used a few places in the code: > > // expression stack (may go up or down, direction == 1 or -1) > public: > intptr_t* interpreter_frame_expression_stack() const; > static jint interpreter_frame_expression_stack_direction(); > > I would think this has to be set correctly for HPPA to work. Is it? > It's possible that the C++ interpreter would also need to consult > this when pushing values for it to work correctly. I didn't get very far. The first crash happens when the runtime write-protects some of the stack pages, which immediately segfaults. Andrew. From bugzilla-daemon at icedtea.classpath.org Tue Jan 5 10:45:04 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 05 Jan 2010 18:45:04 +0000 Subject: [Bug 424] New: Error: guarantee(get_thread_slow() == thread, "must be the same thread, slowly") Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=424 Summary: Error: guarantee(get_thread_slow() == thread,"must be the same thread, slowly") Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P3 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: wizardofki at gmail.com Hi, I just installed Gentoo KDE4, and I had 15 copies of this error message in my home folder. I'm not sure if it's related to Anaconda complaining or wrong permissions. Other than that, I'm not sure how to reproduce this bug. file:///home/jason/hs_err_pid12549.log: # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (threadLocalStorage.cpp:41), pid=12549, tid=2660719504 # Error: guarantee(get_thread_slow() == thread,"must be the same thread, slowly") # # JRE version: 6.0-b16 # Java VM: OpenJDK Client VM (14.0-b16 mixed mode linux-x86 ) # Distribution: Custom build (Wed Nov 11 23:17:16 CET 2009) # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # --------------- T H R E A D --------------- Current thread is native thread Stack: [0x9e925000,0x9e976000], sp=0x9e974e60, free space=319k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x391b7d] V [libjvm.so+0x391ef7] V [libjvm.so+0x15554b] V [libjvm.so+0x36b2c6] V [libjvm.so+0x2c8077] C [libpthread.so.0+0x613f] --------------- P R O C E S S --------------- VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) [0x08131458] Threads_lock - owner thread: 0x08132000 Heap def new generation total 18176K, used 9898K [0x9ef60000, 0xa0310000, 0xa0310000) eden space 16192K, 61% used [0x9ef60000, 0x9f90a8e0, 0x9ff30000) from space 1984K, 0% used [0x9ff30000, 0x9ff30000, 0xa0120000) to space 1984K, 0% used [0xa0120000, 0xa0120000, 0xa0310000) tenured generation total 241984K, used 0K [0xa0310000, 0xaef60000, 0xaef60000) the space 241984K, 0% used [0xa0310000, 0xa0310000, 0xa0310200, 0xaef60000) compacting perm gen total 12288K, used 4004K [0xaef60000, 0xafb60000, 0xb2f60000) the space 12288K, 32% used [0xaef60000, 0xaf349130, 0xaf349200, 0xafb60000) No shared spaces configured. Dynamic libraries: 08048000-0804d000 r-xp 00000000 03:41 540142 /usr/bin/nepomukservicestub 0804d000-0804e000 r--p 00004000 03:41 540142 /usr/bin/nepomukservicestub 0804e000-0804f000 rw-p 00005000 03:41 540142 /usr/bin/nepomukservicestub 0804f000-0850f000 rw-p 00000000 00:00 0 [heap] 9e925000-9e928000 rwxp 00000000 00:00 0 9e928000-9e976000 rwxp 00000000 00:00 0 9e976000-9e998000 r--s 00174000 03:41 507841 /usr/share/soprano/sesame2/openrdf-sesame-2.2.4-onejar.jar 9e998000-9e999000 ---p 00000000 00:00 0 9e999000-9ea19000 rwxp 00000000 00:00 0 9ea19000-9ea1c000 ---p 00000000 00:00 0 9ea1c000-9ea6a000 rwxp 00000000 00:00 0 9ea6a000-9ea6d000 ---p 00000000 00:00 0 9ea6d000-9eaeb000 rwxp 00000000 00:00 0 9eaeb000-9eaee000 ---p 00000000 00:00 0 9eaee000-9eb3c000 rwxp 00000000 00:00 0 9eb3c000-9eb3f000 ---p 00000000 00:00 0 9eb3f000-9eb8d000 rwxp 00000000 00:00 0 9eb8d000-9eb90000 ---p 00000000 00:00 0 9eb90000-9ebde000 rwxp 00000000 00:00 0 9ebde000-9ebdf000 ---p 00000000 00:00 0 9ebdf000-9ec5f000 rwxp 00000000 00:00 0 9ec5f000-9ec92000 rw-p 00000000 00:00 0 9ec92000-9ee27000 r--s 038ce000 03:41 490922 /opt/icedtea6-bin-1.6.2/jre/lib/rt.jar 9ee27000-9ee2e000 rwxp 00000000 00:00 0 9ee2e000-9ee48000 rwxp 00000000 00:00 0 9ee48000-9ef45000 rwxp 00000000 00:00 0 9ef45000-9ef5f000 rwxp 00000000 00:00 0 9ef5f000-afb60000 rwxp 00000000 00:00 0 afb60000-b2f60000 rwxp 00000000 00:00 0 b2f6a000-b2f6e000 r--s 00079000 03:41 490827 /opt/icedtea6-bin-1.6.2/jre/lib/jsse.jar b2f6e000-b2f71000 rwxp 00000000 00:00 0 b2f71000-b2fee000 rwxp 00000000 00:00 0 b2fee000-b309e000 rwxp 00000000 00:00 0 b309e000-b4fee000 rwxp 00000000 00:00 0 b4fee000-b4ff5000 r-xp 00000000 03:41 490879 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libzip.so b4ff5000-b4ff6000 r--p 00006000 03:41 490879 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libzip.so b4ff6000-b4ff7000 rw-p 00007000 03:41 490879 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libzip.so b4ff7000-b4fff000 rw-s 00000000 03:41 1071106 /tmp/hsperfdata_jason/12549 b4fff000-b5023000 r-xp 00000000 03:41 490906 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libjava.so b5023000-b5024000 r--p 00023000 03:41 490906 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libjava.so b5024000-b5026000 rw-p 00024000 03:41 490906 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libjava.so b5026000-b541a000 r-xp 00000000 03:41 490882 /opt/icedtea6-bin-1.6.2/jre/lib/i386/client/libjvm.so b541a000-b5430000 r--p 003f4000 03:41 490882 /opt/icedtea6-bin-1.6.2/jre/lib/i386/client/libjvm.so b5430000-b543c000 rw-p 0040a000 03:41 490882 /opt/icedtea6-bin-1.6.2/jre/lib/i386/client/libjvm.so b543c000-b585b000 rw-p 00000000 00:00 0 b585b000-b587c000 r-xp 00000000 03:41 507875 /usr/lib/soprano/libsoprano_sesame2backend.so b587c000-b587d000 r--p 00020000 03:41 507875 /usr/lib/soprano/libsoprano_sesame2backend.so b587d000-b587e000 rw-p 00021000 03:41 507875 /usr/lib/soprano/libsoprano_sesame2backend.so b587e000-b58b0000 r-xp 00000000 03:41 412372 /usr/lib/libxslt.so.1.1.26 b58b0000-b58b1000 r--p 00031000 03:41 412372 /usr/lib/libxslt.so.1.1.26 b58b1000-b58b2000 rw-p 00032000 03:41 412372 /usr/lib/libxslt.so.1.1.26 b58b3000-b58ba000 r-xp 00000000 03:41 490901 /opt/icedtea6-bin-1.6.2/jre/lib/i386/native_threads/libhpi.so b58ba000-b58bb000 r--p 00006000 03:41 490901 /opt/icedtea6-bin-1.6.2/jre/lib/i386/native_threads/libhpi.so b58bb000-b58bc000 rw-p 00007000 03:41 490901 /opt/icedtea6-bin-1.6.2/jre/lib/i386/native_threads/libhpi.so b58bc000-b58c8000 r-xp 00000000 03:41 490904 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libverify.so b58c8000-b58c9000 r--p 0000c000 03:41 490904 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libverify.so b58c9000-b58ca000 rw-p 0000d000 03:41 490904 /opt/icedtea6-bin-1.6.2/jre/lib/i386/libverify.so b58ca000-b591d000 r-xp 00000000 03:41 458552 /usr/lib/libraptor.so.1.2.0 b591d000-b591f000 r--p 00053000 03:41 458552 /usr/lib/libraptor.so.1.2.0 b591f000-b5920000 rw-p 00055000 03:41 458552 /usr/lib/libraptor.so.1.2.0 b5920000-b5927000 r-xp 00000000 03:41 507446 /usr/lib/soprano/libsoprano_raptorparser.so b5927000-b5928000 r--p 00006000 03:41 507446 /usr/lib/soprano/libsoprano_raptorparser.so b5928000-b5929000 rw-p 00007000 03:41 507446 /usr/lib/soprano/libsoprano_raptorparser.so b5929000-b5932000 r-xp 00000000 03:41 359839 /lib/libnss_files-2.9.so b5932000-b5933000 r--p 00008000 03:41 359839 /lib/libnss_files-2.9.so b5933000-b5934000 rw-p 00009000 03:41 359839 /lib/libnss_files-2.9.so b5934000-b593d000 r-xp 00000000 03:41 359991 /lib/libnss_nis-2.9.so b593d000-b593e000 r--p 00008000 03:41 359991 /lib/libnss_nis-2.9.so b593e000-b593f000 rw-p 00009000 03:41 359991 /lib/libnss_nis-2.9.so b593f000-b5945000 r-xp 00000000 03:41 359974 /lib/libnss_compat-2.9.so b5945000-b5946000 r--p 00006000 03:41 359974 /lib/libnss_compat-2.9.so b5946000-b5947000 rw-p 00007000 03:41 359974 /lib/libnss_compat-2.9.so b5947000-b5948000 r--s 00001000 03:41 507846 /usr/share/soprano/sesame2/slf4j-simple-1.5.5.jar b5948000-b594a000 r--s 00004000 03:41 507842 /usr/share/soprano/sesame2/slf4j-api-1.5.5.jar b594a000-b594b000 rw-p 00000000 00:00 0 b594b000-b595d000 r-xp 00000000 03:41 540767 /usr/lib/kde4/nepomukontologyloader.so b595d000-b595e000 r--p 00011000 03:41 540767 /usr/lib/kde4/nepomukontologyloader.so b595e000-b595f000 rw-p 00012000 03:41 540767 /usr/lib/kde4/nepomukontologyloader.so b595f000-b5aab000 r--s 00000000 03:41 273826 /var/tmp/kdecache-jason/ksycoca4 b5aab000-b5bdb000 r-xp 00000000 03:41 1262151 /usr/lib/libxml2.so.2.7.3 b5bdb000-b5bdf000 r--p 00130000 03:41 1262151 /usr/lib/libxml2.so.2.7.3 b5bdf000-b5be0000 rw-p 00134000 03:41 1262151 /usr/lib/libxml2.so.2.7.3 b5be0000-b5be1000 rw-p 00000000 00:00 0 b5be1000-b5be5000 r-xp 00000000 03:41 359976 /lib/libattr.so.1.1.0 b5be5000-b5be6000 r--p 00003000 03:41 359976 /lib/libattr.so.1.1.0 b5be6000-b5be7000 rw-p 00004000 03:41 359976 /lib/libattr.so.1.1.0 b5be7000-b5bed000 r-xp 00000000 03:41 359834 /lib/libacl.so.1.1.0 b5bed000-b5bee000 r--p 00006000 03:41 359834 /lib/libacl.so.1.1.0 b5bee000-b5bef000 rw-p 00007000 03:41 359834 /lib/libacl.so.1.1.0 b5bef000-b5c54000 r-xp 00000000 03:41 339053 /usr/lib/libsolid.so.4.3.0 b5c54000-b5c5b000 r--p 00064000 03:41 339053 /usr/lib/libsolid.so.4.3.0 b5c5b000-b5c5c000 rw-p 0006b000 03:41 339053 /usr/lib/libsolid.so.4.3.0 b5c5c000-b5c93000 r-xp 00000000 03:41 412557 /usr/lib/libstreams.so.0.7.0 b5c93000-b5c94000 r--p 00037000 03:41 412557 /usr/lib/libstreams.so.0.7.0 b5c94000-b5c95000 rw-p 00038000 03:41 412557 /usr/lib/libstreams.so.0.7.0 b5c95000-b5cfe000 r-xp 00000000 03:41 412576 /usr/lib/libstreamanalyzer.so.0.7.0 b5cfe000-b5d00000 r--p 00068000 03:41 412576 /usr/lib/libstreamanalyzer.so.0.7.0 b5d00000-b5d01000 rw-p 0006a000 03:41 412576 /usr/lib/libstreamanalyzer.so.0.7.0 b5d01000-b5f5b000 r-xp 00000000 03:41 339102 /usr/lib/libkio.so.5.3.0 b5f5b000-b5f63000 r--p 0025a000 03:41 339102 /usr/lib/libkio.so.5.3.0 b5f63000-b5f67000 rw-p 00262000 03:41 339102 /usr/lib/libkio.so.5.3.0 b5f67000-b5f68000 rw-p 00000000 00:00 0 b5f68000-b5f98000 r-xp 00000000 03:41 615561 /usr/lib/kde4/plugins/styles/oxygen.so b5f98000-b5f99000 r--p 0002f000 03:41 615561 /usr/lib/kde4/plugins/styles/oxygen.so b5f99000-b5f9a000 rw-p 00030000 03:41 615561 /usr/lib/kde4/plugins/styles/oxygen.so b5f9a000-b5fa2000 r-xp 00000000 03:41 354875 /usr/lib/libXi.so.6.0.0 b5fa2000-b5fa3000 r--p 00007000 03:41 354875 /usr/lib/libXi.so.6.0.0 b5fa3000-b5fa4000 rw-p 00008000 03:41 354875 /usr/lib/libXi.so.6.0.0 b5fa4000-b5fa5000 r--p 00000000 00:00 0 b5fa5000-b5fb8000 r-xp 00000000 03:41 359889 /lib/libnsl-2.9.so b5fb8000-b5fb9000 r--p 00012000 03:41 359889 /lib/libnsl-2.9.so b5fb9000-b5fba000 rw-p 00013000 03:41 359889 /lib/libnsl-2.9.so b5fba000-b5fbf000 rw-p 00000000 00:00 0 b5fbf000-b5fe3000 r-xp 00000000 03:41 1262120 /usr/lib/libexpat.so.1.5.2 b5fe3000-b5fe5000 r--p 00023000 03:41 1262120 /usr/lib/libexpat.so.1.5.2 b5fe5000-b5fe6000 rw-p 00025000 03:41 1262120 /usr/lib/libexpat.so.1.5.2 b5fe6000-b5ffe000 r-xp 00000000 03:41 330300 /usr/lib/libxcb.so.1.1.0 b5ffe000-b5fff000 r--p 00017000 03:41 330300 /usr/lib/libxcb.so.1.1.0 b5fff000-b6000000 rw-p 00018000 03:41 330300 /usr/lib/libxcb.so.1.1.0 b6000000-b6003000 r-xp 00000000 03:41 359769 /lib/libuuid.so.1.3.0 b6003000-b6004000 r--p 00002000 03:41 359769 /lib/libuuid.so.1.3.0 b6004000-b6005000 rw-p 00003000 03:41 359769 /lib/libuuid.so.1.3.0 b6005000-b6006000 rw-p 00000000 00:00 0 b6006000-b6058000 r-xp 00000000 03:41 507869 /usr/lib/libsopranoclient.so.1.1.0 b6058000-b6059000 r--p 00052000 03:41 507869 /usr/lib/libsopranoclient.so.1.1.0 b6059000-b605a000 rw-p 00053000 03:41 507869 /usr/lib/libsopranoclient.so.1.1.0 b605a000-b605e000 r-xp 00000000 03:41 322282 /usr/lib/libXfixes.so.3.1.0 b605e000-b605f000 r--p 00003000 03:41 322282 /usr/lib/libXfixes.so.3.1.0 b605f000-b6060000 rw-p 00004000 03:41 322282 /usr/lib/libXfixes.so.3.1.0 b6060000-b6068000 r-xp 00000000 03:41 442228 /usr/lib/libXcursor.so.1.0.2 b6068000-b6069000 r--p 00007000 03:41 442228 /usr/lib/libXcursor.so.1.0.2 b6069000-b606a000 rw-p 00008000 03:41 442228 /usr/lib/libXcursor.so.1.0.2 b606a000-b606e000 r-xp 00000000 03:41 452368 /usr/lib/libXtst.so.6.1.0 b606e000-b606f000 r--p 00003000 03:41 452368 /usr/lib/libXtst.so.6.1.0 b606f000-b6070000 rw-p 00004000 03:41 452368 /usr/lib/libXtst.so.6.1.0 b6070000-b6071000 rw-p 00000000 00:00 0 b6071000-b6080000 r-xp 00000000 03:41 404046 /usr/lib/libXpm.so.4.11.0 b6080000-b6081000 r--p 0000e000 03:41 404046 /usr/lib/libXpm.so.4.11.0 b6081000-b6082000 rw-p 0000f000 03:41 404046 /usr/lib/libXpm.so.4.11.0 b6082000-b6086000 r-xp 00000000 03:41 322283 /usr/lib/libXdmcp.so.6.0.0 b6086000-b6087000 r--p 00003000 03:41 322283 /usr/lib/libXdmcp.so.6.0.0 b6087000-b6088000 rw-p 00004000 03:41 322283 /usr/lib/libXdmcp.so.6.0.0 b6088000-b608a000 r-xp 00000000 03:41 322198 /usr/lib/libXau.so.6.0.0 b608a000-b608b000 r--p 00001000 03:41 322198 /usr/lib/libXau.so.6.0.0 b608b000-b608c000 rw-p 00002000 03:41 322198 /usr/lib/libXau.so.6.0.0 b608c000-b609e000 r-xp 00000000 03:41 476087 /usr/lib/libXft.so.2.1.13 b609e000-b609f000 r--p 00011000 03:41 476087 /usr/lib/libXft.so.2.1.13 b609f000-b60a0000 rw-p 00012000 03:41 476087 /usr/lib/libXft.so.2.1.13 b60a0000-b60b0000 r-xp 00000000 03:41 359782 /lib/libresolv-2.9.so b60b0000-b60b1000 r--p 00010000 03:41 359782 /lib/libresolv-2.9.so b60b1000-b60b2000 rw-p 00011000 03:41 359782 /lib/libresolv-2.9.so b60b2000-b60b5000 rw-p 00000000 00:00 0 b60b5000-b60c4000 r-xp 00000000 03:41 359981 /lib/libbz2.so.1.0.5 b60c4000-b60c5000 r--p 0000e000 03:41 359981 /lib/libbz2.so.1.0.5 b60c5000-b60c6000 rw-p 0000f000 03:41 359981 /lib/libbz2.so.1.0.5 b60c6000-b6195000 r-xp 00000000 03:41 491896 /usr/lib/qt4/libQtNetwork.so.4.5.3 b6195000-b6198000 r--p 000ce000 03:41 491896 /usr/lib/qt4/libQtNetwork.so.4.5.3 b6198000-b6199000 rw-p 000d1000 03:41 491896 /usr/lib/qt4/libQtNetwork.so.4.5.3 b6199000-b61c8000 r-xp 00000000 03:41 491895 /usr/lib/qt4/libQtXml.so.4.5.3 b61c8000-b61c9000 r--p 0002f000 03:41 491895 /usr/lib/qt4/libQtXml.so.4.5.3 b61c9000-b61ca000 rw-p 00030000 03:41 491895 /usr/lib/qt4/libQtXml.so.4.5.3 b61ca000-b61fd000 r-xp 00000000 03:41 420038 /usr/lib/libdbus-1.so.3.4.0 b61fd000-b61fe000 r--p 00032000 03:41 420038 /usr/lib/libdbus-1.so.3.4.0 b61fe000-b61ff000 rw-p 00033000 03:41 420038 /usr/lib/libdbus-1.so.3.4.0 b61ff000-b630f000 r-xp 00000000 03:41 419905 /usr/lib/libX11.so.6.2.0 b630f000-b6310000 r--p 00110000 03:41 419905 /usr/lib/libX11.so.6.2.0 b6310000-b6313000 rw-p 00111000 03:41 419905 /usr/lib/libX11.so.6.2.0 b6313000-b6314000 rw-p 00000000 00:00 0 b6314000-b6321000 r-xp 00000000 03:41 338589 /usr/lib/libXext.so.6.4.0 b6321000-b6322000 r--p 0000c000 03:41 338589 /usr/lib/libXext.so.6.4.0 b6322000-b6323000 rw-p 0000d000 03:41 338589 /usr/lib/libXext.so.6.4.0 b6323000-b634c000 r-xp 00000000 03:41 483800 /usr/lib/libfontconfig.so.1.3.0 b634c000-b634d000 r--p 00028000 03:41 483800 /usr/lib/libfontconfig.so.1.3.0 b634d000-b634e000 rw-p 00029000 03:41 483800 /usr/lib/libfontconfig.so.1.3.0 b634e000-b6354000 r-xp 00000000 03:41 338684 /usr/lib/libXrandr.so.2.2.0 b6354000-b6355000 r--p 00005000 03:41 338684 /usr/lib/libXrandr.so.2.2.0 b6355000-b6356000 rw-p 00006000 03:41 338684 /usr/lib/libXrandr.so.2.2.0 b6356000-b635d000 r-xp 00000000 03:41 338632 /usr/lib/libXrender.so.1.3.0 b635d000-b635e000 r--p 00007000 03:41 338632 /usr/lib/libXrender.so.1.3.0 b635e000-b635f000 rw-p 00008000 03:41 338632 /usr/lib/libXrender.so.1.3.0 b635f000-b6373000 r-xp 00000000 03:41 322226 /usr/lib/libICE.so.6.3.0 b6373000-b6374000 r--p 00014000 03:41 322226 /usr/lib/libICE.so.6.3.0 b6374000-b6375000 rw-p 00015000 03:41 322226 /usr/lib/libICE.so.6.3.0 b6375000-b6377000 rw-p 00000000 00:00 0 b6377000-b637e000 r-xp 00000000 03:41 322246 /usr/lib/libSM.so.6.0.1 b637e000-b637f000 r--p 00006000 03:41 322246 /usr/lib/libSM.so.6.0.1 b637f000-b6380000 rw-p 00007000 03:41 322246 /usr/lib/libSM.so.6.0.1 b6380000-b6381000 rw-p 00000000 00:00 0 b6381000-b63b8000 r-xp 00000000 03:41 443076 /usr/lib/libgobject-2.0.so.0.2000.5 b63b8000-b63b9000 r--p 00037000 03:41 443076 /usr/lib/libgobject-2.0.so.0.2000.5 b63b9000-b63ba000 rw-p 00038000 03:41 443076 /usr/lib/libgobject-2.0.so.0.2000.5 b63ba000-b6436000 r-xp 00000000 03:41 450024 /usr/lib/libfreetype.so.6.3.20 b6436000-b643a000 r--p 0007b000 03:41 450024 /usr/lib/libfreetype.so.6.3.20 b643a000-b643b000 rw-p 0007f000 03:41 450024 /usr/lib/libfreetype.so.6.3.20 b643b000-b645c000 r-xp 00000000 03:41 322238 /usr/lib/libpng12.so.0.40.0 b645c000-b645d000 r--p 00020000 03:41 322238 /usr/lib/libpng12.so.0.40.0 b645d000-b645e000 rw-p 00021000 03:41 322238 /usr/lib/libpng12.so.0.40.0 b645e000-b6460000 r-xp 00000000 03:41 359904 /lib/libdl-2.9.so b6460000-b6461000 r--p 00001000 03:41 359904 /lib/libdl-2.9.so b6461000-b6462000 rw-p 00002000 03:41 359904 /lib/libdl-2.9.so b6462000-b652f000 r-xp 00000000 03:41 443257 /usr/lib/libglib-2.0.so.0.2000.5 b652f000-b6530000 r--p 000cc000 03:41 443257 /usr/lib/libglib-2.0.so.0.2000.5 b6530000-b6531000 rw-p 000cd000 03:41 443257 /usr/lib/libglib-2.0.so.0.2000.5 b6531000-b6532000 rw-p 00000000 00:00 0 b6532000-b6539000 r-xp 00000000 03:41 359831 /lib/librt-2.9.so b6539000-b653a000 r--p 00006000 03:41 359831 /lib/librt-2.9.so b653a000-b653b000 rw-p 00007000 03:41 359831 /lib/librt-2.9.so b653b000-b653e000 r-xp 00000000 03:41 443698 /usr/lib/libgthread-2.0.so.0.2000.5 b653e000-b653f000 r--p 00003000 03:41 443698 /usr/lib/libgthread-2.0.so.0.2000.5 b653f000-b6540000 rw-p 00004000 03:41 443698 /usr/lib/libgthread-2.0.so.0.2000.5 b6540000-b6552000 r-xp 00000000 03:41 359773 /lib/libz.so.1.2.3 b6552000-b6553000 r--p 00011000 03:41 359773 /lib/libz.so.1.2.3 b6553000-b6554000 rw-p 00012000 03:41 359773 /lib/libz.so.1.2.3 b6554000-b6690000 r-xp 00000000 03:41 359905 /lib/libc-2.9.so b6690000-b6692000 r--p 0013c000 03:41 359905 /lib/libc-2.9.so b6692000-b6693000 rw-p 0013e000 03:41 359905 /lib/libc-2.9.so b6693000-b6696000 rw-p 00000000 00:00 0 b6696000-b66a1000 r-xp 00000000 03:41 322856 /usr/lib/gcc/i686-pc-linux-gnu/4.3.4/libgcc_s.so.1 b66a1000-b66a2000 r--p 0000a000 03:41 322856 /usr/lib/gcc/i686-pc-linux-gnu/4.3.4/libgcc_s.so.1 b66a2000-b66a3000 rw-p 0000b000 03:41 322856 /usr/lib/gcc/i686-pc-linux-gnu/4.3.4/libgcc_s.so.1 b66a3000-b66c7000 r-xp 00000000 03:41 359765 /lib/libm-2.9.so b66c7000-b66c8000 r--p 00023000 03:41 359765 /lib/libm-2.9.so b66c8000-b66c9000 rw-p 00024000 03:41 359765 /lib/libm-2.9.so b66c9000-b66ca000 rw-p 00000000 00:00 0 b66ca000-b67a3000 r-xp 00000000 03:41 322846 /usr/lib/gcc/i686-pc-linux-gnu/4.3.4/libstdc++.so.6.0.10 b67a3000-b67a7000 r--p 000d8000 03:41 322846 /usr/lib/gcc/i686-pc-linux-gnu/4.3.4/libstdc++.so.6.0.10 b67a7000-b67a8000 rw-p 000dc000 03:41 322846 /usr/lib/gcc/i686-pc-linux-gnu/4.3.4/libstdc++.so.6.0.10 b67a8000-b67ae000 rw-p 00000000 00:00 0 b67ae000-b67ea000 r-xp 00000000 03:41 330823 /usr/lib/qt4/libQtSvg.so.4.5.3 b67ea000-b67eb000 r--p 0003c000 03:41 330823 /usr/lib/qt4/libQtSvg.so.4.5.3 b67eb000-b67ec000 rw-p 0003d000 03:41 330823 /usr/lib/qt4/libQtSvg.so.4.5.3 b67ec000-b68d6000 r-xp 00000000 03:41 507881 /usr/lib/libsoprano.so.4.2.0 b68d6000-b68d9000 r--p 000e9000 03:41 507881 /usr/lib/libsoprano.so.4.2.0 b68d9000-b68da000 rw-p 000ec000 03:41 507881 /usr/lib/libsoprano.so.4.2.0 b68da000-b68db000 rw-p 00000000 00:00 0 b68db000-b693b000 r-xp 00000000 03:41 339242 /usr/lib/libnepomuk.so.4.3.0 b693b000-b693c000 r--p 00060000 03:41 339242 /usr/lib/libnepomuk.so.4.3.0 b693c000-b693d000 rw-p 00061000 03:41 339242 /usr/lib/libnepomuk.so.4.3.0 b693d000-b6c86000 r-xp 00000000 03:41 339105 /usr/lib/libkdeui.so.5.3.0 b6c86000-b6c99000 r--p 00348000 03:41 339105 /usr/lib/libkdeui.so.5.3.0 b6c99000-b6c9f000 rw-p 0035b000 03:41 339105 /usr/lib/libkdeui.so.5.3.0 b6c9f000-b6ca1000 rw-p 00000000 00:00 0 b6ca1000-b6ebb000 r-xp 00000000 03:41 339060 /usr/lib/libkdecore.so.5.3.0 b6ebb000-b6ec2000 r--p 0021a000 03:41 339060 /usr/lib/libkdecore.so.5.3.0 b6ec2000-b6ec6000 rw-p 00221000 03:41 339060 /usr/lib/libkdecore.so.5.3.0 b6ec6000-b6f13000 r-xp 00000000 03:41 484632 /usr/lib/qt4/libQtDBus.so.4.5.3 b6f13000-b6f14000 r--p 0004d000 03:41 484632 /usr/lib/qt4/libQtDBus.so.4.5.3 b6f14000-b6f15000 rw-p 0004e000 03:41 484632 /usr/lib/qt4/libQtDBus.so.4.5.3 b6f15000-b7684000 r-xp 00000000 03:41 363762 /usr/lib/qt4/libQtGui.so.4.5.3 b7684000-b76a2000 r--p 0076f000 03:41 363762 /usr/lib/qt4/libQtGui.so.4.5.3 b76a2000-b76a5000 rw-p 0078d000 03:41 363762 /usr/lib/qt4/libQtGui.so.4.5.3 b76a5000-b76a7000 rw-p 00000000 00:00 0 b76a7000-b76bb000 r-xp 00000000 03:41 359761 /lib/libpthread-2.9.so b76bb000-b76bc000 r--p 00013000 03:41 359761 /lib/libpthread-2.9.so b76bc000-b76bd000 rw-p 00014000 03:41 359761 /lib/libpthread-2.9.so b76bd000-b76bf000 rw-p 00000000 00:00 0 b76bf000-b76c4000 r-xp 00000000 03:41 412023 /usr/lib/libfam.so.0.0.0 b76c4000-b76c5000 r--p 00004000 03:41 412023 /usr/lib/libfam.so.0.0.0 b76c5000-b76c6000 rw-p 00005000 03:41 412023 /usr/lib/libfam.so.0.0.0 b76c6000-b76cc000 r--s 00000000 03:41 483834 /var/cache/fontconfig/87f5e051180a7a75f16eb6fe7dbd3749-x86.cache-2 b76cc000-b76ce000 r-xp 00000000 03:41 33538 /usr/lib/gconv/UTF-16.so b76ce000-b76cf000 r--p 00001000 03:41 33538 /usr/lib/gconv/UTF-16.so b76cf000-b76d0000 rw-p 00002000 03:41 33538 /usr/lib/gconv/UTF-16.so b76d0000-b76d7000 r--s 00000000 03:41 33635 /usr/lib/gconv/gconv-modules.cache b76d7000-b7893000 r-xp 00000000 03:41 491908 /usr/lib/qt4/libQtCore.so.4.5.3 b7893000-b7899000 r--p 001bb000 03:41 491908 /usr/lib/qt4/libQtCore.so.4.5.3 b7899000-b789a000 rw-p 001c1000 03:41 491908 /usr/lib/qt4/libQtCore.so.4.5.3 b789a000-b789c000 rw-p 00000000 00:00 0 b789c000-b78b8000 r-xp 00000000 03:41 359908 /lib/ld-2.9.so b78b8000-b78b9000 r--p 0001b000 03:41 359908 /lib/ld-2.9.so b78b9000-b78ba000 rw-p 0001c000 03:41 359908 /lib/ld-2.9.so bfb98000-bfb9b000 ---p 00000000 00:00 0 bfb9b000-bfbe8000 rwxp 00000000 00:00 0 [stack] ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso] VM Arguments: jvm_args: -verbose:jni,gc,class -Xms256m -Xmx256m java_command: Launcher Type: generic Environment Variables: JAVA_HOME=/etc/java-config-2/current-system-vm PATH=/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.3.4 SHELL=/bin/bash DISPLAY=:0 Signal Handlers: SIGSEGV: [libjvm.so+0x392830], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x392830], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x2c4dc0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x2c4dc0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x2c4dc0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x2c4dc0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x2c4530], sa_mask[0]=0x00000000, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x2c6920], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: [libjvm.so+0x2c6920], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGTERM: [libjvm.so+0x2c6920], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x2c6920], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:Gentoo Base System release 1.12.13 uname:Linux 2.6.31-gentoo-r6 #1 SMP Sun Jan 3 00:38:47 MST 2010 i686 libc:glibc 2.9 NPTL 2.9 rlimit: STACK 8192k, CORE 0k, NPROC 16383, NOFILE 1024, AS infinity load average:2.38 0.75 0.71 CPU:total 1 (1 cores per cpu, 1 threads per core) family 15 model 4 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3 Memory: 4k page, physical 1034176k(20296k free), swap 3445932k(3445932k free) vm_info: OpenJDK Client VM (14.0-b16) for linux-x86 JRE (1.6.0_0-b16), built on Nov 11 2009 23:41:28 by "root" with gcc 4.3.4 time: Mon Jan 4 22:02:22 2010 elapsed time: 8 seconds Thanks, Jason Ash -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Jan 5 10:51:22 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 05 Jan 2010 18:51:22 +0000 Subject: [Bug 423] Iced tea openjdk1.6 and jdk1.7 crashes in remote x server (cygwin) environment Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=423 ------- Comment #2 from balajiraman at ge.com 2010-01-05 18:51 ------- I just wanted to add one more thing based on my current investigation. The crash happens only with remote X-server + NX. It does not happen when running cygwin X server remotely. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From gbenson at redhat.com Wed Jan 6 02:06:39 2010 From: gbenson at redhat.com (Gary Benson) Date: Wed, 6 Jan 2010 10:06:39 +0000 Subject: /hg/icedtea6: 2010-01-05 Gary Benson In-Reply-To: <17c6771e1001051002j18231f5bi57052cf77c0af5a1@mail.gmail.com> References: <17c6771e1001051002j18231f5bi57052cf77c0af5a1@mail.gmail.com> Message-ID: <20100106100639.GB3312@redhat.com> Andrew John Hughes wrote: > 2010/1/5 : > > changeset c99b9280fdcf in /hg/icedtea6 > > details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c99b9280fdcf > > author: Gary Benson > > date: Tue Jan 05 10:09:26 2010 +0000 > > > > 2010-01-05 Gary Benson > > > > * patches/zero/6909153.patch: New file. > > * patches/zero/6913869.patch: Likewise. > > * Makefile.am (ICEDTEA_PATCHES): Added the above. > > Err... these are probably great and all, but I don't know what > they are without looking up the Sun bug reports. This ChangeLog > is pretty unhelpful in working out what these do and I didn't > see a mail to the list. or anything on the wiki. It's just I'm > well aware of what a pain this can be when patches later break > or need to be dropped. The point of that directory is that every patch in there is in upstream OpenJDK, so, no patch in there should ever be ported to icedtea7 (because that already has them, or will do very shortly) and if one fails to apply it's almost certainly because it has filtered into the HotSpot tarball we're using. Cheers, Gary -- http://gbenson.net/ From bugzilla-daemon at icedtea.classpath.org Wed Jan 6 02:28:49 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 06 Jan 2010 10:28:49 +0000 Subject: [Bug 425] New: JAXP fails to build on ARM due to compliance level Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=425 Summary: JAXP fails to build on ARM due to compliance level Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: steffen at s-bondorf.de I tried to build the latest versions of IcedTea6-1.6 (5e600a55ee80 & c99b9280fdcf) on an ARM-based SoC (Marvell SheevaPlug) running Gentoo. I followed the instructions I found in the Wiki, but all attempts ended with the same error. When trying to compile the JAXP component the build breaks with the message: "Compliance level '1.4' is incompatible with target level '1.5'. A compliance level '1.5' or better is required" Here is my configure-command: ./configure --build=armv5tel-softfloat-linux-gnueabi \ --host=armv5tel-softfloat-linux-gnueabi \ --with-ecj-jar=/usr/share/eclipse-ecj-3.4/lib/ecj.jar \ --with-gcj-home=/usr/lib/jvm/gcj-jdk \ --with-parallel-jobs=2 \ --disable-cacao \ --with-java=/usr/lib/jvm/gcj-jdk/bin/java \ --with-javac=/usr/lib/jvm/gcj-jdk/bin/javac \ --with-javah=/usr/lib/jvm/gcj-jdk/bin/javah \ --with-pkgversion=Gentoo \ --enable-optimizations \ --disable-docs \ --disable-plugin \ --without-rhino \ --enable-zero \ --disable-pulse-java \ --disable-xrender \ --disable-systemtap \ --disable-nio2 As you can see I am using ecj-3.4 which should be java 1.5 compliant (/usr/lib/jvm/gcj-jdk/bin/javac is a symlink pointing to ecj-3.4). gcj-jdk version is 4.3. Just before this part is compiled JAVA_HOME was set to icedtea6-c99b9280fdcf/bootstrap/jdk1.6.0 which points to icedtea6-c99b9280fdcf/openjdk-ecj/build/linux-arm/j2sdk-image/ at this time. icedtea6-c99b9280fdcf/bootstrap/jdk1.6.0/java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre) (Gentoo) OpenJDK Zero VM (build 14.0-b16, interpreted mode) icedtea6-c99b9280fdcf/bootstrap/jdk1.6.0/bin/javac -version javac 1.6.0_17 icedtea6-c99b9280fdcf/bootstrap/jdk1.6.0/bin/javah -version javah version "1.6.0_17" Here's some additional information to check everything is up to date the environment is set up right: /usr/lib/jvm/gcj-jdk/bin/javac -version Eclipse Java Compiler 0.883_R34x, 3.4.1 release /usr/lib/jvm/gcj-jdk/bin/java -version java version "1.5.0" gij (GNU libgcj) version 4.4.2 gcj --verision gcj-4.4.2 (Gentoo 4.4.2 p1.0) 4.4.2 /usr/lib/jvm/gcj-jdk/bin/javah -version javah (GNU Classpath) 0.98 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From carlos at systemhalted.org Wed Jan 6 06:59:44 2010 From: carlos at systemhalted.org (Carlos O'Donell) Date: Wed, 6 Jan 2010 09:59:44 -0500 Subject: State of openjdk on hppa In-Reply-To: <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> Message-ID: <119aab441001060659k7c58f2bam4ca0c661ec2deb@mail.gmail.com> On Tue, Jan 5, 2010 at 1:13 PM, Tom Rodriguez wrote: >> please could one of the hotspot developers sched some light on this, how easy this might to be fix, and if there are other assumptions? > > Could you give more detail on where exactly the direction of growth is being assumed? ?I know there's an accessor in frame that's supposed to describe the direction of growth of the expression stack which is used a few places in the code: The usual problem faced by HPPA is that it is one of the few stack-grows-up targets, therefore it is the *missing* calls to interpreter_frame_expression_stack_direction() that a porter has to determine. There is no easy way to know this other than debugging a failed application and determining that a section of code is assuming stack-grows-down and should instead call the appropriate accessor function to determine stack growth. I don't know if there are any such instances in the hotspot code. > ?// expression stack (may go up or down, direction == 1 or -1) > ?public: > ?intptr_t* interpreter_frame_expression_stack() const; > ?static ?jint ?interpreter_frame_expression_stack_direction(); > > I would think this has to be set correctly for HPPA to work. ?Is it? ?It's possible that the C++ interpreter would also need to consult this when pushing values for it to work correctly. Given that HPPA is a stack-grows-up target, is the value of this constant 1? All interpreters that manually manipulate the stack must know the direction of stack growth (and alignment of stack). Cheers, Carlos. From doko at ubuntu.com Wed Jan 6 07:16:34 2010 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 06 Jan 2010 16:16:34 +0100 Subject: State of openjdk on hppa In-Reply-To: <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> Message-ID: <4B44A952.4080807@ubuntu.com> On 05.01.2010 19:13, Tom Rodriguez wrote: >> openjdk builds on hppa, but doesn't run (yet). Andrew Haley once debugged it and found out at least one things which would need to be fixed: the assumption in the C++ interpreter that the stack always grows downwards, and not upwards as on hppa. >> >> please could one of the hotspot developers sched some light on this, how easy this might to be fix, and if there are other assumptions? > > Could you give more detail on where exactly the direction of growth is being assumed? I know there's an accessor in frame that's supposed to describe the direction of growth of the expression stack which is used a few places in the code: > > // expression stack (may go up or down, direction == 1 or -1) > public: > intptr_t* interpreter_frame_expression_stack() const; > static jint interpreter_frame_expression_stack_direction(); > > I would think this has to be set correctly for HPPA to work. Is it? It's possible that the C++ interpreter would also need to consult this when pushing values for it to work correctly. thanks for the pointer. zero sets this independently of the architecture. now checking the obvious fix. Matthias From gbenson at redhat.com Wed Jan 6 08:08:13 2010 From: gbenson at redhat.com (Gary Benson) Date: Wed, 6 Jan 2010 16:08:13 +0000 Subject: State of openjdk on hppa In-Reply-To: <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> Message-ID: <20100106160813.GE3312@redhat.com> Tom Rodriguez wrote: > Someone wrote: > > openjdk builds on hppa, but doesn't run (yet). Andrew Haley once > > debugged it and found out at least one things which would need to > > be fixed: the assumption in the C++ interpreter that the stack > > always grows downwards, and not upwards as on hppa. > > > > please could one of the hotspot developers sched some light on > > this, how easy this might to be fix, and if there are other > > assumptions? > > Could you give more detail on where exactly the direction of growth > is being assumed? I know there's an accessor in frame that's > supposed to describe the direction of growth of the expression stack > which is used a few places in the code: > > // expression stack (may go up or down, direction == 1 or -1) > public: > intptr_t* interpreter_frame_expression_stack() const; > static jint interpreter_frame_expression_stack_direction(); > > I would think this has to be set correctly for HPPA to work. Is it? > It's possible that the C++ interpreter would also need to consult > this when pushing values for it to work correctly. I'm not 100% sure what the correct value of this would be for HPPA. The ABI stack grows upwards, but the stack Zero maintains still grows downwards. If interpreter_frame_expression_stack_direction is used for both of these stacks then something will need changing (either a separate accessor, or Zero's stack direction changing to match the ABI stack.) Cheers, Gary -- http://gbenson.net/ From Thomas.Rodriguez at Sun.COM Wed Jan 6 08:47:27 2010 From: Thomas.Rodriguez at Sun.COM (Tom Rodriguez) Date: Wed, 06 Jan 2010 08:47:27 -0800 Subject: State of openjdk on hppa In-Reply-To: <20100106160813.GE3312@redhat.com> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> <20100106160813.GE3312@redhat.com> Message-ID: <7D583646-E851-4241-9688-CDF14FBC59C1@Sun.COM> > I'm not 100% sure what the correct value of this would be for HPPA. > The ABI stack grows upwards, but the stack Zero maintains still grows > downwards. If interpreter_frame_expression_stack_direction is used > for both of these stacks then something will need changing (either a > separate accessor, or Zero's stack direction changing to match the > ABI stack.) I don't really think hotspot cares which direction the ABI stack grows. It only cares what direction the expression stack grows and that's only for frame code that it was walking over the contents of the expression stack.. I was assuming that the expression stack would follow the ABI but I guess there's no reason it must. It's just the responsibility of the C++ intepreter to deal with that properly. It would be nice to know what exact problem led to the initial conclusion that direction of stack growth was the problem. tom > > Cheers, > Gary > > -- > http://gbenson.net/ From aph at redhat.com Wed Jan 6 08:53:50 2010 From: aph at redhat.com (Andrew Haley) Date: Wed, 06 Jan 2010 16:53:50 +0000 Subject: State of openjdk on hppa In-Reply-To: <7D583646-E851-4241-9688-CDF14FBC59C1@Sun.COM> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> <20100106160813.GE3312@redhat.com> <7D583646-E851-4241-9688-CDF14FBC59C1@Sun.COM> Message-ID: <4B44C01E.3030105@redhat.com> On 01/06/2010 04:47 PM, Tom Rodriguez wrote: >> I'm not 100% sure what the correct value of this would be for HPPA. >> The ABI stack grows upwards, but the stack Zero maintains still grows >> downwards. If interpreter_frame_expression_stack_direction is used >> for both of these stacks then something will need changing (either a >> separate accessor, or Zero's stack direction changing to match the >> ABI stack.) > > I don't really think hotspot cares which direction the ABI stack > grows. It only cares what direction the expression stack grows and > that's only for frame code that it was walking over the contents of > the expression stack.. I was assuming that the expression stack > would follow the ABI but I guess there's no reason it must. It's > just the responsibility of the C++ intepreter to deal with that > properly. It would be nice to know what exact problem led to the > initial conclusion that direction of stack growth was the problem. Did you not see my reply? The runtime write protects the guard pages of the stack, and this immediately causes a segfault since the stack being used is now unwritable, Andrew. From Thomas.Rodriguez at Sun.COM Wed Jan 6 09:26:00 2010 From: Thomas.Rodriguez at Sun.COM (Tom Rodriguez) Date: Wed, 06 Jan 2010 09:26:00 -0800 Subject: State of openjdk on hppa In-Reply-To: <4B44C01E.3030105@redhat.com> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> <20100106160813.GE3312@redhat.com> <7D583646-E851-4241-9688-CDF14FBC59C1@Sun.COM> <4B44C01E.3030105@redhat.com> Message-ID: <9C8C32DC-CEAD-473D-ACB3-63CC52D4F75C@Sun.COM> No I didn't see it. If it was only on the icedtea list then I wouldn't have seen it as hotspot-dev is the only one of these aliases that I'm on. By the way, I restored the other aliases to my reply so they would get it too. So the computation of the location of the guard pages is wrong because of the direction of growth? For instance this line obviously won't work right: address low_addr = stack_base() - stack_size(); There's also some code in os_linux_zero.cpp that does math on the stack that would need to take into account the real ABI direction. I think we probably need something like "int os::stack_direction()" to deal with this in shared code. All the guard logic in Thread needs to check it as does is_in_stack and is_lock_owned. There might be some logic in frame that needs to check it too but hopefully that will all be platform dependent logic. tom On Jan 6, 2010, at 8:53 AM, Andrew Haley wrote: > On 01/06/2010 04:47 PM, Tom Rodriguez wrote: >>> I'm not 100% sure what the correct value of this would be for HPPA. >>> The ABI stack grows upwards, but the stack Zero maintains still grows >>> downwards. If interpreter_frame_expression_stack_direction is used >>> for both of these stacks then something will need changing (either a >>> separate accessor, or Zero's stack direction changing to match the >>> ABI stack.) >> >> I don't really think hotspot cares which direction the ABI stack >> grows. It only cares what direction the expression stack grows and >> that's only for frame code that it was walking over the contents of >> the expression stack.. I was assuming that the expression stack >> would follow the ABI but I guess there's no reason it must. It's >> just the responsibility of the C++ intepreter to deal with that >> properly. It would be nice to know what exact problem led to the >> initial conclusion that direction of stack growth was the problem. > > Did you not see my reply? The runtime write protects the guard pages > of the stack, and this immediately causes a segfault since the stack > being used is now unwritable, > > Andrew. From aph at redhat.com Wed Jan 6 09:29:52 2010 From: aph at redhat.com (Andrew Haley) Date: Wed, 06 Jan 2010 17:29:52 +0000 Subject: State of openjdk on hppa In-Reply-To: <9C8C32DC-CEAD-473D-ACB3-63CC52D4F75C@Sun.COM> References: <4B1D338C.703@ubuntu.com> <87D52094-A310-44C9-945E-7FF3E39592BB@sun.com> <20100106160813.GE3312@redhat.com> <7D583646-E851-4241-9688-CDF14FBC59C1@Sun.COM> <4B44C01E.3030105@redhat.com> <9C8C32DC-CEAD-473D-ACB3-63CC52D4F75C@Sun.COM> Message-ID: <4B44C890.2060507@redhat.com> On 01/06/2010 05:26 PM, Tom Rodriguez wrote: > No I didn't see it. If it was only on the icedtea list then I > wouldn't have seen it as hotspot-dev is the only one of these > aliases that I'm on. Oh darn, my mistake. The shiny new Reply List button on Thunderbird 3 didn't quite do what I expected... > By the way, I restored the other aliases to my reply so they would > get it too. So the computation of the location of the guard pages > is wrong because of the direction of growth? For instance this line > obviously won't work right: > > address low_addr = stack_base() - stack_size(); Right, that's it. > There's also some code in os_linux_zero.cpp that does math on the > stack that would need to take into account the real ABI direction. > I think we probably need something like "int os::stack_direction()" > to deal with this in shared code. All the guard logic in Thread > needs to check it as does is_in_stack and is_lock_owned. There > might be some logic in frame that needs to check it too but > hopefully that will all be platform dependent logic. Andrew. From dbhole at icedtea.classpath.org Wed Jan 6 14:48:02 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Wed, 06 Jan 2010 22:48:02 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset a249e1431ca3 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a249e1431ca3 author: Deepak Bhole date: Tue Jan 05 16:08:59 2010 -0500 - Removed dependence on libxul-unstable for NP plugin - Fixed some regressions caused by the way Firefox >= 3.5 supplies URLs changeset 175b5c7ee4c7 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=175b5c7ee4c7 author: Deepak Bhole date: Wed Jan 06 16:40:43 2010 -0500 2010-01-06 Deepak Bhole * plugin/icedteanp/IcedTeaNPPlugin.h: Remove debug specific line from code. diffstat: 5 files changed, 21 insertions(+), 8 deletions(-) ChangeLog | 15 ++++++++++++++ configure.ac | 2 - plugin/icedtea/sun/applet/PluginAppletViewer.java | 8 +++---- plugin/icedteanp/IcedTeaNPPlugin.h | 2 - plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 2 - diffs (97 lines): diff -r c99b9280fdcf -r 175b5c7ee4c7 ChangeLog --- a/ChangeLog Tue Jan 05 10:09:26 2010 +0000 +++ b/ChangeLog Wed Jan 06 16:40:43 2010 -0500 @@ -1,3 +1,18 @@ 2010-01-05 Gary Benson + + * plugin/icedteanp/IcedTeaNPPlugin.h: Remove debug specific line from + code. + +2010-01-05 Deepak Bhole + + * configure.ac: Use libxul instead of libxul-unstable for the new NP + plugin. + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (handleMessage): Decode URL before setting documentbase. + (parse): Port over parser fixes from NP plugin tree. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (handleMessage): Decode URL before setting documentbase. + 2010-01-05 Gary Benson * patches/zero/6909153.patch: New file. diff -r c99b9280fdcf -r 175b5c7ee4c7 configure.ac --- a/configure.ac Tue Jan 05 10:09:26 2010 +0000 +++ b/configure.ac Wed Jan 06 16:40:43 2010 -0500 @@ -471,7 +471,7 @@ if test "x${enable_npplugin}" = "xyes" if test "x${enable_npplugin}" = "xyes" then PKG_CHECK_MODULES(MOZILLA, \ - mozilla-plugin libxul-unstable) + mozilla-plugin libxul) PKG_CHECK_MODULES(GTK, gtk+-2.0) PKG_CHECK_MODULES(GLIB, glib-2.0) diff -r c99b9280fdcf -r 175b5c7ee4c7 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Jan 05 10:09:26 2010 +0000 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Wed Jan 06 16:40:43 2010 -0500 @@ -402,7 +402,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } int index = message.indexOf(' ', "tag".length() + 1); request.documentbase = - message.substring("tag".length() + 1, index); + UrlUtil.decode(message.substring("tag".length() + 1, index)); request.tag = message.substring(index + 1); PluginDebug.debug ("REQUEST TAG: " + request.tag + " " + Thread.currentThread()); @@ -1788,7 +1788,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; atts = scanTag(in); // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { + if (atts.get("code") == null && atts.get("classid") != null && !((String) atts.get("classid")).startsWith("clsid:")) { atts.put("code", atts.get("classid")); } @@ -1830,7 +1830,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { + if (atts.get("code") == null && atts.get("classid") != null && !((String) atts.get("classid")).startsWith("clsid:")) { atts.put("code", atts.get("classid")); } @@ -1888,7 +1888,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; atts = scanTag(in); // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { + if (atts.get("code") == null && atts.get("classid") != null && !((String) atts.get("classid")).startsWith("clsid:")) { atts.put("code", atts.get("classid")); } diff -r c99b9280fdcf -r 175b5c7ee4c7 plugin/icedteanp/IcedTeaNPPlugin.h --- a/plugin/icedteanp/IcedTeaNPPlugin.h Tue Jan 05 10:09:26 2010 +0000 +++ b/plugin/icedteanp/IcedTeaNPPlugin.h Wed Jan 06 16:40:43 2010 -0500 @@ -38,8 +38,6 @@ exception statement from your version. * #ifndef __ICEDTEANPPLUGIN_H__ #define __ICEDTEANPPLUGIN_H__ - -#define MOZILLA_VERSION_COLLAPSED 1090105 #if MOZILLA_VERSION_COLLAPSED < 1090100 #include diff -r c99b9280fdcf -r 175b5c7ee4c7 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Jan 05 10:09:26 2010 +0000 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Wed Jan 06 16:40:43 2010 -0500 @@ -424,7 +424,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } int index = message.indexOf(' ', "tag".length() + 1); request.documentbase = - message.substring("tag".length() + 1, index); + UrlUtil.decode(message.substring("tag".length() + 1, index)); request.tag = message.substring(index + 1); PluginDebug.debug ("REQUEST TAG: " + request.tag + " " + Thread.currentThread()); From dbhole at icedtea.classpath.org Wed Jan 6 14:51:07 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Wed, 06 Jan 2010 22:51:07 +0000 Subject: /hg/release/icedtea6-1.7: Ported over regression fixes from HEAD. Message-ID: changeset 3132bad1a11b in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=3132bad1a11b author: Deepak Bhole date: Wed Jan 06 17:56:50 2010 -0500 Ported over regression fixes from HEAD. diffstat: 5 files changed, 18 insertions(+), 8 deletions(-) ChangeLog | 12 ++++++++++++ configure.ac | 2 +- plugin/icedtea/sun/applet/PluginAppletViewer.java | 8 ++++---- plugin/icedteanp/IcedTeaNPPlugin.h | 2 -- plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 2 +- diffs (94 lines): diff -r a0f8cf8cf432 -r 3132bad1a11b ChangeLog --- a/ChangeLog Thu Dec 24 14:06:38 2009 -0500 +++ b/ChangeLog Wed Jan 06 17:56:50 2010 -0500 @@ -1,3 +1,15 @@ 2009-12-24 Deepak Bhole + + * configure.ac: Use libxul instead of libxul-unstable for the new NP + plugin. + * plugin/icedteanp/IcedTeaNPPlugin.h: Remove debug specific line from + code. + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (handleMessage): Decode URL before setting documentbase. + (parse): Port over parser fixes from NP plugin tree. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (handleMessage): Decode URL before setting documentbase. + 2009-12-24 Deepak Bhole * Makefile.am: Define XP_UNIX, without which critical plugin API diff -r a0f8cf8cf432 -r 3132bad1a11b configure.ac --- a/configure.ac Thu Dec 24 14:06:38 2009 -0500 +++ b/configure.ac Wed Jan 06 17:56:50 2010 -0500 @@ -471,7 +471,7 @@ if test "x${enable_npplugin}" = "xyes" if test "x${enable_npplugin}" = "xyes" then PKG_CHECK_MODULES(MOZILLA, \ - mozilla-plugin libxul-unstable) + mozilla-plugin libxul) PKG_CHECK_MODULES(GTK, gtk+-2.0) PKG_CHECK_MODULES(GLIB, glib-2.0) diff -r a0f8cf8cf432 -r 3132bad1a11b plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Thu Dec 24 14:06:38 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Wed Jan 06 17:56:50 2010 -0500 @@ -402,7 +402,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } int index = message.indexOf(' ', "tag".length() + 1); request.documentbase = - message.substring("tag".length() + 1, index); + UrlUtil.decode(message.substring("tag".length() + 1, index)); request.tag = message.substring(index + 1); PluginDebug.debug ("REQUEST TAG: " + request.tag + " " + Thread.currentThread()); @@ -1788,7 +1788,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; atts = scanTag(in); // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { + if (atts.get("code") == null && atts.get("classid") != null && !((String) atts.get("classid")).startsWith("clsid:")) { atts.put("code", atts.get("classid")); } @@ -1830,7 +1830,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { + if (atts.get("code") == null && atts.get("classid") != null && !((String) atts.get("classid")).startsWith("clsid:")) { atts.put("code", atts.get("classid")); } @@ -1888,7 +1888,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; atts = scanTag(in); // If there is a classid and no code tag present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && ((String) atts.get("classid")).endsWith(".class")) { + if (atts.get("code") == null && atts.get("classid") != null && !((String) atts.get("classid")).startsWith("clsid:")) { atts.put("code", atts.get("classid")); } diff -r a0f8cf8cf432 -r 3132bad1a11b plugin/icedteanp/IcedTeaNPPlugin.h --- a/plugin/icedteanp/IcedTeaNPPlugin.h Thu Dec 24 14:06:38 2009 -0500 +++ b/plugin/icedteanp/IcedTeaNPPlugin.h Wed Jan 06 17:56:50 2010 -0500 @@ -38,8 +38,6 @@ exception statement from your version. * #ifndef __ICEDTEANPPLUGIN_H__ #define __ICEDTEANPPLUGIN_H__ - -#define MOZILLA_VERSION_COLLAPSED 1090105 #if MOZILLA_VERSION_COLLAPSED < 1090100 #include diff -r a0f8cf8cf432 -r 3132bad1a11b plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Thu Dec 24 14:06:38 2009 -0500 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Wed Jan 06 17:56:50 2010 -0500 @@ -424,7 +424,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } int index = message.indexOf(' ', "tag".length() + 1); request.documentbase = - message.substring("tag".length() + 1, index); + UrlUtil.decode(message.substring("tag".length() + 1, index)); request.tag = message.substring(index + 1); PluginDebug.debug ("REQUEST TAG: " + request.tag + " " + Thread.currentThread()); From dbhole at icedtea.classpath.org Wed Jan 6 14:58:27 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Wed, 06 Jan 2010 22:58:27 +0000 Subject: /hg/icedtea: Ported over NP plugin fixes from IcedTea 1.6 branch Message-ID: changeset 6cd33d5c844d in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=6cd33d5c844d author: Deepak Bhole date: Wed Jan 06 18:04:10 2010 -0500 Ported over NP plugin fixes from IcedTea 1.6 branch diffstat: 4 files changed, 11 insertions(+), 4 deletions(-) ChangeLog | 9 +++++++++ configure.ac | 2 +- plugin/icedteanp/IcedTeaNPPlugin.h | 2 -- plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 2 +- diffs (52 lines): diff -r 316dbf49f070 -r 6cd33d5c844d ChangeLog --- a/ChangeLog Thu Dec 24 14:05:23 2009 -0500 +++ b/ChangeLog Wed Jan 06 18:04:10 2010 -0500 @@ -1,3 +1,12 @@ 2009-12-24 Deepak Bhole + + * configure.ac: Use libxul instead of libxul-unstable for the new NP + plugin. + * plugin/icedteanp/IcedTeaNPPlugin.h: Remove debug specific line from + code. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (handleMessage): Decode URL before setting documentbase. + 2009-12-24 Deepak Bhole * plugin/icedeanp/*: Blanket merge with icedtea6 branch. diff -r 316dbf49f070 -r 6cd33d5c844d configure.ac --- a/configure.ac Thu Dec 24 14:05:23 2009 -0500 +++ b/configure.ac Wed Jan 06 18:04:10 2010 -0500 @@ -421,7 +421,7 @@ if test "x${enable_npplugin}" = "xyes" if test "x${enable_npplugin}" = "xyes" then PKG_CHECK_MODULES(MOZILLA, \ - mozilla-plugin libxul-unstable) + mozilla-plugin libxul) PKG_CHECK_MODULES(GTK, gtk+-2.0) PKG_CHECK_MODULES(GLIB, glib-2.0) diff -r 316dbf49f070 -r 6cd33d5c844d plugin/icedteanp/IcedTeaNPPlugin.h --- a/plugin/icedteanp/IcedTeaNPPlugin.h Thu Dec 24 14:05:23 2009 -0500 +++ b/plugin/icedteanp/IcedTeaNPPlugin.h Wed Jan 06 18:04:10 2010 -0500 @@ -38,8 +38,6 @@ exception statement from your version. * #ifndef __ICEDTEANPPLUGIN_H__ #define __ICEDTEANPPLUGIN_H__ - -#define MOZILLA_VERSION_COLLAPSED 1090105 #if MOZILLA_VERSION_COLLAPSED < 1090100 #include diff -r 316dbf49f070 -r 6cd33d5c844d plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Thu Dec 24 14:05:23 2009 -0500 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Wed Jan 06 18:04:10 2010 -0500 @@ -424,7 +424,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } int index = message.indexOf(' ', "tag".length() + 1); request.documentbase = - message.substring("tag".length() + 1, index); + UrlUtil.decode(message.substring("tag".length() + 1, index)); request.tag = message.substring(index + 1); PluginDebug.debug ("REQUEST TAG: " + request.tag + " " + Thread.currentThread()); From bugzilla-daemon at icedtea.classpath.org Thu Jan 7 06:26:55 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 07 Jan 2010 14:26:55 +0000 Subject: [Bug 388] Compile of gcc hangs at fortran/intrinsic.o Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=388 ------- Comment #12 from jlpoole at pon.net 2010-01-07 14:26 ------- I got gcj to compile a HelloWorld.java file into HelloWorld.o, see Bug 42409 referenced in Comment #11. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Jan 7 08:59:45 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 07 Jan 2010 16:59:45 +0000 Subject: [Bug 387] circular dependencies for install of Gentoo ARM5 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=387 ------- Comment #3 from jlpoole at pon.net 2010-01-07 16:59 ------- Regarding Comment #1, I installed gcj and believe to work. Then I focused on Ant and learned from http://ant.apache.org/manual/index.html that: Note: The bootstrap process of Ant requires a greedy compiler like Sun's javac or jikes. It does not work with gcj or kjc. I'll give compiling Ant a try, but the manual's caveat does not portend well. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Jan 7 09:12:19 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 07 Jan 2010 17:12:19 +0000 Subject: [Bug 387] circular dependencies for install of Gentoo ARM5 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=387 ------- Comment #4 from gnu_andrew at member.fsf.org 2010-01-07 17:12 ------- gcj and ant are both packaged on Gentoo, but I don't know if they work on arm. We could certainly find a way round it. There is an ebuild for IcedTea6 in the java-overlay: svn co https://overlays.gentoo.org/svn/proj/java/java-overlay/ That warning from the Ant manual sounds hugely outdated. It doesn't mention ecj for one thing, which is what gcj now uses as its compiler. I think the mailing lists (distro-pkg-dev at openjdk.java.net) may be a better place for this discussion, as it's not a bug that you don't know how to compile it and that should reach a wider audience. You may also find some help with Gentoo related questions on the IRC channel #gentoo-java on the FreeNode network. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Jan 7 09:12:35 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 07 Jan 2010 17:12:35 +0000 Subject: [Bug 387] circular dependencies for install of Gentoo ARM5 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=387 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Jan 7 09:17:46 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 07 Jan 2010 17:17:46 +0000 Subject: [Bug 387] circular dependencies for install of Gentoo ARM5 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=387 ------- Comment #5 from aph at redhat.com 2010-01-07 17:17 ------- gcj is fine on ARM. People bootstrap OpenJDK with it. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Thu Jan 7 11:36:12 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 07 Jan 2010 19:36:12 +0000 Subject: /hg/icedtea: Bump to b78. Message-ID: changeset 7e9ed32b98d7 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=7e9ed32b98d7 author: Andrew John Hughes date: Thu Jan 07 19:41:31 2010 +0000 Bump to b78. 2010-01-07 Andrew John Hughes Bump to b78. * patches/icedtea-alsa-default-device.patch: Dropped, applied upstream. * patches/icedtea-jdk-docs-target.patch: Revised and recreated upstream. * Makefile.am: Bump to b78. * javac.in: Ignore -implicit:none option when using ecj. * patches/boot/icedteart.patch: Drop langtools patch. * patches/icedtea-override-redirect-metacity.patch: Reduced to just the Metacity workaround. diffstat: 7 files changed, 40 insertions(+), 81 deletions(-) ChangeLog | 14 ++++++++ Makefile.am | 36 ++++++++++------------ javac.in | 4 +- patches/boot/icedteart.patch | 19 ----------- patches/icedtea-alsa-default-device.patch | 17 ---------- patches/icedtea-jdk-docs-target.patch | 16 --------- patches/icedtea-override-redirect-metacity.patch | 15 ++++----- diffs (191 lines): diff -r 6cd33d5c844d -r 7e9ed32b98d7 ChangeLog --- a/ChangeLog Wed Jan 06 18:04:10 2010 -0500 +++ b/ChangeLog Thu Jan 07 19:41:31 2010 +0000 @@ -1,3 +1,17 @@ 2010-01-06 Deepak Bhole + + Bump to b78. + * patches/icedtea-alsa-default-device.patch: + Dropped, applied upstream. + * patches/icedtea-jdk-docs-target.patch: + Revised and recreated upstream. + * Makefile.am: Bump to b78. + * javac.in: Ignore -implicit:none option when + using ecj. + * patches/boot/icedteart.patch: Drop langtools patch. + * patches/icedtea-override-redirect-metacity.patch: + Reduced to just the Metacity workaround. + 2010-01-06 Deepak Bhole * configure.ac: Use libxul instead of libxul-unstable for the new NP diff -r 6cd33d5c844d -r 7e9ed32b98d7 Makefile.am --- a/Makefile.am Wed Jan 06 18:04:10 2010 -0500 +++ b/Makefile.am Thu Jan 07 19:41:31 2010 +0000 @@ -1,22 +1,22 @@ # Dependencies -OPENJDK_VERSION = b77 - -CORBA_CHANGESET = e12a2cc2d9b5 -HOTSPOT_CHANGESET = 6b9522825101 -JAXP_CHANGESET = 3aeb520849db -JAXWS_CHANGESET = 85d8e6e69be0 -JDK_CHANGESET = d3b07a3dd0da -LANGTOOLS_CHANGESET = a2ad734c54f9 -OPENJDK_CHANGESET = 3430bb12a9a5 - -CORBA_SHA256SUM = 40069a50a17c9e39a59cc9da5ad0e3db23747192ed900309bc6cf0d5a2969446 -HOTSPOT_SHA256SUM = 951efc3e173660a6ec47aba0609a476931fdc46fb6180235f92a85cd98365b83 -JAXP_SHA256SUM = e0405c0fe2f28a2ab8f77c6c5d2430357c0b62999a62e4da4315439a042bc0f3 -JAXWS_SHA256SUM = f59a4dc9c5c0f06cff7d14dbfb87c251b581f8700c01535cbd5f461c26d1d54d -JDK_SHA256SUM = bac95b945892d15889f96a089a00baf96971950c4c2dbd74ef3b12fae1c32ada -LANGTOOLS_SHA256SUM = d4f7763087532975cf106a23700e19cb668142e960f337ffcc4f83f8053a567d -OPENJDK_SHA256SUM = b42e70c5fbeed6db9cac51897ab825c69d90ff26e5b38726d59ed27ed3a4db68 +OPENJDK_VERSION = b78 + +CORBA_CHANGESET = 89141a0869e3 +HOTSPOT_CHANGESET = 54dde9f9887d +JAXP_CHANGESET = f0f127b93c9e +JAXWS_CHANGESET = 4ca731fe3154 +JDK_CHANGESET = 35224dd04ddb +LANGTOOLS_CHANGESET = 21591a03bfbe +OPENJDK_CHANGESET = f1cf9e78bbad + +CORBA_SHA256SUM = 0d41c7f3c3571cc95eae4fb4c0faf8dbbcc61846a4591f70b6870d7b4c2c0857 +HOTSPOT_SHA256SUM = 1127102aa1230d26da6b73118576aef872fb2e86d0d946797da737e64c91d6fc +JAXP_SHA256SUM = 89f002ed4e6e4b6449e453284b31c4cbe466dedddeeb20249415c6edb10b52cb +JAXWS_SHA256SUM = 62059bb48e5dad09060bcb79539562f596c77df48345bb35f0e26e815d1cfa6b +JDK_SHA256SUM = b817bc7703acae21abc57d75eb16ac47d724da25253156aebc90f75c92a267a4 +LANGTOOLS_SHA256SUM = 4bff3af10a14048419bd144a39af2daa82756ca8ec226950d05b91ff99b1d0cc +OPENJDK_SHA256SUM = df47020bf65614156e363a2170ee96f2959e08e62f9eaedacd3591147f858c00 CACAO_VERSION = 0.99.4 CACAO_SHA256SUM = c6090c1d2ed3c60acda0076b62563598267be8dab270ce49ee1035002a2510cf @@ -268,7 +268,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-shark-build.patch \ patches/hotspot/$(HSBUILD)/icedtea-shark-build.patch \ patches/icedtea-security-updates.patch \ - patches/icedtea-jdk-docs-target.patch \ patches/icedtea-hotspot-gcc-pr36917.patch \ patches/icedtea-alpha-fixes.patch \ patches/icedtea-alt-jar.patch \ @@ -283,7 +282,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-lc_ctype.patch \ patches/icedtea-tests-jdk.patch \ patches/icedtea-stroker-finish.patch \ - patches/icedtea-alsa-default-device.patch \ patches/icedtea-linker-libs-order.patch \ patches/icedtea-testenv.patch \ patches/icedtea-samejvm-safe.patch \ diff -r 6cd33d5c844d -r 7e9ed32b98d7 javac.in --- a/javac.in Wed Jan 06 18:04:10 2010 -0500 +++ b/javac.in Thu Jan 07 19:41:31 2010 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/perl -w use strict; use constant NO_DUP_ARGS => qw(-source -target -d -encoding); -use constant STRIP_ARGS => qw(-Werror); +use constant STRIP_ARGS => qw(-Werror -implicit:none); my ($ECJ_WARNINGS, $JAVAC_WARNINGS); @@ -22,7 +22,7 @@ my @ecj_parms = ($ECJ_WARNINGS, @bcoptio my @ecj_parms = ($ECJ_WARNINGS, @bcoption); # Work around ecj's inability to handle duplicate command-line -# options. +# options and unknown javac options. sub gen_ecj_opts { my @new_args = @{$_[0]}; diff -r 6cd33d5c844d -r 7e9ed32b98d7 patches/boot/icedteart.patch --- a/patches/boot/icedteart.patch Wed Jan 06 18:04:10 2010 -0500 +++ b/patches/boot/icedteart.patch Thu Jan 07 19:41:31 2010 +0000 @@ -39,22 +39,3 @@ diff -Nru openjdk-boot.orig/jdk/make/sun @$(java-vm-cleanup) $(INSTALLDIR)/$(MAPFILE): $(WORKDIR)/$(MAPFILE) -diff -Nru openjdk-boot.orig/langtools/make/build.xml openjdk-boot/langtools/make/build.xml ---- openjdk-boot.orig/langtools/make/build.xml 2009-10-21 16:40:37.000000000 +0100 -+++ openjdk-boot/langtools/make/build.xml 2009-12-13 20:16:48.000000000 +0000 -@@ -524,6 +524,7 @@ - includeAntRuntime="no" - source="@{javac.source}" - target="@{javac.target}"> -+ - - - -@@ -540,6 +541,7 @@ - target="@{javac.target}" - debug="${javac.debug}" - debuglevel="${javac.debuglevel}"> -+ - - - diff -r 6cd33d5c844d -r 7e9ed32b98d7 patches/icedtea-alsa-default-device.patch --- a/patches/icedtea-alsa-default-device.patch Wed Jan 06 18:04:10 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -diff -uNr openjdk-orig/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c openjdk/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c ---- openjdk-orig/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c 2008-11-03 15:02:16.000000000 -0500 -+++ openjdk/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c 2008-11-03 15:08:07.000000000 -0500 -@@ -143,8 +143,12 @@ - ERROR1("snd_pcm_hw_params_malloc returned error %d\n", ret); - } else { - ret = snd_pcm_hw_params_any(handle, hwParams); -- if (ret != 0) { -+ /* snd_pcm_hw_params_any can return a positive value on success too */ -+ if (ret < 0) { - ERROR1("snd_pcm_hw_params_any returned error %d\n", ret); -+ } else { -+ /* for the logic following this code, set ret to 0 to indicate success */ -+ ret = 0; - } - } - snd_pcm_hw_params_get_format_mask(hwParams, formatMask); diff -r 6cd33d5c844d -r 7e9ed32b98d7 patches/icedtea-jdk-docs-target.patch --- a/patches/icedtea-jdk-docs-target.patch Wed Jan 06 18:04:10 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ ---- openjdk/make/jdk-rules.gmk 2008-06-29 10:09:47.002591764 +0000 -+++ openjdk/make/jdk-rules.gmk 2008-06-29 15:04:01.228901751 +0000 -@@ -36,12 +36,7 @@ - IMAGES_TARGET = images - endif - --# No DOCS build when JDK_UPDATE_VERSION set --ifdef JDK_UPDATE_VERSION -- DOCS_TARGET = --else -- DOCS_TARGET = docs --endif -+DOCS_TARGET = docs - - # NO_DOCS may be set in conjunction with DEV_ONLY - ifdef NO_DOCS diff -r 6cd33d5c844d -r 7e9ed32b98d7 patches/icedtea-override-redirect-metacity.patch --- a/patches/icedtea-override-redirect-metacity.patch Wed Jan 06 18:04:10 2010 -0500 +++ b/patches/icedtea-override-redirect-metacity.patch Thu Jan 07 19:41:31 2010 +0000 @@ -1,12 +1,11 @@ diff -Nru openjdk.orig/jdk/src/solaris/c diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java ---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2008-09-25 08:44:19.000000000 +0100 -+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2008-09-26 21:13:18.000000000 +0100 -@@ -1118,6 +1118,8 @@ +--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2010-01-04 16:57:29.000000000 +0000 ++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2010-01-04 19:47:57.000000000 +0000 +@@ -1142,6 +1142,7 @@ boolean isOverrideRedirect() { - return (XWM.getWMID() == XWM.OPENLOOK_WM ? true : false) || -+ (XWM.getWMID() == XWM.METACITY_WM ? true : false) || -+ target.getName().equals("###overrideRedirect###") || - ((XToolkit)Toolkit.getDefaultToolkit()).isOverrideRedirect((Window)target) || - XTrayIconPeer.isTrayIconStuffWindow((Window)target); + return XWM.getWMID() == XWM.OPENLOOK_WM || ++ XWM.getWMID() == XWM.METACITY_WM || + Window.Type.POPUP.equals(getWindowType()); } + From bugzilla-daemon at icedtea.classpath.org Fri Jan 8 06:02:30 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 08 Jan 2010 14:02:30 +0000 Subject: [Bug 426] New: normal Eclipse update crash (SIGSEGV) Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=426 Summary: normal Eclipse update crash (SIGSEGV) Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: critical Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: kariuki at posintra.fi # # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0xb759f7a0, pid=2069, tid=2345282448 # # Java VM: OpenJDK Server VM (1.6.0_0-b11 mixed mode linux-x86) # Problematic frame: # V [libjvm.so+0x1dc7a0] # # If you would like to submit a bug report, please visit: # http://icedtea.classpath.org/bugzilla # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # --------------- T H R E A D --------------- Current thread (0x8bf00800): JavaThread "CompilerThread1" daemon [_thread_in_native, id=2078, stack(0x8bc22000,0x8bca3000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000f Registers: EAX=0x099bab00, EBX=0xb79e354c, ECX=0xb79e354c, EDX=0x0000000e ESP=0x8bca0ff0, EBP=0x8bca1018, ESI=0xffffffff, EDI=0x0a93a8cc EIP=0xb759f7a0, CR2=0x0000000f, EFLAGS=0x00010246 Top of Stack: (sp=0x8bca0ff0) 0x8bca0ff0: 0a93a8cc 099bab30 00000000 b79e354c 0x8bca1000: 09d9bd88 00000001 8bca1028 b79e354c 0x8bca1010: 00000001 ffffffff 8bca1058 b759fa36 0x8bca1020: ffffffff 0a93a8cc 09d9bd88 b75a264c 0x8bca1030: 09d9bd88 00000016 01d9c1f0 ffffffff 0x8bca1040: 0a93a8cc 099bc190 00000004 b79e354c 0x8bca1050: 09d9c280 00000000 8bca1088 b759fd2d 0x8bca1060: 09d9c320 09d9c280 09ca0698 00000002 Instructions: (pc=0xb759f7a0) 0xb759f790: 44 24 04 e8 58 8b ff ff 84 c0 0f 85 a8 00 00 00 0xb759f7a0: 8b 46 10 83 f8 0c 0f 84 ac 00 00 00 83 f8 0d 90 Stack: [0x8bc22000,0x8bca3000], sp=0x8bca0ff0, free space=507k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x1dc7a0] V [libjvm.so+0x1dca36] V [libjvm.so+0x1dcd2d] V [libjvm.so+0x1e07b8] V [libjvm.so+0x1e0d19] V [libjvm.so+0x1e0d92] V [libjvm.so+0x1cc79d] V [libjvm.so+0x1aed0c] V [libjvm.so+0x1aedef] V [libjvm.so+0x27bd7a] V [libjvm.so+0x27c378] V [libjvm.so+0x48db2a] V [libjvm.so+0x4810db] V [libjvm.so+0x481397] V [libjvm.so+0x481438] V [libjvm.so+0x4833fd] V [libjvm.so+0x1aeec0] V [libjvm.so+0x213dcf] V [libjvm.so+0x1adccd] V [libjvm.so+0x2186d8] V [libjvm.so+0x218dc0] V [libjvm.so+0x53e147] V [libjvm.so+0x542c06] V [libjvm.so+0x542cb2] V [libjvm.so+0x468037] C [libpthread.so.0+0x64c0] Current CompileTask: C2:525 ! org.eclipse.update.internal.core.UpdateManagerUtils.copy(Ljava/io/InputStream;Ljava/io/OutputStream;Lorg/eclipse/update/core/InstallMonitor;J)J (238 bytes) --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x09c9b800 JavaThread "Keep-Alive-Timer" daemon [_thread_blocked, id=2264, stack(0x8a4a4000,0x8a4f5000)] 0x09ab9400 JavaThread "Worker-6" [_thread_blocked, id=2227, stack(0x89e32000,0x89e83000)] 0x09cac800 JavaThread "Worker-3" [_thread_in_native, id=2107, stack(0x8a65e000,0x8a6af000)] 0x89743800 JavaThread "org.eclipse.jface.text.reconciler.MonoReconciler" daemon [_thread_blocked, id=2098, stack(0x8a404000,0x8a455000)] 0x09c79800 JavaThread "Worker-1" [_thread_blocked, id=2089, stack(0x8a6af000,0x8a700000)] 0x8bf76800 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=2085, stack(0x8b9ff000,0x8ba50000)] 0x8bf53000 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=2084, stack(0x8ba50000,0x8baa1000)] 0x8bf1dc00 JavaThread "State Data Manager" daemon [_thread_blocked, id=2083, stack(0x8baa1000,0x8baf2000)] 0x8bf02800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2079, stack(0x8bbd1000,0x8bc22000)] =>0x8bf00800 JavaThread "CompilerThread1" daemon [_thread_in_native, id=2078, stack(0x8bc22000,0x8bca3000)] 0x09a1a400 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2077, stack(0x8bca3000,0x8bd24000)] 0x09a19000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2076, stack(0x8bd24000,0x8bd75000)] 0x099ffc00 JavaThread "Finalizer" daemon [_thread_blocked, id=2075, stack(0x8beaf000,0x8bf00000)] 0x099fb800 JavaThread "Reference Handler" daemon [_thread_blocked, id=2074, stack(0x8c009000,0x8c05a000)] 0x0996ec00 JavaThread "main" [_thread_in_native, id=2070, stack(0xb734c000,0xb739d000)] Other Threads: 0x099f8400 VMThread [stack: 0x8c05a000,0x8c0db000] [id=2073] 0x8bf04400 WatcherThread [stack: 0x8bb50000,0x8bbd1000] [id=2080] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap PSYoungGen total 54464K, used 24886K [0xb0990000, 0xb41c0000, 0xb4200000) eden space 53440K, 46% used [0xb0990000,0xb21dd8f8,0xb3dc0000) from space 1024K, 0% used [0xb3dc0000,0xb3dc0000,0xb3ec0000) to space 2048K, 0% used [0xb3fc0000,0xb3fc0000,0xb41c0000) PSOldGen total 28864K, used 16636K [0x94600000, 0x96230000, 0xb0990000) object space 28864K, 57% used [0x94600000,0x9563f148,0x96230000) PSPermGen total 63488K, used 30865K [0x8c600000, 0x90400000, 0x94600000) object space 63488K, 48% used [0x8c600000,0x8e424678,0x90400000) Dynamic libraries: 08048000-08050000 r-xp 00000000 fd:01 25837572 /usr/lib/jvm/java-6-openjdk/jre/bin/java 08050000-08051000 rw-p 00008000 fd:01 25837572 /usr/lib/jvm/java-6-openjdk/jre/bin/java 09968000-0ada6000 rw-p 09968000 00:00 0 [heap] 88f00000-88ff9000 rw-p 88f00000 00:00 0 88ff9000-89000000 ---p 88ff9000 00:00 0 89100000-891fc000 rw-p 89100000 00:00 0 891fc000-89200000 ---p 891fc000 00:00 0 89200000-892fb000 rw-p 89200000 00:00 0 892fb000-89300000 ---p 892fb000 00:00 0 89300000-893f6000 rw-p 89300000 00:00 0 893f6000-89400000 ---p 893f6000 00:00 0 89400000-894fc000 rw-p 89400000 00:00 0 894fc000-89500000 ---p 894fc000 00:00 0 89500000-895fe000 rw-p 89500000 00:00 0 895fe000-89600000 ---p 895fe000 00:00 0 896af000-896b2000 rwxp 896af000 00:00 0 896b2000-89700000 rwxp 896b2000 00:00 0 89700000-897fe000 rw-p 89700000 00:00 0 897fe000-89800000 ---p 897fe000 00:00 0 89822000-89825000 rwxp 89822000 00:00 0 89825000-89873000 rwxp 89825000 00:00 0 89873000-89876000 rwxp 89873000 00:00 0 89876000-898c4000 rwxp 89876000 00:00 0 898c4000-89900000 r--s 00309000 fd:01 56937926 /usr/lib/eclipse/plugins/org.eclipse.pde.ui_3.2.1.v20060816-0800.jar 89900000-899f5000 rw-p 89900000 00:00 0 899f5000-89a00000 ---p 899f5000 00:00 0 89a00000-89af8000 rw-p 89a00000 00:00 0 89af8000-89b00000 ---p 89af8000 00:00 0 89b00000-89bec000 rw-p 89b00000 00:00 0 89bec000-89c00000 ---p 89bec000 00:00 0 89c00000-89cc1000 rw-p 89c00000 00:00 0 89cc1000-89d00000 ---p 89cc1000 00:00 0 89d00000-89dc1000 rw-p 89d00000 00:00 0 89dc1000-89e00000 ---p 89dc1000 00:00 0 89e32000-89e35000 ---p 89e32000 00:00 0 89e35000-89e83000 rwxp 89e35000 00:00 0 89e83000-89f00000 r--p 00000000 fd:01 56541510 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf 89f00000-89ffe000 rw-p 89f00000 00:00 0 89ffe000-8a000000 ---p 89ffe000 00:00 0 8a003000-8a037000 r--p 00000000 fd:01 56541503 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf 8a037000-8a06d000 r--p 00000000 fd:01 56541501 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf 8a06d000-8a0b4000 r--p 00000000 fd:01 56541485 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf 8a0b4000-8a100000 r--p 00000000 fd:01 56541483 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf 8a100000-8a1fc000 rw-p 8a100000 00:00 0 8a1fc000-8a200000 ---p 8a1fc000 00:00 0 8a202000-8a212000 r-xp 00000000 fd:01 43745536 /lib/i686/cmov/libresolv-2.7.so 8a212000-8a214000 rw-p 0000f000 fd:01 43745536 /lib/i686/cmov/libresolv-2.7.so 8a214000-8a216000 rw-p 8a214000 00:00 0 8a216000-8a218000 r-xp 00000000 fd:01 43745417 /lib/libnss_mdns4_minimal.so.2 8a218000-8a219000 rw-p 00001000 fd:01 43745417 /lib/libnss_mdns4_minimal.so.2 8a22d000-8a22f000 r--s 00005000 fd:01 13239183 /tmp/46911889/eclipse/.update/1262952502868/1262952502874/eclipse8559437863730093196.tmp 8a22f000-8a230000 r--s 00005000 fd:01 13239842 /tmp/46911889/eclipse/.update/1262952502868/1262952502958/eclipse5305003507035572503.tmp 8a230000-8a231000 r--s 00005000 fd:01 13239833 /tmp/46911889/eclipse/.update/1262952502868/1262952502957/eclipse4811147577775621037.tmp 8a231000-8a232000 r--s 00005000 fd:01 13239824 /tmp/46911889/eclipse/.update/1262952502868/1262952502956/eclipse6027303544481298721.tmp 8a232000-8a2af000 r--p 00000000 fd:01 56541506 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf 8a2af000-8a2b2000 rwxp 8a2af000 00:00 0 8a2b2000-8a300000 rwxp 8a2b2000 00:00 0 8a300000-8a3fb000 rw-p 8a300000 00:00 0 8a3fb000-8a400000 ---p 8a3fb000 00:00 0 8a400000-8a401000 r--s 00005000 fd:01 13239815 /tmp/46911889/eclipse/.update/1262952502868/1262952502955/eclipse1450485152832276305.tmp 8a401000-8a402000 r--s 00005000 fd:01 13239806 /tmp/46911889/eclipse/.update/1262952502868/1262952502954/eclipse8917764009890206561.tmp 8a402000-8a403000 r--s 00005000 fd:01 13239797 /tmp/46911889/eclipse/.update/1262952502868/1262952502953/eclipse936458013988920217.tmp 8a403000-8a404000 r--s 00005000 fd:01 13239788 /tmp/46911889/eclipse/.update/1262952502868/1262952502952/eclipse7015667081550187378.tmp 8a404000-8a407000 ---p 8a404000 00:00 0 8a407000-8a455000 rwxp 8a407000 00:00 0 8a455000-8a45e000 r--s 0008d000 fd:01 56938012 /usr/lib/eclipse/plugins/org.eclipse.cdt.managedbuilder.core_3.1.2.200805011458.jar 8a45e000-8a45f000 r--s 00005000 fd:01 13239779 /tmp/46911889/eclipse/.update/1262952502868/1262952502951/eclipse1026429439173524386.tmp 8a45f000-8a460000 r--s 00005000 fd:01 13239770 /tmp/46911889/eclipse/.update/1262952502868/1262952502950/eclipse6791037177257007994.tmp 8a460000-8a461000 r--s 00005000 fd:01 13239761 /tmp/46911889/eclipse/.update/1262952502868/1262952502949/eclipse6105400649508964468.tmp 8a461000-8a462000 r--s 00005000 fd:01 13239752 /tmp/46911889/eclipse/.update/1262952502868/1262952502948/eclipse2184121947316733807.tmp 8a462000-8a463000 r--s 00005000 fd:01 13239743 /tmp/46911889/eclipse/.update/1262952502868/1262952502947/eclipse2304204668286248000.tmp 8a463000-8a464000 r--s 00005000 fd:01 13239734 /tmp/46911889/eclipse/.update/1262952502868/1262952502946/eclipse1739771320654016038.tmp 8a464000-8a465000 r--s 00005000 fd:01 13239727 /tmp/46911889/eclipse/.update/1262952502868/1262952502945/eclipse1056369243341506130.tmp 8a465000-8a467000 r--s 00005000 fd:01 13239201 /tmp/46911889/eclipse/.update/1262952502868/1262952502876/eclipse8173742196137558138.tmp 8a467000-8a469000 r--s 00005000 fd:01 13239192 /tmp/46911889/eclipse/.update/1262952502868/1262952502875/eclipse2026286676658020359.tmp 8a469000-8a46a000 r-xp 00000000 fd:01 57917487 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/31/1/.cp/os/linux/x86/libupdate.so 8a46a000-8a46b000 rw-p 00000000 fd:01 57917487 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/31/1/.cp/os/linux/x86/libupdate.so 8a46b000-8a46f000 r-xp 00000000 fd:01 43745519 /lib/i686/cmov/libnss_dns-2.7.so 8a46f000-8a471000 rw-p 00003000 fd:01 43745519 /lib/i686/cmov/libnss_dns-2.7.so 8a471000-8a47a000 r--s 0006f000 fd:01 56937895 /usr/lib/eclipse/plugins/org.eclipse.update.ui_3.2.2.R32x_v20070111.jar 8a47a000-8a47c000 r--s 00000000 fd:01 56937909 /usr/lib/eclipse/plugins/org.eclipse.update.core.linux_3.2.0.v20060605.jar 8a47c000-8a485000 r--s 00085000 fd:01 56937887 /usr/lib/eclipse/plugins/org.eclipse.update.core_3.2.3.R32x_v20070118.jar 8a485000-8a487000 r--s 00005000 fd:01 56937902 /usr/lib/eclipse/plugins/org.eclipse.update.scheduler_3.2.2.R32x_v20061214.jar 8a487000-8a48a000 r--s 0001c000 fd:01 56938015 /usr/lib/eclipse/plugins/org.eclipse.cdt.launch_3.1.2.200805011458.jar 8a48a000-8a493000 r--s 00047000 fd:01 56938025 /usr/lib/eclipse/plugins/org.eclipse.cdt.debug.core_3.1.2.200805011458.jar 8a493000-8a499000 r--s 00035000 fd:01 56937906 /usr/lib/eclipse/plugins/org.eclipse.debug.core_3.2.1.v20060823.jar 8a499000-8a49d000 r--s 0001e000 fd:01 56937863 /usr/lib/eclipse/plugins/org.eclipse.ui.console_3.1.100.v20060605.jar 8a49d000-8a4a2000 r--s 00036000 fd:01 56937860 /usr/lib/eclipse/plugins/org.eclipse.ui.forms_3.2.0.v20060602.jar 8a4a2000-8a4a4000 r--s 00005000 fd:01 56937858 /usr/lib/eclipse/plugins/org.eclipse.core.variables_3.1.100.v20060605.jar 8a4a4000-8a4a7000 ---p 8a4a4000 00:00 0 8a4a7000-8a4f5000 rwxp 8a4a7000 00:00 0 8a4f5000-8a4f8000 r-xp 00000000 fd:01 56983770 /usr/lib/eclipse/plugins/org.eclipse.cdt.core.linux.x86_3.1.2.200805011458/os/linux/x86/libspawner.so 8a4f8000-8a4f9000 rw-p 00002000 fd:01 56983770 /usr/lib/eclipse/plugins/org.eclipse.cdt.core.linux.x86_3.1.2.200805011458/os/linux/x86/libspawner.so 8a4f9000-8a501000 r--s 00048000 fd:01 56938013 /usr/lib/eclipse/plugins/org.eclipse.cdt.make.core_3.1.2.200805011458.jar 8a501000-8a532000 r--s 0023f000 fd:01 56938018 /usr/lib/eclipse/plugins/org.eclipse.cdt.core_3.1.2.200805011458.jar 8a532000-8a543000 r--s 000ae000 fd:01 56937892 /usr/lib/eclipse/plugins/org.eclipse.jface.text_3.2.2.r322_v20070104.jar 8a543000-8a54a000 r--s 000fd000 fd:01 56886392 /usr/lib/jvm/java-6-openjdk/jre/lib/resources.jar 8a54a000-8a562000 r--s 00306000 fd:01 56937861 /usr/lib/eclipse/plugins/com.ibm.icu_3.4.5.20061213.jar 8a562000-8a566000 r--s 0001b000 fd:01 56938023 /usr/lib/eclipse/plugins/org.eclipse.cdt.debug.mi.ui_3.1.2.200805011458.jar 8a566000-8a57d000 r--s 000fd000 fd:01 56937923 /usr/lib/eclipse/plugins/org.eclipse.jdt.debug.ui_3.2.2.r322_v20061205.jar 8a57d000-8a585000 r--s 00052000 fd:01 56938021 /usr/lib/eclipse/plugins/org.eclipse.cdt.managedbuilder.ui_3.1.2.200805011458.jar 8a585000-8a596000 r--s 000f4000 fd:01 56937918 /usr/lib/eclipse/plugins/org.eclipse.ant.ui_3.2.1.r321_v20060828.jar 8a596000-8a5b7000 r--s 00194000 fd:01 56938026 /usr/lib/eclipse/plugins/org.eclipse.cdt.ui_3.1.2.200805011458.jar 8a5b7000-8a637000 r--s 0074f000 fd:01 56937921 /usr/lib/eclipse/plugins/org.eclipse.jdt.ui_3.2.2.r322_v20070124.jar 8a637000-8a65e000 r--s 001a0000 fd:01 56937893 /usr/lib/eclipse/plugins/org.eclipse.debug.ui_3.2.2.r322_v20070202.jar 8a65e000-8a661000 ---p 8a65e000 00:00 0 8a661000-8a6af000 rwxp 8a661000 00:00 0 8a6af000-8a6b2000 ---p 8a6af000 00:00 0 8a6b2000-8a700000 rwxp 8a6b2000 00:00 0 8a700000-8a7fe000 rw-p 8a700000 00:00 0 8a7fe000-8a800000 ---p 8a7fe000 00:00 0 8a800000-8a803000 r--s 00014000 fd:01 56937908 /usr/lib/eclipse/plugins/org.eclipse.core.filebuffers_3.2.1.r321_v20060721.jar 8a803000-8a806000 r--s 0000e000 fd:01 56937882 /usr/lib/eclipse/plugins/org.eclipse.ui.views_3.2.1.M20060906-0800.jar 8a806000-8a822000 r--s 00155000 fd:01 56937910 /usr/lib/eclipse/plugins/org.eclipse.team.cvs.ui_3.2.2.M20061121.jar 8a822000-8a825000 rwxp 8a822000 00:00 0 8a825000-8a873000 rwxp 8a825000 00:00 0 8a873000-8a977000 rw-p 8a873000 00:00 0 8a977000-8aa00000 r--p 00000000 fd:01 56541484 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf 8aa00000-8aaff000 rw-p 8aa00000 00:00 0 8aaff000-8ab00000 ---p 8aaff000 00:00 0 8ab00000-8ab01000 r--s 00005000 fd:01 13239720 /tmp/46911889/eclipse/.update/1262952502868/1262952502944/eclipse1029115061150276878.tmp 8ab01000-8ab0c000 r-xp 00000000 fd:01 56952368 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-cairo-gtk-3236.so 8ab0c000-8ab0d000 rw-p 0000a000 fd:01 56952368 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-cairo-gtk-3236.so 8ab0d000-8ab13000 r-xp 00000000 fd:01 56952366 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-atk-gtk-3236.so 8ab13000-8ab14000 rw-p 00006000 fd:01 56952366 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-atk-gtk-3236.so 8ab14000-8ab1e000 r--s 00066000 fd:01 56937872 /usr/lib/eclipse/plugins/org.eclipse.ui.editors_3.2.1.r321_v20060721.jar 8ab1e000-8ab34000 r--s 000f0000 fd:01 56937898 /usr/lib/eclipse/plugins/org.eclipse.team.ui_3.2.1.M200608151725.jar 8ab34000-8ab3d000 r--s 00064000 fd:01 56937900 /usr/lib/eclipse/plugins/org.eclipse.search_3.2.1.r321_v20060726.jar 8ab3d000-8ad00000 rw-p 8ab3d000 00:00 0 8ad00000-8ad01000 r--s 00005000 fd:01 13239711 /tmp/46911889/eclipse/.update/1262952502868/1262952502943/eclipse8778977004608364202.tmp 8ad01000-8ad06000 r--s 00030000 fd:01 56937907 /usr/lib/eclipse/plugins/org.eclipse.text_3.2.0.v20060605-1400.jar 8ad06000-8ad0f000 r--s 00060000 fd:01 56937870 /usr/lib/eclipse/plugins/org.eclipse.ui.workbench.texteditor_3.2.0.v20060605-1400.jar 8ad0f000-8ad18000 r--s 0004f000 fd:01 56938022 /usr/lib/eclipse/plugins/org.eclipse.cdt.make.ui_3.1.2.200805011458.jar 8ad18000-8ad1c000 r--s 0001d000 fd:01 56937875 /usr/lib/eclipse/plugins/org.eclipse.ui.externaltools_3.1.101.r321_v20060802.jar 8ad1c000-8ad2a000 r--s 0007c000 fd:01 56938024 /usr/lib/eclipse/plugins/org.eclipse.cdt.debug.ui_3.1.2.200805011458.jar 8ad2a000-8ad6b000 rw-p 8ad2a000 00:00 0 8ad6b000-8ae00000 r--p 00000000 fd:01 56541486 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf 8ae00000-8aef0000 rw-p 8ae00000 00:00 0 8aef0000-8af00000 ---p 8aef0000 00:00 0 8af00000-8af01000 r--s 00005000 fd:01 13239702 /tmp/46911889/eclipse/.update/1262952502868/1262952502942/eclipse4202588223870022240.tmp 8af01000-8af04000 r--s 0001b000 fd:01 56936541 /usr/lib/eclipse/plugins/org.eclipse.help_3.2.2.R322_v20061213.jar 8af04000-8af0b000 r--s 00041000 fd:01 56937880 /usr/lib/eclipse/plugins/org.eclipse.ui.cheatsheets_3.2.1.R321_v20060720.jar 8af0b000-8af10000 r--s 00026000 fd:01 56937905 /usr/lib/eclipse/plugins/org.eclipse.ui.browser_3.2.0.v20060602.jar 8af10000-8af19000 r--s 0004f000 fd:01 56937859 /usr/lib/eclipse/plugins/org.eclipse.team.core_3.2.2.M20061114.jar 8af19000-8af1b000 r--s 0000e000 fd:01 56936542 /usr/lib/eclipse/plugins/org.eclipse.core.expressions_3.2.2.r322_v20070109a.jar 8af1b000-8af1d000 r--s 00011000 fd:01 56937857 /usr/lib/eclipse/plugins/org.eclipse.core.contenttype_3.2.0.v20060603.jar 8af1d000-8af1f000 r-xp 00000000 fd:01 57806459 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/85/1/.cp/os/linux/x86/liblocalfile_1_0_0.so 8af1f000-8af20000 rw-p 00001000 fd:01 57806459 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/85/1/.cp/os/linux/x86/liblocalfile_1_0_0.so 8af20000-8af21000 r--s 00003000 fd:01 56937879 /usr/lib/eclipse/plugins/org.eclipse.core.filesystem.linux.x86_1.0.0.v20060603.jar 8af21000-8af23000 r--s 00007000 fd:01 56937855 /usr/lib/eclipse/plugins/org.eclipse.core.filesystem_1.0.0.v20060603.jar 8af23000-8af26000 r--s 0001a000 fd:01 56937912 /usr/lib/eclipse/plugins/org.eclipse.core.resources.compatibility_3.2.0.v20060603.jar 8af26000-8af30000 r--s 00097000 fd:01 56937864 /usr/lib/eclipse/plugins/org.eclipse.core.resources_3.2.2.R32x_v20061218.jar 8af30000-8af32000 r-xp 00000000 fd:01 56296824 /usr/lib/pango/1.6.0/modules/pango-basic-fc.so 8af32000-8af33000 rw-p 00001000 fd:01 56296824 /usr/lib/pango/1.6.0/modules/pango-basic-fc.so 8af33000-8af39000 r--s 00000000 fd:01 23331166 /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-x86.cache-2 8af39000-8af3a000 r--s 00000000 fd:01 23331164 /var/cache/fontconfig/fd9505950c048a77dc4b710eb6a628ed-x86.cache-2 8af3a000-8af3d000 r--s 00000000 fd:01 23331161 /var/cache/fontconfig/ddc79d3ea06a7c6ffa86ede85f3bb5df-x86.cache-2 8af3d000-8af3e000 r--s 00000000 fd:01 23331163 /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-x86.cache-2 8af3e000-8af3f000 r--s 00000000 fd:01 23331020 /var/cache/fontconfig/a2ab74764b07279e7c36ddb1d302cf26-x86.cache-2 8af3f000-8af41000 r--s 00000000 fd:01 23331048 /var/cache/fontconfig/c69f04ab05004e31a6d5e715764f16d8-x86.cache-2 8af41000-8af44000 r--s 00000000 fd:01 23331162 /var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-x86.cache-2 8af44000-8af46000 r--s 00000000 fd:01 23331016 /var/cache/fontconfig/646addb8444faa74ee138aa00ab0b6a0-x86.cache-2 8af46000-8af48000 r--s 00000000 fd:01 23331160 /var/cache/fontconfig/20bd79ad97094406f7d1b9654bfbd926-x86.cache-2 8af48000-8af4b000 r--s 00000000 fd:01 23331159 /var/cache/fontconfig/9c0624108b9a2ae8552f664125be8356-x86.cache-2 8af4b000-8af52000 r--s 00000000 fd:01 23331052 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-x86.cache-2 8af52000-8af54000 r--s 00000000 fd:01 23331036 /var/cache/fontconfig/da1bd5ca8443ffe22927a23ce431d198-x86.cache-2 8af54000-8af56000 r--s 00000000 fd:01 23331169 /var/cache/fontconfig/ddd4086aec35a5275babba44bb759c3c-x86.cache-2 8af56000-8af78000 r--s 00000000 fd:01 23331034 /var/cache/fontconfig/365b55f210c0a22e9a19e35191240f32-x86.cache-2 8af78000-8afb0000 r-xp 00000000 fd:01 56952367 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-gtk-3236.so 8afb0000-8afb2000 rw-p 00037000 fd:01 56952367 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-gtk-3236.so 8afb2000-8afb3000 rw-p 8afb2000 00:00 0 8afb3000-8afb7000 r-xp 00000000 fd:01 56052980 /usr/lib/libXdmcp.so.6.0.0 8afb7000-8afb8000 rw-p 00003000 fd:01 56052980 /usr/lib/libXdmcp.so.6.0.0 8afb8000-8afdc000 r-xp 00000000 fd:01 56050951 /usr/lib/libexpat.so.1.5.2 8afdc000-8afde000 rw-p 00023000 fd:01 56050951 /usr/lib/libexpat.so.1.5.2 8afde000-8afe0000 r-xp 00000000 fd:01 56054651 /usr/lib/libXau.so.6.0.0 8afe0000-8afe1000 rw-p 00001000 fd:01 56054651 /usr/lib/libXau.so.6.0.0 8afe1000-8b009000 r-xp 00000000 fd:01 56055560 /usr/lib/libpixman-1.so.0.10.0 8b009000-8b00a000 rw-p 00027000 fd:01 56055560 /usr/lib/libpixman-1.so.0.10.0 8b00a000-8b010000 r-xp 00000000 fd:01 56063116 /usr/lib/libxcb-render.so.0.0.0 8b010000-8b011000 rw-p 00005000 fd:01 56063116 /usr/lib/libxcb-render.so.0.0.0 8b011000-8b014000 r-xp 00000000 fd:01 56056252 /usr/lib/libxcb-render-util.so.0.0.0 8b014000-8b015000 rw-p 00002000 fd:01 56056252 /usr/lib/libxcb-render-util.so.0.0.0 8b015000-8b038000 r-xp 00000000 fd:01 56054708 /usr/lib/libpng12.so.0.27.0 8b038000-8b039000 rw-p 00023000 fd:01 56054708 /usr/lib/libpng12.so.0.27.0 8b039000-8b04c000 r-xp 00000000 fd:01 56054732 /usr/lib/libdirect-1.0.so.0.1.0 8b04c000-8b04d000 rw-p 00012000 fd:01 56054732 /usr/lib/libdirect-1.0.so.0.1.0 8b04d000-8b054000 r-xp 00000000 fd:01 56054736 /usr/lib/libfusion-1.0.so.0.1.0 8b054000-8b055000 rw-p 00006000 fd:01 56054736 /usr/lib/libfusion-1.0.so.0.1.0 8b055000-8b0ba000 r-xp 00000000 fd:01 56054734 /usr/lib/libdirectfb-1.0.so.0.1.0 8b0ba000-8b0bc000 rw-p 00065000 fd:01 56054734 /usr/lib/libdirectfb-1.0.so.0.1.0 8b0bc000-8b0e4000 r-xp 00000000 fd:01 56051218 /usr/lib/libpcre.so.3.12.1 8b0e4000-8b0e5000 rw-p 00027000 fd:01 56051218 /usr/lib/libpcre.so.3.12.1 8b0e5000-8b0fc000 r-xp 00000000 fd:01 56063105 /usr/lib/libxcb.so.1.0.0 8b0fc000-8b0fd000 rw-p 00017000 fd:01 56063105 /usr/lib/libxcb.so.1.0.0 8b0fd000-8b0fe000 r-xp 00000000 fd:01 56051103 /usr/lib/libxcb-xlib.so.0.0.0 8b0fe000-8b0ff000 rw-p 00000000 fd:01 56051103 /usr/lib/libxcb-xlib.so.0.0.0 8b0ff000-8b170000 r-xp 00000000 fd:01 56051091 /usr/lib/libfreetype.so.6.3.18 8b170000-8b174000 rw-p 00070000 fd:01 56051091 /usr/lib/libfreetype.so.6.3.18 8b174000-8b19a000 r-xp 00000000 fd:01 56054967 /usr/lib/libpangoft2-1.0.so.0.2002.3 8b19a000-8b19b000 rw-p 00026000 fd:01 56054967 /usr/lib/libpangoft2-1.0.so.0.2002.3 8b19b000-8b1a3000 r-xp 00000000 fd:01 56055327 /usr/lib/libXcursor.so.1.0.2 8b1a3000-8b1a4000 rw-p 00007000 fd:01 56055327 /usr/lib/libXcursor.so.1.0.2 8b1a4000-8b1a9000 r-xp 00000000 fd:01 56054700 /usr/lib/libXrandr.so.2.1.0 8b1a9000-8b1aa000 rw-p 00005000 fd:01 56054700 /usr/lib/libXrandr.so.2.1.0 8b1aa000-8b1b1000 r-xp 00000000 fd:01 56050339 /usr/lib/libXi.so.6.0.0 8b1b1000-8b1b2000 rw-p 00007000 fd:01 56050339 /usr/lib/libXi.so.6.0.0 8b1b2000-8b1b4000 r-xp 00000000 fd:01 56054682 /usr/lib/libXinerama.so.1.0.0 8b1b4000-8b1b5000 rw-p 00001000 fd:01 56054682 /usr/lib/libXinerama.so.1.0.0 8b1b5000-8b1bd000 r-xp 00000000 fd:01 56054706 /usr/lib/libXrender.so.1.3.0 8b1bd000-8b1be000 rw-p 00007000 fd:01 56054706 /usr/lib/libXrender.so.1.3.0 8b1be000-8b1e8000 r-xp 00000000 fd:01 56051088 /usr/lib/libfontconfig.so.1.3.0 8b1e8000-8b1e9000 rw-p 0002a000 fd:01 56051088 /usr/lib/libfontconfig.so.1.3.0 8b1e9000-8b1f6000 r-xp 00000000 fd:01 56050373 /usr/lib/libXext.so.6.4.0 8b1f6000-8b1f7000 rw-p 0000c000 fd:01 56050373 /usr/lib/libXext.so.6.4.0 8b1f7000-8b261000 r-xp 00000000 fd:01 12419209 /usr/lib/libcairo.so.2.17.5 8b261000-8b263000 rw-p 0006a000 fd:01 12419209 /usr/lib/libcairo.so.2.17.5 8b263000-8b317000 r-xp 00000000 fd:01 56055474 /usr/lib/libglib-2.0.so.0.1600.6 8b317000-8b318000 rw-p 000b4000 fd:01 56055474 /usr/lib/libglib-2.0.so.0.1600.6 8b318000-8b31b000 r-xp 00000000 fd:01 56055473 /usr/lib/libgmodule-2.0.so.0.1600.6 8b31b000-8b31c000 rw-p 00002000 fd:01 56055473 /usr/lib/libgmodule-2.0.so.0.1600.6 8b31c000-8b357000 r-xp 00000000 fd:01 56050564 /usr/lib/libgobject-2.0.so.0.1600.6 8b357000-8b358000 rw-p 0003b000 fd:01 56050564 /usr/lib/libgobject-2.0.so.0.1600.6 8b358000-8b371000 r-xp 00000000 fd:01 56062544 /usr/lib/libatk-1.0.so.0.2209.1 8b371000-8b373000 rw-p 00018000 fd:01 56062544 /usr/lib/libatk-1.0.so.0.2209.1 8b373000-8b377000 r-xp 00000000 fd:01 56055324 /usr/lib/libXfixes.so.3.1.0 8b377000-8b378000 rw-p 00003000 fd:01 56055324 /usr/lib/libXfixes.so.3.1.0 8b378000-8b37a000 r-xp 00000000 fd:01 56055075 /usr/lib/libXdamage.so.1.1.0 8b37a000-8b37b000 rw-p 00001000 fd:01 56055075 /usr/lib/libXdamage.so.1.1.0 8b37b000-8b37d000 r-xp 00000000 fd:01 56055059 /usr/lib/libXcomposite.so.1.0.0 8b37d000-8b37e000 rw-p 00001000 fd:01 56055059 /usr/lib/libXcomposite.so.1.0.0 8b37e000-8b469000 r-xp 00000000 fd:01 56054703 /usr/lib/libX11.so.6.2.0 8b469000-8b46d000 rw-p 000ea000 fd:01 56054703 /usr/lib/libX11.so.6.2.0 8b46d000-8b4ab000 r-xp 00000000 fd:01 56054963 /usr/lib/libpango-1.0.so.0.2002.3 8b4ab000-8b4ad000 rw-p 0003d000 fd:01 56054963 /usr/lib/libpango-1.0.so.0.2002.3 8b4ad000-8b4b6000 r-xp 00000000 fd:01 56054965 /usr/lib/libpangocairo-1.0.so.0.2002.3 8b4b6000-8b4b7000 rw-p 00008000 fd:01 56054965 /usr/lib/libpangocairo-1.0.so.0.2002.3 8b4b7000-8b53a000 r-xp 00000000 fd:01 56053204 /usr/lib/libgdk-x11-2.0.so.0.1200.12 8b53a000-8b53d000 rw-p 00083000 fd:01 56053204 /usr/lib/libgdk-x11-2.0.so.0.1200.12 8b53d000-8b554000 r-xp 00000000 fd:01 56053203 /usr/lib/libgdk_pixbuf-2.0.so.0.1200.12 8b554000-8b555000 rw-p 00017000 fd:01 56053203 /usr/lib/libgdk_pixbuf-2.0.so.0.1200.12 8b555000-8b559000 r-xp 00000000 fd:01 56056086 /usr/lib/libXtst.so.6.1.0 8b559000-8b55a000 rw-p 00003000 fd:01 56056086 /usr/lib/libXtst.so.6.1.0 8b55a000-8b55e000 r-xp 00000000 fd:01 56050563 /usr/lib/libgthread-2.0.so.0.1600.6 8b55e000-8b55f000 rw-p 00003000 fd:01 56050563 /usr/lib/libgthread-2.0.so.0.1600.6 8b55f000-8b8e3000 r-xp 00000000 fd:01 56050034 /usr/lib/libgtk-x11-2.0.so.0.1200.12 8b8e3000-8b8e9000 rw-p 00383000 fd:01 56050034 /usr/lib/libgtk-x11-2.0.so.0.1200.12 8b8e9000-8b8ea000 rw-p 8b8e9000 00:00 0 8b8ea000-8b8ec000 r--s 00000000 fd:01 23331031 /var/cache/fontconfig/2c5ba8142dffc8bf0377700342b8ca1a-x86.cache-2 8b8ec000-8b8ee000 r--s 00000000 fd:01 23331055 /var/cache/fontconfig/de9486f0b47a4d768a594cb4198cb1c6-x86.cache-2 8b8ee000-8b8f5000 r--s 00000000 fd:01 23331029 /var/cache/fontconfig/d52a8644073d54c13679302ca1180695-x86.cache-2 8b8f5000-8b8f8000 r--s 00000000 fd:01 23331027 /var/cache/fontconfig/6386b86020ecc1ef9690bb720a13964f-x86.cache-2 8b8f8000-8b8fe000 r--s 00000000 fd:01 23331026 /var/cache/fontconfig/089dead882dea3570ffc31a9898cfb69-x86.cache-2 8b8fe000-8b900000 r--s 00000000 fd:01 23331047 /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-x86.cache-2 8b900000-8b903000 r--s 00000000 fd:01 23331035 /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86.cache-2 8b903000-8b95c000 r-xp 00000000 fd:01 4079620 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-pi-gtk-3236.so 8b95c000-8b95e000 rw-p 00059000 fd:01 4079620 /usr/lib/eclipse/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-pi-gtk-3236.so 8b95e000-8b961000 r--s 00013000 fd:01 56936540 /usr/lib/eclipse/plugins/org.eclipse.core.commands_3.2.0.I20060605-1400.jar 8b961000-8b965000 r--s 0001a000 fd:01 56936544 /usr/lib/eclipse/plugins/org.eclipse.ui_3.2.1.M20061108.jar 8b965000-8b975000 r--s 00183000 fd:01 56936528 /usr/lib/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.2.2.v3236.jar 8b975000-8b976000 r--s 00002000 fd:01 56936539 /usr/lib/eclipse/plugins/org.eclipse.swt_3.2.2.v3236b.jar 8b976000-8b986000 r--s 000b9000 fd:01 56937884 /usr/lib/eclipse/plugins/org.eclipse.jface_3.2.2.M20061214-1200.jar 8b986000-8b987000 r--s 00000000 fd:01 56951051 /usr/lib/eclipse/plugins/org.eclipse.ui.workbench.compatibility_3.2.0.I20060605-1400/compatibility.jar 8b987000-8b9be000 r--s 002bf000 fd:01 56936538 /usr/lib/eclipse/plugins/org.eclipse.ui.workbench_3.2.2.M20070119-0800.jar 8b9be000-8b9db000 r--s 0017c000 fd:01 56937894 /usr/lib/eclipse/plugins/org.eclipse.ui.ide_3.2.1.M20060915-1030.jar 8b9db000-8b9dd000 r--s 00013000 fd:01 56937866 /usr/lib/eclipse/plugins/org.eclipse.core.runtime.compatibility_3.1.100.v20060603.jar 8b9dd000-8b9df000 r--s 00011000 fd:01 56937899 /usr/lib/eclipse/plugins/org.eclipse.core.jobs_3.2.0.v20060603.jar 8b9df000-8b9e2000 r--s 00014000 fd:01 56937867 /usr/lib/eclipse/plugins/org.eclipse.equinox.preferences_3.2.1.R32x_v20060717.jar 8b9e2000-8b9e3000 r--s 00004000 fd:01 56937869 /usr/lib/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth_3.2.0.v20060601.jar 8b9e3000-8b9e4000 r--s 00001000 fd:01 56950856 /usr/lib/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907/runtime_registry_compatibility.jar 8b9e4000-8b9e8000 r--s 00020000 fd:01 56937886 /usr/lib/eclipse/plugins/org.eclipse.equinox.registry_3.2.1.R32x_v20060814.jar 8b9e8000-8b9ea000 r--s 00012000 fd:01 56936543 /usr/lib/eclipse/plugins/org.eclipse.core.runtime_3.2.0.v20060603.jar 8b9ea000-8b9fe000 r-xp 00000000 fd:01 56885333 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libnet.so 8b9fe000-8b9ff000 rw-p 00013000 fd:01 56885333 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libnet.so 8b9ff000-8ba02000 ---p 8b9ff000 00:00 0 8ba02000-8ba50000 rwxp 8ba02000 00:00 0 8ba50000-8ba53000 ---p 8ba50000 00:00 0 8ba53000-8baa1000 rwxp 8ba53000 00:00 0 8baa1000-8baa4000 ---p 8baa1000 00:00 0 8baa4000-8baf2000 rwxp 8baa4000 00:00 0 8baf2000-8baff000 r--s 000c5000 fd:01 56936536 /usr/lib/eclipse/plugins/org.eclipse.osgi_3.2.2.R32x_v20070118.jar 8baff000-8bb02000 rwxp 8baff000 00:00 0 8bb02000-8bb50000 rwxp 8bb02000 00:00 0 8bb50000-8bb51000 ---p 8bb50000 00:00 0 8bb51000-8bbd1000 rwxp 8bb51000 00:00 0 8bbd1000-8bbd4000 ---p 8bbd1000 00:00 0 8bbd4000-8bc22000 rwxp 8bbd4000 00:00 0 8bc22000-8bc25000 ---p 8bc22000 00:00 0 8bc25000-8bca3000 rwxp 8bc25000 00:00 0 8bca3000-8bca6000 ---p 8bca3000 00:00 0 8bca6000-8bd24000 rwxp 8bca6000 00:00 0 8bd24000-8bd27000 ---p 8bd24000 00:00 0 8bd27000-8bd75000 rwxp 8bd27000 00:00 0 8bd75000-8beaf000 r--p 00000000 fd:01 32522241 /usr/lib/locale/locale-archive 8beaf000-8beb2000 ---p 8beaf000 00:00 0 8beb2000-8bf00000 rwxp 8beb2000 00:00 0 8bf00000-8c000000 rw-p 8bf00000 00:00 0 8c000000-8c001000 r--s 00005000 fd:01 13239693 /tmp/46911889/eclipse/.update/1262952502868/1262952502941/eclipse2133788706651572460.tmp 8c001000-8c008000 r-xp 00000000 fd:01 56885319 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libnio.so 8c008000-8c009000 rw-p 00006000 fd:01 56885319 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libnio.so 8c009000-8c00c000 ---p 8c009000 00:00 0 8c00c000-8c05a000 rwxp 8c00c000 00:00 0 8c05a000-8c05b000 ---p 8c05a000 00:00 0 8c05b000-8c0db000 rwxp 8c05b000 00:00 0 8c0db000-8c10e000 rw-p 8c0db000 00:00 0 8c10e000-8c29d000 r--s 033c4000 fd:01 56885360 /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar 8c29d000-8c29e000 ---p 8c29d000 00:00 0 8c29e000-8c31e000 rwxp 8c29e000 00:00 0 8c31e000-8c31f000 ---p 8c31e000 00:00 0 8c31f000-8c3be000 rwxp 8c31f000 00:00 0 8c3be000-8c3df000 rwxp 8c3be000 00:00 0 8c3df000-8c3ee000 rwxp 8c3df000 00:00 0 8c3ee000-8c4c1000 rwxp 8c3ee000 00:00 0 8c4c1000-8c4e0000 rwxp 8c4c1000 00:00 0 8c4e0000-8c501000 rwxp 8c4e0000 00:00 0 8c501000-8c510000 rwxp 8c501000 00:00 0 8c510000-8c5e2000 rwxp 8c510000 00:00 0 8c5e2000-8c5ff000 rwxp 8c5e2000 00:00 0 8c5ff000-90400000 rwxp 8c5ff000 00:00 0 90400000-94600000 rwxp 90400000 00:00 0 94600000-96230000 rwxp 94600000 00:00 0 96230000-b0990000 rwxp 96230000 00:00 0 b0990000-b41c0000 rwxp b0990000 00:00 0 b41c0000-b4200000 rwxp b41c0000 00:00 0 b4200000-b4203000 r--s 00014000 fd:01 56937911 /usr/lib/eclipse/plugins/org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar b4203000-b420c000 r--s 00065000 fd:01 56428181 /usr/share/java/gnome-java-bridge.jar b420c000-b4216000 rwxp b420c000 00:00 0 b4216000-b42cc000 rwxp b4216000 00:00 0 b42cc000-b4534000 rwxp b42cc000 00:00 0 b4534000-b72cc000 rwxp b4534000 00:00 0 b72cc000-b72d3000 r-xp 00000000 fd:01 56885348 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libzip.so b72d3000-b72d4000 rw-p 00006000 fd:01 56885348 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libzip.so b72d4000-b72f8000 r-xp 00000000 fd:01 56885338 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libjava.so b72f8000-b72fa000 rw-p 00023000 fd:01 56885338 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libjava.so b72fa000-b7304000 r-xp 00000000 fd:01 43745526 /lib/i686/cmov/libnss_files-2.7.so b7304000-b7306000 rw-p 00009000 fd:01 43745526 /lib/i686/cmov/libnss_files-2.7.so b7306000-b730f000 r-xp 00000000 fd:01 43745530 /lib/i686/cmov/libnss_nis-2.7.so b730f000-b7311000 rw-p 00008000 fd:01 43745530 /lib/i686/cmov/libnss_nis-2.7.so b7311000-b7326000 r-xp 00000000 fd:01 43745492 /lib/i686/cmov/libnsl-2.7.so b7326000-b7328000 rw-p 00014000 fd:01 43745492 /lib/i686/cmov/libnsl-2.7.so b7328000-b732a000 rw-p b7328000 00:00 0 b732a000-b732b000 r--s 00000000 fd:01 56983775 /usr/lib/eclipse/plugins/org.eclipse.cdt.core.linux_3.1.2.200805011458/cdt_linux.jar b732b000-b732e000 r--s 00011000 fd:01 56937876 /usr/lib/eclipse/plugins/org.eclipse.equinox.common_3.2.0.v20060603.jar b732e000-b733a000 r-xp 00000000 fd:01 56885355 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libverify.so b733a000-b733b000 rw-p 0000c000 fd:01 56885355 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libverify.so b733b000-b7343000 rw-s 00000000 fd:01 13156359 /tmp/hsperfdata_root/2069 b7343000-b734a000 r-xp 00000000 fd:01 43745537 /lib/i686/cmov/librt-2.7.so b734a000-b734c000 rw-p 00006000 fd:01 43745537 /lib/i686/cmov/librt-2.7.so b734c000-b734f000 ---p b734c000 00:00 0 b734f000-b739d000 rwxp b734f000 00:00 0 b739d000-b73c1000 r-xp 00000000 fd:01 43745489 /lib/i686/cmov/libm-2.7.so b73c1000-b73c3000 rw-p 00023000 fd:01 43745489 /lib/i686/cmov/libm-2.7.so b73c3000-b79a7000 r-xp 00000000 fd:01 56885357 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/server/libjvm.so b79a7000-b79f1000 rw-p 005e3000 fd:01 56885357 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/server/libjvm.so b79f1000-b7e13000 rw-p b79f1000 00:00 0 b7e13000-b7f68000 r-xp 00000000 fd:01 43745483 /lib/i686/cmov/libc-2.7.so b7f68000-b7f69000 r--p 00155000 fd:01 43745483 /lib/i686/cmov/libc-2.7.so b7f69000-b7f6b000 rw-p 00156000 fd:01 43745483 /lib/i686/cmov/libc-2.7.so b7f6b000-b7f6e000 rw-p b7f6b000 00:00 0 b7f6e000-b7f70000 r-xp 00000000 fd:01 43745487 /lib/i686/cmov/libdl-2.7.so b7f70000-b7f72000 rw-p 00001000 fd:01 43745487 /lib/i686/cmov/libdl-2.7.so b7f72000-b7f75000 r-xp 00000000 fd:01 56885318 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/jli/libjli.so b7f75000-b7f76000 rw-p 00003000 fd:01 56885318 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/jli/libjli.so b7f76000-b7f8b000 r-xp 00000000 fd:01 43745535 /lib/i686/cmov/libpthread-2.7.so b7f8b000-b7f8d000 rw-p 00014000 fd:01 43745535 /lib/i686/cmov/libpthread-2.7.so b7f8d000-b7f90000 rw-p b7f8d000 00:00 0 b7f90000-b7fa4000 r-xp 00000000 fd:01 56050556 /usr/lib/libz.so.1.2.3.3 b7fa4000-b7fa5000 rw-p 00013000 fd:01 56050556 /usr/lib/libz.so.1.2.3.3 b7fa5000-b7fa9000 r--s 00079000 fd:01 56886388 /usr/lib/jvm/java-6-openjdk/jre/lib/jsse.jar b7fa9000-b7fab000 r--s 00007000 fd:01 56937914 /usr/lib/eclipse/startup.jar b7fab000-b7fb2000 r-xp 00000000 fd:01 43745493 /lib/i686/cmov/libnss_compat-2.7.so b7fb2000-b7fb4000 rw-p 00006000 fd:01 43745493 /lib/i686/cmov/libnss_compat-2.7.so b7fb4000-b7fbb000 r-xp 00000000 fd:01 56885335 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/native_threads/libhpi.so b7fbb000-b7fbc000 rw-p 00006000 fd:01 56885335 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/native_threads/libhpi.so b7fbc000-b7fbd000 rwxp b7fbc000 00:00 0 b7fbd000-b7fbe000 r--p b7fbd000 00:00 0 b7fbe000-b7fc0000 rw-p b7fbe000 00:00 0 b7fc0000-b7fc1000 r-xp b7fc0000 00:00 0 [vdso] b7fc1000-b7fdb000 r-xp 00000000 fd:01 43745317 /lib/ld-2.7.so b7fdb000-b7fdd000 rw-p 0001a000 fd:01 43745317 /lib/ld-2.7.so bfaa8000-bfadc000 rwxp bffcb000 00:00 0 [stack] bfadc000-bfadd000 rw-p bffff000 00:00 0 VM Arguments: jvm_args: -Djava.library.path=/usr/lib/jni -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.2/classmap.db -Dgnu.gcj.runtime.VMClassLoader.library_control=never -Dosgi.locking=none java_command: /usr/lib/eclipse/startup.jar -os linux -ws gtk -arch x86 -launcher /usr/lib/eclipse/eclipse -name Eclipse -showsplash 600 -exitdata 3a8029 -install /usr/lib/eclipse -vm /usr/lib/jvm/java-6-openjdk/bin/java -vmargs -Djava.library.path=/usr/lib/jni -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.2/classmap.db -Dgnu.gcj.runtime.VMClassLoader.library_control=never -Dosgi.locking=none -jar /usr/lib/eclipse/startup.jar Launcher Type: SUN_STANDARD Environment Variables: JAVA_HOME=/usr/lib/jvm/java-6-openjdk PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin USERNAME=root LD_LIBRARY_PATH=/usr/lib/jvm/java-6-openjdk/jre/lib/i386/server:/usr/lib/jvm/java-6-openjdk/jre/lib/i386:/usr/lib/jvm/java-6-openjdk/jre/../lib/i386:/usr/lib/xulrunner SHELL=/bin/bash DISPLAY=localhost:10.0 Signal Handlers: SIGSEGV: [libjvm.so+0x57a830], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x57a830], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x464af0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x464af0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x464af0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x464af0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x4643a0], sa_mask[0]=0x00000000, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x4668e0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: [libjvm.so+0x4668e0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGTERM: [libjvm.so+0x4668e0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x4668e0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:5.0.3 uname:Linux 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686 libc:glibc 2.7 NPTL 2.7 rlimit: STACK 8192k, CORE 0k, NPROC infinity, NOFILE 1024, AS infinity load average:0.10 0.17 0.11 CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 15 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3 Memory: 4k page, physical 2076144k(98736k free), swap 1048568k(1046352k free) vm_info: OpenJDK Server VM (1.6.0_0-b11) for linux-x86 JRE (1.6.0_0-b11), built on Apr 10 2009 12:14:17 by "buildd" with gcc 4.3.2 time: Fri Jan 8 14:13:22 2010 elapsed time: 353 seconds -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From gnu_andrew at member.fsf.org Fri Jan 8 11:20:59 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 8 Jan 2010 19:20:59 +0000 Subject: Status of 1.7 Message-ID: <17c6771e1001081120j59c42cdegc03a3093f6df6186@mail.gmail.com> Dear all, We've done some testing of the upcoming 1.7 release within Red Hat and don't see any regressions in JTreg. Deepak also now believes the new plugin to be of a quality suitable for an alpha release as part of 1.7. I have a few minor fixes to add (bumping the hs16 option to the latest revision and fixing a very minor issue with --with-parallel-jobs not working if used without an argument). I'd like to aim for a release on Wednesday. Does this sound suitable to everyone? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Fri Jan 8 11:39:29 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 8 Jan 2010 19:39:29 +0000 Subject: /hg/icedtea6: 2010-01-05 Gary Benson In-Reply-To: <20100106100639.GB3312@redhat.com> References: <17c6771e1001051002j18231f5bi57052cf77c0af5a1@mail.gmail.com> <20100106100639.GB3312@redhat.com> Message-ID: <17c6771e1001081139n4aa95b0dp9698ef27bafe1dae@mail.gmail.com> 2010/1/6 Gary Benson : > Andrew John Hughes wrote: >> 2010/1/5 ?: >> > changeset c99b9280fdcf in /hg/icedtea6 >> > details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c99b9280fdcf >> > author: Gary Benson >> > date: Tue Jan 05 10:09:26 2010 +0000 >> > >> > ? 2010-01-05 Gary Benson >> > >> > ? ? * patches/zero/6909153.patch: New file. >> > ? ? * patches/zero/6913869.patch: Likewise. >> > ? ? * Makefile.am (ICEDTEA_PATCHES): Added the above. >> >> Err... these are probably great and all, but I don't know what >> they are without looking up the Sun bug reports. ?This ChangeLog >> is pretty unhelpful in working out what these do and I didn't >> see a mail to the list. or anything on the wiki. ?It's just I'm >> well aware of what a pain this can be when patches later break >> or need to be dropped. > > The point of that directory is that every patch in there is in > upstream OpenJDK, so, no patch in there should ever be ported to > icedtea7 (because that already has them, or will do very shortly) > and if one fails to apply it's almost certainly because it has > filtered into the HotSpot tarball we're using. > That doesn't mean they shouldn't be documented. I've added the two new ones to http://icedtea.classpath.org/wiki/IcedTea_JDK6_Patches Please make sure to add future patches and use a more useful comment than 'New file' in the ChangeLog. They will break for other reasons. For one thing, we have a HotSpot update (to HS16) coming post-b18. > Cheers, > Gary > > -- > http://gbenson.net/ > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Fri Jan 8 15:55:56 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 08 Jan 2010 23:55:56 +0000 Subject: /hg/icedtea: Include Mercurial revisions and build distribution ... Message-ID: changeset aaf3cf416fb4 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=aaf3cf416fb4 author: Andrew John Hughes date: Sat Jan 09 00:01:09 2010 +0000 Include Mercurial revisions and build distribution in version output. 2010-01-08 Andrew John Hughes * Makefile.am: Bump JDK revision and sha256sum to pick up updated version patch applied upstream. Calculate JDK and HotSpot Mercurial revisions if available and pass to build. Also pass DIST_NAME to build. * acinclude.m4: (IT_GET_LSB_DATA): Moved from configure.ac and extended to also obtain the name of the distribution from either lsb_release -is or $build_os. * configure.ac: Invoke IT_GET_LSB_DATA macro. diffstat: 5 files changed, 51 insertions(+), 86 deletions(-) ChangeLog | 16 +++++++++ Makefile.am | 23 +++++++++---- acinclude.m4 | 18 ++++++++++ configure.ac | 12 ------- patches/icedtea-version.patch | 68 ----------------------------------------- diffs (204 lines): diff -r 7e9ed32b98d7 -r aaf3cf416fb4 ChangeLog --- a/ChangeLog Thu Jan 07 19:41:31 2010 +0000 +++ b/ChangeLog Sat Jan 09 00:01:09 2010 +0000 @@ -1,3 +1,19 @@ 2010-01-07 Andrew John Hughes + + * Makefile.am: + Bump JDK revision and sha256sum to pick + up updated version patch applied upstream. + Calculate JDK and HotSpot Mercurial revisions + if available and pass to build. Also pass + DIST_NAME to build. + * acinclude.m4: + (IT_GET_LSB_DATA): Moved from configure.ac + and extended to also obtain the name of + the distribution from either lsb_release -is + or $build_os. + * configure.ac: + Invoke IT_GET_LSB_DATA macro. + 2010-01-07 Andrew John Hughes Bump to b78. diff -r 7e9ed32b98d7 -r aaf3cf416fb4 Makefile.am --- a/Makefile.am Thu Jan 07 19:41:31 2010 +0000 +++ b/Makefile.am Sat Jan 09 00:01:09 2010 +0000 @@ -6,7 +6,7 @@ HOTSPOT_CHANGESET = 54dde9f9887d HOTSPOT_CHANGESET = 54dde9f9887d JAXP_CHANGESET = f0f127b93c9e JAXWS_CHANGESET = 4ca731fe3154 -JDK_CHANGESET = 35224dd04ddb +JDK_CHANGESET = cd86da3affff LANGTOOLS_CHANGESET = 21591a03bfbe OPENJDK_CHANGESET = f1cf9e78bbad @@ -14,7 +14,7 @@ HOTSPOT_SHA256SUM = 1127102aa1230d26da6b HOTSPOT_SHA256SUM = 1127102aa1230d26da6b73118576aef872fb2e86d0d946797da737e64c91d6fc JAXP_SHA256SUM = 89f002ed4e6e4b6449e453284b31c4cbe466dedddeeb20249415c6edb10b52cb JAXWS_SHA256SUM = 62059bb48e5dad09060bcb79539562f596c77df48345bb35f0e26e815d1cfa6b -JDK_SHA256SUM = b817bc7703acae21abc57d75eb16ac47d724da25253156aebc90f75c92a267a4 +JDK_SHA256SUM = 31efd51fc265334046e72b202bf507c1c282d181ce9037e7fcce6215d2fef156 LANGTOOLS_SHA256SUM = 4bff3af10a14048419bd144a39af2daa82756ca8ec226950d05b91ff99b1d0cc OPENJDK_SHA256SUM = df47020bf65614156e363a2170ee96f2959e08e62f9eaedacd3591147f858c00 @@ -238,7 +238,6 @@ endif # Patch list ICEDTEA_PATCHES = \ - patches/icedtea-version.patch \ patches/hotspot/$(HSBUILD)/icedtea-version.patch \ patches/icedtea-copy-plugs.patch \ patches/hotspot/$(HSBUILD)/icedtea-text-relocations.patch \ @@ -1498,8 +1497,16 @@ clean-patch: stamps/versioning.stamp: stamps/patch.stamp cp openjdk/jdk/make/common/shared/Defs.gmk Defs.gmk.bak - if [ -e $(abs_top_srcdir)/.hg ] && which $(HG) >/dev/null; then \ - revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{node|short}')`" ; \ + if which $(HG) >/dev/null; then \ + if [ -e $(abs_top_srcdir)/.hg ] ; then \ + revision="+r`(cd $(abs_top_srcdir); $(HG) tip --template '{node|short}')`" ; \ + fi ; \ + if [ -e openjdk/jdk/.hg ] ; then \ + jdk_rev="r`(cd openjdk/jdk; $(HG) tip --template '{node|short}')`" ; \ + fi ; \ + if [ -e openjdk/hotspot/.hg ] ; then \ + hotspot_rev="r`(cd openjdk/hotspot; $(HG) tip --template '{node|short}')`" ; \ + fi ; \ fi ; \ icedtea_version="$(PACKAGE_VERSION)$${revision}" ; \ if ! test "x$(WITH_CACAO)" = "xno"; then \ @@ -1510,9 +1517,11 @@ stamps/versioning.stamp: stamps/patch.st else \ echo "JDK_DERIVATIVE_NAME=IcedTea7 $${icedtea_version}" \ >>openjdk/jdk/make/common/shared/Defs.gmk ; \ - fi + fi ; \ + echo "JDK_REVID=$${jdk_rev}" >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + echo "HOTSPOT_REVID=$${hotspot_rev}" >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + echo "DISTRO_NAME=$(DIST_NAME)" >>openjdk/jdk/make/common/shared/Defs.gmk ; \ if [ -n "$(PKGVERSION)" ]; then \ - icedtea_version="$${icedtea_version} ($(PKGVERSION))" ; \ echo "DISTRO_PACKAGE_VERSION=$(PKGVERSION)" \ >>openjdk/jdk/make/common/shared/Defs.gmk ; \ fi; \ diff -r 7e9ed32b98d7 -r aaf3cf416fb4 acinclude.m4 --- a/acinclude.m4 Thu Jan 07 19:41:31 2010 +0000 +++ b/acinclude.m4 Sat Jan 09 00:01:09 2010 +0000 @@ -1642,3 +1642,21 @@ AC_DEFUN([WITH_VISUALVM_ZIP], AM_CONDITIONAL(USE_ALT_VISUALVM_ZIP, test "x$ALT_VISUALVM_ZIP" != "xnot specified") AC_SUBST(ALT_VISUALVM_ZIP) ]) + +AC_DEFUN([IT_GET_LSB_DATA], +[ +if test -n "$LSB_RELEASE"; then + lsb_info="$($LSB_RELEASE -ds | sed 's/^"//;s/"$//')" + if test -n "$PKGVERSION"; then + DIST_ID="$lsb_info, package $PKGVERSION" + else + DIST_ID="Built on $lsb_info ($(date))" + fi + DIST_NAME="$($LSB_RELEASE -is | sed 's/^"//;s/"$//')" +else + DIST_ID="Custom build ($(date))" + DIST_NAME="$build_os" +fi +AC_SUBST(DIST_ID) +AC_SUBST(DIST_NAME) +]) diff -r 7e9ed32b98d7 -r aaf3cf416fb4 configure.ac --- a/configure.ac Thu Jan 07 19:41:31 2010 +0000 +++ b/configure.ac Sat Jan 09 00:01:09 2010 +0000 @@ -162,17 +162,7 @@ AC_ARG_WITH([pkgversion], [PKGVERSION=]) AC_SUBST(PKGVERSION) -if test -n "$LSB_RELEASE"; then - lsb_info="$($LSB_RELEASE -ds | sed 's/^"//;s/"$//')" - if test -n "$PKGVERSION"; then - DIST_ID="$lsb_info, package $PKGVERSION" - else - DIST_ID="Built on $lsb_info" - fi -else - DIST_ID="Custom build ($(date))" -fi -AC_SUBST(DIST_ID) +IT_GET_LSB_DATA SET_ARCH_DIRS SET_OS_DIRS diff -r 7e9ed32b98d7 -r aaf3cf416fb4 patches/icedtea-version.patch --- a/patches/icedtea-version.patch Thu Jan 07 19:41:31 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -diff -Nru openjdk.orig/jdk/make/common/shared/Defs.gmk openjdk/jdk/make/common/shared/Defs.gmk ---- openjdk.orig/jdk/make/common/shared/Defs.gmk 2009-02-05 08:44:12.000000000 +0000 -+++ openjdk/jdk/make/common/shared/Defs.gmk 2009-02-10 23:04:00.000000000 +0000 -@@ -189,7 +189,7 @@ - - # Default names - ifdef OPENJDK -- LAUNCHER_NAME = openjdk -+ LAUNCHER_NAME = java - PRODUCT_NAME = OpenJDK - PRODUCT_SUFFIX = Runtime Environment - JDK_RC_PLATFORM_NAME = Platform ---- openjdk/jdk/src/share/classes/sun/misc/Version.java.template~1~ 2008-11-25 01:04:53.000000000 -0800 -+++ openjdk/jdk/src/share/classes/sun/misc/Version.java.template 2009-02-20 09:03:25.000000000 -0800 -@@ -41,6 +41,12 @@ - private static final String java_runtime_version = - "@@java_runtime_version@@"; - -+ private static final String jdk_derivative_name = -+ "@@jdk_derivative_name@@"; -+ -+ private static final String distro_package_version = -+ "@@distro_package_version@@"; -+ - static { - init(); - } -@@ -81,12 +87,26 @@ - /* First line: platform version. */ - ps.println(launcher_name + " version \"" + java_version + "\""); - -+ String java_vm_name = System.getProperty("java.vm.name"); -+ - /* Second line: runtime version (ie, libraries). */ -- ps.println(java_runtime_name + " (build " + -- java_runtime_version + ")"); -+ StringBuilder sb = new StringBuilder(); -+ if (java_vm_name.toLowerCase().startsWith("cacao")) { -+ sb.append("IcedTea Runtime Environment"); -+ } else { -+ sb.append(java_runtime_name); -+ } -+ if (jdk_derivative_name.length() > 0) { -+ sb.append(" (").append(jdk_derivative_name).append(")"); -+ } -+ if (distro_package_version.length() > 0) { -+ sb.append(" (").append(distro_package_version).append(")"); -+ } else { -+ sb.append(" (build ").append(java_runtime_version).append(")"); -+ } -+ ps.println(sb.toString()); - - /* Third line: JVM information. */ -- String java_vm_name = System.getProperty("java.vm.name"); - String java_vm_version = System.getProperty("java.vm.version"); - String java_vm_info = System.getProperty("java.vm.info"); - ps.println(java_vm_name + " (build " + java_vm_version + ", " + ---- openjdk/jdk/make/java/version/Makefile.~1~ 2008-11-25 01:01:15.000000000 -0800 -+++ openjdk/jdk/make/java/version/Makefile 2009-02-20 09:03:56.000000000 -0800 -@@ -39,6 +39,8 @@ - $(SED) -e 's/@@launcher_name@@/$(LAUNCHER_NAME)/g' \ - -e 's/@@java_version@@/$(RELEASE)/g' \ - -e 's/@@java_runtime_version@@/$(FULL_VERSION)/g' \ -+ -e 's/@@jdk_derivative_name@@/$(JDK_DERIVATIVE_NAME)/g' \ -+ -e 's/@@distro_package_version@@/$(DISTRO_PACKAGE_VERSION)/g' \ - -e 's/@@java_runtime_name@@/$(RUNTIME_NAME)/g' \ - $< > $@.temp - @$(MV) $@.temp $@ From bugzilla-daemon at icedtea.classpath.org Sat Jan 9 00:21:44 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 09 Jan 2010 08:21:44 +0000 Subject: [Bug 427] New: Openjdk doesn't load a scratch-ticket on a HP Compaq Presario CQ60-laptop. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=427 Summary: Openjdk doesn't load a scratch-ticket on a HP Compaq Presario CQ60-laptop. Product: IcedTea Version: unspecified Platform: PC URL: http://www.apberget.se OS/Version: Linux Status: NEW Severity: trivial Priority: P1 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: kristoffer.grundstrom1983 at gmail.com CC: kristoffer.grundstrom1983 at gmail.com Description of problem: I'm not sure if it's an error in Firefox or if it's a openjdk-issue. I go to Apberget.se & login to scratch the ticket & the ticket doesn't load. I just recently installed 2010.0 on this computer from a DVD & I'm fully updated. Version-Release number of selected component (if applicable): 3.5.6-0.1mdv2010.0 for Firefox & 1.6.0.0-0.20.b16.11mdv2010.0 for java-openjdk How reproducible: I've seen this many times using the Openjdk-version of Java. Steps to Reproduce: 1. Open Firefox. 2. Go to Apberget.se or similar site that's got java-made scratch-ticket/s. 3. Open the ticket. 4. Voila! A message saying "To play, install Java now." instead of showing the ticket. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From gbenson at redhat.com Mon Jan 11 00:57:20 2010 From: gbenson at redhat.com (Gary Benson) Date: Mon, 11 Jan 2010 08:57:20 +0000 Subject: /hg/icedtea6: 2010-01-05 Gary Benson In-Reply-To: <17c6771e1001081139n4aa95b0dp9698ef27bafe1dae@mail.gmail.com> References: <17c6771e1001051002j18231f5bi57052cf77c0af5a1@mail.gmail.com> <20100106100639.GB3312@redhat.com> <17c6771e1001081139n4aa95b0dp9698ef27bafe1dae@mail.gmail.com> Message-ID: <20100111085720.GA6454@redhat.com> Andrew John Hughes wrote: > 2010/1/6 Gary Benson : > > ...if one fails to apply it's almost certainly because it > > has filtered into the HotSpot tarball we're using. [snip] > They will break for other reasons. For one thing, we have > a HotSpot update (to HS16) coming post-b18. How is that not a patch filtering into the HotSpot tarball we're using? Cheers, Gary -- http://gbenson.net/ From doko at ubuntu.com Mon Jan 11 01:36:15 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 11 Jan 2010 10:36:15 +0100 Subject: Status of 1.7 In-Reply-To: <17c6771e1001081120j59c42cdegc03a3093f6df6186@mail.gmail.com> References: <17c6771e1001081120j59c42cdegc03a3093f6df6186@mail.gmail.com> Message-ID: <4B4AF10F.7040608@ubuntu.com> On 08.01.2010 20:20, Andrew John Hughes wrote: > Dear all, > > We've done some testing of the upcoming 1.7 release within Red Hat and > don't see any regressions in JTreg. Deepak also now believes the new > plugin to be of a quality suitable for an alpha release as part of > 1.7. > > I have a few minor fixes to add (bumping the hs16 option to the latest > revision and fixing a very minor issue with --with-parallel-jobs not > working if used without an argument). I'd like to aim for a release > on Wednesday. > > Does this sound suitable to everyone? seen two issues: - 1.7 doesn't build on sparc64, at least on Debian. Asked if it does build on Fedora currently, but didn't get a reply yet. - the jpeg7 patch probably needs to be reverted/changed. It seems to be wrong to use another libjpeg than what was used for the build. See http://bugs.debian.org/563999. "sun.awt.image.ImageFormatException: Wrong JPEG library version: library is 70, caller expects 62. I can't even build using jpeg7 because of conflicting build dependencies. So either revert this patch, or stick to the jpeg version which was used for the build. Matthias From doko at ubuntu.com Mon Jan 11 01:56:55 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 11 Jan 2010 10:56:55 +0100 Subject: support for Hitachi SH Message-ID: <4B4AF5E7.2090009@ubuntu.com> Nobuhiro recently added support for the Hitachi SH, verifying that it does build, and example programs run. jtreg test results are still outstanding. Like mips/mipsel SH can be big or little endian, the Debian port is little endian only. I'll add this patch to the IcedTea6 branch; it could be added to the 1.7 branch as well, only adding stuff architecture specific stuff. Matthias -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: sh4-support.diff Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20100111/677a4d47/sh4-support.diff From gbenson at redhat.com Mon Jan 11 02:01:20 2010 From: gbenson at redhat.com (Gary Benson) Date: Mon, 11 Jan 2010 10:01:20 +0000 Subject: support for Hitachi SH In-Reply-To: <4B4AF5E7.2090009@ubuntu.com> References: <4B4AF5E7.2090009@ubuntu.com> Message-ID: <20100111100120.GB6454@redhat.com> Hi Matthias, Is this with Zero and/or Cacao? Cheers, Gary Matthias Klose wrote: > Nobuhiro recently added support for the Hitachi SH, verifying that it > does build, and example programs run. jtreg test results are still > outstanding. Like mips/mipsel SH can be big or little endian, the Debian > port is little endian only. > > I'll add this patch to the IcedTea6 branch; it could be added to the 1.7 > branch as well, only adding stuff architecture specific stuff. > > Matthias > --- openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2009-12-24 14:56:12.000000000 +0900 > +++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2009-12-24 15:02:51.000000000 +0900 > @@ -1753,7 +1753,8 @@ > {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"}, > {EM_MIPS, EM_MIPS, ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"}, > {EM_PARISC, EM_PARISC, ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"}, > - {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"} > + {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"}, > + {EM_SH, EM_SH, ELFCLASS32, ELFDATA2LSB, (char*)"Hitachi SH"} /* Support little endian only*/ > }; > > #if (defined IA32) > @@ -1784,9 +1785,11 @@ > static Elf32_Half running_arch_code=EM_MIPS; > #elif (defined M68K) > static Elf32_Half running_arch_code=EM_68K; > + #elif (defined SH) > + static Elf32_Half running_arch_code=EM_SH; > #else > #error Method os::dll_load requires that one of following is defined:\ > - IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K > + IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH > #endif > > // Identify compatability class for VM's architecture and library's architecture > --- openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-12-24 14:56:10.000000000 +0900 > +++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-12-24 15:05:27.000000000 +0900 > @@ -47,7 +47,8 @@ > #define X_S390X 12 > #define X_SPARC 13 > #define X_SPARCV9 14 > -#define X_ZERO 15 > +#define X_SH 15 > +#define X_ZERO 16 > > // ********************************** > // Make sure you set X_PLATFORM and X_ARCH defines correctly. > --- openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-12-24 15:11:52.000000000 +0900 > +++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-12-24 15:12:17.000000000 +0900 > @@ -121,6 +121,11 @@ > REQUIRED_CC_VER = 4.0 > REQUIRED_GCC_VER = 4.0.* > endif > + ifneq ("$(findstring sh,$(ARCH))", "") > + # sh4*, sh3* > + REQUIRED_CC_VER = 4.0 > + REQUIRED_GCC_VER = 4.0.* > + endif > # Option used to create a shared library > SHARED_LIBRARY_FLAG = -shared -mimpure-text > SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) > --- openjdk/corba/make/common/shared/Platform.gmk 2009-12-24 21:30:38.000000000 +0900 > +++ openjdk/corba/make/common/shared/Platform.gmk 2009-12-25 10:17:14.000000000 +0900 > @@ -263,6 +263,9 @@ > ifeq ($(ARCH), s390x) > ARCH_DATA_MODEL=64 > endif > + ifeq ($(ARCH), sh) > + ARCH_DATA_MODEL=32 > + endif > endif > endif From doko at ubuntu.com Mon Jan 11 02:03:15 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 11 Jan 2010 11:03:15 +0100 Subject: support for Hitachi SH In-Reply-To: <20100111100120.GB6454@redhat.com> References: <4B4AF5E7.2090009@ubuntu.com> <20100111100120.GB6454@redhat.com> Message-ID: <4B4AF763.9090109@ubuntu.com> On 11.01.2010 11:01, Gary Benson wrote: > Hi Matthias, > > Is this with Zero and/or Cacao? zero only, assuming that Nobuhiro did use the Debian package for the port. I don't know if SH would build on SH. Matthias From gbenson at redhat.com Mon Jan 11 02:23:20 2010 From: gbenson at redhat.com (Gary Benson) Date: Mon, 11 Jan 2010 10:23:20 +0000 Subject: support for Hitachi SH In-Reply-To: <4B4AF763.9090109@ubuntu.com> References: <4B4AF5E7.2090009@ubuntu.com> <20100111100120.GB6454@redhat.com> <4B4AF763.9090109@ubuntu.com> Message-ID: <20100111102320.GC6454@redhat.com> Matthias Klose wrote: > On 11.01.2010 11:01, Gary Benson wrote: > > Hi Matthias, > > > > Is this with Zero and/or Cacao? > > zero only, assuming that Nobuhiro did use the Debian package > for the port. I don't know if SH would build on SH. Cool. If you like, I can start the process of upstreaming it once you commit. Cheers, Gary -- http://gbenson.net/ From gbenson at icedtea.classpath.org Mon Jan 11 03:37:57 2010 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Mon, 11 Jan 2010 11:37:57 +0000 Subject: /hg/icedtea6: 2010-01-11 Gary Benson Message-ID: changeset 4b6ab0e5a0dd in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=4b6ab0e5a0dd author: Gary Benson date: Mon Jan 11 11:43:43 2010 +0000 2010-01-11 Gary Benson * patches/zero/6914622.patch: New file, imports changeset for Sun bug 6914622 from jdk7/hotspot-comp. * Makefile.am (ICEDTEA_PATCHES): Added the above. * contrib/checkopts/checkopts: Updated for the above. diffstat: 4 files changed, 110 insertions(+), 1 deletion(-) ChangeLog | 7 +++ Makefile.am | 1 contrib/checkopts/checkopts | 5 +- patches/zero/6914622.patch | 98 +++++++++++++++++++++++++++++++++++++++++++ diffs (149 lines): diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd ChangeLog --- a/ChangeLog Wed Jan 06 16:40:43 2010 -0500 +++ b/ChangeLog Mon Jan 11 11:43:43 2010 +0000 @@ -1,3 +1,10 @@ 2010-01-06 Deepak Bhole + + * patches/zero/6914622.patch: New file, imports changeset + for Sun bug 6914622 from jdk7/hotspot-comp. + * Makefile.am (ICEDTEA_PATCHES): Added the above. + * contrib/checkopts/checkopts: Updated for the above. + 2010-01-06 Deepak Bhole * plugin/icedteanp/IcedTeaNPPlugin.h: Remove debug specific line from diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd Makefile.am --- a/Makefile.am Wed Jan 06 16:40:43 2010 -0500 +++ b/Makefile.am Mon Jan 11 11:43:43 2010 +0000 @@ -201,6 +201,7 @@ ICEDTEA_PATCHES = \ patches/zero/6903453.patch \ patches/zero/6909153.patch \ patches/zero/6913869.patch \ + patches/zero/6914622.patch \ patches/icedtea-notice-safepoints.patch \ patches/icedtea-parisc-opt.patch \ patches/icedtea-lucene-crash.patch \ diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd contrib/checkopts/checkopts --- a/contrib/checkopts/checkopts Wed Jan 06 16:40:43 2010 -0500 +++ b/contrib/checkopts/checkopts Mon Jan 11 11:43:43 2010 +0000 @@ -23,6 +23,7 @@ class Flag: def test_values(self): if self.type == "bool": if self.name in ( + "PrintFlagsInitial", # already done :) "ExtendedDTraceProbes", # Solaris only "RequireSharedSpaces", # Not set up "PauseAtStartup"): # Just don't... @@ -62,7 +63,9 @@ class Main: def read_flags(self): out, err = subprocess.Popen( - [self.java, "-XX:+UnlockDiagnosticVMOptions", "-Xprintflags"], + [self.java, + "-XX:+UnlockDiagnosticVMOptions", + "-XX:+PrintFlagsInitial"], stdout = subprocess.PIPE, stderr = subprocess.PIPE).communicate() if err: diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd patches/zero/6914622.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6914622.patch Mon Jan 11 11:43:43 2010 +0000 @@ -0,0 +1,98 @@ +diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/arguments.cpp +--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 06 22:21:39 2010 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Thu Jan 07 16:24:17 2010 -0800 +@@ -2633,6 +2633,10 @@ + if (match_option(option, "-XX:-IgnoreUnrecognizedVMOptions", &tail)) { + IgnoreUnrecognizedVMOptions = false; + } ++ if (match_option(option, "-XX:+PrintFlagsInitial", &tail)) { ++ CommandLineFlags::printFlags(); ++ vm_exit(0); ++ } + } + + if (IgnoreUnrecognizedVMOptions) { +@@ -2795,11 +2799,9 @@ + CommandLineFlags::printSetFlags(); + } + +-#ifdef ASSERT + if (PrintFlagsFinal) { + CommandLineFlags::printFlags(); + } +-#endif + + return JNI_OK; + } +diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/globals.cpp +--- openjdk/hotspot/src/share/vm/runtime/globals.cpp Wed Jan 06 22:21:39 2010 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/globals.cpp Thu Jan 07 16:24:17 2010 -0800 +@@ -468,6 +468,8 @@ + assert(Arguments::check_vm_args_consistency(), "Some flag settings conflict"); + } + ++#endif // PRODUCT ++ + void CommandLineFlags::printFlags() { + // Print the flags sorted by name + // note: this method is called before the thread structure is in place +@@ -493,5 +495,3 @@ + } + FREE_C_HEAP_ARRAY(Flag*, array); + } +- +-#endif +diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/globals.hpp +--- openjdk/hotspot/src/share/vm/runtime/globals.hpp Wed Jan 06 22:21:39 2010 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp Thu Jan 07 16:24:17 2010 -0800 +@@ -211,7 +211,7 @@ + static bool wasSetOnCmdline(const char* name, bool* value); + static void printSetFlags(); + +- static void printFlags() PRODUCT_RETURN; ++ static void printFlags(); + + static void verify() PRODUCT_RETURN; + }; +@@ -327,9 +327,6 @@ + product(bool, UseMembar, false, \ + "(Unstable) Issues membars on thread state transitions") \ + \ +- product(bool, PrintCommandLineFlags, false, \ +- "Prints flags that appeared on the command line") \ +- \ + diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \ + "Enable normal processing of flags relating to field diagnostics")\ + \ +@@ -1967,9 +1964,6 @@ + "number of times a GC thread (minus the coordinator) " \ + "will sleep while yielding before giving up and resuming GC") \ + \ +- notproduct(bool, PrintFlagsFinal, false, \ +- "Print all command line flags after argument processing") \ +- \ + /* gc tracing */ \ + manageable(bool, PrintGC, false, \ + "Print message at garbage collect") \ +@@ -2269,11 +2263,20 @@ + "If false, restricts profiled locations to the root method only") \ + \ + product(bool, PrintVMOptions, trueInDebug, \ +- "print VM flag settings") \ ++ "Print flags that appeared on the command line") \ + \ + product(bool, IgnoreUnrecognizedVMOptions, false, \ + "Ignore unrecognized VM options") \ + \ ++ product(bool, PrintCommandLineFlags, false, \ ++ "Print flags specified on command line or set by ergonomics") \ ++ \ ++ product(bool, PrintFlagsInitial, false, \ ++ "Print all VM flags before argument processing and exit VM") \ ++ \ ++ product(bool, PrintFlagsFinal, false, \ ++ "Print all VM flags after argument and ergonomic processing") \ ++ \ + diagnostic(bool, SerializeVMOutput, true, \ + "Use a mutex to serialize output to tty and hotspot.log") \ + \ From gbenson at redhat.com Mon Jan 11 03:47:24 2010 From: gbenson at redhat.com (Gary Benson) Date: Mon, 11 Jan 2010 11:47:24 +0000 Subject: Command line options tester, now working Message-ID: <20100111114724.GD6454@redhat.com> Hi all, Back in December I committed a command line options tester that required a patch in order to run. This commit adds that patch. You can test your VM (boolean flags only for now) like this: cd icedtea6 contrib/checkopts/checkopts openjdk-ecj/build/linux-*/j2sdk-image/bin/java Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd ChangeLog --- a/ChangeLog Wed Jan 06 16:40:43 2010 -0500 +++ b/ChangeLog Mon Jan 11 11:43:43 2010 +0000 @@ -1,3 +1,10 @@ +2010-01-11 Gary Benson + + * patches/zero/6914622.patch: New file, imports changeset + for Sun bug 6914622 from jdk7/hotspot-comp. + * Makefile.am (ICEDTEA_PATCHES): Added the above. + * contrib/checkopts/checkopts: Updated for the above. + 2010-01-06 Deepak Bhole * plugin/icedteanp/IcedTeaNPPlugin.h: Remove debug specific line from diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd Makefile.am --- a/Makefile.am Wed Jan 06 16:40:43 2010 -0500 +++ b/Makefile.am Mon Jan 11 11:43:43 2010 +0000 @@ -201,6 +201,7 @@ patches/zero/6903453.patch \ patches/zero/6909153.patch \ patches/zero/6913869.patch \ + patches/zero/6914622.patch \ patches/icedtea-notice-safepoints.patch \ patches/icedtea-parisc-opt.patch \ patches/icedtea-lucene-crash.patch \ diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd contrib/checkopts/checkopts --- a/contrib/checkopts/checkopts Wed Jan 06 16:40:43 2010 -0500 +++ b/contrib/checkopts/checkopts Mon Jan 11 11:43:43 2010 +0000 @@ -23,6 +23,7 @@ def test_values(self): if self.type == "bool": if self.name in ( + "PrintFlagsInitial", # already done :) "ExtendedDTraceProbes", # Solaris only "RequireSharedSpaces", # Not set up "PauseAtStartup"): # Just don't... @@ -62,7 +63,9 @@ def read_flags(self): out, err = subprocess.Popen( - [self.java, "-XX:+UnlockDiagnosticVMOptions", "-Xprintflags"], + [self.java, + "-XX:+UnlockDiagnosticVMOptions", + "-XX:+PrintFlagsInitial"], stdout = subprocess.PIPE, stderr = subprocess.PIPE).communicate() if err: diff -r 175b5c7ee4c7 -r 4b6ab0e5a0dd patches/zero/6914622.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/zero/6914622.patch Mon Jan 11 11:43:43 2010 +0000 @@ -0,0 +1,98 @@ +diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/arguments.cpp +--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 06 22:21:39 2010 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Thu Jan 07 16:24:17 2010 -0800 +@@ -2633,6 +2633,10 @@ + if (match_option(option, "-XX:-IgnoreUnrecognizedVMOptions", &tail)) { + IgnoreUnrecognizedVMOptions = false; + } ++ if (match_option(option, "-XX:+PrintFlagsInitial", &tail)) { ++ CommandLineFlags::printFlags(); ++ vm_exit(0); ++ } + } + + if (IgnoreUnrecognizedVMOptions) { +@@ -2795,11 +2799,9 @@ + CommandLineFlags::printSetFlags(); + } + +-#ifdef ASSERT + if (PrintFlagsFinal) { + CommandLineFlags::printFlags(); + } +-#endif + + return JNI_OK; + } +diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/globals.cpp +--- openjdk/hotspot/src/share/vm/runtime/globals.cpp Wed Jan 06 22:21:39 2010 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/globals.cpp Thu Jan 07 16:24:17 2010 -0800 +@@ -468,6 +468,8 @@ + assert(Arguments::check_vm_args_consistency(), "Some flag settings conflict"); + } + ++#endif // PRODUCT ++ + void CommandLineFlags::printFlags() { + // Print the flags sorted by name + // note: this method is called before the thread structure is in place +@@ -493,5 +495,3 @@ + } + FREE_C_HEAP_ARRAY(Flag*, array); + } +- +-#endif +diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/globals.hpp +--- openjdk/hotspot/src/share/vm/runtime/globals.hpp Wed Jan 06 22:21:39 2010 -0800 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp Thu Jan 07 16:24:17 2010 -0800 +@@ -211,7 +211,7 @@ + static bool wasSetOnCmdline(const char* name, bool* value); + static void printSetFlags(); + +- static void printFlags() PRODUCT_RETURN; ++ static void printFlags(); + + static void verify() PRODUCT_RETURN; + }; +@@ -327,9 +327,6 @@ + product(bool, UseMembar, false, \ + "(Unstable) Issues membars on thread state transitions") \ + \ +- product(bool, PrintCommandLineFlags, false, \ +- "Prints flags that appeared on the command line") \ +- \ + diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \ + "Enable normal processing of flags relating to field diagnostics")\ + \ +@@ -1967,9 +1964,6 @@ + "number of times a GC thread (minus the coordinator) " \ + "will sleep while yielding before giving up and resuming GC") \ + \ +- notproduct(bool, PrintFlagsFinal, false, \ +- "Print all command line flags after argument processing") \ +- \ + /* gc tracing */ \ + manageable(bool, PrintGC, false, \ + "Print message at garbage collect") \ +@@ -2269,11 +2263,20 @@ + "If false, restricts profiled locations to the root method only") \ + \ + product(bool, PrintVMOptions, trueInDebug, \ +- "print VM flag settings") \ ++ "Print flags that appeared on the command line") \ + \ + product(bool, IgnoreUnrecognizedVMOptions, false, \ + "Ignore unrecognized VM options") \ + \ ++ product(bool, PrintCommandLineFlags, false, \ ++ "Print flags specified on command line or set by ergonomics") \ ++ \ ++ product(bool, PrintFlagsInitial, false, \ ++ "Print all VM flags before argument processing and exit VM") \ ++ \ ++ product(bool, PrintFlagsFinal, false, \ ++ "Print all VM flags after argument and ergonomic processing") \ ++ \ + diagnostic(bool, SerializeVMOutput, true, \ + "Use a mutex to serialize output to tty and hotspot.log") \ + \ From doko at icedtea.classpath.org Mon Jan 11 04:34:21 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 11 Jan 2010 12:34:21 +0000 Subject: /hg/icedtea6: Add zero support for Hitachi SH Message-ID: changeset 67c87339c398 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=67c87339c398 author: doko at ubuntu.com date: Mon Jan 11 13:35:12 2010 +0100 Add zero support for Hitachi SH 2009-01-11 Nobuhiro Iwamatsu Matthias Klose * patches/icedtea-sh4-support.patch: Add zero support for Hitachi SH. * Makefile.am (ICEDTEA_PATCHES): Apply the above. * NEWS: Mention SH support. diffstat: 4 files changed, 76 insertions(+), 1 deletion(-) ChangeLog | 7 ++++ Makefile.am | 3 + NEWS | 4 ++ patches/icedtea-sh4-support.patch | 63 +++++++++++++++++++++++++++++++++++++ diffs (105 lines): diff -r 4b6ab0e5a0dd -r 67c87339c398 ChangeLog --- a/ChangeLog Mon Jan 11 11:43:43 2010 +0000 +++ b/ChangeLog Mon Jan 11 13:35:12 2010 +0100 @@ -1,3 +1,10 @@ 2010-01-11 Gary Benson + Matthias Klose + + * patches/icedtea-sh4-support.patch: Add zero support for Hitachi SH. + * Makefile.am (ICEDTEA_PATCHES): Apply the above. + * NEWS: Mention SH support. + 2010-01-11 Gary Benson * patches/zero/6914622.patch: New file, imports changeset diff -r 4b6ab0e5a0dd -r 67c87339c398 Makefile.am --- a/Makefile.am Mon Jan 11 11:43:43 2010 +0000 +++ b/Makefile.am Mon Jan 11 13:35:12 2010 +0100 @@ -300,7 +300,8 @@ ICEDTEA_PATCHES = \ patches/icedtea-no-precompiled.patch \ patches/icedtea-6897844-xshm.patch \ patches/icedtea-linux-separate-debuginfo.patch \ - patches/icedtea-parisc.patch + patches/icedtea-parisc.patch \ + patches/icedtea-sh4-support.patch if WITH_RHINO ICEDTEA_PATCHES += \ diff -r 4b6ab0e5a0dd -r 67c87339c398 NEWS --- a/NEWS Mon Jan 11 11:43:43 2010 +0000 +++ b/NEWS Mon Jan 11 13:35:12 2010 +0100 @@ -1,3 +1,7 @@ New in release 1.7 (XXXX-XX-XX): +New in release 1.8 (XXXX-XX-XX): + +- Add support for zero build on Hitachi SH. + New in release 1.7 (XXXX-XX-XX): - Updated to OpenJDK6 b17. diff -r 4b6ab0e5a0dd -r 67c87339c398 patches/icedtea-sh4-support.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-sh4-support.patch Mon Jan 11 13:35:12 2010 +0100 @@ -0,0 +1,63 @@ +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2009-12-24 14:56:12.000000000 +0900 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2009-12-24 15:02:51.000000000 +0900 +@@ -1753,7 +1753,8 @@ + {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"}, + {EM_MIPS, EM_MIPS, ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"}, + {EM_PARISC, EM_PARISC, ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"}, +- {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"} ++ {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"}, ++ {EM_SH, EM_SH, ELFCLASS32, ELFDATA2LSB, (char*)"SH"} /* Support little endian only*/ + }; + + #if (defined IA32) +@@ -1784,9 +1785,11 @@ + static Elf32_Half running_arch_code=EM_MIPS; + #elif (defined M68K) + static Elf32_Half running_arch_code=EM_68K; ++ #elif (defined SH) ++ static Elf32_Half running_arch_code=EM_SH; + #else + #error Method os::dll_load requires that one of following is defined:\ +- IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K ++ IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH + #endif + + // Identify compatability class for VM's architecture and library's architecture +--- openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-12-24 14:56:10.000000000 +0900 ++++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-12-24 15:05:27.000000000 +0900 +@@ -47,7 +47,8 @@ + #define X_S390X 12 + #define X_SPARC 13 + #define X_SPARCV9 14 +-#define X_ZERO 15 ++#define X_SH 15 ++#define X_ZERO 16 + + // ********************************** + // Make sure you set X_PLATFORM and X_ARCH defines correctly. +--- openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-12-24 15:11:52.000000000 +0900 ++++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-12-24 15:12:17.000000000 +0900 +@@ -121,6 +121,11 @@ + REQUIRED_CC_VER = 4.0 + REQUIRED_GCC_VER = 4.0.* + endif ++ ifneq ("$(findstring sh,$(ARCH))", "") ++ # sh4*, sh3* ++ REQUIRED_CC_VER = 4.0 ++ REQUIRED_GCC_VER = 4.0.* ++ endif + # Option used to create a shared library + SHARED_LIBRARY_FLAG = -shared -mimpure-text + SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) +--- openjdk/corba/make/common/shared/Platform.gmk 2009-12-24 21:30:38.000000000 +0900 ++++ openjdk/corba/make/common/shared/Platform.gmk 2009-12-25 10:17:14.000000000 +0900 +@@ -263,6 +263,9 @@ + ifeq ($(ARCH), s390x) + ARCH_DATA_MODEL=64 + endif ++ ifeq ($(ARCH), sh) ++ ARCH_DATA_MODEL=32 ++ endif + endif + endif + From gnu_andrew at member.fsf.org Mon Jan 11 06:11:39 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 11 Jan 2010 14:11:39 +0000 Subject: Status of 1.7 In-Reply-To: <4B4AF10F.7040608@ubuntu.com> References: <17c6771e1001081120j59c42cdegc03a3093f6df6186@mail.gmail.com> <4B4AF10F.7040608@ubuntu.com> Message-ID: <17c6771e1001110611r194589c3tf6f3c41464bfede7@mail.gmail.com> 2010/1/11 Matthias Klose : > On 08.01.2010 20:20, Andrew John Hughes wrote: >> >> Dear all, >> >> We've done some testing of the upcoming 1.7 release within Red Hat and >> don't see any regressions in JTreg. ?Deepak also now believes the new >> plugin to be of a quality suitable for an alpha release as part of >> 1.7. >> >> I have a few minor fixes to add (bumping the hs16 option to the latest >> revision and fixing a very minor issue with --with-parallel-jobs not >> working if used without an argument). ?I'd like to aim for a release >> on Wednesday. >> >> Does this sound suitable to everyone? > > seen two issues: > > ?- 1.7 doesn't build on sparc64, at least on Debian. Asked if it does > ? build on Fedora currently, but didn't get a reply yet. > I guess there aren't that many people running sparc64 GNU/Linux boxes and building OpenJDK; I know I don't have any way of testing this If it's been packaged for Fedora sparc64 though, I would have thought it was built automatically. Is this a regression from 1.6? Or an existing problem? > ?- the jpeg7 patch probably needs to be reverted/changed. It seems > ? to be wrong to use another libjpeg than what was used for the > ? build. See http://bugs.debian.org/563999. > ? "sun.awt.image.ImageFormatException: Wrong JPEG library version: > ? library is 70, caller expects 62. > ? I can't even build using jpeg7 because of conflicting build > ? dependencies. > ? So either revert this patch, or stick to the jpeg version which > ? was used for the build. > Well, we can't revert it without breaking all the new systems now using libjpeg7. The version check occurs from these calls: jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c: jpegcreatedecompress(&cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct jpeg_decompress_struct)); jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: jpegcreatedecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct jpeg_decompress_struct)); jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: jpegcreatecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct jpeg_compress_struct)); which are hardcoded with the build libjpeg version when compiled. Changing the lib selection to: #if JPEG_LIB_VERSION >= 70 void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL); #else void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); #endif should thus fix the problem by making the dlopen line match the later version check. > Matthias > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Mon Jan 11 06:21:22 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 11 Jan 2010 14:21:22 +0000 Subject: /hg/icedtea6: 2010-01-05 Gary Benson In-Reply-To: <20100111085720.GA6454@redhat.com> References: <17c6771e1001051002j18231f5bi57052cf77c0af5a1@mail.gmail.com> <20100106100639.GB3312@redhat.com> <17c6771e1001081139n4aa95b0dp9698ef27bafe1dae@mail.gmail.com> <20100111085720.GA6454@redhat.com> Message-ID: <17c6771e1001110621tb08513fp949ade41cf078409@mail.gmail.com> 2010/1/11 Gary Benson : > Andrew John Hughes wrote: >> 2010/1/6 Gary Benson : >> > ...if one fails to apply it's almost certainly because it >> > has filtered into the HotSpot tarball we're using. > [snip] >> They will break for other reasons. ?For one thing, we have >> a HotSpot update (to HS16) coming post-b18. > > How is that not a patch filtering into the HotSpot tarball > we're using? > > Cheers, > Gary > > -- > http://gbenson.net/ > hs16 doesn't have zero. It does have numerous other changes that will no doubt cause lines to move and patches to break. Obviously it won't be a problem if all these patches are on zero code only, but will affect anything touching shared HotSpot code. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Mon Jan 11 06:25:11 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 11 Jan 2010 14:25:11 +0000 Subject: support for Hitachi SH In-Reply-To: <4B4AF5E7.2090009@ubuntu.com> References: <4B4AF5E7.2090009@ubuntu.com> Message-ID: <17c6771e1001110625o350d9b08td70b724b27eb7f35@mail.gmail.com> 2010/1/11 Matthias Klose : > Nobuhiro recently added support for the Hitachi SH, verifying that it does > build, and example programs run. ?jtreg test results are still outstanding. > Like mips/mipsel SH can be big or little endian, the Debian port is little > endian only. > > I'll add this patch to the IcedTea6 branch; it could be added to the 1.7 > branch as well, only adding stuff architecture specific stuff. > > ?Matthias > > This looks ok for 1.7, assuming normal and zero builds still work with it applied. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Mon Jan 11 06:45:33 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 11 Jan 2010 14:45:33 +0000 Subject: [Bug 427] Openjdk doesn't load a scratch-ticket on a HP Compaq Presario CQ60-laptop. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=427 ------- Comment #1 from jon.vanalten at redhat.com 2010-01-11 14:45 ------- Hi, I'm guessing that most icedtea contributors won't have access to these "tickets" to try and reproduce the problem. You could help more by providing additional debug info: 1. Run firefox from the commandline with "ICEDTEAPLUGIN_DEBUG=1 firefox". 2. Attempt to reproduce problem. 3. Attach console output, and the files ~/.icedteaplugin/java.stdout, ~/.icedteaplugin/java.stderr to this bug report. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From doko at icedtea.classpath.org Mon Jan 11 08:39:00 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 11 Jan 2010 16:39:00 +0000 Subject: /hg/release/icedtea6-1.7: Add support for zero build on Hitachi SH Message-ID: changeset 4ae42f61f6e3 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=4ae42f61f6e3 author: doko at ubuntu.com date: Mon Jan 11 17:37:11 2010 +0100 Add support for zero build on Hitachi SH 2009-01-11 Nobuhiro Iwamatsu Matthias Klose * patches/icedtea-sh4-support.patch: Add zero support for Hitachi SH. * Makefile.am (ICEDTEA_PATCHES): Apply the above. * NEWS: Mention SH support. diffstat: 4 files changed, 73 insertions(+), 1 deletion(-) ChangeLog | 7 ++++ Makefile.am | 3 + NEWS | 1 patches/icedtea-sh4-support.patch | 63 +++++++++++++++++++++++++++++++++++++ diffs (105 lines): diff -r 3132bad1a11b -r 4ae42f61f6e3 ChangeLog --- a/ChangeLog Wed Jan 06 17:56:50 2010 -0500 +++ b/ChangeLog Mon Jan 11 17:37:11 2010 +0100 @@ -1,3 +1,10 @@ 2010-01-06 Deepak Bhole + Matthias Klose + + * patches/icedtea-sh4-support.patch: Add zero support for Hitachi SH. + * Makefile.am (ICEDTEA_PATCHES): Apply the above. + * NEWS: Mention SH support. + 2010-01-06 Deepak Bhole * configure.ac: Use libxul instead of libxul-unstable for the new NP diff -r 3132bad1a11b -r 4ae42f61f6e3 Makefile.am --- a/Makefile.am Wed Jan 06 17:56:50 2010 -0500 +++ b/Makefile.am Mon Jan 11 17:37:11 2010 +0100 @@ -297,7 +297,8 @@ ICEDTEA_PATCHES = \ patches/icedtea-no-precompiled.patch \ patches/icedtea-6897844-xshm.patch \ patches/icedtea-linux-separate-debuginfo.patch \ - patches/icedtea-parisc.patch + patches/icedtea-parisc.patch \ + patches/icedtea-sh4-support.patch if WITH_RHINO ICEDTEA_PATCHES += \ diff -r 3132bad1a11b -r 4ae42f61f6e3 NEWS --- a/NEWS Wed Jan 06 17:56:50 2010 -0500 +++ b/NEWS Mon Jan 11 17:37:11 2010 +0100 @@ -24,6 +24,7 @@ New in release 1.7 (XXXX-XX-XX): - (CVE-2009-3869) JRE AWT setDifflCM stack overflow (6872357) - (CVE-2009-3874) ImageI/O JPEG heap overflow (6874643 - (CVE-2009-3871) JRE AWT setBytePixels heap overflow (6872358) +- Add support for zero build on Hitachi SH. New in release 1.6 (2009-09-10): diff -r 3132bad1a11b -r 4ae42f61f6e3 patches/icedtea-sh4-support.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-sh4-support.patch Mon Jan 11 17:37:11 2010 +0100 @@ -0,0 +1,63 @@ +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2009-12-24 14:56:12.000000000 +0900 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2009-12-24 15:02:51.000000000 +0900 +@@ -1753,7 +1753,8 @@ + {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"}, + {EM_MIPS, EM_MIPS, ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"}, + {EM_PARISC, EM_PARISC, ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"}, +- {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"} ++ {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"}, ++ {EM_SH, EM_SH, ELFCLASS32, ELFDATA2LSB, (char*)"SH"} /* Support little endian only*/ + }; + + #if (defined IA32) +@@ -1784,9 +1785,11 @@ + static Elf32_Half running_arch_code=EM_MIPS; + #elif (defined M68K) + static Elf32_Half running_arch_code=EM_68K; ++ #elif (defined SH) ++ static Elf32_Half running_arch_code=EM_SH; + #else + #error Method os::dll_load requires that one of following is defined:\ +- IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K ++ IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH + #endif + + // Identify compatability class for VM's architecture and library's architecture +--- openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-12-24 14:56:10.000000000 +0900 ++++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h 2009-12-24 15:05:27.000000000 +0900 +@@ -47,7 +47,8 @@ + #define X_S390X 12 + #define X_SPARC 13 + #define X_SPARCV9 14 +-#define X_ZERO 15 ++#define X_SH 15 ++#define X_ZERO 16 + + // ********************************** + // Make sure you set X_PLATFORM and X_ARCH defines correctly. +--- openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-12-24 15:11:52.000000000 +0900 ++++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk 2009-12-24 15:12:17.000000000 +0900 +@@ -121,6 +121,11 @@ + REQUIRED_CC_VER = 4.0 + REQUIRED_GCC_VER = 4.0.* + endif ++ ifneq ("$(findstring sh,$(ARCH))", "") ++ # sh4*, sh3* ++ REQUIRED_CC_VER = 4.0 ++ REQUIRED_GCC_VER = 4.0.* ++ endif + # Option used to create a shared library + SHARED_LIBRARY_FLAG = -shared -mimpure-text + SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) +--- openjdk/corba/make/common/shared/Platform.gmk 2009-12-24 21:30:38.000000000 +0900 ++++ openjdk/corba/make/common/shared/Platform.gmk 2009-12-25 10:17:14.000000000 +0900 +@@ -263,6 +263,9 @@ + ifeq ($(ARCH), s390x) + ARCH_DATA_MODEL=64 + endif ++ ifeq ($(ARCH), sh) ++ ARCH_DATA_MODEL=32 ++ endif + endif + endif + From doko at ubuntu.com Mon Jan 11 08:45:10 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 11 Jan 2010 17:45:10 +0100 Subject: support for Hitachi SH In-Reply-To: <17c6771e1001110625o350d9b08td70b724b27eb7f35@mail.gmail.com> References: <4B4AF5E7.2090009@ubuntu.com> <17c6771e1001110625o350d9b08td70b724b27eb7f35@mail.gmail.com> Message-ID: <4B4B5596.1050904@ubuntu.com> On 11.01.2010 15:25, Andrew John Hughes wrote: > 2010/1/11 Matthias Klose: >> Nobuhiro recently added support for the Hitachi SH, verifying that it does >> build, and example programs run. jtreg test results are still outstanding. >> Like mips/mipsel SH can be big or little endian, the Debian port is little >> endian only. >> >> I'll add this patch to the IcedTea6 branch; it could be added to the 1.7 >> branch as well, only adding stuff architecture specific stuff. >> >> Matthias >> >> > > This looks ok for 1.7, assuming normal and zero builds still work with > it applied. yes, normal and zero builds still work. pushed to the branch. From doko at ubuntu.com Mon Jan 11 08:47:17 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 11 Jan 2010 17:47:17 +0100 Subject: Status of 1.7 In-Reply-To: <17c6771e1001110611r194589c3tf6f3c41464bfede7@mail.gmail.com> References: <17c6771e1001081120j59c42cdegc03a3093f6df6186@mail.gmail.com> <4B4AF10F.7040608@ubuntu.com> <17c6771e1001110611r194589c3tf6f3c41464bfede7@mail.gmail.com> Message-ID: <4B4B5615.9010200@ubuntu.com> On 11.01.2010 15:11, Andrew John Hughes wrote: > 2010/1/11 Matthias Klose: >> On 08.01.2010 20:20, Andrew John Hughes wrote: >>> >>> Dear all, >>> >>> We've done some testing of the upcoming 1.7 release within Red Hat and >>> don't see any regressions in JTreg. Deepak also now believes the new >>> plugin to be of a quality suitable for an alpha release as part of >>> 1.7. >>> >>> I have a few minor fixes to add (bumping the hs16 option to the latest >>> revision and fixing a very minor issue with --with-parallel-jobs not >>> working if used without an argument). I'd like to aim for a release >>> on Wednesday. >>> >>> Does this sound suitable to everyone? >> >> seen two issues: >> >> - 1.7 doesn't build on sparc64, at least on Debian. Asked if it does >> build on Fedora currently, but didn't get a reply yet. >> > > I guess there aren't that many people running sparc64 GNU/Linux boxes > and building OpenJDK; I know I don't have any way of testing this If > it's been packaged for Fedora sparc64 though, I would have thought it > was built automatically. > > Is this a regression from 1.6? Or an existing problem? I don't know about the status of the Fedora builds. I just saw that it doesn't build on sparc64, while it does on sparc. Debian currently tries to bootstrap a sparc64 port. >> - the jpeg7 patch probably needs to be reverted/changed. It seems >> to be wrong to use another libjpeg than what was used for the >> build. See http://bugs.debian.org/563999. >> "sun.awt.image.ImageFormatException: Wrong JPEG library version: >> library is 70, caller expects 62. >> I can't even build using jpeg7 because of conflicting build >> dependencies. >> So either revert this patch, or stick to the jpeg version which >> was used for the build. >> > > Well, we can't revert it without breaking all the new systems now > using libjpeg7. > > The version check occurs from these calls: > > jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c: > jpegcreatedecompress(&cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct > jpeg_decompress_struct)); > jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: > jpegcreatedecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct > jpeg_decompress_struct)); > jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: > jpegcreatecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct > jpeg_compress_struct)); > > which are hardcoded with the build libjpeg version when compiled. > Changing the lib selection to: > > #if JPEG_LIB_VERSION>= 70 > void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL); > #else > void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); > #endif > > should thus fix the problem by making the dlopen line match the later > version check. yes, this looks appropriate. From doko at icedtea.classpath.org Mon Jan 11 08:43:15 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 11 Jan 2010 16:43:15 +0000 Subject: /hg/icedtea6: Move NEWS entry from 1.8 to 1.7 Message-ID: changeset a2af332e20ab in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a2af332e20ab author: doko at ubuntu.com date: Mon Jan 11 17:44:21 2010 +0100 Move NEWS entry from 1.8 to 1.7 diffstat: 1 file changed, 1 insertion(+), 1 deletion(-) NEWS | 2 +- diffs (18 lines): diff -r 67c87339c398 -r a2af332e20ab NEWS --- a/NEWS Mon Jan 11 13:35:12 2010 +0100 +++ b/NEWS Mon Jan 11 17:44:21 2010 +0100 @@ -1,6 +1,5 @@ New in release 1.8 (XXXX-XX-XX): New in release 1.8 (XXXX-XX-XX): -- Add support for zero build on Hitachi SH. New in release 1.7 (XXXX-XX-XX): @@ -28,6 +27,7 @@ New in release 1.7 (XXXX-XX-XX): - (CVE-2009-3869) JRE AWT setDifflCM stack overflow (6872357) - (CVE-2009-3874) ImageI/O JPEG heap overflow (6874643 - (CVE-2009-3871) JRE AWT setBytePixels heap overflow (6872358) +- Add support for zero build on Hitachi SH. New in release 1.6 (2009-09-10): From doko at ubuntu.com Mon Jan 11 08:49:36 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 11 Jan 2010 17:49:36 +0100 Subject: support for Hitachi SH In-Reply-To: <20100111102320.GC6454@redhat.com> References: <4B4AF5E7.2090009@ubuntu.com> <20100111100120.GB6454@redhat.com> <4B4AF763.9090109@ubuntu.com> <20100111102320.GC6454@redhat.com> Message-ID: <4B4B56A0.4060509@ubuntu.com> On 11.01.2010 11:23, Gary Benson wrote: > Matthias Klose wrote: >> On 11.01.2010 11:01, Gary Benson wrote: >>> Hi Matthias, >>> >>> Is this with Zero and/or Cacao? >> >> zero only, assuming that Nobuhiro did use the Debian package >> for the port. I don't know if SH would build on SH. > > Cool. If you like, I can start the process of upstreaming it > once you commit. would be nice. it's now committed. Matthias From andrew at icedtea.classpath.org Mon Jan 11 12:08:02 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 11 Jan 2010 20:08:02 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset dd10f9a2e531 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=dd10f9a2e531 author: Andrew John Hughes date: Mon Jan 11 20:09:51 2010 +0000 Fix -fno-strict-aliasing and NIO2 issues with the CACAO build. 2010-01-11 Andrew John Hughes Fix issues with the CACAO build. * Makefile.am: Add new CACAO nio2 patch. * patches/cacao/nio2.patch: Implement different functions in sun.misc.Unsafe (copyMemory backported from OpenJDK7). * patches/cacao/no-strict-aliasing.patch: Always append -fno- strict-aliasing, even if CFLAGS are specified. Otherwise, a broken CACAO results. changeset 8577904b8e6f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8577904b8e6f author: Andrew John Hughes date: Mon Jan 11 20:12:43 2010 +0000 Decide on libjpeg library at compile-time not runtime. 2010-01-11 Andrew John Hughes * patches/icedtea-libraries.patch: Decide which libjpeg library to load at compile-time not runtime using JPEG_LIB_VERSION. (See http://bugs.debian.org/563999) diffstat: 5 files changed, 85 insertions(+), 21 deletions(-) ChangeLog | 22 ++++++++++++++++- Makefile.am | 3 ++ patches/cacao/nio2.patch | 41 ++++++++++++++++++++++++++++++++ patches/cacao/no-strict-aliasing.patch | 31 +++++++++++------------- patches/icedtea-libraries.patch | 9 +++---- diffs (155 lines): diff -r a2af332e20ab -r 8577904b8e6f ChangeLog --- a/ChangeLog Mon Jan 11 17:44:21 2010 +0100 +++ b/ChangeLog Mon Jan 11 20:12:43 2010 +0000 @@ -1,4 +1,24 @@ 2009-01-11 Nobuhiro Iwamatsu +2010-01-11 Andrew John Hughes + + * patches/icedtea-libraries.patch: + Decide which libjpeg library to load + at compile-time not runtime using + JPEG_LIB_VERSION. + (See http://bugs.debian.org/563999) + +2010-01-11 Andrew John Hughes + + Fix issues with the CACAO build. + * Makefile.am: + Add new CACAO nio2 patch. + * patches/cacao/nio2.patch: + Implement different functions in sun.misc.Unsafe + (copyMemory backported from OpenJDK7). + * patches/cacao/no-strict-aliasing.patch: + Always append -fno-strict-aliasing, even if CFLAGS + are specified. Otherwise, a broken CACAO results. + +2010-01-11 Nobuhiro Iwamatsu Matthias Klose * patches/icedtea-sh4-support.patch: Add zero support for Hitachi SH. diff -r a2af332e20ab -r 8577904b8e6f Makefile.am --- a/Makefile.am Mon Jan 11 17:44:21 2010 +0100 +++ b/Makefile.am Mon Jan 11 20:12:43 2010 +0000 @@ -314,6 +314,9 @@ ICEDTEA_PATCHES += \ patches/icedtea-cacao-no-mmap-first-page.patch \ patches/cacao/no-strict-aliasing.patch \ patches/cacao/arm-arch-defines.patch +if ENABLE_NIO2 +ICEDTEA_PATCHES += patches/cacao/nio2.patch +endif endif if WITH_CACAO ICEDTEA_PATCHES += \ diff -r a2af332e20ab -r 8577904b8e6f patches/cacao/nio2.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/cacao/nio2.patch Mon Jan 11 20:12:43 2010 +0000 @@ -0,0 +1,41 @@ +--- cacao/cacao/src/native/vm/sun_misc_Unsafe.c.orig 2010-01-11 16:20:51.000000000 +0000 ++++ cacao/cacao/src/native/vm/sun_misc_Unsafe.c 2010-01-11 16:22:15.000000000 +0000 +@@ -107,9 +107,10 @@ + #if 0 + /* OpenJDK 7 */ + { "setMemory", "(Ljava/lang/Object;JJB)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_setMemory }, ++#endif + { "copyMemory", "(Ljava/lang/Object;JLjava/lang/Object;JJ)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_copyMemory }, +-#else + { "setMemory", "(JJB)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_setMemory }, ++#if 0 + { "copyMemory", "(JJJ)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_copyMemory }, + #endif + { "freeMemory", "(J)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_freeMemory }, +@@ -786,7 +787,7 @@ + + system_memset(p, value, length); + } +- ++#endif + + /* + * Class: sun/misc/Unsafe +@@ -816,7 +817,7 @@ + + system_memcpy(dest, src, length); + } +-#else ++ + /* + * Class: sun/misc/Unsafe + * Method: setMemory +@@ -841,7 +842,7 @@ + system_memset(p, value, length); + } + +- ++#if 0 + /* + * Class: sun/misc/Unsafe + * Method: copyMemory diff -r a2af332e20ab -r 8577904b8e6f patches/cacao/no-strict-aliasing.patch --- a/patches/cacao/no-strict-aliasing.patch Mon Jan 11 17:44:21 2010 +0100 +++ b/patches/cacao/no-strict-aliasing.patch Mon Jan 11 20:12:43 2010 +0000 @@ -1,23 +1,22 @@ ---- cacao/cacao/configure.ac~ 2009-03-16 12:42:56.000000000 +0100 -+++ cacao/cacao/configure.ac 2009-06-23 16:19:20.000000000 +0200 -@@ -37,7 +37,7 @@ - - dnl set optimization and debugging for all architectures and systems - if test x"$CFLAGS" = "x"; then -- OPT_CFLAGS="-g -O2" -+ OPT_CFLAGS="-g -O2 -fno-strict-aliasing" +diff -Nru cacao/cacao.orig/configure cacao/cacao/configure +--- cacao/cacao.orig/configure 2009-03-16 11:44:25.000000000 +0000 ++++ cacao/cacao/configure 2010-01-09 00:10:59.000000000 +0000 +@@ -2829,6 +2829,7 @@ else OPT_CFLAGS=$CFLAGS fi -diff -ur cacao-0.99.4.orig/configure cacao-0.99.4/configure ---- cacao/cacao/configure 2009-03-16 12:42:56.000000000 +0100 -+++ cacao/cacao/configure 2009-06-23 16:19:21.000000000 +0200 -@@ -2825,7 +2825,7 @@ ++OPT_CFLAGS="$OPT_CFLAGS -fno-strict-aliasing" - - if test x"$CFLAGS" = "x"; then -- OPT_CFLAGS="-g -O2" -+ OPT_CFLAGS="-g -O2 -fno-strict-aliasing" + case "$host_cpu" in + alpha | alphaev56 | alphapca56 ) +diff -Nru cacao/cacao.orig/configure.ac cacao/cacao/configure.ac +--- cacao/cacao.orig/configure.ac 2009-03-16 11:42:56.000000000 +0000 ++++ cacao/cacao/configure.ac 2010-01-09 00:11:06.000000000 +0000 +@@ -41,6 +41,7 @@ else OPT_CFLAGS=$CFLAGS fi ++OPT_CFLAGS="$OPT_CFLAGS -fno-strict-aliasing" + + dnl system type + case "$host_cpu" in diff -r a2af332e20ab -r 8577904b8e6f patches/icedtea-libraries.patch --- a/patches/icedtea-libraries.patch Mon Jan 11 17:44:21 2010 +0100 +++ b/patches/icedtea-libraries.patch Mon Jan 11 20:12:43 2010 +0000 @@ -25045,17 +25045,18 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/ } -@@ -2317,6 +2377,145 @@ +@@ -2317,6 +2377,146 @@ /********************** end of destination manager ************/ +METHODDEF(void) +initIDs() +{ ++#if JPEG_LIB_VERSION >= 70 + void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL); -+ if (handle == NULL) { -+ handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); -+ } ++#else ++ void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); ++#endif + + jpegstderror = (fn_jpegstderror)dlsym(handle, "jpeg_std_error"); + if (jpegstderror == NULL) { From andrew at icedtea.classpath.org Mon Jan 11 12:09:57 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 11 Jan 2010 20:09:57 +0000 Subject: /hg/release/icedtea6-1.7: 2 new changesets Message-ID: changeset a1813b32daaf in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=a1813b32daaf author: Andrew John Hughes date: Mon Jan 11 20:09:51 2010 +0000 Fix -fno-strict-aliasing and NIO2 issues with the CACAO build. 2010-01-11 Andrew John Hughes Fix issues with the CACAO build. * Makefile.am: Add new CACAO nio2 patch. * patches/cacao/nio2.patch: Implement different functions in sun.misc.Unsafe (copyMemory backported from OpenJDK7). * patches/cacao/no-strict-aliasing.patch: Always append -fno- strict-aliasing, even if CFLAGS are specified. Otherwise, a broken CACAO results. changeset 3b776f966751 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=3b776f966751 author: Andrew John Hughes date: Mon Jan 11 20:12:43 2010 +0000 Decide on libjpeg library at compile-time not runtime. 2010-01-11 Andrew John Hughes * patches/icedtea-libraries.patch: Decide which libjpeg library to load at compile-time not runtime using JPEG_LIB_VERSION. (See http://bugs.debian.org/563999) diffstat: 5 files changed, 85 insertions(+), 21 deletions(-) ChangeLog | 22 ++++++++++++++++- Makefile.am | 3 ++ patches/cacao/nio2.patch | 41 ++++++++++++++++++++++++++++++++ patches/cacao/no-strict-aliasing.patch | 31 +++++++++++------------- patches/icedtea-libraries.patch | 9 +++---- diffs (155 lines): diff -r 4ae42f61f6e3 -r 3b776f966751 ChangeLog --- a/ChangeLog Mon Jan 11 17:37:11 2010 +0100 +++ b/ChangeLog Mon Jan 11 20:12:43 2010 +0000 @@ -1,4 +1,24 @@ 2009-01-11 Nobuhiro Iwamatsu +2010-01-11 Andrew John Hughes + + * patches/icedtea-libraries.patch: + Decide which libjpeg library to load + at compile-time not runtime using + JPEG_LIB_VERSION. + (See http://bugs.debian.org/563999) + +2010-01-11 Andrew John Hughes + + Fix issues with the CACAO build. + * Makefile.am: + Add new CACAO nio2 patch. + * patches/cacao/nio2.patch: + Implement different functions in sun.misc.Unsafe + (copyMemory backported from OpenJDK7). + * patches/cacao/no-strict-aliasing.patch: + Always append -fno-strict-aliasing, even if CFLAGS + are specified. Otherwise, a broken CACAO results. + +2010-01-11 Nobuhiro Iwamatsu Matthias Klose * patches/icedtea-sh4-support.patch: Add zero support for Hitachi SH. diff -r 4ae42f61f6e3 -r 3b776f966751 Makefile.am --- a/Makefile.am Mon Jan 11 17:37:11 2010 +0100 +++ b/Makefile.am Mon Jan 11 20:12:43 2010 +0000 @@ -311,6 +311,9 @@ ICEDTEA_PATCHES += \ patches/icedtea-cacao-no-mmap-first-page.patch \ patches/cacao/no-strict-aliasing.patch \ patches/cacao/arm-arch-defines.patch +if ENABLE_NIO2 +ICEDTEA_PATCHES += patches/cacao/nio2.patch +endif endif if WITH_CACAO ICEDTEA_PATCHES += \ diff -r 4ae42f61f6e3 -r 3b776f966751 patches/cacao/nio2.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/cacao/nio2.patch Mon Jan 11 20:12:43 2010 +0000 @@ -0,0 +1,41 @@ +--- cacao/cacao/src/native/vm/sun_misc_Unsafe.c.orig 2010-01-11 16:20:51.000000000 +0000 ++++ cacao/cacao/src/native/vm/sun_misc_Unsafe.c 2010-01-11 16:22:15.000000000 +0000 +@@ -107,9 +107,10 @@ + #if 0 + /* OpenJDK 7 */ + { "setMemory", "(Ljava/lang/Object;JJB)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_setMemory }, ++#endif + { "copyMemory", "(Ljava/lang/Object;JLjava/lang/Object;JJ)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_copyMemory }, +-#else + { "setMemory", "(JJB)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_setMemory }, ++#if 0 + { "copyMemory", "(JJJ)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_copyMemory }, + #endif + { "freeMemory", "(J)V", (void *) (intptr_t) &Java_sun_misc_Unsafe_freeMemory }, +@@ -786,7 +787,7 @@ + + system_memset(p, value, length); + } +- ++#endif + + /* + * Class: sun/misc/Unsafe +@@ -816,7 +817,7 @@ + + system_memcpy(dest, src, length); + } +-#else ++ + /* + * Class: sun/misc/Unsafe + * Method: setMemory +@@ -841,7 +842,7 @@ + system_memset(p, value, length); + } + +- ++#if 0 + /* + * Class: sun/misc/Unsafe + * Method: copyMemory diff -r 4ae42f61f6e3 -r 3b776f966751 patches/cacao/no-strict-aliasing.patch --- a/patches/cacao/no-strict-aliasing.patch Mon Jan 11 17:37:11 2010 +0100 +++ b/patches/cacao/no-strict-aliasing.patch Mon Jan 11 20:12:43 2010 +0000 @@ -1,23 +1,22 @@ ---- cacao/cacao/configure.ac~ 2009-03-16 12:42:56.000000000 +0100 -+++ cacao/cacao/configure.ac 2009-06-23 16:19:20.000000000 +0200 -@@ -37,7 +37,7 @@ - - dnl set optimization and debugging for all architectures and systems - if test x"$CFLAGS" = "x"; then -- OPT_CFLAGS="-g -O2" -+ OPT_CFLAGS="-g -O2 -fno-strict-aliasing" +diff -Nru cacao/cacao.orig/configure cacao/cacao/configure +--- cacao/cacao.orig/configure 2009-03-16 11:44:25.000000000 +0000 ++++ cacao/cacao/configure 2010-01-09 00:10:59.000000000 +0000 +@@ -2829,6 +2829,7 @@ else OPT_CFLAGS=$CFLAGS fi -diff -ur cacao-0.99.4.orig/configure cacao-0.99.4/configure ---- cacao/cacao/configure 2009-03-16 12:42:56.000000000 +0100 -+++ cacao/cacao/configure 2009-06-23 16:19:21.000000000 +0200 -@@ -2825,7 +2825,7 @@ ++OPT_CFLAGS="$OPT_CFLAGS -fno-strict-aliasing" - - if test x"$CFLAGS" = "x"; then -- OPT_CFLAGS="-g -O2" -+ OPT_CFLAGS="-g -O2 -fno-strict-aliasing" + case "$host_cpu" in + alpha | alphaev56 | alphapca56 ) +diff -Nru cacao/cacao.orig/configure.ac cacao/cacao/configure.ac +--- cacao/cacao.orig/configure.ac 2009-03-16 11:42:56.000000000 +0000 ++++ cacao/cacao/configure.ac 2010-01-09 00:11:06.000000000 +0000 +@@ -41,6 +41,7 @@ else OPT_CFLAGS=$CFLAGS fi ++OPT_CFLAGS="$OPT_CFLAGS -fno-strict-aliasing" + + dnl system type + case "$host_cpu" in diff -r 4ae42f61f6e3 -r 3b776f966751 patches/icedtea-libraries.patch --- a/patches/icedtea-libraries.patch Mon Jan 11 17:37:11 2010 +0100 +++ b/patches/icedtea-libraries.patch Mon Jan 11 20:12:43 2010 +0000 @@ -25045,17 +25045,18 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/ } -@@ -2317,6 +2377,145 @@ +@@ -2317,6 +2377,146 @@ /********************** end of destination manager ************/ +METHODDEF(void) +initIDs() +{ ++#if JPEG_LIB_VERSION >= 70 + void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL); -+ if (handle == NULL) { -+ handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); -+ } ++#else ++ void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); ++#endif + + jpegstderror = (fn_jpegstderror)dlsym(handle, "jpeg_std_error"); + if (jpegstderror == NULL) { From gnu_andrew at member.fsf.org Mon Jan 11 12:19:05 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 11 Jan 2010 20:19:05 +0000 Subject: Status of 1.7 In-Reply-To: <4B4B5615.9010200@ubuntu.com> References: <17c6771e1001081120j59c42cdegc03a3093f6df6186@mail.gmail.com> <4B4AF10F.7040608@ubuntu.com> <17c6771e1001110611r194589c3tf6f3c41464bfede7@mail.gmail.com> <4B4B5615.9010200@ubuntu.com> Message-ID: <17c6771e1001111219w156a7087s2e5ab99243ffd55a@mail.gmail.com> 2010/1/11 Matthias Klose : > On 11.01.2010 15:11, Andrew John Hughes wrote: >> >> 2010/1/11 Matthias Klose: >>> >>> On 08.01.2010 20:20, Andrew John Hughes wrote: >>>> >>>> Dear all, >>>> >>>> We've done some testing of the upcoming 1.7 release within Red Hat and >>>> don't see any regressions in JTreg. ?Deepak also now believes the new >>>> plugin to be of a quality suitable for an alpha release as part of >>>> 1.7. >>>> >>>> I have a few minor fixes to add (bumping the hs16 option to the latest >>>> revision and fixing a very minor issue with --with-parallel-jobs not >>>> working if used without an argument). ?I'd like to aim for a release >>>> on Wednesday. >>>> >>>> Does this sound suitable to everyone? >>> >>> seen two issues: >>> >>> ?- 1.7 doesn't build on sparc64, at least on Debian. Asked if it does >>> ? build on Fedora currently, but didn't get a reply yet. >>> >> >> I guess there aren't that many people running sparc64 GNU/Linux boxes >> and building OpenJDK; I know I don't have any way of testing this ?If >> it's been packaged for Fedora sparc64 though, I would have thought it >> was built automatically. >> >> Is this a regression from 1.6? ?Or an existing problem? > > I don't know about the status of the Fedora builds. I just saw that it > doesn't build on sparc64, while it does on sparc. Debian currently tries to > bootstrap a sparc64 port. > Neither do I. What are you trying to build - zero or the native sparc port? And does it work when using precompiled headers? And does it succeed on 1.6? >>> ?- the jpeg7 patch probably needs to be reverted/changed. It seems >>> ? to be wrong to use another libjpeg than what was used for the >>> ? build. See http://bugs.debian.org/563999. >>> ? "sun.awt.image.ImageFormatException: Wrong JPEG library version: >>> ? library is 70, caller expects 62. >>> ? I can't even build using jpeg7 because of conflicting build >>> ? dependencies. >>> ? So either revert this patch, or stick to the jpeg version which >>> ? was used for the build. >>> >> >> Well, we can't revert it without breaking all the new systems now >> using libjpeg7. >> >> The version check occurs from these calls: >> >> jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c: >> jpegcreatedecompress(&cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct >> jpeg_decompress_struct)); >> jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: >> jpegcreatedecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct >> jpeg_decompress_struct)); >> jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: >> jpegcreatecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct >> jpeg_compress_struct)); >> >> which are hardcoded with the build libjpeg version when compiled. >> Changing the lib selection to: >> >> #if JPEG_LIB_VERSION>= 70 >> ? ? void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL); >> #else >> ? ? void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); >> #endif >> >> should thus fix the problem by making the dlopen line match the later >> version check. > > yes, this looks appropriate. > Thanks. Checked in to HEAD and 1.7. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Mon Jan 11 18:37:56 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 12 Jan 2010 02:37:56 +0000 Subject: [Bug 427] Openjdk doesn't load a scratch-ticket on a HP Compaq Presario CQ60-laptop. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=427 ------- Comment #2 from kristoffer.grundstrom1983 at gmail.com 2010-01-12 02:37 ------- I can't find theese files using locate, what do I do? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ed at camswl.com Tue Jan 12 02:12:17 2010 From: ed at camswl.com (Edward Nevill) Date: Tue, 12 Jan 2010 10:12:17 +0000 Subject: Request to commit: to icedtea6-1.7 release Message-ID: Hi, Matthias has reported problems with JTreg failing with "Unimplemented opcode = 230". I have been unable to replicate the problem locally. Opcode 230 is 'dmac', double multiply and accumulate. This is an optimisation for dmul, followed by dadd. I propose for the 1.7 release simply removing this opcode altogether. I will leave it in the trunk for the moment until we can work out exactly what it going on with this opccode. I am currently doing a complete rebuild with this change applied. I will not know the results until tomorrow. Attached are the diffs. OK to commit? Should I commit it now or wait for the results of the rebuild tomorrow morning? Regards, Ed. --- CUT HERE ------------------------------------------- diff -ruNE orig/icedtea6-1.7/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def new/icedtea6-1.7/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def --- orig/icedtea6-1.7/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def 2010-01-12 09:36:48.000000000 +0000 +++ new/icedtea6-1.7/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def 2010-01-12 09:45:15.000000000 +0000 @@ -267,7 +267,7 @@ @return_register_finalizer = 0xe5, 1 -dmac = 0xe6, 2 + at dmac = 0xe6, 2 iload_0_iconst_N = 0xe7, 2 iload_1_iconst_N = 0xe8, 2 @@ -2455,10 +2455,10 @@ } (dmul) dmul_vfp { - FBC cmp r2, #opc_dadd +@ FBC cmp r2, #opc_dadd DISPATCH_START_R2 - FBC beq 1f -2: +@ FBC beq 1f + at 2: vldr d7, [stack, #12] vldr d6, [stack, #4] DISPATCH_NEXT @@ -2469,30 +2469,30 @@ vstr d0, [stack, #12] add stack, stack, #8 DISPATCH_FINISH -1: - FBC mov r2, #opc_dmac - FBC strb r2, [jpc, #-1] - FBC b 2b -} - -#ifdef FAST_BYTECODES - -(dmac) dmac_vfp { - DISPATCH_START \seq_len - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_NEXT - DISPATCH_NEXT - fmacd d2, d1, d0 - DISPATCH_NEXT - DISPATCH_NEXT - vstr d2, [stack, #20] - add stack, stack, #16 - DISPATCH_FINISH -} - -#endif // FAST_BYTECODES + at 1: +@ FBC mov r2, #opc_dmac +@ FBC strb r2, [jpc, #-1] +@ FBC b 2b +} + +@#ifdef FAST_BYTECODES +@ +@(dmac) dmac_vfp { +@ DISPATCH_START \seq_len +@ vldr d2, [stack, #20] +@ vldr d1, [stack, #12] +@ vldr d0, [stack, #4] +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ fmacd d2, d1, d0 +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ vstr d2, [stack, #20] +@ add stack, stack, #16 +@ DISPATCH_FINISH +@} +@ +@#endif // FAST_BYTECODES (fdiv) fdiv_vfp { DISPATCH_START_R2 @@ -10013,32 +10013,32 @@ DISPATCH_BYTECODE } -#ifdef HW_FP - -(dmac)(dastore) { - ldr tmp2, [stack, #28] - ldr tmp1, [stack, #32] - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_START \seq_len - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception -.abortentry120: - ldr ip, [tmp1, #8] - cmp tmp2, ip - DISPATCH_NEXT - bcs array_bound_exception_jpc_1_tmp2 - DISPATCH_NEXT - add tmp2, tmp1, tmp2, lsl #3 - fmacd d2, d1, d0 - vstr d2, [tmp2, #BASE_OFFSET_LONG] - DISPATCH_NEXT - DISPATCH_NEXT - add stack, stack, #32 - DISPATCH_FINISH -} - -#endif //HW_FP +@#ifdef HW_FP +@ +@(dmac)(dastore) { +@ ldr tmp2, [stack, #28] +@ ldr tmp1, [stack, #32] +@ vldr d2, [stack, #20] +@ vldr d1, [stack, #12] +@ vldr d0, [stack, #4] +@ DISPATCH_START \seq_len +@ SW_NPC cmp tmp1, #0 +@ SW_NPC beq null_ptr_exception + at .abortentry120: +@ ldr ip, [tmp1, #8] +@ cmp tmp2, ip +@ DISPATCH_NEXT +@ bcs array_bound_exception_jpc_1_tmp2 +@ DISPATCH_NEXT +@ add tmp2, tmp1, tmp2, lsl #3 +@ fmacd d2, d1, d0 +@ vstr d2, [tmp2, #BASE_OFFSET_LONG] +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ add stack, stack, #32 +@ DISPATCH_FINISH +@} +@ +@#endif //HW_FP #endif // FAST_BYTECODES From aph at redhat.com Tue Jan 12 02:49:02 2010 From: aph at redhat.com (Andrew Haley) Date: Tue, 12 Jan 2010 10:49:02 +0000 Subject: Request to commit: to icedtea6-1.7 release In-Reply-To: References: Message-ID: <4B4C539E.6040602@redhat.com> On 01/12/2010 10:12 AM, Edward Nevill wrote: > Matthias has reported problems with JTreg failing with "Unimplemented opcode = 230". > > I have been unable to replicate the problem locally. > > Opcode 230 is 'dmac', double multiply and accumulate. This is an optimisation for dmul, followed by dadd. > > I propose for the 1.7 release simply removing this opcode altogether. I will leave it in the trunk for the moment until we can work out exactly what it going on with this opccode. > > I am currently doing a complete rebuild with this change applied. I will not know the results until tomorrow. > > Attached are the diffs. OK to commit? Should I commit it now or wait for the results of the rebuild tomorrow morning? This is all a bit weird. But if you're sure it won't break anything... Andrew. From bugzilla-daemon at icedtea.classpath.org Tue Jan 12 07:12:47 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 12 Jan 2010 15:12:47 +0000 Subject: [Bug 427] Openjdk doesn't load a scratch-ticket on a HP Compaq Presario CQ60-laptop. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=427 ------- Comment #3 from jon.vanalten at redhat.com 2010-01-12 15:12 ------- Hi, Is it possible that you do not have the plugin installed? If you type "about:plugins" in firefox's address bar, there should be an entry for "IcedTea Java Web Browser Plugin". If not, consult your distro's documentation for how to install the plugin. For example, I use fedora and there is a package "java-1.6.0-openjdk-plugin" for the plugin which is separate from the java runtime. If the plugin is installed, I am guessing that locate's database hasn't been updated since the files were created. From locate's manpage: "... locate can never report files created after the most recent update of the relevant database." So if those files were just created, locate will not find them. You can run "updatedb" to, as you may guess, update the database which locate uses. Another utility you may find useful is "find", which actually examines the filesystem hierarchy and so will find newly created files (but is usually much slower as a result). However, afaik the plugin is hardcoded to write them in your user's home directory, under a hidden directory named ".icedteaplugin". If plugin is installed, and you started firefox as noted in previous comment, they should be there. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From enevill at icedtea.classpath.org Wed Jan 13 02:21:23 2010 From: enevill at icedtea.classpath.org (enevill at icedtea.classpath.org) Date: Wed, 13 Jan 2010 10:21:23 +0000 Subject: /hg/release/icedtea6-1.7: Removed opc_dmac - causing some test f... Message-ID: changeset 06d8ceaf70ff in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=06d8ceaf70ff author: Edward Nevill date: Wed Jan 13 10:27:10 2010 +0000 Removed opc_dmac - causing some test failures diffstat: 3 files changed, 61 insertions(+), 56 deletions(-) ChangeLog | 5 ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def | 110 ++++++++++---------- ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 2 diffs (165 lines): diff -r 3b776f966751 -r 06d8ceaf70ff ChangeLog --- a/ChangeLog Mon Jan 11 20:12:43 2010 +0000 +++ b/ChangeLog Wed Jan 13 10:27:10 2010 +0000 @@ -1,3 +1,8 @@ 2010-01-11 Andrew John Hughes + + * Remove opc_dmac (dmul/dadd) + This was causing some test failures with "Unimplemented opcode = 230" + 2010-01-11 Andrew John Hughes * patches/icedtea-libraries.patch: diff -r 3b776f966751 -r 06d8ceaf70ff ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Mon Jan 11 20:12:43 2010 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Wed Jan 13 10:27:10 2010 +0000 @@ -267,7 +267,7 @@ iload_iload_N = 0xe4, 3 @return_register_finalizer = 0xe5, 1 -dmac = 0xe6, 2 + at dmac = 0xe6, 2 iload_0_iconst_N = 0xe7, 2 iload_1_iconst_N = 0xe8, 2 @@ -2455,10 +2455,10 @@ 2: } (dmul) dmul_vfp { - FBC cmp r2, #opc_dadd +@ FBC cmp r2, #opc_dadd DISPATCH_START_R2 - FBC beq 1f -2: +@ FBC beq 1f + at 2: vldr d7, [stack, #12] vldr d6, [stack, #4] DISPATCH_NEXT @@ -2469,30 +2469,30 @@ 2: vstr d0, [stack, #12] add stack, stack, #8 DISPATCH_FINISH -1: - FBC mov r2, #opc_dmac - FBC strb r2, [jpc, #-1] - FBC b 2b -} - -#ifdef FAST_BYTECODES - -(dmac) dmac_vfp { - DISPATCH_START \seq_len - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_NEXT - DISPATCH_NEXT - fmacd d2, d1, d0 - DISPATCH_NEXT - DISPATCH_NEXT - vstr d2, [stack, #20] - add stack, stack, #16 - DISPATCH_FINISH -} - -#endif // FAST_BYTECODES + at 1: +@ FBC mov r2, #opc_dmac +@ FBC strb r2, [jpc, #-1] +@ FBC b 2b +} + +@#ifdef FAST_BYTECODES +@ +@(dmac) dmac_vfp { +@ DISPATCH_START \seq_len +@ vldr d2, [stack, #20] +@ vldr d1, [stack, #12] +@ vldr d0, [stack, #4] +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ fmacd d2, d1, d0 +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ vstr d2, [stack, #20] +@ add stack, stack, #16 +@ DISPATCH_FINISH +@} +@ +@#endif // FAST_BYTECODES (fdiv) fdiv_vfp { DISPATCH_START_R2 @@ -10013,32 +10013,32 @@ 1: DISPATCH_BYTECODE } -#ifdef HW_FP - -(dmac)(dastore) { - ldr tmp2, [stack, #28] - ldr tmp1, [stack, #32] - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_START \seq_len - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception -.abortentry120: - ldr ip, [tmp1, #8] - cmp tmp2, ip - DISPATCH_NEXT - bcs array_bound_exception_jpc_1_tmp2 - DISPATCH_NEXT - add tmp2, tmp1, tmp2, lsl #3 - fmacd d2, d1, d0 - vstr d2, [tmp2, #BASE_OFFSET_LONG] - DISPATCH_NEXT - DISPATCH_NEXT - add stack, stack, #32 - DISPATCH_FINISH -} - -#endif //HW_FP +@#ifdef HW_FP +@ +@(dmac)(dastore) { +@ ldr tmp2, [stack, #28] +@ ldr tmp1, [stack, #32] +@ vldr d2, [stack, #20] +@ vldr d1, [stack, #12] +@ vldr d0, [stack, #4] +@ DISPATCH_START \seq_len +@ SW_NPC cmp tmp1, #0 +@ SW_NPC beq null_ptr_exception + at .abortentry120: +@ ldr ip, [tmp1, #8] +@ cmp tmp2, ip +@ DISPATCH_NEXT +@ bcs array_bound_exception_jpc_1_tmp2 +@ DISPATCH_NEXT +@ add tmp2, tmp1, tmp2, lsl #3 +@ fmacd d2, d1, d0 +@ vstr d2, [tmp2, #BASE_OFFSET_LONG] +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ add stack, stack, #32 +@ DISPATCH_FINISH +@} +@ +@#endif //HW_FP #endif // FAST_BYTECODES diff -r 3b776f966751 -r 06d8ceaf70ff ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Mon Jan 11 20:12:43 2010 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Wed Jan 13 10:27:10 2010 +0000 @@ -1304,7 +1304,7 @@ abort_table: FBC .word .abortentry117, 0 .word .abortentry118, 0 .word .abortentry119, return_throw_illegal_monitor_state - FBC .word .abortentry120, 0 +@ FBC .word .abortentry120, 0 .word 0 #else From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 04:11:46 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 12:11:46 +0000 Subject: [Bug 428] New: Shark on ARM precompiled header incls/_precompiled.incl.gch build failure Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 Summary: Shark on ARM precompiled header incls/_precompiled.incl.gch build failure Product: IcedTea Version: unspecified Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: xerxes at zafena.se Icedtea6 Shark builds fails from top of trunk on ARM during generation of precompiled header incls/_precompiled.incl.gch. make[6]: Entering directory `/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/build/linux-arm/hotspot/outputdir/linux_arm_shark/product' echo Generating precompiled header incls/_precompiled.incl.gch Generating precompiled header incls/_precompiled.incl.gch mkdir -p ./incls g++ -DLINUX -D_GNU_SOURCE -DCC_INTERP -DZERO -DARM -DZERO_LIBARCH=\"arm\" -DPRODUCT -I. -I../generated/adfiles -I../generated/jvmtifiles -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/asm -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/c1 -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/ci -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/classfile -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/compiler -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1 -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/parallelScavenge -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/parNew -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_interface -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/interpreter -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/prims -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/services -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/shark -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os/linux/vm -I/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os_cpu/linux_zero/vm -I../generated -DHOTSPOT_RELEASE_VERSION="\"14.0-b16\"" -DHOTSPOT_BUILD_TARGET="\"product\"" -DHOTSPOT_BUILD_USER="\"root\"" -DHOTSPOT_LIB_ARCH=\"arm\" -DJRE_RELEASE_VERSION="\"1.6.0_17-b17\"" -DHOTSPOT_VM_DISTRO="\"OpenJDK\"" -DSHARK -I/usr/local/include -D_GNU_SOURCE -fPIC -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -DSHARK_LLVM_VERSION=27 -fpic -fno-rtti -fno-exceptions -D_REENTRANT -fcheck-new -pipe -g -O3 -fno-strict-aliasing -DHOTSPOT_ASM -DVM_LITTLE_ENDIAN -Werror -Wpointer-arith -Wsign-compare -c -x c++-header -c ../generated/incls/_precompiled.incl -o incls/_precompiled.incl.gch In file included from ../generated/incls/_precompiled.incl:52: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/klassVtable.hpp:231:1: error: multi-line comment /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/klassVtable.hpp:234:1: error: multi-line comment ... cc1plus: warnings being treated as errors In file included from ../generated/incls/_precompiled.incl:4: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp: In function 'TosState as_TosState(BasicType)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:580: error: enumeration value 'T_ADDRESS' not handled in switch /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:580: error: enumeration value 'T_NARROWOOP' not handled in switch /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:580: error: enumeration value 'T_CONFLICT' not handled in switch /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:580: error: enumeration value 'T_ILLEGAL' not handled in switch /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp: In function 'u8 build_u8_from(u1, u1, u1, u1, u1, u1, u1, u1)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:960: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:961: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:962: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:963: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:964: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:965: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:966: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp: In function 'u4 build_u4_from(u1, u1, u1, u1)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:972: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:973: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:974: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp: In function 'u2 build_u2_from(u1, u1)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:985: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp: In function 'jlong build_long_from(u1, u1, u1, u1, u1, u1, u1, u1)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1009: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1010: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1011: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1012: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1013: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1014: error: suggest parentheses around arithmetic in operand of | /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1015: error: suggest parentheses around arithmetic in operand of | In file included from ../generated/incls/_precompiled.incl:6: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/globals_zero.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/globals_zero.hpp:29: error: extra ';' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/globals_zero.hpp:30: error: extra ';' ... In file included from ../generated/incls/_precompiled.incl:7: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp:31: error: extra ';' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp:36: error: extra ';' ... In file included from ../generated/incls/_precompiled.incl:8: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os/linux/vm/globals_linux.hpp:40: error: extra ';' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os/linux/vm/globals_linux.hpp:41: error: extra ';' ... In file included from ../generated/incls/_precompiled.incl:21: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/iterator.hpp:57: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/iterator.hpp:61: error: type qualifiers ignored on function return type In file included from ../generated/incls/_precompiled.incl:34: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:61: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:87: error: type qualifiers ignored on function return type ... /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp: In constructor 'CMSKeepAliveClosure::CMSKeepAliveClosure(CMSCollector*, MemRegion, CMSBitMap*, CMSMarkStack*, bool)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:336: error: 'CMSKeepAliveClosure::_bit_map' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:335: error: 'CMSMarkStack* CMSKeepAliveClosure::_mark_stack' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:343: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp: In constructor 'CMSInnerParMarkAndPushClosure::CMSInnerParMarkAndPushClosure(CMSCollector*, MemRegion, CMSBitMap*, OopTaskQueue*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:363: error: 'CMSInnerParMarkAndPushClosure::_bit_map' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:362: error: 'OopTaskQueue* CMSInnerParMarkAndPushClosure::_work_queue' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp:369: error: when initialized here In file included from ../generated/incls/_precompiled.incl:36: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp: In constructor 'FilterIntoCSClosure::FilterIntoCSClosure(DirtyCardToOopClosure*, G1CollectedHeap*, OopClosure*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp:155: error: 'FilterIntoCSClosure::_dcto_cl' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp:153: error: 'G1CollectedHeap* FilterIntoCSClosure::_g1' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp:158: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp: In constructor 'FilterAndMarkInHeapRegionAndIntoCSClosure::FilterAndMarkInHeapRegionAndIntoCSClosure(G1CollectedHeap*, OopsInHeapRegionClosure*, ConcurrentMark*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp:191: error: 'FilterAndMarkInHeapRegionAndIntoCSClosure::_oc' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp:190: error: 'ConcurrentMark* FilterAndMarkInHeapRegionAndIntoCSClosure::_cm' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp:195: error: when initialized here In file included from ../generated/incls/_precompiled.incl:41: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/allocation.inline.hpp: In function 'char* AllocateHeap(size_t, const char*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/allocation.inline.hpp:37: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/allocation.inline.hpp: In function 'char* ReallocateHeap(char*, size_t, const char*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/allocation.inline.hpp:48: error: statement has no effect In file included from ../generated/incls/_precompiled.incl:47: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/jniHandles.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/jniHandles.hpp:177: error: extra ';' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/jniHandles.hpp:185: error: extra ';' ... In file included from ../generated/incls/_precompiled.incl:54: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/typeArrayKlass.hpp: In static member function 'static klassOopDesc* typeArrayKlass::create_klass(BasicType, int, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/typeArrayKlass.hpp:45: error: statement has no effect In file included from ../generated/incls/_precompiled.incl:76: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/relocInfo.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/relocInfo.hpp:1304: error: extra ';' In file included from ../generated/incls/_precompiled.incl:84: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/cpCacheOop.hpp:222: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/cpCacheOop.hpp: In member function 'void ConstantPoolCacheEntry::set_f1(oopDesc*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/cpCacheOop.hpp:125: error: unused variable 'existing_f1' In file included from ../generated/incls/_precompiled.incl:85: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp: In member function 'klassOopDesc* constantPoolOopDesc::klass_at(int, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp:233: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp: In member function 'oopDesc* constantPoolOopDesc::string_at(int, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp:286: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp: In member function 'void constantPoolOopDesc::resolve_string_constants(Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp:363: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp: In constructor 'SymbolHashMapEntry::SymbolHashMapEntry(unsigned int, symbolOopDesc*, u2)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp:481: error: 'SymbolHashMapEntry::_value' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp:479: error: 'SymbolHashMapEntry* SymbolHashMapEntry::_next' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/constantPoolOop.hpp:496: error: when initialized here In file included from ../generated/incls/_precompiled.incl:92: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/methodOop.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/methodOop.hpp:138: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/oops/methodOop.hpp:139: error: type qualifiers ignored on function return type ... In file included from ../generated/incls/_precompiled.incl:95: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/perfData.hpp: In static member function 'static PerfStringVariable* PerfDataManager::create_string_variable(CounterNS, const char*, const char*, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/perfData.hpp:764: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/perfData.hpp: In static member function 'static PerfLongVariable* PerfDataManager::create_long_variable(CounterNS, const char*, PerfData::Units, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/perfData.hpp:775: error: statement has no effect ... In file included from ../generated/incls/_precompiled.incl:96: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/synchronizer.hpp: In member function 'void ObjectLocker::wait(Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/synchronizer.hpp:209: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/synchronizer.hpp: In member function 'void ObjectLocker::notify_all(Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/synchronizer.hpp:210: error: statement has no effect ... In file included from ../generated/incls/_precompiled.incl:98: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/registerMap.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/registerMap.hpp:65: error: ISO C++ forbids zero-size array '_location' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/registerMap.hpp:66: error: ISO C++ forbids zero-size array '_location_valid' In file included from ../generated/incls/_precompiled.incl:108: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/hpi.hpp:170: error: extra ';' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/hpi.hpp:175: error: extra ';' ... In file included from ../generated/incls/_precompiled.incl:118: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: In member function 'bool NativeInstruction::is_jump()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp:45: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: In member function 'bool NativeInstruction::is_safepoint_poll()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp:49: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: In function 'NativeInstruction* nativeInstruction_at(unsigned char*)': ... In file included from ../generated/incls/_precompiled.incl:121: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp:99: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp:100: error: type qualifiers ignored on function return type In file included from ../generated/incls/_thread_pd.hpp.incl:1, from /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/thread.hpp:1444, from ../generated/incls/_precompiled.incl:127: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: In member function 'bool JavaThread::pd_get_top_frame_for_signal_handler(frame*, void*, bool)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp:98: error: no return statement in function returning non-void In file included from ../generated/incls/_precompiled.incl:141: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp: In constructor 'Dependencies::DepStream::DepStream(Dependencies*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp:395: error: 'Dependencies::DepStream::_deps' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp:394: error: 'nmethod* Dependencies::DepStream::_code' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp:413: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp: In constructor 'Dependencies::DepStream::DepStream(nmethod*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp:395: error: 'Dependencies::DepStream::_deps' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp:394: error: 'nmethod* Dependencies::DepStream::_code' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/dependencies.hpp:420: error: when initialized here In file included from ../generated/incls/_precompiled.incl:142: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/exceptionHandlerTable.hpp: In constructor 'ImplicitExceptionTable::ImplicitExceptionTable()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/exceptionHandlerTable.hpp:138: error: 'ImplicitExceptionTable::_data' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/exceptionHandlerTable.hpp:136: error: 'uint ImplicitExceptionTable::_size' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/code/exceptionHandlerTable.hpp:142: error: when initialized here In file included from ../generated/incls/_precompiled.incl:152: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp: In constructor 'ReferenceProcessor::ReferenceProcessor()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:94: error: 'ReferenceProcessor::_discoveredPhantomRefs' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:53: error: 'bool ReferenceProcessor::_discovering_refs' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:233: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:65: error: 'ReferenceProcessor::_enqueuing_is_done' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:56: error: 'bool ReferenceProcessor::_discovery_is_mt' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:233: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:89: error: 'ReferenceProcessor::_num_q' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:66: error: 'bool ReferenceProcessor::_processing_is_mt' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:233: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp: In constructor 'NoRefDiscovery::NoRefDiscovery(ReferenceProcessor*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/referenceProcessor.hpp:344: error: suggest parentheses around assignment used as truth value In file included from ../generated/incls/_precompiled.incl:154: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp: In constructor 'WaterMark::WaterMark(Space*, HeapWord*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp:34: error: 'WaterMark::_space' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp:33: error: 'HeapWord* WaterMark::_point' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp:43: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp: In constructor 'WaterMark::WaterMark()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp:34: error: 'WaterMark::_space' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp:33: error: 'HeapWord* WaterMark::_point' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/watermark.hpp:44: error: when initialized here In file included from ../generated/incls/_precompiled.incl:155: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/generation.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/generation.hpp:505: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/generation.hpp: In constructor 'OneContigSpaceCardGeneration::OneContigSpaceCardGeneration(ReservedSpace, size_t, size_t, int, GenRemSet*, ContiguousSpace*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/generation.hpp:639: error: 'OneContigSpaceCardGeneration::_the_space' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/generation.hpp:638: error: 'size_t OneContigSpaceCardGeneration::_min_heap_delta_bytes' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/generation.hpp:661: error: when initialized here In file included from ../generated/incls/_precompiled.incl:157: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/collectorPolicy.hpp: In constructor 'CollectorPolicy::CollectorPolicy()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/collectorPolicy.hpp:70: error: 'CollectorPolicy::_max_alignment' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/collectorPolicy.hpp:65: error: 'size_t CollectorPolicy::_initial_heap_byte_size' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/collectorPolicy.hpp:72: error: when initialized here In file included from ../generated/incls/_precompiled.incl:163: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/classfile/classFileStream.hpp: In member function 'void ClassFileStream::guarantee_more(int, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/classfile/classFileStream.hpp:61: error: statement has no effect In file included from ../generated/incls/_precompiled.incl:172: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/space.hpp: In constructor 'DirtyCardToOopClosure::DirtyCardToOopClosure(Space*, OopClosure*, CardTableModRefBS::PrecisionStyle, HeapWord*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/space.hpp:295: error: 'DirtyCardToOopClosure::_sp' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/space.hpp:294: error: 'OopClosure* DirtyCardToOopClosure::_cl' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/space.hpp:326: error: when initialized here In file included from ../generated/incls/_precompiled.incl:175: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/generationCounters.hpp: In constructor 'GenerationCounters::GenerationCounters()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/generationCounters.hpp:42: error: 'GenerationCounters::_name_space' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/generationCounters.hpp:32: error: 'PerfVariable* GenerationCounters::_current_size' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/generationCounters.hpp:47: error: when initialized here In file included from ../generated/incls/_precompiled.incl:185: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp: In member function 'void AllocationStats::initialize()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp:59: error: unused variable 'dummy' In file included from ../generated/incls/_precompiled.incl:188: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp:426: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp:427: error: type qualifiers ignored on function return type In file included from ../generated/incls/_precompiled.incl:190: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/services/memoryService.hpp:122: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/services/memoryService.hpp:125: error: type qualifiers ignored on function return type In file included from ../generated/incls/_precompiled.incl:197: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp: In static member function 'static HeapWord* CollectedHeap::common_mem_allocate_init(size_t, bool, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp:164: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp: In static member function 'static HeapWord* CollectedHeap::common_permanent_mem_allocate_init(size_t, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp:207: error: statement has no effect ... In file included from ../generated/incls/_precompiled.incl:200: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/markSweep.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/markSweep.hpp:60: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/shared/markSweep.hpp:67: error: type qualifiers ignored on function return type ... In file included from ../generated/incls/_precompiled.incl:207: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp:802: error: type qualifiers ignored on function return type /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp:1065: error: type qualifiers ignored on function return type ... In file included from ../generated/incls/_precompiled.incl:210: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/classfile/classFileParser.hpp: In member function 'void ClassFileParser::guarantee_property(bool, const char*, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/classfile/classFileParser.hpp:155: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/classfile/classFileParser.hpp: In member function 'void ClassFileParser::check_property(bool, const char*, int, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/classfile/classFileParser.hpp:166: error: statement has no effect ... In file included from ../generated/incls/_precompiled.incl:220: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp: In constructor 'VM_FindDeadlocks::VM_FindDeadlocks(bool)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp:303: error: 'VM_FindDeadlocks::_out' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp:302: error: 'DeadlockCycle* VM_FindDeadlocks::_deadlocks' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp:306: error: when initialized here /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp: In constructor 'VM_FindDeadlocks::VM_FindDeadlocks(outputStream*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp:303: error: 'VM_FindDeadlocks::_out' will be initialized after /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp:302: error: 'DeadlockCycle* VM_FindDeadlocks::_deadlocks' /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/vm_operations.hpp:307: error: when initialized here In file included from ../generated/incls/_precompiled.incl:223: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/ci/ciUtilities.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/ci/ciUtilities.hpp:106: error: type qualifiers ignored on function return type In file included from ../generated/incls/_precompiled.incl:243: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/oopFactory.hpp: In static member function 'static typeArrayOopDesc* oopFactory::new_boolArray(int, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/oopFactory.hpp:32: error: statement has no effect /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/oopFactory.hpp: In static member function 'static typeArrayOopDesc* oopFactory::new_charArray(int, Thread*)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/memory/oopFactory.hpp:33: error: statement has no effect ... In file included from ../generated/incls/_disassembler_pd.hpp.incl:1, from /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/compiler/disassembler.hpp:50, from ../generated/incls/_precompiled.incl:244: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/disassembler_zero.hpp: In static member function 'static int Disassembler::pd_instruction_alignment()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/disassembler_zero.hpp:31: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/disassembler_zero.hpp: In static member function 'static const char* Disassembler::pd_cpu_opts()': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/disassembler_zero.hpp:35: error: no return statement in function returning non-void In file included from ../generated/incls/_precompiled.incl:254: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/entry_zero.hpp: In member function 'void ZeroEntry::invoke(methodOopDesc*, Thread*) const': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/entry_zero.hpp:54: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/entry_zero.hpp: In member function 'void ZeroEntry::invoke_osr(methodOopDesc*, unsigned char*, Thread*) const': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/entry_zero.hpp:57: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object In file included from ../generated/incls/_precompiled.incl:255: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/interpreter/interpreter.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/interpreter/interpreter.hpp:67: error: extra ';' In file included from ../generated/incls/_interpreter_pd.hpp.incl:1, from /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/interpreter/interpreter.hpp:133, from ../generated/incls/_precompiled.incl:255: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/interpreter_zero.hpp: In static member function 'static int Interpreter::expr_tag_index_at(int)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:44: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/interpreter_zero.hpp: In static member function 'static int Interpreter::expr_tag_offset_in_bytes(int)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:52: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/interpreter_zero.hpp: In static member function 'static int Interpreter::local_tag_index_at(int)': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:61: error: no return statement in function returning non-void In file included from ../generated/incls/_precompiled.incl:259: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/interpreter/bytecode.hpp: In member function 'void Bytecode_loadconstant::verify() const': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/interpreter/bytecode.hpp:361: error: unused variable 'stdc' In file included from ../generated/incls/_frame_pd.inline.hpp.incl:1, from /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/runtime/frame.inline.hpp:55, from ../generated/incls/_precompiled.incl:269: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: In member function 'intptr_t* frame::link() const': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp:74: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: In member function 'oopDesc* frame::saved_oop_result(RegisterMap*) const': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp:136: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: In member function 'bool frame::is_older(intptr_t*) const': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp:140: error: no return statement in function returning non-void /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: In member function 'intptr_t* frame::entry_frame_argument_at(int) const': /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp:144: error: no return statement in function returning non-void In file included from ../generated/incls/_precompiled.incl:282: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp: At global scope: /ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp:86: error: type qualifiers ignored on function return type make[6]: *** [incls/_precompiled.incl.gch] Error 1 make[6]: Leaving directory `/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/build/linux-arm/hotspot/outputdir/linux_arm_shark/product' make[5]: *** [the_vm] Error 2 make[5]: Leaving directory `/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/build/linux-arm/hotspot/outputdir/linux_arm_shark/product' make[4]: *** [productshark] Error 2 make[4]: Leaving directory `/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/build/linux-arm/hotspot/outputdir' make[3]: *** [generic_buildshark] Error 2 make[3]: Leaving directory `/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/make' make[2]: *** [productshark] Error 2 make[2]: Leaving directory `/ssd/icedtea6-tot-shark-12jan/openjdk-ecj/hotspot/make' make[1]: *** [hotspot-build] Error 2 make[1]: Leaving directory `/ssd/icedtea6-tot-shark-12jan/openjdk-ecj' make: *** [stamps/icedtea-ecj.stamp] Error 2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 04:50:25 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 12:50:25 +0000 Subject: [Bug 429] New: cacao+Icedtea6 on ARM build failure on armv7l systems Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=429 Summary: cacao+Icedtea6 on ARM build failure on armv7l systems Product: IcedTea Version: unspecified Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: xerxes at zafena.se cd cacao/cacao && \ ./configure \ --host= \ --build= \ --target= \ --prefix=/media/disk/icedtea6-cacao/cacao/install \ --with-java-runtime-library=openjdk \ --with-java-runtime-library-prefix=/media/disk/icedtea6-cacao/openjdk \ --with-java-runtime-library-classes=/media/disk/icedtea6-cacao/lib/rt \ --enable-jre-layout ; \ /usr/bin/make install checking build system type... armv7l-unknown-linux-gnueabi checking host system type... armv7l-unknown-linux-gnueabi checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking how to create a ustar tar archive... gnutar checking whether to enable maintainer-specific portions of Makefiles... no configure: error: armv7l systems are not supported at this time make[1]: Entering directory `/media/disk/icedtea6-cacao/cacao/cacao-0.99.4' make[1]: *** No rule to make target `install'. Stop. make[1]: Leaving directory `/media/disk/icedtea6-cacao/cacao/cacao-0.99.4' make: *** [stamps/cacao.stamp] Error 2 real 74m20.593s user 12m21.030s sys 1m45.750s xerxes at xerxes:/media/disk/icedtea6-cacao$ -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 05:03:59 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 13:03:59 +0000 Subject: [Bug 429] cacao+Icedtea6 on ARM build failure on armv7l systems Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=429 ------- Comment #1 from doko at ubuntu.com 2010-01-13 13:03 ------- the openjdk-6 builds on ubuntu karmic and lucid are all done targeting armv7, however these are configured with the triplet arm-linux-gnueabi. there are patches in at least IcedTea6 patching cacao to use the atomic builtins, so the build should succeed. You may want to configure using the arm-linux-gnueabi and passing cpu specific options to CFLAGS. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 05:06:25 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 13:06:25 +0000 Subject: [Bug 428] Shark on ARM precompiled header incls/_precompiled.incl.gch build failure Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 ------- Comment #1 from doko at ubuntu.com 2010-01-13 13:06 ------- the ARM build using gcj-4.4 as bootstrap vm/compiler does stop a lot earlier for me. currently building icedtea6 with icedtea6. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 05:27:22 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 13:27:22 +0000 Subject: [Bug 429] cacao+Icedtea6 on ARM build failure on armv7l systems Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=429 ------- Comment #2 from xerxes at zafena.se 2010-01-13 13:27 ------- Thank you Matthias! configuring the icedtea6 build with configure --enable-cacao --build=arm-linux-gnueabi workaround this issue for me. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 06:02:24 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 14:02:24 +0000 Subject: [Bug 429] cacao+Icedtea6 on ARM build failure on armv7l systems Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=429 ------- Comment #3 from gnu_andrew at member.fsf.org 2010-01-13 14:02 ------- Is someone filing these patches with upstream cacao? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 06:31:46 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 14:31:46 +0000 Subject: [Bug 429] cacao+Icedtea6 on ARM build failure on armv7l systems Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=429 ------- Comment #4 from doko at ubuntu.com 2010-01-13 14:31 ------- the patch for using the atomic builtins is filed in cacao, but the project is "quiet". -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From gnu_andrew at member.fsf.org Wed Jan 13 07:53:37 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 13 Jan 2010 15:53:37 +0000 Subject: Status of 1.7 In-Reply-To: <17c6771e1001111219w156a7087s2e5ab99243ffd55a@mail.gmail.com> References: <17c6771e1001081120j59c42cdegc03a3093f6df6186@mail.gmail.com> <4B4AF10F.7040608@ubuntu.com> <17c6771e1001110611r194589c3tf6f3c41464bfede7@mail.gmail.com> <4B4B5615.9010200@ubuntu.com> <17c6771e1001111219w156a7087s2e5ab99243ffd55a@mail.gmail.com> Message-ID: <17c6771e1001130753r70453de2w423d9eda6f38ec69@mail.gmail.com> 2010/1/11 Andrew John Hughes : > 2010/1/11 Matthias Klose : >> On 11.01.2010 15:11, Andrew John Hughes wrote: >>> >>> 2010/1/11 Matthias Klose: >>>> >>>> On 08.01.2010 20:20, Andrew John Hughes wrote: >>>>> >>>>> Dear all, >>>>> >>>>> We've done some testing of the upcoming 1.7 release within Red Hat and >>>>> don't see any regressions in JTreg. ?Deepak also now believes the new >>>>> plugin to be of a quality suitable for an alpha release as part of >>>>> 1.7. >>>>> >>>>> I have a few minor fixes to add (bumping the hs16 option to the latest >>>>> revision and fixing a very minor issue with --with-parallel-jobs not >>>>> working if used without an argument). ?I'd like to aim for a release >>>>> on Wednesday. >>>>> >>>>> Does this sound suitable to everyone? >>>> >>>> seen two issues: >>>> >>>> ?- 1.7 doesn't build on sparc64, at least on Debian. Asked if it does >>>> ? build on Fedora currently, but didn't get a reply yet. >>>> >>> >>> I guess there aren't that many people running sparc64 GNU/Linux boxes >>> and building OpenJDK; I know I don't have any way of testing this ?If >>> it's been packaged for Fedora sparc64 though, I would have thought it >>> was built automatically. >>> >>> Is this a regression from 1.6? ?Or an existing problem? >> >> I don't know about the status of the Fedora builds. I just saw that it >> doesn't build on sparc64, while it does on sparc. Debian currently tries to >> bootstrap a sparc64 port. >> > > Neither do I. ?What are you trying to build - zero or the native sparc > port? ?And does it work when using precompiled headers? ?And does it > succeed on 1.6? > >>>> ?- the jpeg7 patch probably needs to be reverted/changed. It seems >>>> ? to be wrong to use another libjpeg than what was used for the >>>> ? build. See http://bugs.debian.org/563999. >>>> ? "sun.awt.image.ImageFormatException: Wrong JPEG library version: >>>> ? library is 70, caller expects 62. >>>> ? I can't even build using jpeg7 because of conflicting build >>>> ? dependencies. >>>> ? So either revert this patch, or stick to the jpeg version which >>>> ? was used for the build. >>>> >>> >>> Well, we can't revert it without breaking all the new systems now >>> using libjpeg7. >>> >>> The version check occurs from these calls: >>> >>> jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c: >>> jpegcreatedecompress(&cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct >>> jpeg_decompress_struct)); >>> jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: >>> jpegcreatedecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct >>> jpeg_decompress_struct)); >>> jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c: >>> jpegcreatecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct >>> jpeg_compress_struct)); >>> >>> which are hardcoded with the build libjpeg version when compiled. >>> Changing the lib selection to: >>> >>> #if JPEG_LIB_VERSION>= 70 >>> ? ? void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL); >>> #else >>> ? ? void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL); >>> #endif >>> >>> should thus fix the problem by making the dlopen line match the later >>> version check. >> >> yes, this looks appropriate. >> > > Thanks. ?Checked in to HEAD and 1.7. > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > I'm still working on hs16; Shark needs a patch to build against the latest b13. As hs16 is non-default, I'd rather we shipped with the version that will be in b18 rather than an earlier version. That should allow testing of hs16 with 1.7 to be comparable with the eventual b18 version. Other than that, there are a few configure issues I'd like to fix before release (just some output cleanup and the issue with --with-parallel-jobs i mentioned before). I don't think sparc64 support is worth holding back on 1.7 for, especially as it's not a regression from 1.6. So let's go for a release on Friday, all being well. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 12:19:35 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 20:19:35 +0000 Subject: [Bug 430] New: [OpenJDK6 Shark] Fails to boostrap with hs16 build Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=430 Summary: [OpenJDK6 Shark] Fails to boostrap with hs16 build Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: gnu_andrew at member.fsf.org build-classes-javac: [mkdir] Created dir: /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/gensrc [mkdir] Created dir: /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/classes [pcompile] Generating 7 resource files to /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/gensrc [copy] Copying 1 file to /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/gensrc [pcompile] Generating 1 resource files to /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/gensrc [javac] Compiling 8 source files to /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/classes [javac] Compiling 244 source files to /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/classes [javac] # [javac] # A fatal error has been detected by the Java Runtime Environment: [javac] # [javac] # Internal Error (os_linux_zero.cpp:236), pid=25630, tid=47573782411024 [javac] # Error: caught unhandled signal 11 [javac] # [javac] # JRE version: 6.0_17-b17 [javac] # Java VM: OpenJDK 64-Bit Shark VM (14.0-b16 mixed mode linux-amd64 ) [javac] # An error report file with more information is saved as: [javac] # /mnt/builder/shark6/openjdk/langtools/hs_err_pid25630.log [javac] # [javac] # If you would like to submit a bug report, please include [javac] # instructions how to reproduce the bug and visit: [javac] # http://icedtea.classpath.org/bugzilla [javac] # -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 12:20:03 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 20:20:03 +0000 Subject: [Bug 430] [OpenJDK6 Shark] Fails to boostrap with hs16 build Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=430 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gbenson at redhat.com |.org | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Wed Jan 13 13:11:02 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 13 Jan 2010 21:11:02 +0000 Subject: /hg/icedtea6: 3 new changesets Message-ID: changeset a939ca5b49d5 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a939ca5b49d5 author: Andrew John Hughes date: Mon Jan 11 21:37:57 2010 +0000 Bump to HotSpot 16 build 13. 2010-01-11 Andrew John Hughes Bump to latest HotSpot 16 (b13). * patches/icedtea-memory-limits.patch: Moved to HotSpot- specific directories. * Makefile.am: Use new memory-limits patches. * hotspot.map: Bump to HotSpot 16 b13. * patches/hotspot/hs16/icedtea-params-cast-size_t.patch, * patches/hotspot/original/memory-limits.patch: Recreated for the new build. changeset e3fbdd21b1fa in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e3fbdd21b1fa author: Andrew John Hughes date: Mon Jan 11 22:29:53 2010 +0000 Add missing memory limits patch for HotSpot 16. 2010-01-11 Andrew John Hughes * patches/hotspot/hs16/memory-limits.patch: Add HotSpot 16 version of memory limits patch. changeset a578b17f5853 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a578b17f5853 author: Andrew John Hughes date: Wed Jan 13 21:14:16 2010 +0000 Patch Shark to build against hs16 and remove dead platform_zero symlink. 2010-01-11 Andrew John Hughes * Makefile.am: Remove redundant platform_zero symlink. Add new Shark patch. * patches/hotspot/hs16/shark.patch: Replace 32-bit DefaultMaxRAM with 64-bit MaxRAM when building HotSpot 16 b13. diffstat: 8 files changed, 115 insertions(+), 57 deletions(-) ChangeLog | 25 +++++++ Makefile.am | 6 - hotspot.map | 2 patches/hotspot/hs16/icedtea-params-cast-size_t.patch | 60 ++++++++--------- patches/hotspot/hs16/memory-limits.patch | 24 ++++++ patches/hotspot/hs16/shark.patch | 9 ++ patches/hotspot/original/memory-limits.patch | 23 ++++++ patches/icedtea-memory-limits.patch | 23 ------ diffs (333 lines): diff -r 8577904b8e6f -r a578b17f5853 ChangeLog --- a/ChangeLog Mon Jan 11 20:12:43 2010 +0000 +++ b/ChangeLog Wed Jan 13 21:14:16 2010 +0000 @@ -1,3 +1,28 @@ 2010-01-11 Andrew John Hughes + + * Makefile.am: + Remove redundant platform_zero symlink. + Add new Shark patch. + * patches/hotspot/hs16/shark.patch: + Replace 32-bit DefaultMaxRAM with 64-bit + MaxRAM when building HotSpot 16 b13. + +2010-01-11 Andrew John Hughes + + * patches/hotspot/hs16/memory-limits.patch: + Add HotSpot 16 version of memory limits patch. + +2010-01-11 Andrew John Hughes + + Bump to latest HotSpot 16 (b13). + * patches/icedtea-memory-limits.patch: + Moved to HotSpot-specific directories. + * Makefile.am: Use new memory-limits patches. + * hotspot.map: Bump to HotSpot 16 b13. + * patches/hotspot/hs16/icedtea-params-cast-size_t.patch, + * patches/hotspot/original/memory-limits.patch: + Recreated for the new build. + 2010-01-11 Andrew John Hughes * patches/icedtea-libraries.patch: diff -r 8577904b8e6f -r a578b17f5853 Makefile.am --- a/Makefile.am Mon Jan 11 20:12:43 2010 +0000 +++ b/Makefile.am Wed Jan 13 21:14:16 2010 +0000 @@ -223,7 +223,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-gcc-suffix.patch \ patches/icedtea-gcc-suffix-hotspot.patch \ patches/icedtea-bytebuffer-compact.patch \ - patches/icedtea-memory-limits.patch \ + patches/hotspot/$(HSBUILD)/memory-limits.patch \ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ patches/icedtea-javafiles.patch \ @@ -350,7 +350,8 @@ endif if WITH_ALT_HSBUILD ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ - patches/hotspot/$(HSBUILD)/zero.patch + patches/hotspot/$(HSBUILD)/zero.patch \ + patches/hotspot/$(HSBUILD)/shark.patch else ICEDTEA_PATCHES += patches/hotspot/original/icedtea-6778662-lib64.patch \ patches/hotspot/original/icedtea-6778657-f2i-overflow.patch \ @@ -835,7 +836,6 @@ stamps/ports.stamp: stamps/replace-hotsp link=$$(dirname $$target | sed 's/^.*ports/openjdk/'|sed "s#hotspot/build#hotspot/$(HOTSPOT_MAKE_DIR)#"); \ cp -rv $$target $$link; \ done - ln -sf $(abs_top_builddir)/platform_zero openjdk/hotspot/$(HOTSPOT_MAKE_DIR)/linux if ! test "x$(WITH_CACAO)" = "xno" ; then \ mkdir -p openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR) ; \ ln -sf $(abs_top_builddir)/jvm.cfg \ diff -r 8577904b8e6f -r a578b17f5853 hotspot.map --- a/hotspot.map Mon Jan 11 20:12:43 2010 +0000 +++ b/hotspot.map Wed Jan 13 21:14:16 2010 +0000 @@ -1,2 +1,2 @@ # version url changeset md5sum -hs16 http://hg.openjdk.java.net/hsx/hsx16/master 6bdfda9a7120 e194a7baefb2f55e21a280276a11b49a +hs16 http://hg.openjdk.java.net/hsx/hsx16/master 62926c7f67a3 d683eb501e7ce710198f20f0c127ebbb diff -r 8577904b8e6f -r a578b17f5853 patches/hotspot/hs16/icedtea-params-cast-size_t.patch --- a/patches/hotspot/hs16/icedtea-params-cast-size_t.patch Mon Jan 11 20:12:43 2010 +0000 +++ b/patches/hotspot/hs16/icedtea-params-cast-size_t.patch Wed Jan 13 21:14:16 2010 +0000 @@ -1,7 +1,7 @@ diff -Nru openjdk.orig/hotspot/src/share diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-10-20 22:59:56.000000000 +0100 -@@ -940,7 +940,7 @@ +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2010-01-11 20:57:36.000000000 +0000 +@@ -941,7 +941,7 @@ if (free_percentage < desired_free_percentage) { size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); assert(desired_capacity >= capacity(), "invalid expansion size"); @@ -10,7 +10,7 @@ diff -Nru openjdk.orig/hotspot/src/share } if (expand_bytes > 0) { if (PrintGCDetails && Verbose) { -@@ -6094,7 +6094,7 @@ +@@ -6095,7 +6095,7 @@ HeapWord* curAddr = _markBitMap.startWord(); while (curAddr < _markBitMap.endWord()) { size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr); @@ -19,7 +19,7 @@ diff -Nru openjdk.orig/hotspot/src/share _markBitMap.clear_large_range(chunk); if (ConcurrentMarkSweepThread::should_yield() && !foregroundGCIsActive() && -@@ -6382,7 +6382,7 @@ +@@ -6383,7 +6383,7 @@ return; } // Double capacity if possible @@ -29,8 +29,8 @@ diff -Nru openjdk.orig/hotspot/src/share // get the double capacity that we desired. ReservedSpace rs(ReservedSpace::allocation_align_size_up( diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2009-10-20 22:57:45.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2010-01-11 20:48:22.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -412,7 +412,7 @@ _regionStack(), // _finger set in set_non_marking_state @@ -67,7 +67,7 @@ diff -Nru openjdk.orig/hotspot/src/share for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i]; FREE_C_HEAP_ARRAY(ParCleanupThreadState*, _par_cleanup_thread_state); -@@ -1761,7 +1761,7 @@ +@@ -1708,7 +1708,7 @@ if (has_aborted()) return; int first = 0; @@ -76,7 +76,7 @@ diff -Nru openjdk.orig/hotspot/src/share for (int t = 0; t < last; t++) { UncleanRegionList* list = &_par_cleanup_thread_state[t]->list; assert(list->well_formed(), "Inv"); -@@ -3197,7 +3197,7 @@ +@@ -3202,7 +3202,7 @@ // of things to do) or totally (at the very end). size_t target_size; if (partially) @@ -86,8 +86,8 @@ diff -Nru openjdk.orig/hotspot/src/share target_size = 0; diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2009-10-20 23:01:31.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -1058,7 +1058,7 @@ // This can be done by either mutator threads together with the // concurrent refinement threads or GC threads. @@ -98,8 +98,8 @@ diff -Nru openjdk.orig/hotspot/src/share HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa, diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -863,8 +863,8 @@ void PSParallelCompact::initialize_dead_wood_limiter() { @@ -112,8 +112,8 @@ diff -Nru openjdk.orig/hotspot/src/share DEBUG_ONLY(_dwl_initialized = true;) _dwl_adjustment = normal_distribution(1.0); diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -63,7 +63,7 @@ _last_used = current_live; @@ -124,8 +124,8 @@ diff -Nru openjdk.orig/hotspot/src/share // Compute the desired size: diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp ---- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -281,7 +281,7 @@ // yield a size that is too small) and bound it by MaxNewSize above. // Ergonomics plays here by previously calculating the desired @@ -198,8 +198,8 @@ diff -Nru openjdk.orig/hotspot/src/share } else { diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp ---- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -221,7 +221,7 @@ size_t init_sz; @@ -210,9 +210,9 @@ diff -Nru openjdk.orig/hotspot/src/share // Startup issue - main thread initialized before heap initialized. init_sz = min_size(); diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2009-10-20 22:57:44.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-10-20 23:02:17.000000000 +0100 -@@ -1064,7 +1064,7 @@ +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2010-01-11 20:48:21.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2010-01-11 20:59:44.000000000 +0000 +@@ -1071,7 +1071,7 @@ // NewSize was set on the command line and it is larger than // preferred_max_new_size. if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line @@ -221,7 +221,7 @@ diff -Nru openjdk.orig/hotspot/src/share } else { FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size); } -@@ -1083,7 +1083,7 @@ +@@ -1090,7 +1090,7 @@ // there was no obvious reason. Also limit to the case where // MaxNewSize has not been set. @@ -230,23 +230,23 @@ diff -Nru openjdk.orig/hotspot/src/share // Code along this path potentially sets NewSize and OldSize -@@ -1125,8 +1125,8 @@ +@@ -1132,8 +1132,8 @@ // Unless explicitly requested otherwise, make young gen // at least min_new, and at most preferred_max_new_size. if (FLAG_IS_DEFAULT(NewSize)) { - FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new)); - FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize)); -+ FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new)); ++ FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new)); + FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize)); - if(PrintGCDetails && Verbose) { + if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize); -@@ -1137,7 +1137,7 @@ +@@ -1144,7 +1144,7 @@ // later NewRatio will decide how it grows; see above. if (FLAG_IS_DEFAULT(OldSize)) { if (max_heap > NewSize) { -- FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize)); -+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) (3*NewSize), max_heap - (size_t) NewSize)); - if(PrintGCDetails && Verbose) { +- FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize)); ++ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize)); + if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize); diff -r 8577904b8e6f -r a578b17f5853 patches/hotspot/hs16/memory-limits.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/hs16/memory-limits.patch Wed Jan 13 21:14:16 2010 +0000 @@ -0,0 +1,24 @@ +diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp +--- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2010-01-11 20:44:32.000000000 +0000 +@@ -95,7 +95,7 @@ + + // Heap related flags + define_pd_global(uintx,PermSize, ScaleForWordSize(16*M)); +-define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M)); ++define_pd_global(uintx,MaxPermSize, ScaleForWordSize(128*M)); + + // Ergonomics related flags + define_pd_global(bool, NeverActAsServerClassMachine, false); +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp +--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2010-01-11 20:45:17.000000000 +0000 +@@ -2809,7 +2809,7 @@ + product(uintx, InitialHeapSize, 0, \ + "Initial heap size (in bytes); zero means OldSize + NewSize") \ + \ +- product(uintx, MaxHeapSize, ScaleForWordSize(96*M), \ ++ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ + "Maximum heap size (in bytes)") \ + \ + product(uintx, OldSize, ScaleForWordSize(4*M), \ diff -r 8577904b8e6f -r a578b17f5853 patches/hotspot/hs16/shark.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/hs16/shark.patch Wed Jan 13 21:14:16 2010 +0000 @@ -0,0 +1,9 @@ +--- openjdk.orig/hotspot/src/cpu//zero/vm/shark_globals_zero.hpp 2009-09-10 15:36:58.658607552 +0100 ++++ openjdk/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp 2010-01-13 14:57:16.000000000 +0000 +@@ -59,5 +59,5 @@ + define_pd_global(uintx, PermSize, 12*M ); + define_pd_global(uintx, MaxPermSize, 64*M ); + define_pd_global(bool, NeverActAsServerClassMachine, true ); +-define_pd_global(uintx, DefaultMaxRAM, 1*G ); ++define_pd_global(uint64_t,MaxRAM, 1ULL*G); + define_pd_global(bool, CICompileOSR, true ); diff -r 8577904b8e6f -r a578b17f5853 patches/hotspot/original/memory-limits.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/original/memory-limits.patch Wed Jan 13 21:14:16 2010 +0000 @@ -0,0 +1,23 @@ +diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp +--- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:44.000000000 +0100 ++++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:59.000000000 +0100 +@@ -98,7 +98,7 @@ + + // Heap related flags + define_pd_global(uintx, PermSize, ScaleForWordSize(16*M)); +-define_pd_global(uintx, MaxPermSize, ScaleForWordSize(64*M)); ++define_pd_global(uintx, MaxPermSize, ScaleForWordSize(128*M)); + + // Ergonomics related flags + define_pd_global(bool, NeverActAsServerClassMachine, false); +--- penjdk6/hotspot/src/share/vm/runtime/globals.hpp 2008-02-12 04:14:24.000000000 -0500 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-02-14 16:34:00.000000000 -0500 +@@ -2606,7 +2606,7 @@ + "an OS lock") \ + \ + /* gc parameters */ \ +- product(uintx, MaxHeapSize, ScaleForWordSize(64*M), \ ++ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ + "Default maximum size for object heap (in bytes)") \ + \ + product_pd(uintx, NewSize, \ diff -r 8577904b8e6f -r a578b17f5853 patches/icedtea-memory-limits.patch --- a/patches/icedtea-memory-limits.patch Mon Jan 11 20:12:43 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp ---- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:44.000000000 +0100 -+++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:59.000000000 +0100 -@@ -98,7 +98,7 @@ - - // Heap related flags - define_pd_global(uintx, PermSize, ScaleForWordSize(16*M)); --define_pd_global(uintx, MaxPermSize, ScaleForWordSize(64*M)); -+define_pd_global(uintx, MaxPermSize, ScaleForWordSize(128*M)); - - // Ergonomics related flags - define_pd_global(bool, NeverActAsServerClassMachine, false); ---- penjdk6/hotspot/src/share/vm/runtime/globals.hpp 2008-02-12 04:14:24.000000000 -0500 -+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-02-14 16:34:00.000000000 -0500 -@@ -2606,7 +2606,7 @@ - "an OS lock") \ - \ - /* gc parameters */ \ -- product(uintx, MaxHeapSize, ScaleForWordSize(64*M), \ -+ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ - "Default maximum size for object heap (in bytes)") \ - \ - product_pd(uintx, NewSize, \ From andrew at icedtea.classpath.org Wed Jan 13 13:27:09 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 13 Jan 2010 21:27:09 +0000 Subject: /hg/release/icedtea6-1.7: 4 new changesets Message-ID: changeset 34b991244936 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=34b991244936 author: Andrew John Hughes date: Mon Jan 11 21:37:57 2010 +0000 Bump to HotSpot 16 build 13. 2010-01-11 Andrew John Hughes Bump to latest HotSpot 16 (b13). * patches/icedtea-memory-limits.patch: Moved to HotSpot- specific directories. * Makefile.am: Use new memory-limits patches. * hotspot.map: Bump to HotSpot 16 b13. * patches/hotspot/hs16/icedtea-params-cast-size_t.patch, * patches/hotspot/original/memory-limits.patch: Recreated for the new build. changeset 5dfdcdd83daa in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=5dfdcdd83daa author: Andrew John Hughes date: Mon Jan 11 22:29:53 2010 +0000 Add missing memory limits patch for HotSpot 16. 2010-01-11 Andrew John Hughes * patches/hotspot/hs16/memory-limits.patch: Add HotSpot 16 version of memory limits patch. changeset e7b6c0cff401 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=e7b6c0cff401 author: Andrew John Hughes date: Wed Jan 13 21:14:16 2010 +0000 Patch Shark to build against hs16 and remove dead platform_zero symlink. 2010-01-11 Andrew John Hughes * Makefile.am: Remove redundant platform_zero symlink. Add new Shark patch. * patches/hotspot/hs16/shark.patch: Replace 32-bit DefaultMaxRAM with 64-bit MaxRAM when building HotSpot 16 b13. changeset e3fb5ca2bab8 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=e3fb5ca2bab8 author: Andrew John Hughes date: Wed Jan 13 21:32:58 2010 +0000 Merge diffstat: 10 files changed, 177 insertions(+), 113 deletions(-) ChangeLog | 31 ++++ Makefile.am | 6 hotspot.map | 2 patches/hotspot/hs16/icedtea-params-cast-size_t.patch | 60 ++++----- patches/hotspot/hs16/memory-limits.patch | 24 +++ patches/hotspot/hs16/shark.patch | 9 + patches/hotspot/original/memory-limits.patch | 23 +++ patches/icedtea-memory-limits.patch | 23 --- ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def | 110 ++++++++--------- ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 2 diffs (492 lines): diff -r 3b776f966751 -r e3fb5ca2bab8 ChangeLog --- a/ChangeLog Mon Jan 11 20:12:43 2010 +0000 +++ b/ChangeLog Wed Jan 13 21:32:58 2010 +0000 @@ -1,3 +1,34 @@ 2010-01-11 Andrew John Hughes + + * Makefile.am: + Remove redundant platform_zero symlink. + Add new Shark patch. + * patches/hotspot/hs16/shark.patch: + Replace 32-bit DefaultMaxRAM with 64-bit + MaxRAM when building HotSpot 16 b13. + +2010-01-13 Edward Nevill + + * ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def, + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: + This was causing some test failures with "Unimplemented opcode = 230" + +2010-01-11 Andrew John Hughes + + * patches/hotspot/hs16/memory-limits.patch: + Add HotSpot 16 version of memory limits patch. + +2010-01-11 Andrew John Hughes + + Bump to latest HotSpot 16 (b13). + * patches/icedtea-memory-limits.patch: + Moved to HotSpot-specific directories. + * Makefile.am: Use new memory-limits patches. + * hotspot.map: Bump to HotSpot 16 b13. + * patches/hotspot/hs16/icedtea-params-cast-size_t.patch, + * patches/hotspot/original/memory-limits.patch: + Recreated for the new build. + 2010-01-11 Andrew John Hughes * patches/icedtea-libraries.patch: diff -r 3b776f966751 -r e3fb5ca2bab8 Makefile.am --- a/Makefile.am Mon Jan 11 20:12:43 2010 +0000 +++ b/Makefile.am Wed Jan 13 21:32:58 2010 +0000 @@ -220,7 +220,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-gcc-suffix.patch \ patches/icedtea-gcc-suffix-hotspot.patch \ patches/icedtea-bytebuffer-compact.patch \ - patches/icedtea-memory-limits.patch \ + patches/hotspot/$(HSBUILD)/memory-limits.patch \ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ patches/icedtea-javafiles.patch \ @@ -347,7 +347,8 @@ endif if WITH_ALT_HSBUILD ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ - patches/hotspot/$(HSBUILD)/zero.patch + patches/hotspot/$(HSBUILD)/zero.patch \ + patches/hotspot/$(HSBUILD)/shark.patch else ICEDTEA_PATCHES += patches/hotspot/original/icedtea-6778662-lib64.patch \ patches/hotspot/original/icedtea-6778657-f2i-overflow.patch \ @@ -832,7 +833,6 @@ stamps/ports.stamp: stamps/replace-hotsp link=$$(dirname $$target | sed 's/^.*ports/openjdk/'|sed "s#hotspot/build#hotspot/$(HOTSPOT_MAKE_DIR)#"); \ cp -rv $$target $$link; \ done - ln -sf $(abs_top_builddir)/platform_zero openjdk/hotspot/$(HOTSPOT_MAKE_DIR)/linux if ! test "x$(WITH_CACAO)" = "xno" ; then \ mkdir -p openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR) ; \ ln -sf $(abs_top_builddir)/jvm.cfg \ diff -r 3b776f966751 -r e3fb5ca2bab8 hotspot.map --- a/hotspot.map Mon Jan 11 20:12:43 2010 +0000 +++ b/hotspot.map Wed Jan 13 21:32:58 2010 +0000 @@ -1,2 +1,2 @@ # version url changeset md5sum -hs16 http://hg.openjdk.java.net/hsx/hsx16/master 6bdfda9a7120 e194a7baefb2f55e21a280276a11b49a +hs16 http://hg.openjdk.java.net/hsx/hsx16/master 62926c7f67a3 d683eb501e7ce710198f20f0c127ebbb diff -r 3b776f966751 -r e3fb5ca2bab8 patches/hotspot/hs16/icedtea-params-cast-size_t.patch --- a/patches/hotspot/hs16/icedtea-params-cast-size_t.patch Mon Jan 11 20:12:43 2010 +0000 +++ b/patches/hotspot/hs16/icedtea-params-cast-size_t.patch Wed Jan 13 21:32:58 2010 +0000 @@ -1,7 +1,7 @@ diff -Nru openjdk.orig/hotspot/src/share diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-10-20 22:59:56.000000000 +0100 -@@ -940,7 +940,7 @@ +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2010-01-11 20:57:36.000000000 +0000 +@@ -941,7 +941,7 @@ if (free_percentage < desired_free_percentage) { size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); assert(desired_capacity >= capacity(), "invalid expansion size"); @@ -10,7 +10,7 @@ diff -Nru openjdk.orig/hotspot/src/share } if (expand_bytes > 0) { if (PrintGCDetails && Verbose) { -@@ -6094,7 +6094,7 @@ +@@ -6095,7 +6095,7 @@ HeapWord* curAddr = _markBitMap.startWord(); while (curAddr < _markBitMap.endWord()) { size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr); @@ -19,7 +19,7 @@ diff -Nru openjdk.orig/hotspot/src/share _markBitMap.clear_large_range(chunk); if (ConcurrentMarkSweepThread::should_yield() && !foregroundGCIsActive() && -@@ -6382,7 +6382,7 @@ +@@ -6383,7 +6383,7 @@ return; } // Double capacity if possible @@ -29,8 +29,8 @@ diff -Nru openjdk.orig/hotspot/src/share // get the double capacity that we desired. ReservedSpace rs(ReservedSpace::allocation_align_size_up( diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2009-10-20 22:57:45.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2010-01-11 20:48:22.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -412,7 +412,7 @@ _regionStack(), // _finger set in set_non_marking_state @@ -67,7 +67,7 @@ diff -Nru openjdk.orig/hotspot/src/share for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i]; FREE_C_HEAP_ARRAY(ParCleanupThreadState*, _par_cleanup_thread_state); -@@ -1761,7 +1761,7 @@ +@@ -1708,7 +1708,7 @@ if (has_aborted()) return; int first = 0; @@ -76,7 +76,7 @@ diff -Nru openjdk.orig/hotspot/src/share for (int t = 0; t < last; t++) { UncleanRegionList* list = &_par_cleanup_thread_state[t]->list; assert(list->well_formed(), "Inv"); -@@ -3197,7 +3197,7 @@ +@@ -3202,7 +3202,7 @@ // of things to do) or totally (at the very end). size_t target_size; if (partially) @@ -86,8 +86,8 @@ diff -Nru openjdk.orig/hotspot/src/share target_size = 0; diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2009-10-20 23:01:31.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -1058,7 +1058,7 @@ // This can be done by either mutator threads together with the // concurrent refinement threads or GC threads. @@ -98,8 +98,8 @@ diff -Nru openjdk.orig/hotspot/src/share HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa, diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -863,8 +863,8 @@ void PSParallelCompact::initialize_dead_wood_limiter() { @@ -112,8 +112,8 @@ diff -Nru openjdk.orig/hotspot/src/share DEBUG_ONLY(_dwl_initialized = true;) _dwl_adjustment = normal_distribution(1.0); diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -63,7 +63,7 @@ _last_used = current_live; @@ -124,8 +124,8 @@ diff -Nru openjdk.orig/hotspot/src/share // Compute the desired size: diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp ---- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -281,7 +281,7 @@ // yield a size that is too small) and bound it by MaxNewSize above. // Ergonomics plays here by previously calculating the desired @@ -198,8 +198,8 @@ diff -Nru openjdk.orig/hotspot/src/share } else { diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp ---- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-10-02 22:16:39.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-10-20 22:59:56.000000000 +0100 +--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2010-01-11 20:57:36.000000000 +0000 @@ -221,7 +221,7 @@ size_t init_sz; @@ -210,9 +210,9 @@ diff -Nru openjdk.orig/hotspot/src/share // Startup issue - main thread initialized before heap initialized. init_sz = min_size(); diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2009-10-20 22:57:44.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-10-20 23:02:17.000000000 +0100 -@@ -1064,7 +1064,7 @@ +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2010-01-11 20:48:21.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2010-01-11 20:59:44.000000000 +0000 +@@ -1071,7 +1071,7 @@ // NewSize was set on the command line and it is larger than // preferred_max_new_size. if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line @@ -221,7 +221,7 @@ diff -Nru openjdk.orig/hotspot/src/share } else { FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size); } -@@ -1083,7 +1083,7 @@ +@@ -1090,7 +1090,7 @@ // there was no obvious reason. Also limit to the case where // MaxNewSize has not been set. @@ -230,23 +230,23 @@ diff -Nru openjdk.orig/hotspot/src/share // Code along this path potentially sets NewSize and OldSize -@@ -1125,8 +1125,8 @@ +@@ -1132,8 +1132,8 @@ // Unless explicitly requested otherwise, make young gen // at least min_new, and at most preferred_max_new_size. if (FLAG_IS_DEFAULT(NewSize)) { - FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new)); - FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize)); -+ FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new)); ++ FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new)); + FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize)); - if(PrintGCDetails && Verbose) { + if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize); -@@ -1137,7 +1137,7 @@ +@@ -1144,7 +1144,7 @@ // later NewRatio will decide how it grows; see above. if (FLAG_IS_DEFAULT(OldSize)) { if (max_heap > NewSize) { -- FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize)); -+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) (3*NewSize), max_heap - (size_t) NewSize)); - if(PrintGCDetails && Verbose) { +- FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize)); ++ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize)); + if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize); diff -r 3b776f966751 -r e3fb5ca2bab8 patches/hotspot/hs16/memory-limits.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/hs16/memory-limits.patch Wed Jan 13 21:32:58 2010 +0000 @@ -0,0 +1,24 @@ +diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp +--- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2010-01-11 20:44:32.000000000 +0000 +@@ -95,7 +95,7 @@ + + // Heap related flags + define_pd_global(uintx,PermSize, ScaleForWordSize(16*M)); +-define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M)); ++define_pd_global(uintx,MaxPermSize, ScaleForWordSize(128*M)); + + // Ergonomics related flags + define_pd_global(bool, NeverActAsServerClassMachine, false); +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp +--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp 2009-12-08 23:12:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2010-01-11 20:45:17.000000000 +0000 +@@ -2809,7 +2809,7 @@ + product(uintx, InitialHeapSize, 0, \ + "Initial heap size (in bytes); zero means OldSize + NewSize") \ + \ +- product(uintx, MaxHeapSize, ScaleForWordSize(96*M), \ ++ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ + "Maximum heap size (in bytes)") \ + \ + product(uintx, OldSize, ScaleForWordSize(4*M), \ diff -r 3b776f966751 -r e3fb5ca2bab8 patches/hotspot/hs16/shark.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/hs16/shark.patch Wed Jan 13 21:32:58 2010 +0000 @@ -0,0 +1,9 @@ +--- openjdk.orig/hotspot/src/cpu//zero/vm/shark_globals_zero.hpp 2009-09-10 15:36:58.658607552 +0100 ++++ openjdk/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp 2010-01-13 14:57:16.000000000 +0000 +@@ -59,5 +59,5 @@ + define_pd_global(uintx, PermSize, 12*M ); + define_pd_global(uintx, MaxPermSize, 64*M ); + define_pd_global(bool, NeverActAsServerClassMachine, true ); +-define_pd_global(uintx, DefaultMaxRAM, 1*G ); ++define_pd_global(uint64_t,MaxRAM, 1ULL*G); + define_pd_global(bool, CICompileOSR, true ); diff -r 3b776f966751 -r e3fb5ca2bab8 patches/hotspot/original/memory-limits.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/original/memory-limits.patch Wed Jan 13 21:32:58 2010 +0000 @@ -0,0 +1,23 @@ +diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp +--- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:44.000000000 +0100 ++++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:59.000000000 +0100 +@@ -98,7 +98,7 @@ + + // Heap related flags + define_pd_global(uintx, PermSize, ScaleForWordSize(16*M)); +-define_pd_global(uintx, MaxPermSize, ScaleForWordSize(64*M)); ++define_pd_global(uintx, MaxPermSize, ScaleForWordSize(128*M)); + + // Ergonomics related flags + define_pd_global(bool, NeverActAsServerClassMachine, false); +--- penjdk6/hotspot/src/share/vm/runtime/globals.hpp 2008-02-12 04:14:24.000000000 -0500 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-02-14 16:34:00.000000000 -0500 +@@ -2606,7 +2606,7 @@ + "an OS lock") \ + \ + /* gc parameters */ \ +- product(uintx, MaxHeapSize, ScaleForWordSize(64*M), \ ++ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ + "Default maximum size for object heap (in bytes)") \ + \ + product_pd(uintx, NewSize, \ diff -r 3b776f966751 -r e3fb5ca2bab8 patches/icedtea-memory-limits.patch --- a/patches/icedtea-memory-limits.patch Mon Jan 11 20:12:43 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp ---- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:44.000000000 +0100 -+++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:59.000000000 +0100 -@@ -98,7 +98,7 @@ - - // Heap related flags - define_pd_global(uintx, PermSize, ScaleForWordSize(16*M)); --define_pd_global(uintx, MaxPermSize, ScaleForWordSize(64*M)); -+define_pd_global(uintx, MaxPermSize, ScaleForWordSize(128*M)); - - // Ergonomics related flags - define_pd_global(bool, NeverActAsServerClassMachine, false); ---- penjdk6/hotspot/src/share/vm/runtime/globals.hpp 2008-02-12 04:14:24.000000000 -0500 -+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-02-14 16:34:00.000000000 -0500 -@@ -2606,7 +2606,7 @@ - "an OS lock") \ - \ - /* gc parameters */ \ -- product(uintx, MaxHeapSize, ScaleForWordSize(64*M), \ -+ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ - "Default maximum size for object heap (in bytes)") \ - \ - product_pd(uintx, NewSize, \ diff -r 3b776f966751 -r e3fb5ca2bab8 ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Mon Jan 11 20:12:43 2010 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Wed Jan 13 21:32:58 2010 +0000 @@ -267,7 +267,7 @@ iload_iload_N = 0xe4, 3 @return_register_finalizer = 0xe5, 1 -dmac = 0xe6, 2 + at dmac = 0xe6, 2 iload_0_iconst_N = 0xe7, 2 iload_1_iconst_N = 0xe8, 2 @@ -2455,10 +2455,10 @@ 2: } (dmul) dmul_vfp { - FBC cmp r2, #opc_dadd +@ FBC cmp r2, #opc_dadd DISPATCH_START_R2 - FBC beq 1f -2: +@ FBC beq 1f + at 2: vldr d7, [stack, #12] vldr d6, [stack, #4] DISPATCH_NEXT @@ -2469,30 +2469,30 @@ 2: vstr d0, [stack, #12] add stack, stack, #8 DISPATCH_FINISH -1: - FBC mov r2, #opc_dmac - FBC strb r2, [jpc, #-1] - FBC b 2b -} - -#ifdef FAST_BYTECODES - -(dmac) dmac_vfp { - DISPATCH_START \seq_len - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_NEXT - DISPATCH_NEXT - fmacd d2, d1, d0 - DISPATCH_NEXT - DISPATCH_NEXT - vstr d2, [stack, #20] - add stack, stack, #16 - DISPATCH_FINISH -} - -#endif // FAST_BYTECODES + at 1: +@ FBC mov r2, #opc_dmac +@ FBC strb r2, [jpc, #-1] +@ FBC b 2b +} + +@#ifdef FAST_BYTECODES +@ +@(dmac) dmac_vfp { +@ DISPATCH_START \seq_len +@ vldr d2, [stack, #20] +@ vldr d1, [stack, #12] +@ vldr d0, [stack, #4] +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ fmacd d2, d1, d0 +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ vstr d2, [stack, #20] +@ add stack, stack, #16 +@ DISPATCH_FINISH +@} +@ +@#endif // FAST_BYTECODES (fdiv) fdiv_vfp { DISPATCH_START_R2 @@ -10013,32 +10013,32 @@ 1: DISPATCH_BYTECODE } -#ifdef HW_FP - -(dmac)(dastore) { - ldr tmp2, [stack, #28] - ldr tmp1, [stack, #32] - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_START \seq_len - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception -.abortentry120: - ldr ip, [tmp1, #8] - cmp tmp2, ip - DISPATCH_NEXT - bcs array_bound_exception_jpc_1_tmp2 - DISPATCH_NEXT - add tmp2, tmp1, tmp2, lsl #3 - fmacd d2, d1, d0 - vstr d2, [tmp2, #BASE_OFFSET_LONG] - DISPATCH_NEXT - DISPATCH_NEXT - add stack, stack, #32 - DISPATCH_FINISH -} - -#endif //HW_FP +@#ifdef HW_FP +@ +@(dmac)(dastore) { +@ ldr tmp2, [stack, #28] +@ ldr tmp1, [stack, #32] +@ vldr d2, [stack, #20] +@ vldr d1, [stack, #12] +@ vldr d0, [stack, #4] +@ DISPATCH_START \seq_len +@ SW_NPC cmp tmp1, #0 +@ SW_NPC beq null_ptr_exception + at .abortentry120: +@ ldr ip, [tmp1, #8] +@ cmp tmp2, ip +@ DISPATCH_NEXT +@ bcs array_bound_exception_jpc_1_tmp2 +@ DISPATCH_NEXT +@ add tmp2, tmp1, tmp2, lsl #3 +@ fmacd d2, d1, d0 +@ vstr d2, [tmp2, #BASE_OFFSET_LONG] +@ DISPATCH_NEXT +@ DISPATCH_NEXT +@ add stack, stack, #32 +@ DISPATCH_FINISH +@} +@ +@#endif //HW_FP #endif // FAST_BYTECODES diff -r 3b776f966751 -r e3fb5ca2bab8 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Mon Jan 11 20:12:43 2010 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Wed Jan 13 21:32:58 2010 +0000 @@ -1304,7 +1304,7 @@ abort_table: FBC .word .abortentry117, 0 .word .abortentry118, 0 .word .abortentry119, return_throw_illegal_monitor_state - FBC .word .abortentry120, 0 +@ FBC .word .abortentry120, 0 .word 0 #else From gnu_andrew at member.fsf.org Wed Jan 13 13:37:37 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 13 Jan 2010 21:37:37 +0000 Subject: HotSpot 16 Message-ID: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> I've now bumped IcedTea6 HEAD and 1.7 to build the latest hs16 (b13) as I believe is used in the proprietary JDK 6 update 18. I've confirmed that both normal and Zero builds complete. Shark also builds but can't bootstrap itself; see http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=430 As both Shark and hs16 are experimental, I don't think that's a release stopper. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 14:46:29 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 22:46:29 +0000 Subject: [Bug 185] Application SweetHome 3D crashes when i want to print Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=185 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 14:47:17 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 22:47:17 +0000 Subject: [Bug 316] unexpected error Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=316 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 14:48:29 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 22:48:29 +0000 Subject: [Bug 322] Thread#GetContextClassLoader() throws in IcedTeaPlugin Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=322 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |Plugin -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 14:53:44 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 22:53:44 +0000 Subject: [Bug 379] JVM failed while running an external library Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=379 ------- Comment #2 from gnu_andrew at member.fsf.org 2010-01-13 22:53 ------- Not even sure what version this is... according to NEWS, we didn't have a release which included b11... :-( -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 14:55:53 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 22:55:53 +0000 Subject: [Bug 380] An unexpected error has been detected by Java Runtime Environment: Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=380 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 14:59:43 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 22:59:43 +0000 Subject: [Bug 408] SIGSEGV: JavaThread "Java2D Disposer" crashes JVM Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=408 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 15:01:00 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 23:01:00 +0000 Subject: [Bug 409] additional info Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=409 ------- Comment #3 from gnu_andrew at member.fsf.org 2010-01-13 23:01 ------- Can you recheck this on a more recent version? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 15:03:39 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 13 Jan 2010 23:03:39 +0000 Subject: [Bug 427] Openjdk doesn't load a scratch-ticket on a HP Compaq Presario CQ60-laptop. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=427 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |Plugin Version|unspecified |6-1.5.0 ------- Comment #4 from gnu_andrew at member.fsf.org 2010-01-13 23:03 ------- Guessing this is at least IcedTea6 1.5 (includes OpenJDK6 b16). -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 16:22:16 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:22:16 +0000 Subject: [Bug 103] Usage of native2ascii during bootstrap Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=103 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 16:22:40 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:22:40 +0000 Subject: [Bug 99] Don't link libstdc++ statically Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=99 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 16:27:05 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:27:05 +0000 Subject: [Bug 107] configure options for embedded (no X/ alsa/ gtk / ...) Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=107 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |REMIND ------- Comment #2 from gnu_andrew at member.fsf.org 2010-01-14 00:27 ------- CACAO is now available as a build option, though the JDK is still significantly large. Closing this as there are other easier options for an embedded JDK. Maybe worth looking at from a different post-build angle if JDK7's module system comes to fruition. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at icedtea.classpath.org Wed Jan 13 16:27:45 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:27:45 +0000 Subject: /hg/icedtea6: - Adding last bits for full Java->JS array element... Message-ID: changeset 9e6623803599 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9e6623803599 author: Deepak Bhole date: Wed Jan 13 19:32:07 2010 -0500 - Adding last bits for full Java->JS array element access (read and write) support. - Checking in initial version of LiveConnect tests (WIP) diffstat: 24 files changed, 4647 insertions(+), 48 deletions(-) .hgignore | 1 ChangeLog | 46 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 2 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 118 +- plugin/icedteanp/IcedTeaPluginUtils.cc | 6 plugin/tests/LiveConnect/DummyObject.java | 15 plugin/tests/LiveConnect/OverloadTestHelper1.java | 1 plugin/tests/LiveConnect/OverloadTestHelper2.java | 1 plugin/tests/LiveConnect/OverloadTestHelper3.java | 1 plugin/tests/LiveConnect/PluginTest.java | 699 ++++++++++++++ plugin/tests/LiveConnect/build | 18 plugin/tests/LiveConnect/common.js | 215 ++++ plugin/tests/LiveConnect/index.html | 89 + plugin/tests/LiveConnect/jjs_func_parameters_tests.js | 107 ++ plugin/tests/LiveConnect/jjs_func_rettype_tests.js | 61 + plugin/tests/LiveConnect/jjs_get_tests.js | 114 ++ plugin/tests/LiveConnect/jjs_set_tests.js | 314 ++++++ plugin/tests/LiveConnect/jsj_func_overload_tests.js | 181 +++ plugin/tests/LiveConnect/jsj_func_parameters_tests.js | 216 ++++ plugin/tests/LiveConnect/jsj_func_rettype_tests.js | 262 +++++ plugin/tests/LiveConnect/jsj_get_tests.js | 260 +++++ plugin/tests/LiveConnect/jsj_set_tests.js | 318 ++++++ plugin/tests/LiveConnect/jsj_type_casting_tests.js | 825 +++++++++++++++++ plugin/tests/LiveConnect/jsj_type_conversion_tests.js | 825 +++++++++++++++++ diffs (truncated from 4929 to 500 lines): diff -r a578b17f5853 -r 9e6623803599 .hgignore --- a/.hgignore Wed Jan 13 21:14:16 2010 +0000 +++ b/.hgignore Wed Jan 13 19:32:07 2010 -0500 @@ -469,3 +469,4 @@ pulse-java.jar pulse-java.jar hotspot.tar.gz ports/hotspot/src/cpu/zero/vm/bytecodes_arm.s +plugin/tests/LiveConnect/*jar diff -r a578b17f5853 -r 9e6623803599 ChangeLog --- a/ChangeLog Wed Jan 13 21:14:16 2010 +0000 +++ b/ChangeLog Wed Jan 13 19:32:07 2010 -0500 @@ -1,3 +1,49 @@ 2010-01-11 Andrew John Hughes + + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (newMessageOnBus): Service GetSlot and SetSlot requests. + (call): Create Java object from result only if it is non-null. + (setMember): Pass a preset identifier to _setMember. Handle array slot + setting. + (sendMember): Handle array slot read. + (queue_processor): Service GetSlot and SetSlot requests. + (_setMember): Work with property NPIdentifier instead of name string. + (_getMember): Same. + * plugin/icedteanp/IcedTeaPluginUtils.cc + (isObjectJSArray): Handle void constructor objects like 'window'. + * plugin/tests/LiveConnect/DummyObject.java: New file. Helper for plugin + tests. + * plugin/tests/LiveConnect/OverloadTestHelper1.java: Same. + * plugin/tests/LiveConnect/OverloadTestHelper2.java: Same. + * plugin/tests/LiveConnect/OverloadTestHelper3.java: Same. + * plugin/tests/LiveConnect/PluginTest.java: New file. Plugin test applet to + drive LiveConnect tests. + * plugin/tests/LiveConnect/build: New build. Build file for plugin tests. + * plugin/tests/LiveConnect/common.js: New file. Contains common + LiveConnect test functions. + * plugin/tests/LiveConnect/index.html: New file. Index from which + LiveConnect tests can be launched. + * plugin/tests/LiveConnect/jjs_func_parameters_tests.js: New file. + Contains Java -> JS parameter passing tests. + * plugin/tests/LiveConnect/jjs_func_rettype_tests.js: New file. Contains + Java -> JS invocation return type read tests. + * plugin/tests/LiveConnect/jjs_get_tests.js: New file. Contains Java -> + JS variable read tests. + * plugin/tests/LiveConnect/jjs_set_tests.js: New file. Contains Java -> JS + variable write tests. + * plugin/tests/LiveConnect/jsj_func_overload_tests.js: New file. Contains + overload resolution tests for JS -> Java invocation. + * plugin/tests/LiveConnect/jsj_func_parameters_tests.js: New file. + Contains JS -> Java parameter passing tests. + * plugin/tests/LiveConnect/jsj_func_rettype_tests.js: New file. Contains + JS -> Java invocation return type read tests. + * plugin/tests/LiveConnect/jsj_get_tests.js: New file. Contains JS -> Java + variable read tests. + * plugin/tests/LiveConnect/jsj_set_tests.js: New file. Contains JS -> Java + variable write tests. + * plugin/tests/LiveConnect/jsj_type_casting_tests.js: New file. Contains + JS -> Java type conversion tests. + 2010-01-11 Andrew John Hughes * Makefile.am: diff -r a578b17f5853 -r 9e6623803599 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Jan 13 21:14:16 2010 +0000 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Jan 13 19:32:07 2010 -0500 @@ -899,7 +899,7 @@ createJavaObjectFromVariant(NPP instance alreadyCreated = true; } else { - PLUGIN_DEBUG_0ARG("NPObject is not a Java object"); + PLUGIN_DEBUG_0ARG("NPObject is not a Java object\n"); NPIdentifier length_id = browser_functions.getstringidentifier("length"); // FIXME: We currently only handle <= 2 dim arrays. Do we really need more though? diff -r a578b17f5853 -r 9e6623803599 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Wed Jan 13 21:14:16 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Wed Jan 13 19:32:07 2010 -0500 @@ -117,6 +117,8 @@ PluginRequestProcessor::newMessageOnBus( command == "SetMember" || command == "ToString" || command == "Call" || + command == "GetSlot" || + command == "SetSlot" || command == "Eval") { @@ -331,7 +333,14 @@ PluginRequestProcessor::call(std::vector NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result); std::string result_variant_jniid = std::string(); - createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid); + + if (result_variant) + { + createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid); + } else + { + result_variant_jniid = "0"; + } IcedTeaPluginUtilities::constructMessagePrefix(0, &response); response += " JavaScriptCall "; @@ -408,11 +417,11 @@ PluginRequestProcessor::setMember(std::v PluginRequestProcessor::setMember(std::vector* message_parts) { std::string propertyNameID; - std::string property_name = std::string(); std::string value = std::string(); NPP instance; NPVariant* member; + NPIdentifier property_identifier; JavaRequestProcessor java_request = JavaRequestProcessor(); JavaResultData* java_result; @@ -434,17 +443,22 @@ PluginRequestProcessor::setMember(std::v instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(member); - java_result = java_request.getString(propertyNameID); - - // the result we want is in result_string (assuming there was no error) - if (java_result->error_occurred) - { - printf("Unable to get member name for setMember. Error occurred: %s\n", java_result->error_msg); - //goto cleanup; - } - - // Copy into local variable before disposing the object - property_name.append(*(java_result->return_string)); + if (message_parts->at(2) == "SetSlot") + { + property_identifier = browser_functions.getintidentifier(atoi(message_parts->at(4).c_str())); + } else + { + java_result = java_request.getString(propertyNameID); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to get member name for setMember. Error occurred: %s\n", java_result->error_msg); + //goto cleanup; + } + + property_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str()); + } AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; @@ -453,7 +467,7 @@ PluginRequestProcessor::setMember(std::v thread_data.parameters.push_back(instance); thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*member)); - thread_data.parameters.push_back(&property_name); + thread_data.parameters.push_back(&property_identifier); thread_data.parameters.push_back(&value); #ifdef CHROMIUM_WORKAROUND @@ -505,6 +519,8 @@ PluginRequestProcessor::sendMember(std:: std::string jsObjectConstructorID = std::string(); std::string response = std::string(); + NPIdentifier member_identifier; + int method_id; int instance_id; long reference; @@ -517,16 +533,23 @@ PluginRequestProcessor::sendMember(std:: parent_ptr = (NPVariant*) (IcedTeaPluginUtilities::stringToJSID(message_parts->at(3))); member_id += message_parts->at(4); - /** Request data from Java **/ - - // make a new request for getString, to get the name of the identifier - java_result = java_request.getString(member_id); - - // the result we want is in result_string (assuming there was no error) - if (java_result->error_occurred) - { - printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg); - //goto cleanup; + /** Request data from Java if necessary **/ + if (message_parts->at(2) == "GetSlot") + { + member_identifier = browser_functions.getintidentifier(atoi(member_id.c_str())); + } else + { + // make a new request for getString, to get the name of the identifier + java_result = java_request.getString(member_id); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg); + //goto cleanup; + } + + member_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str()); } /** Make an internal request for the main thread to handle, to get the member pointer **/ @@ -541,7 +564,7 @@ PluginRequestProcessor::sendMember(std:: NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(parent_ptr); thread_data.parameters.push_back(instance); thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*parent_ptr)); - thread_data.parameters.push_back(java_result->return_string); + thread_data.parameters.push_back(&member_identifier); #ifdef CHROMIUM_WORKAROUND // Workaround for chromium @@ -609,7 +632,12 @@ PluginRequestProcessor::sendMember(std:: IcedTeaPluginUtilities::constructMessagePrefix(0, &response); - response.append(" JavaScriptGetMember "); + if (message_parts->at(2) == "GetSlot") + { + response.append(" JavaScriptGetMember "); + } else { + response.append(" JavaScriptGetSlot "); + } response.append(java_result->return_string->c_str()); plugin_to_java_bus->post(response.c_str()); @@ -678,6 +706,12 @@ queue_processor(void* data) pthread_mutex_lock(&syn_write_mutex); processor->sendMember(message_parts); pthread_mutex_unlock(&syn_write_mutex); + } else if (command == "SetSlot") + { + // write methods are synchronized + pthread_mutex_lock(&syn_write_mutex); + processor->setMember(message_parts); + pthread_mutex_unlock(&syn_write_mutex); } else { // Nothing matched @@ -704,27 +738,25 @@ void void _setMember(void* data) { - std::string* property_name; std::string* value; std::string response = std::string(); NPP instance; NPVariant value_variant = NPVariant(); NPObject* member; - NPIdentifier property; + NPIdentifier* property; std::vector parameters = ((AsyncCallThreadData*) data)->parameters; instance = (NPP) parameters.at(0); member = (NPObject*) parameters.at(1); - property_name = (std::string*) parameters.at(2); + property = (NPIdentifier*) parameters.at(2); value = (std::string*) parameters.at(3); - PLUGIN_DEBUG_4ARG("Setting %s on instance %p, object %p to value %s\n", property_name->c_str(), instance, member, value->c_str()); + PLUGIN_DEBUG_4ARG("Setting %s on instance %p, object %p to value %s\n", browser_functions.utf8fromidentifier(*property), instance, member, value->c_str()); IcedTeaPluginUtilities::javaResultToNPVariant(instance, value, &value_variant); - property = browser_functions.getstringidentifier(property_name->c_str()); - ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, property, &value_variant); + ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, *property, &value_variant); IcedTeaPluginUtilities::constructMessagePrefix(0, &response); response.append(" JavaScriptSetMember "); @@ -737,31 +769,25 @@ void void _getMember(void* data) { - std::string* member_name; - NPObject* parent_ptr; NPVariant* member_ptr = new NPVariant(); std::string member_ptr_str = std::string(); NPP instance; - NPIdentifier member_identifier; std::vector parameters = ((AsyncCallThreadData*) data)->parameters; instance = (NPP) parameters.at(0); parent_ptr = (NPObject*) parameters.at(1); - member_name = (std::string*) parameters.at(2); - - // Get the corresponding windowId - member_identifier = browser_functions.getstringidentifier(member_name->c_str()); + NPIdentifier* member_identifier = (NPIdentifier*) parameters.at(2); // Get the NPVariant corresponding to this member - PLUGIN_DEBUG_4ARG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier,member_name->c_str()); - - if (!browser_functions.hasproperty(instance, parent_ptr, member_identifier)) - { - printf("%s not found!\n", member_name->c_str()); - } - ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, member_identifier, member_ptr); + PLUGIN_DEBUG_4ARG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier, browser_functions.utf8fromidentifier(*member_identifier)); + + if (!browser_functions.hasproperty(instance, parent_ptr, *member_identifier)) + { + printf("%s not found!\n", browser_functions.utf8fromidentifier(*member_identifier)); + } + ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, *member_identifier, member_ptr); IcedTeaPluginUtilities::printNPVariant(*member_ptr); diff -r a578b17f5853 -r 9e6623803599 plugin/icedteanp/IcedTeaPluginUtils.cc --- a/plugin/icedteanp/IcedTeaPluginUtils.cc Wed Jan 13 21:14:16 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginUtils.cc Wed Jan 13 19:32:07 2010 -0500 @@ -815,14 +815,18 @@ IcedTeaPluginUtilities::isObjectJSArray( NPVariant constructor_v = NPVariant(); NPIdentifier constructor_id = browser_functions.getstringidentifier("constructor"); browser_functions.getproperty(instance, object, constructor_id, &constructor_v); - IcedTeaPluginUtilities::printNPVariant(constructor_v); + + // void constructor => not an array + if (NPVARIANT_IS_VOID(constructor_v)) + return false; NPObject* constructor = NPVARIANT_TO_OBJECT(constructor_v); NPVariant constructor_str; NPIdentifier toString = browser_functions.getstringidentifier("toString"); browser_functions.invoke(instance, constructor, toString, NULL, 0, &constructor_str); + IcedTeaPluginUtilities::printNPVariant(constructor_str); std::string constructor_name = std::string(); diff -r a578b17f5853 -r 9e6623803599 plugin/tests/LiveConnect/DummyObject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/DummyObject.java Wed Jan 13 19:32:07 2010 -0500 @@ -0,0 +1,15 @@ +public class DummyObject { + private String str; + + public DummyObject(String s) { + this.str = s; + } + + public void setStr(String s) { + this.str = s; + } + + public String toString() { + return str; + } +} diff -r a578b17f5853 -r 9e6623803599 plugin/tests/LiveConnect/OverloadTestHelper1.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper1.java Wed Jan 13 19:32:07 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper1 {} diff -r a578b17f5853 -r 9e6623803599 plugin/tests/LiveConnect/OverloadTestHelper2.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper2.java Wed Jan 13 19:32:07 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper2 extends OverloadTestHelper1 {} diff -r a578b17f5853 -r 9e6623803599 plugin/tests/LiveConnect/OverloadTestHelper3.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper3.java Wed Jan 13 19:32:07 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper3 extends OverloadTestHelper2 {} diff -r a578b17f5853 -r 9e6623803599 plugin/tests/LiveConnect/PluginTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/PluginTest.java Wed Jan 13 19:32:07 2010 -0500 @@ -0,0 +1,699 @@ +import javax.swing.JApplet; +import java.awt.Graphics; +import java.awt.*; +import java.applet.*; +import java.awt.event.*; +import netscape.javascript.JSObject; +import java.lang.reflect.Array; + +public class PluginTest extends JApplet { + + public int i = 42; + public double d = 42.42; + public float f = 42.1F; + public long l = 4294967296L; + public boolean b = true; + public char c = '\u2323'; + public byte by = 43; + public String rs = "I'm a string!"; + public String ss = "?????????$?????????"; + public Object n = null; + public int[] ia = new int[5]; + + public Integer I = 24; + public Double D = 24.24; + public Float F = 24.124F; + public Long L = 6927694924L; + public Boolean B = false; + public Character C = '\u1526'; + public Byte By = 34; + public Double[] Da1 = new Double[10]; + public Double[] Da2 = null; + + public char[] ca = new char[3]; + public Character[] Ca = new Character[3]; + + public void setUpForGMTests() { + i = 42; + d = 42.42; + f = 42.1F; + l = 4294967296L; + b = true; + c = '\u2323'; + by = 43; + rs = "I'm a string!"; + ss = "?????????$?????????"; + n = null; + + I = 24; + D = 24.24; + F = 24.124F; + L = 6927694924L; + B = false; + C = '\u1526'; + By = 34; + + ia[4] = 1024; + Da1[9] = D; + } + + public void setUpForSMTests() { + i = 0; + d = 0.0; + f = 0F; + l = 0L; + b = false; + c = 'A'; + by = 0; + rs = ""; + ss = ""; + n = new String("non-null object"); + + I = 0; + D = 0.0; + F = 0F; + L = 0L; + B = false; + C = 'A'; + By = null; + + ia[4] = 0; + Da1[9] = D; + } + + /* + ***************************************** + * JS -> Java Parameter conversion tests * + ***************************************** + */ + public void setUpForReturnTests() { + i = 41; + d = 41.41; + f = 41.411F; + l = 4294967297L; + b = true; + c = '\u2329'; + by = 44; + rs = "I'm a string too!"; + ss = "?????????$?????????"; + n = null; + + I = 14; + D = 14.14; + F = 14.114F; + L = 6927694925L; + B = false; + C = '\u2417'; + By = 46; + } + + /* + ************************************** + * JS -> Java invocation return tests * + ************************************** + */ + + public int intReturnTest() { return i; } + + public double doubleReturnTest() { return d; } + + public float floatReturnTest() { return f; } + + public long longReturnTest() { return l; } + + public boolean booleanReturnTest() { return b; } + + public char charReturnTest() { return c; } + + public byte byteReturnTest() { return by; } + + public char[] charArrayReturnTest() { + ca[0] = '\u2410'; From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 16:29:35 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:29:35 +0000 Subject: [Bug 136] compilation of 6-1.1 crashes on jar option error [invalid option -- J] Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=136 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.3 ------- Comment #5 from gnu_andrew at member.fsf.org 2010-01-14 00:29 ------- This should now be fixed: 2008-10-22 Andrew John Hughes * Makefile.am: Pass JAR_KNOWS_J_OPTIONS to ecj make. * acinclude.m4: Check whether or not jar supports -J options at the end. * patches/icedtea-ecj-jopt.patch: Only add -J options to jar in JDK and CORBA when supported. Can you confirm that current IcedTea now builds for you? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 16:29:51 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:29:51 +0000 Subject: [Bug 136] compilation of 6-1.1 crashes on jar option error [invalid option -- J] Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=136 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 16:30:43 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:30:43 +0000 Subject: [Bug 146] binaries (windows, solaris executables) in sources Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=146 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | Version|unspecified |6-hg ------- Comment #4 from gnu_andrew at member.fsf.org 2010-01-14 00:30 ------- I've deleted these in 7. Will look at pushing such a fix upstream. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From dbhole at icedtea.classpath.org Wed Jan 13 16:31:03 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:31:03 +0000 Subject: /hg/release/icedtea6-1.7: - Adding last bits for full Java->JS a... Message-ID: changeset eaf5d54cc7d1 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=eaf5d54cc7d1 author: Deepak Bhole date: Wed Jan 13 19:36:54 2010 -0500 - Adding last bits for full Java->JS array element access (read and write) support. - Checking in initial version of LiveConnect tests (WIP) diffstat: 24 files changed, 4647 insertions(+), 48 deletions(-) .hgignore | 1 ChangeLog | 46 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 2 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 118 +- plugin/icedteanp/IcedTeaPluginUtils.cc | 6 plugin/tests/LiveConnect/DummyObject.java | 15 plugin/tests/LiveConnect/OverloadTestHelper1.java | 1 plugin/tests/LiveConnect/OverloadTestHelper2.java | 1 plugin/tests/LiveConnect/OverloadTestHelper3.java | 1 plugin/tests/LiveConnect/PluginTest.java | 699 ++++++++++++++ plugin/tests/LiveConnect/build | 18 plugin/tests/LiveConnect/common.js | 215 ++++ plugin/tests/LiveConnect/index.html | 89 + plugin/tests/LiveConnect/jjs_func_parameters_tests.js | 107 ++ plugin/tests/LiveConnect/jjs_func_rettype_tests.js | 61 + plugin/tests/LiveConnect/jjs_get_tests.js | 114 ++ plugin/tests/LiveConnect/jjs_set_tests.js | 314 ++++++ plugin/tests/LiveConnect/jsj_func_overload_tests.js | 181 +++ plugin/tests/LiveConnect/jsj_func_parameters_tests.js | 216 ++++ plugin/tests/LiveConnect/jsj_func_rettype_tests.js | 262 +++++ plugin/tests/LiveConnect/jsj_get_tests.js | 260 +++++ plugin/tests/LiveConnect/jsj_set_tests.js | 318 ++++++ plugin/tests/LiveConnect/jsj_type_casting_tests.js | 825 +++++++++++++++++ plugin/tests/LiveConnect/jsj_type_conversion_tests.js | 825 +++++++++++++++++ diffs (truncated from 4929 to 500 lines): diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 .hgignore --- a/.hgignore Wed Jan 13 21:32:58 2010 +0000 +++ b/.hgignore Wed Jan 13 19:36:54 2010 -0500 @@ -469,3 +469,4 @@ pulse-java.jar pulse-java.jar hotspot.tar.gz ports/hotspot/src/cpu/zero/vm/bytecodes_arm.s +plugin/tests/LiveConnect/*jar diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 ChangeLog --- a/ChangeLog Wed Jan 13 21:32:58 2010 +0000 +++ b/ChangeLog Wed Jan 13 19:36:54 2010 -0500 @@ -1,3 +1,49 @@ 2010-01-13 Andrew John Hughes + + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (newMessageOnBus): Service GetSlot and SetSlot requests. + (call): Create Java object from result only if it is non-null. + (setMember): Pass a preset identifier to _setMember. Handle array slot + setting. + (sendMember): Handle array slot read. + (queue_processor): Service GetSlot and SetSlot requests. + (_setMember): Work with property NPIdentifier instead of name string. + (_getMember): Same. + * plugin/icedteanp/IcedTeaPluginUtils.cc + (isObjectJSArray): Handle void constructor objects like 'window'. + * plugin/tests/LiveConnect/DummyObject.java: New file. Helper for plugin + tests. + * plugin/tests/LiveConnect/OverloadTestHelper1.java: Same. + * plugin/tests/LiveConnect/OverloadTestHelper2.java: Same. + * plugin/tests/LiveConnect/OverloadTestHelper3.java: Same. + * plugin/tests/LiveConnect/PluginTest.java: New file. Plugin test applet to + drive LiveConnect tests. + * plugin/tests/LiveConnect/build: New build. Build file for plugin tests. + * plugin/tests/LiveConnect/common.js: New file. Contains common + LiveConnect test functions. + * plugin/tests/LiveConnect/index.html: New file. Index from which + LiveConnect tests can be launched. + * plugin/tests/LiveConnect/jjs_func_parameters_tests.js: New file. + Contains Java -> JS parameter passing tests. + * plugin/tests/LiveConnect/jjs_func_rettype_tests.js: New file. Contains + Java -> JS invocation return type read tests. + * plugin/tests/LiveConnect/jjs_get_tests.js: New file. Contains Java -> + JS variable read tests. + * plugin/tests/LiveConnect/jjs_set_tests.js: New file. Contains Java -> JS + variable write tests. + * plugin/tests/LiveConnect/jsj_func_overload_tests.js: New file. Contains + overload resolution tests for JS -> Java invocation. + * plugin/tests/LiveConnect/jsj_func_parameters_tests.js: New file. + Contains JS -> Java parameter passing tests. + * plugin/tests/LiveConnect/jsj_func_rettype_tests.js: New file. Contains + JS -> Java invocation return type read tests. + * plugin/tests/LiveConnect/jsj_get_tests.js: New file. Contains JS -> Java + variable read tests. + * plugin/tests/LiveConnect/jsj_set_tests.js: New file. Contains JS -> Java + variable write tests. + * plugin/tests/LiveConnect/jsj_type_casting_tests.js: New file. Contains + JS -> Java type conversion tests. + 2010-01-13 Andrew John Hughes * Makefile.am: diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Jan 13 21:32:58 2010 +0000 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Jan 13 19:36:54 2010 -0500 @@ -899,7 +899,7 @@ createJavaObjectFromVariant(NPP instance alreadyCreated = true; } else { - PLUGIN_DEBUG_0ARG("NPObject is not a Java object"); + PLUGIN_DEBUG_0ARG("NPObject is not a Java object\n"); NPIdentifier length_id = browser_functions.getstringidentifier("length"); // FIXME: We currently only handle <= 2 dim arrays. Do we really need more though? diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Wed Jan 13 21:32:58 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Wed Jan 13 19:36:54 2010 -0500 @@ -117,6 +117,8 @@ PluginRequestProcessor::newMessageOnBus( command == "SetMember" || command == "ToString" || command == "Call" || + command == "GetSlot" || + command == "SetSlot" || command == "Eval") { @@ -331,7 +333,14 @@ PluginRequestProcessor::call(std::vector NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result); std::string result_variant_jniid = std::string(); - createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid); + + if (result_variant) + { + createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid); + } else + { + result_variant_jniid = "0"; + } IcedTeaPluginUtilities::constructMessagePrefix(0, &response); response += " JavaScriptCall "; @@ -408,11 +417,11 @@ PluginRequestProcessor::setMember(std::v PluginRequestProcessor::setMember(std::vector* message_parts) { std::string propertyNameID; - std::string property_name = std::string(); std::string value = std::string(); NPP instance; NPVariant* member; + NPIdentifier property_identifier; JavaRequestProcessor java_request = JavaRequestProcessor(); JavaResultData* java_result; @@ -434,17 +443,22 @@ PluginRequestProcessor::setMember(std::v instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(member); - java_result = java_request.getString(propertyNameID); - - // the result we want is in result_string (assuming there was no error) - if (java_result->error_occurred) - { - printf("Unable to get member name for setMember. Error occurred: %s\n", java_result->error_msg); - //goto cleanup; - } - - // Copy into local variable before disposing the object - property_name.append(*(java_result->return_string)); + if (message_parts->at(2) == "SetSlot") + { + property_identifier = browser_functions.getintidentifier(atoi(message_parts->at(4).c_str())); + } else + { + java_result = java_request.getString(propertyNameID); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to get member name for setMember. Error occurred: %s\n", java_result->error_msg); + //goto cleanup; + } + + property_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str()); + } AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; @@ -453,7 +467,7 @@ PluginRequestProcessor::setMember(std::v thread_data.parameters.push_back(instance); thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*member)); - thread_data.parameters.push_back(&property_name); + thread_data.parameters.push_back(&property_identifier); thread_data.parameters.push_back(&value); #ifdef CHROMIUM_WORKAROUND @@ -505,6 +519,8 @@ PluginRequestProcessor::sendMember(std:: std::string jsObjectConstructorID = std::string(); std::string response = std::string(); + NPIdentifier member_identifier; + int method_id; int instance_id; long reference; @@ -517,16 +533,23 @@ PluginRequestProcessor::sendMember(std:: parent_ptr = (NPVariant*) (IcedTeaPluginUtilities::stringToJSID(message_parts->at(3))); member_id += message_parts->at(4); - /** Request data from Java **/ - - // make a new request for getString, to get the name of the identifier - java_result = java_request.getString(member_id); - - // the result we want is in result_string (assuming there was no error) - if (java_result->error_occurred) - { - printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg); - //goto cleanup; + /** Request data from Java if necessary **/ + if (message_parts->at(2) == "GetSlot") + { + member_identifier = browser_functions.getintidentifier(atoi(member_id.c_str())); + } else + { + // make a new request for getString, to get the name of the identifier + java_result = java_request.getString(member_id); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg); + //goto cleanup; + } + + member_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str()); } /** Make an internal request for the main thread to handle, to get the member pointer **/ @@ -541,7 +564,7 @@ PluginRequestProcessor::sendMember(std:: NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(parent_ptr); thread_data.parameters.push_back(instance); thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*parent_ptr)); - thread_data.parameters.push_back(java_result->return_string); + thread_data.parameters.push_back(&member_identifier); #ifdef CHROMIUM_WORKAROUND // Workaround for chromium @@ -609,7 +632,12 @@ PluginRequestProcessor::sendMember(std:: IcedTeaPluginUtilities::constructMessagePrefix(0, &response); - response.append(" JavaScriptGetMember "); + if (message_parts->at(2) == "GetSlot") + { + response.append(" JavaScriptGetMember "); + } else { + response.append(" JavaScriptGetSlot "); + } response.append(java_result->return_string->c_str()); plugin_to_java_bus->post(response.c_str()); @@ -678,6 +706,12 @@ queue_processor(void* data) pthread_mutex_lock(&syn_write_mutex); processor->sendMember(message_parts); pthread_mutex_unlock(&syn_write_mutex); + } else if (command == "SetSlot") + { + // write methods are synchronized + pthread_mutex_lock(&syn_write_mutex); + processor->setMember(message_parts); + pthread_mutex_unlock(&syn_write_mutex); } else { // Nothing matched @@ -704,27 +738,25 @@ void void _setMember(void* data) { - std::string* property_name; std::string* value; std::string response = std::string(); NPP instance; NPVariant value_variant = NPVariant(); NPObject* member; - NPIdentifier property; + NPIdentifier* property; std::vector parameters = ((AsyncCallThreadData*) data)->parameters; instance = (NPP) parameters.at(0); member = (NPObject*) parameters.at(1); - property_name = (std::string*) parameters.at(2); + property = (NPIdentifier*) parameters.at(2); value = (std::string*) parameters.at(3); - PLUGIN_DEBUG_4ARG("Setting %s on instance %p, object %p to value %s\n", property_name->c_str(), instance, member, value->c_str()); + PLUGIN_DEBUG_4ARG("Setting %s on instance %p, object %p to value %s\n", browser_functions.utf8fromidentifier(*property), instance, member, value->c_str()); IcedTeaPluginUtilities::javaResultToNPVariant(instance, value, &value_variant); - property = browser_functions.getstringidentifier(property_name->c_str()); - ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, property, &value_variant); + ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, *property, &value_variant); IcedTeaPluginUtilities::constructMessagePrefix(0, &response); response.append(" JavaScriptSetMember "); @@ -737,31 +769,25 @@ void void _getMember(void* data) { - std::string* member_name; - NPObject* parent_ptr; NPVariant* member_ptr = new NPVariant(); std::string member_ptr_str = std::string(); NPP instance; - NPIdentifier member_identifier; std::vector parameters = ((AsyncCallThreadData*) data)->parameters; instance = (NPP) parameters.at(0); parent_ptr = (NPObject*) parameters.at(1); - member_name = (std::string*) parameters.at(2); - - // Get the corresponding windowId - member_identifier = browser_functions.getstringidentifier(member_name->c_str()); + NPIdentifier* member_identifier = (NPIdentifier*) parameters.at(2); // Get the NPVariant corresponding to this member - PLUGIN_DEBUG_4ARG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier,member_name->c_str()); - - if (!browser_functions.hasproperty(instance, parent_ptr, member_identifier)) - { - printf("%s not found!\n", member_name->c_str()); - } - ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, member_identifier, member_ptr); + PLUGIN_DEBUG_4ARG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier, browser_functions.utf8fromidentifier(*member_identifier)); + + if (!browser_functions.hasproperty(instance, parent_ptr, *member_identifier)) + { + printf("%s not found!\n", browser_functions.utf8fromidentifier(*member_identifier)); + } + ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, *member_identifier, member_ptr); IcedTeaPluginUtilities::printNPVariant(*member_ptr); diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/icedteanp/IcedTeaPluginUtils.cc --- a/plugin/icedteanp/IcedTeaPluginUtils.cc Wed Jan 13 21:32:58 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginUtils.cc Wed Jan 13 19:36:54 2010 -0500 @@ -815,14 +815,18 @@ IcedTeaPluginUtilities::isObjectJSArray( NPVariant constructor_v = NPVariant(); NPIdentifier constructor_id = browser_functions.getstringidentifier("constructor"); browser_functions.getproperty(instance, object, constructor_id, &constructor_v); - IcedTeaPluginUtilities::printNPVariant(constructor_v); + + // void constructor => not an array + if (NPVARIANT_IS_VOID(constructor_v)) + return false; NPObject* constructor = NPVARIANT_TO_OBJECT(constructor_v); NPVariant constructor_str; NPIdentifier toString = browser_functions.getstringidentifier("toString"); browser_functions.invoke(instance, constructor, toString, NULL, 0, &constructor_str); + IcedTeaPluginUtilities::printNPVariant(constructor_str); std::string constructor_name = std::string(); diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/tests/LiveConnect/DummyObject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/DummyObject.java Wed Jan 13 19:36:54 2010 -0500 @@ -0,0 +1,15 @@ +public class DummyObject { + private String str; + + public DummyObject(String s) { + this.str = s; + } + + public void setStr(String s) { + this.str = s; + } + + public String toString() { + return str; + } +} diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/tests/LiveConnect/OverloadTestHelper1.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper1.java Wed Jan 13 19:36:54 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper1 {} diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/tests/LiveConnect/OverloadTestHelper2.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper2.java Wed Jan 13 19:36:54 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper2 extends OverloadTestHelper1 {} diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/tests/LiveConnect/OverloadTestHelper3.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper3.java Wed Jan 13 19:36:54 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper3 extends OverloadTestHelper2 {} diff -r e3fb5ca2bab8 -r eaf5d54cc7d1 plugin/tests/LiveConnect/PluginTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/PluginTest.java Wed Jan 13 19:36:54 2010 -0500 @@ -0,0 +1,699 @@ +import javax.swing.JApplet; +import java.awt.Graphics; +import java.awt.*; +import java.applet.*; +import java.awt.event.*; +import netscape.javascript.JSObject; +import java.lang.reflect.Array; + +public class PluginTest extends JApplet { + + public int i = 42; + public double d = 42.42; + public float f = 42.1F; + public long l = 4294967296L; + public boolean b = true; + public char c = '\u2323'; + public byte by = 43; + public String rs = "I'm a string!"; + public String ss = "?????????$?????????"; + public Object n = null; + public int[] ia = new int[5]; + + public Integer I = 24; + public Double D = 24.24; + public Float F = 24.124F; + public Long L = 6927694924L; + public Boolean B = false; + public Character C = '\u1526'; + public Byte By = 34; + public Double[] Da1 = new Double[10]; + public Double[] Da2 = null; + + public char[] ca = new char[3]; + public Character[] Ca = new Character[3]; + + public void setUpForGMTests() { + i = 42; + d = 42.42; + f = 42.1F; + l = 4294967296L; + b = true; + c = '\u2323'; + by = 43; + rs = "I'm a string!"; + ss = "?????????$?????????"; + n = null; + + I = 24; + D = 24.24; + F = 24.124F; + L = 6927694924L; + B = false; + C = '\u1526'; + By = 34; + + ia[4] = 1024; + Da1[9] = D; + } + + public void setUpForSMTests() { + i = 0; + d = 0.0; + f = 0F; + l = 0L; + b = false; + c = 'A'; + by = 0; + rs = ""; + ss = ""; + n = new String("non-null object"); + + I = 0; + D = 0.0; + F = 0F; + L = 0L; + B = false; + C = 'A'; + By = null; + + ia[4] = 0; + Da1[9] = D; + } + + /* + ***************************************** + * JS -> Java Parameter conversion tests * + ***************************************** + */ + public void setUpForReturnTests() { + i = 41; + d = 41.41; + f = 41.411F; + l = 4294967297L; + b = true; + c = '\u2329'; + by = 44; + rs = "I'm a string too!"; + ss = "?????????$?????????"; + n = null; + + I = 14; + D = 14.14; + F = 14.114F; + L = 6927694925L; + B = false; + C = '\u2417'; + By = 46; + } + + /* + ************************************** + * JS -> Java invocation return tests * + ************************************** + */ + + public int intReturnTest() { return i; } + + public double doubleReturnTest() { return d; } + + public float floatReturnTest() { return f; } + + public long longReturnTest() { return l; } + + public boolean booleanReturnTest() { return b; } + + public char charReturnTest() { return c; } + + public byte byteReturnTest() { return by; } + + public char[] charArrayReturnTest() { + ca[0] = '\u2410'; From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 16:32:46 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:32:46 +0000 Subject: [Bug 152] HotSpot crashes while compiling GNU Classpath! Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=152 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Version|unspecified |6-1.2 ------- Comment #20 from gnu_andrew at member.fsf.org 2010-01-14 00:32 ------- This should be fixed in current builds which use hs14. Please reopen if not. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at icedtea.classpath.org Wed Jan 13 16:37:25 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 14 Jan 2010 00:37:25 +0000 Subject: /hg/icedtea: - Adding last bits for full Java->JS array element ... Message-ID: changeset ef639bb13850 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=ef639bb13850 author: Deepak Bhole date: Wed Jan 13 19:43:16 2010 -0500 - Adding last bits for full Java->JS array element access (read and write) support. - Checking in initial version of LiveConnect tests (WIP) diffstat: 24 files changed, 4647 insertions(+), 48 deletions(-) .hgignore | 1 ChangeLog | 46 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 2 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 118 +- plugin/icedteanp/IcedTeaPluginUtils.cc | 6 plugin/tests/LiveConnect/DummyObject.java | 15 plugin/tests/LiveConnect/OverloadTestHelper1.java | 1 plugin/tests/LiveConnect/OverloadTestHelper2.java | 1 plugin/tests/LiveConnect/OverloadTestHelper3.java | 1 plugin/tests/LiveConnect/PluginTest.java | 699 ++++++++++++++ plugin/tests/LiveConnect/build | 18 plugin/tests/LiveConnect/common.js | 215 ++++ plugin/tests/LiveConnect/index.html | 89 + plugin/tests/LiveConnect/jjs_func_parameters_tests.js | 107 ++ plugin/tests/LiveConnect/jjs_func_rettype_tests.js | 61 + plugin/tests/LiveConnect/jjs_get_tests.js | 114 ++ plugin/tests/LiveConnect/jjs_set_tests.js | 314 ++++++ plugin/tests/LiveConnect/jsj_func_overload_tests.js | 181 +++ plugin/tests/LiveConnect/jsj_func_parameters_tests.js | 216 ++++ plugin/tests/LiveConnect/jsj_func_rettype_tests.js | 262 +++++ plugin/tests/LiveConnect/jsj_get_tests.js | 260 +++++ plugin/tests/LiveConnect/jsj_set_tests.js | 318 ++++++ plugin/tests/LiveConnect/jsj_type_casting_tests.js | 825 +++++++++++++++++ plugin/tests/LiveConnect/jsj_type_conversion_tests.js | 825 +++++++++++++++++ diffs (truncated from 4929 to 500 lines): diff -r aaf3cf416fb4 -r ef639bb13850 .hgignore --- a/.hgignore Sat Jan 09 00:01:09 2010 +0000 +++ b/.hgignore Wed Jan 13 19:43:16 2010 -0500 @@ -10,3 +10,4 @@ install-sh install-sh Makefile.in *.sh +plugin/tests/LiveConnect/*jar diff -r aaf3cf416fb4 -r ef639bb13850 ChangeLog --- a/ChangeLog Sat Jan 09 00:01:09 2010 +0000 +++ b/ChangeLog Wed Jan 13 19:43:16 2010 -0500 @@ -1,3 +1,49 @@ 2010-01-08 Andrew John Hughes + + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (newMessageOnBus): Service GetSlot and SetSlot requests. + (call): Create Java object from result only if it is non-null. + (setMember): Pass a preset identifier to _setMember. Handle array slot + setting. + (sendMember): Handle array slot read. + (queue_processor): Service GetSlot and SetSlot requests. + (_setMember): Work with property NPIdentifier instead of name string. + (_getMember): Same. + * plugin/icedteanp/IcedTeaPluginUtils.cc + (isObjectJSArray): Handle void constructor objects like 'window'. + * plugin/tests/LiveConnect/DummyObject.java: New file. Helper for plugin + tests. + * plugin/tests/LiveConnect/OverloadTestHelper1.java: Same. + * plugin/tests/LiveConnect/OverloadTestHelper2.java: Same. + * plugin/tests/LiveConnect/OverloadTestHelper3.java: Same. + * plugin/tests/LiveConnect/PluginTest.java: New file. Plugin test applet to + drive LiveConnect tests. + * plugin/tests/LiveConnect/build: New build. Build file for plugin tests. + * plugin/tests/LiveConnect/common.js: New file. Contains common + LiveConnect test functions. + * plugin/tests/LiveConnect/index.html: New file. Index from which + LiveConnect tests can be launched. + * plugin/tests/LiveConnect/jjs_func_parameters_tests.js: New file. + Contains Java -> JS parameter passing tests. + * plugin/tests/LiveConnect/jjs_func_rettype_tests.js: New file. Contains + Java -> JS invocation return type read tests. + * plugin/tests/LiveConnect/jjs_get_tests.js: New file. Contains Java -> + JS variable read tests. + * plugin/tests/LiveConnect/jjs_set_tests.js: New file. Contains Java -> JS + variable write tests. + * plugin/tests/LiveConnect/jsj_func_overload_tests.js: New file. Contains + overload resolution tests for JS -> Java invocation. + * plugin/tests/LiveConnect/jsj_func_parameters_tests.js: New file. + Contains JS -> Java parameter passing tests. + * plugin/tests/LiveConnect/jsj_func_rettype_tests.js: New file. Contains + JS -> Java invocation return type read tests. + * plugin/tests/LiveConnect/jsj_get_tests.js: New file. Contains JS -> Java + variable read tests. + * plugin/tests/LiveConnect/jsj_set_tests.js: New file. Contains JS -> Java + variable write tests. + * plugin/tests/LiveConnect/jsj_type_casting_tests.js: New file. Contains + JS -> Java type conversion tests. + 2010-01-08 Andrew John Hughes * Makefile.am: diff -r aaf3cf416fb4 -r ef639bb13850 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Sat Jan 09 00:01:09 2010 +0000 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Jan 13 19:43:16 2010 -0500 @@ -899,7 +899,7 @@ createJavaObjectFromVariant(NPP instance alreadyCreated = true; } else { - PLUGIN_DEBUG_0ARG("NPObject is not a Java object"); + PLUGIN_DEBUG_0ARG("NPObject is not a Java object\n"); NPIdentifier length_id = browser_functions.getstringidentifier("length"); // FIXME: We currently only handle <= 2 dim arrays. Do we really need more though? diff -r aaf3cf416fb4 -r ef639bb13850 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Sat Jan 09 00:01:09 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Wed Jan 13 19:43:16 2010 -0500 @@ -117,6 +117,8 @@ PluginRequestProcessor::newMessageOnBus( command == "SetMember" || command == "ToString" || command == "Call" || + command == "GetSlot" || + command == "SetSlot" || command == "Eval") { @@ -331,7 +333,14 @@ PluginRequestProcessor::call(std::vector NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result); std::string result_variant_jniid = std::string(); - createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid); + + if (result_variant) + { + createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid); + } else + { + result_variant_jniid = "0"; + } IcedTeaPluginUtilities::constructMessagePrefix(0, &response); response += " JavaScriptCall "; @@ -408,11 +417,11 @@ PluginRequestProcessor::setMember(std::v PluginRequestProcessor::setMember(std::vector* message_parts) { std::string propertyNameID; - std::string property_name = std::string(); std::string value = std::string(); NPP instance; NPVariant* member; + NPIdentifier property_identifier; JavaRequestProcessor java_request = JavaRequestProcessor(); JavaResultData* java_result; @@ -434,17 +443,22 @@ PluginRequestProcessor::setMember(std::v instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(member); - java_result = java_request.getString(propertyNameID); - - // the result we want is in result_string (assuming there was no error) - if (java_result->error_occurred) - { - printf("Unable to get member name for setMember. Error occurred: %s\n", java_result->error_msg); - //goto cleanup; - } - - // Copy into local variable before disposing the object - property_name.append(*(java_result->return_string)); + if (message_parts->at(2) == "SetSlot") + { + property_identifier = browser_functions.getintidentifier(atoi(message_parts->at(4).c_str())); + } else + { + java_result = java_request.getString(propertyNameID); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to get member name for setMember. Error occurred: %s\n", java_result->error_msg); + //goto cleanup; + } + + property_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str()); + } AsyncCallThreadData thread_data = AsyncCallThreadData(); thread_data.result_ready = false; @@ -453,7 +467,7 @@ PluginRequestProcessor::setMember(std::v thread_data.parameters.push_back(instance); thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*member)); - thread_data.parameters.push_back(&property_name); + thread_data.parameters.push_back(&property_identifier); thread_data.parameters.push_back(&value); #ifdef CHROMIUM_WORKAROUND @@ -505,6 +519,8 @@ PluginRequestProcessor::sendMember(std:: std::string jsObjectConstructorID = std::string(); std::string response = std::string(); + NPIdentifier member_identifier; + int method_id; int instance_id; long reference; @@ -517,16 +533,23 @@ PluginRequestProcessor::sendMember(std:: parent_ptr = (NPVariant*) (IcedTeaPluginUtilities::stringToJSID(message_parts->at(3))); member_id += message_parts->at(4); - /** Request data from Java **/ - - // make a new request for getString, to get the name of the identifier - java_result = java_request.getString(member_id); - - // the result we want is in result_string (assuming there was no error) - if (java_result->error_occurred) - { - printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg); - //goto cleanup; + /** Request data from Java if necessary **/ + if (message_parts->at(2) == "GetSlot") + { + member_identifier = browser_functions.getintidentifier(atoi(member_id.c_str())); + } else + { + // make a new request for getString, to get the name of the identifier + java_result = java_request.getString(member_id); + + // the result we want is in result_string (assuming there was no error) + if (java_result->error_occurred) + { + printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg); + //goto cleanup; + } + + member_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str()); } /** Make an internal request for the main thread to handle, to get the member pointer **/ @@ -541,7 +564,7 @@ PluginRequestProcessor::sendMember(std:: NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(parent_ptr); thread_data.parameters.push_back(instance); thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*parent_ptr)); - thread_data.parameters.push_back(java_result->return_string); + thread_data.parameters.push_back(&member_identifier); #ifdef CHROMIUM_WORKAROUND // Workaround for chromium @@ -609,7 +632,12 @@ PluginRequestProcessor::sendMember(std:: IcedTeaPluginUtilities::constructMessagePrefix(0, &response); - response.append(" JavaScriptGetMember "); + if (message_parts->at(2) == "GetSlot") + { + response.append(" JavaScriptGetMember "); + } else { + response.append(" JavaScriptGetSlot "); + } response.append(java_result->return_string->c_str()); plugin_to_java_bus->post(response.c_str()); @@ -678,6 +706,12 @@ queue_processor(void* data) pthread_mutex_lock(&syn_write_mutex); processor->sendMember(message_parts); pthread_mutex_unlock(&syn_write_mutex); + } else if (command == "SetSlot") + { + // write methods are synchronized + pthread_mutex_lock(&syn_write_mutex); + processor->setMember(message_parts); + pthread_mutex_unlock(&syn_write_mutex); } else { // Nothing matched @@ -704,27 +738,25 @@ void void _setMember(void* data) { - std::string* property_name; std::string* value; std::string response = std::string(); NPP instance; NPVariant value_variant = NPVariant(); NPObject* member; - NPIdentifier property; + NPIdentifier* property; std::vector parameters = ((AsyncCallThreadData*) data)->parameters; instance = (NPP) parameters.at(0); member = (NPObject*) parameters.at(1); - property_name = (std::string*) parameters.at(2); + property = (NPIdentifier*) parameters.at(2); value = (std::string*) parameters.at(3); - PLUGIN_DEBUG_4ARG("Setting %s on instance %p, object %p to value %s\n", property_name->c_str(), instance, member, value->c_str()); + PLUGIN_DEBUG_4ARG("Setting %s on instance %p, object %p to value %s\n", browser_functions.utf8fromidentifier(*property), instance, member, value->c_str()); IcedTeaPluginUtilities::javaResultToNPVariant(instance, value, &value_variant); - property = browser_functions.getstringidentifier(property_name->c_str()); - ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, property, &value_variant); + ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, *property, &value_variant); IcedTeaPluginUtilities::constructMessagePrefix(0, &response); response.append(" JavaScriptSetMember "); @@ -737,31 +769,25 @@ void void _getMember(void* data) { - std::string* member_name; - NPObject* parent_ptr; NPVariant* member_ptr = new NPVariant(); std::string member_ptr_str = std::string(); NPP instance; - NPIdentifier member_identifier; std::vector parameters = ((AsyncCallThreadData*) data)->parameters; instance = (NPP) parameters.at(0); parent_ptr = (NPObject*) parameters.at(1); - member_name = (std::string*) parameters.at(2); - - // Get the corresponding windowId - member_identifier = browser_functions.getstringidentifier(member_name->c_str()); + NPIdentifier* member_identifier = (NPIdentifier*) parameters.at(2); // Get the NPVariant corresponding to this member - PLUGIN_DEBUG_4ARG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier,member_name->c_str()); - - if (!browser_functions.hasproperty(instance, parent_ptr, member_identifier)) - { - printf("%s not found!\n", member_name->c_str()); - } - ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, member_identifier, member_ptr); + PLUGIN_DEBUG_4ARG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier, browser_functions.utf8fromidentifier(*member_identifier)); + + if (!browser_functions.hasproperty(instance, parent_ptr, *member_identifier)) + { + printf("%s not found!\n", browser_functions.utf8fromidentifier(*member_identifier)); + } + ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, *member_identifier, member_ptr); IcedTeaPluginUtilities::printNPVariant(*member_ptr); diff -r aaf3cf416fb4 -r ef639bb13850 plugin/icedteanp/IcedTeaPluginUtils.cc --- a/plugin/icedteanp/IcedTeaPluginUtils.cc Sat Jan 09 00:01:09 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginUtils.cc Wed Jan 13 19:43:16 2010 -0500 @@ -815,14 +815,18 @@ IcedTeaPluginUtilities::isObjectJSArray( NPVariant constructor_v = NPVariant(); NPIdentifier constructor_id = browser_functions.getstringidentifier("constructor"); browser_functions.getproperty(instance, object, constructor_id, &constructor_v); - IcedTeaPluginUtilities::printNPVariant(constructor_v); + + // void constructor => not an array + if (NPVARIANT_IS_VOID(constructor_v)) + return false; NPObject* constructor = NPVARIANT_TO_OBJECT(constructor_v); NPVariant constructor_str; NPIdentifier toString = browser_functions.getstringidentifier("toString"); browser_functions.invoke(instance, constructor, toString, NULL, 0, &constructor_str); + IcedTeaPluginUtilities::printNPVariant(constructor_str); std::string constructor_name = std::string(); diff -r aaf3cf416fb4 -r ef639bb13850 plugin/tests/LiveConnect/DummyObject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/DummyObject.java Wed Jan 13 19:43:16 2010 -0500 @@ -0,0 +1,15 @@ +public class DummyObject { + private String str; + + public DummyObject(String s) { + this.str = s; + } + + public void setStr(String s) { + this.str = s; + } + + public String toString() { + return str; + } +} diff -r aaf3cf416fb4 -r ef639bb13850 plugin/tests/LiveConnect/OverloadTestHelper1.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper1.java Wed Jan 13 19:43:16 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper1 {} diff -r aaf3cf416fb4 -r ef639bb13850 plugin/tests/LiveConnect/OverloadTestHelper2.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper2.java Wed Jan 13 19:43:16 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper2 extends OverloadTestHelper1 {} diff -r aaf3cf416fb4 -r ef639bb13850 plugin/tests/LiveConnect/OverloadTestHelper3.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/OverloadTestHelper3.java Wed Jan 13 19:43:16 2010 -0500 @@ -0,0 +1,1 @@ +public class OverloadTestHelper3 extends OverloadTestHelper2 {} diff -r aaf3cf416fb4 -r ef639bb13850 plugin/tests/LiveConnect/PluginTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/tests/LiveConnect/PluginTest.java Wed Jan 13 19:43:16 2010 -0500 @@ -0,0 +1,699 @@ +import javax.swing.JApplet; +import java.awt.Graphics; +import java.awt.*; +import java.applet.*; +import java.awt.event.*; +import netscape.javascript.JSObject; +import java.lang.reflect.Array; + +public class PluginTest extends JApplet { + + public int i = 42; + public double d = 42.42; + public float f = 42.1F; + public long l = 4294967296L; + public boolean b = true; + public char c = '\u2323'; + public byte by = 43; + public String rs = "I'm a string!"; + public String ss = "?????????$?????????"; + public Object n = null; + public int[] ia = new int[5]; + + public Integer I = 24; + public Double D = 24.24; + public Float F = 24.124F; + public Long L = 6927694924L; + public Boolean B = false; + public Character C = '\u1526'; + public Byte By = 34; + public Double[] Da1 = new Double[10]; + public Double[] Da2 = null; + + public char[] ca = new char[3]; + public Character[] Ca = new Character[3]; + + public void setUpForGMTests() { + i = 42; + d = 42.42; + f = 42.1F; + l = 4294967296L; + b = true; + c = '\u2323'; + by = 43; + rs = "I'm a string!"; + ss = "?????????$?????????"; + n = null; + + I = 24; + D = 24.24; + F = 24.124F; + L = 6927694924L; + B = false; + C = '\u1526'; + By = 34; + + ia[4] = 1024; + Da1[9] = D; + } + + public void setUpForSMTests() { + i = 0; + d = 0.0; + f = 0F; + l = 0L; + b = false; + c = 'A'; + by = 0; + rs = ""; + ss = ""; + n = new String("non-null object"); + + I = 0; + D = 0.0; + F = 0F; + L = 0L; + B = false; + C = 'A'; + By = null; + + ia[4] = 0; + Da1[9] = D; + } + + /* + ***************************************** + * JS -> Java Parameter conversion tests * + ***************************************** + */ + public void setUpForReturnTests() { + i = 41; + d = 41.41; + f = 41.411F; + l = 4294967297L; + b = true; + c = '\u2329'; + by = 44; + rs = "I'm a string too!"; + ss = "?????????$?????????"; + n = null; + + I = 14; + D = 14.14; + F = 14.114F; + L = 6927694925L; + B = false; + C = '\u2417'; + By = 46; + } + + /* + ************************************** + * JS -> Java invocation return tests * + ************************************** + */ + + public int intReturnTest() { return i; } + + public double doubleReturnTest() { return d; } + + public float floatReturnTest() { return f; } + + public long longReturnTest() { return l; } + + public boolean booleanReturnTest() { return b; } + + public char charReturnTest() { return c; } + + public byte byteReturnTest() { return by; } + + public char[] charArrayReturnTest() { + ca[0] = '\u2410'; From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 17:07:19 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 01:07:19 +0000 Subject: [Bug 163] ./configure under OpenSolaris Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=163 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 17:44:17 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 01:44:17 +0000 Subject: [Bug 179] javascript script support through rhino should not be on bootclasspath Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=179 ------- Comment #5 from gnu_andrew at member.fsf.org 2010-01-14 01:44 ------- I'm afraid it's not as simple as that. IcedTea doesn't package Rhino, it uses the system installed version. So to have the packages renamed, you'd need the system installation of Rhino to be patched in that manner. We don't want to be maintaining our own fork of Rhino within IcedTea. I think we need to look at a solution whereby Rhino is loaded with a lower priority classloader that can be overridden. An interim solution, other than the -Xbootclasspath setting suggested by Mark, would be to remove the symlink from the JDK install. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 17:51:52 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 01:51:52 +0000 Subject: [Bug 192] com.sun.image.codec.jpeg doesn't work with ImageJ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=192 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | ------- Comment #17 from gnu_andrew at member.fsf.org 2010-01-14 01:51 ------- The reason this is missing from OpenJDK is that it was removed from OpenJDK7 and OpenJDK6 is a fork of OpenJDK7 (believe it or not). I assume these classes are in the proprietary JDK6 provided by Sun so we should provide such wrappers and even consider pushing them upstream to OpenJDK6. marathon, are you and Matthew the sole authors of the contributed code? For OpenJDK, we'd need an SCA from you both but it can go into IcedTea6 as is. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 17:54:28 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 01:54:28 +0000 Subject: [Bug 245] talendOpenStudio Crashes. Log file pasted in description (Issue is repeatable) Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=245 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |REMIND Version|unspecified |7-1.5 ------- Comment #3 from gnu_andrew at member.fsf.org 2010-01-14 01:54 ------- Closing this as the version of IcedTea it is filed against is over two years old. If this still occurs with a recent release, please reopen it. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 17:56:54 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 01:56:54 +0000 Subject: [Bug 271] JavaFX sample no longer runs with javaws, runs fine with java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=271 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |NetX Version|unspecified |6-1.5 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 17:58:23 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 01:58:23 +0000 Subject: [Bug 276] SIGSEGV in 64 bit JDK 1.6 when using JNI, and both library and Java app are threaded Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=276 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 17:59:40 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 01:59:40 +0000 Subject: [Bug 288] regressions in jdk testsuite with new hotspot Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=288 ------- Comment #2 from gnu_andrew at member.fsf.org 2010-01-14 01:59 ------- Which 'new HotSpot' is this? Do these failures still exist? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 18:00:12 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 02:00:12 +0000 Subject: [Bug 290] plugin crash on amd64 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=290 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |Plugin Version|unspecified |6-1.6.1 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 18:01:11 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 02:01:11 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.4 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Jan 13 18:02:11 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 02:02:11 +0000 Subject: [Bug 294] JavaFX sample not starting as applet due to ZipException, runs fine with javaws or java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=294 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |Plugin Version|unspecified |6-1.4 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Jan 14 02:01:19 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 10:01:19 +0000 Subject: [Bug 428] Shark on ARM precompiled header incls/_precompiled.incl.gch build failure Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 ------- Comment #2 from xerxes at zafena.se 2010-01-14 10:01 ------- This bug are a new regression that have been introduced onto the hg branch somewhere after the Icedtea6 1.6 release. Im running jaunty on this build machine with gcj-4.3. I have configured Icedtea6 like this: hg clone http://icedtea.classpath.org/hg/icedtea6 cd icedtea6 ./autogen.sh mkdir ../icedtea6-shark cd ../icedtea6-shark ../icedtea6/configure --enable-zero --enable-shark --disable-docs make icedtea-against-ecj -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Jan 14 02:50:40 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 14 Jan 2010 10:50:40 +0000 Subject: [Bug 428] Shark on ARM precompiled header incls/_precompiled.incl.gch build failure Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 ------- Comment #3 from xerxes at zafena.se 2010-01-14 10:50 ------- Created an attachment (id=280) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=280&action=view) icedtea7 incls/_precompiled.incl.gch build failure log icedtea 7 hg branch hits the same regession during generation of incls/_precompiled.incl.gch. when building Shark on ARM. error log attached -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From doko at ubuntu.com Thu Jan 14 06:20:43 2010 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 14 Jan 2010 15:20:43 +0100 Subject: HotSpot 16 In-Reply-To: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> References: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> Message-ID: <4B4F283B.8030103@ubuntu.com> On 13.01.2010 22:37, Andrew John Hughes wrote: > I've now bumped IcedTea6 HEAD and 1.7 to build the latest hs16 (b13) > as I believe is used in the proprietary JDK 6 update 18. > > I've confirmed that both normal and Zero builds complete. Shark also > builds but can't bootstrap itself; see > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=430 As both > Shark and hs16 are experimental, I don't think that's a release > stopper. so update hotspot two days before a planned release and then declare the regressions as non-stoppers? the shark build fails for me as well when using the new hotspot as bootstrap compiler (on ix86 configuring --with-additional-vms=shark), so this is also seen with other bootstrap compilers. From gnu_andrew at member.fsf.org Thu Jan 14 06:55:15 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 14 Jan 2010 14:55:15 +0000 Subject: HotSpot 16 In-Reply-To: <4B4F283B.8030103@ubuntu.com> References: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> <4B4F283B.8030103@ubuntu.com> Message-ID: <17c6771e1001140655v4499a0e4q2cf22ba0e6e649fd@mail.gmail.com> 2010/1/14 Matthias Klose : > On 13.01.2010 22:37, Andrew John Hughes wrote: >> >> I've now bumped IcedTea6 HEAD and 1.7 to build the latest hs16 (b13) >> as I believe is used in the proprietary JDK 6 update 18. >> >> I've confirmed that both normal and Zero builds complete. ?Shark also >> builds but can't bootstrap itself; see >> http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=430 ?As both >> Shark and hs16 are experimental, I don't think that's a release >> stopper. > > so update hotspot two days before a planned release and then declare the > regressions as non-stoppers? > It's a minor update to a version of HotSpot that is _not the default_, and which fully bootstraps with both normal and Zero builds. I don't recall Shark working with hs16 before so how is this a regression? FWIW, Shark also can't bootstrap itself on 7 either (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=348) and that's been the case for some time. If I thought there was going to be a fix for this in the next week or so, I would see the point in delaying the release. Are you offering to fix this? As is, I don't see how there is anything to gain from waiting indefinitely for a fix to a pretty minor build option (hs16+shark). Shark is still a work-in-progress and anyone wanting to ship Shark+hs16 binaries would be quite mad. As I said before, I've updated hs16 because if we're going to include the option to build with it at all, we should use the same version Sun are shipping and that will end up in b18. > the shark build fails for me as well when using the new hotspot as bootstrap > compiler (on ix86 configuring --with-additional-vms=shark), so this is also > seen with other bootstrap compilers. What other bootstrap compilers? Other than the arch., that sounds pretty much like what I did. > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Thu Jan 14 08:34:24 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 14 Jan 2010 16:34:24 +0000 Subject: HotSpot 16 In-Reply-To: <17c6771e1001140655v4499a0e4q2cf22ba0e6e649fd@mail.gmail.com> References: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> <4B4F283B.8030103@ubuntu.com> <17c6771e1001140655v4499a0e4q2cf22ba0e6e649fd@mail.gmail.com> Message-ID: <17c6771e1001140834h4da73e5dt55889a366e828147@mail.gmail.com> 2010/1/14 Andrew John Hughes : > 2010/1/14 Matthias Klose : >> On 13.01.2010 22:37, Andrew John Hughes wrote: >>> >>> I've now bumped IcedTea6 HEAD and 1.7 to build the latest hs16 (b13) >>> as I believe is used in the proprietary JDK 6 update 18. >>> >>> I've confirmed that both normal and Zero builds complete. ?Shark also >>> builds but can't bootstrap itself; see >>> http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=430 ?As both >>> Shark and hs16 are experimental, I don't think that's a release >>> stopper. >> >> so update hotspot two days before a planned release and then declare the >> regressions as non-stoppers? >> > > It's a minor update to a version of HotSpot that is _not the default_, > and which fully bootstraps with both normal and Zero builds. ?I don't > recall Shark working with hs16 before so how is this a regression? > > FWIW, Shark also can't bootstrap itself on 7 either > (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=348) and that's > been the case for some time. ?If I thought there was going to be a fix > for this in the next week or so, I would see the point in delaying the > release. ? Are you offering to fix this? > > As is, I don't see how there is anything to gain from waiting > indefinitely for a fix to a pretty minor build option (hs16+shark). > Shark is still a work-in-progress and anyone wanting to ship > Shark+hs16 binaries would be quite mad. > > As I said before, I've updated hs16 because if we're going to include > the option to build with it at all, we should use the same version Sun > are shipping and that will end up in b18. > On IRC, we found that this is a regression from when we first added hs16 (though not 1.6 obviously). These are the actual changes between the two hs16 revisions: changeset: 941:6bdfda9a7120 user: trims date: Fri Oct 02 14:16:39 2009 -0700 summary: 6887914: Bump the HS16 build number to 10 changeset: 942:6de2c9c36168 user: tonyp date: Tue Oct 20 19:55:13 2009 -0400 summary: 6893095: G1: bulk G1 backports to hs16 changeset: 943:47ca7aa20d97 user: asaha date: Wed Oct 21 15:43:35 2009 -0700 summary: 6858208: jvm crash when specifying TypeProfileWidth=0 on jdk 6.0 changeset: 944:aa001a20bd61 parent: 941:6bdfda9a7120 user: ysr date: Fri Oct 16 02:05:46 2009 -0700 summary: 6888898: CMS: ReduceInitialCardMarks unsafe in the presence of cms precleaning changeset: 945:164505f3849e user: ysr date: Tue Oct 20 00:00:23 2009 -0700 summary: 6892749: assert(UseParNewGC || UseSerialGC || UseConcMarkSweepGC, "...") fails changeset: 946:d43a7bf86266 parent: 945:164505f3849e parent: 942:6de2c9c36168 user: ysr date: Wed Oct 21 12:35:50 2009 -0700 summary: Merge changeset: 947:aa83c08db78c parent: 946:d43a7bf86266 parent: 943:47ca7aa20d97 user: ysr date: Wed Oct 21 19:13:54 2009 -0700 summary: Merge changeset: 948:b7e7fc226009 parent: 946:d43a7bf86266 parent: 943:47ca7aa20d97 user: ysr date: Wed Oct 21 18:57:28 2009 -0700 summary: Merge changeset: 949:0537635c7c16 parent: 948:b7e7fc226009 parent: 947:aa83c08db78c user: ysr date: Wed Oct 21 21:06:27 2009 -0700 summary: Merge changeset: 950:06264910ac5f user: trims date: Wed Oct 21 21:31:53 2009 -0700 summary: 6893995: Bump the HS16 build number to 11 changeset: 951:38b152ff0cac user: trims date: Wed Oct 21 21:34:37 2009 -0700 summary: 6893996: change default JPRT release target to be 6u18 changeset: 952:0799687b7385 user: phh date: Thu Oct 29 11:45:09 2009 -0400 summary: 6887571: Increase default heap config sizes changeset: 953:b0651468aff7 user: ysr date: Wed Oct 28 11:16:42 2009 -0700 summary: 6818264: Heap dumper unexpectedly adds .hprof suffix changeset: 954:511f4c69c1be user: johnc date: Thu Oct 29 09:42:26 2009 -0700 summary: 6889740: G1: OpenDS fails with "unhandled exception in compiled code" changeset: 955:684c526959a9 parent: 953:b0651468aff7 user: phh date: Tue Nov 03 15:17:42 2009 -0500 summary: 6852078: HSX 14/16 in jdk 5.0: api/javax_management api/org_omg jck tests crashes or make tnameserv crash changeset: 956:c5388a988d5a parent: 954:511f4c69c1be parent: 955:684c526959a9 user: phh date: Wed Nov 04 07:07:14 2009 -0800 summary: Merge changeset: 957:4385d4e7497b user: ysr date: Tue Nov 03 16:43:16 2009 -0800 summary: 6801625: CDS: HeapDump tests crash with internal error in compactingPermGenGen.cpp changeset: 958:248f0ad25d21 user: kvn date: Fri Nov 06 10:07:50 2009 -0800 summary: 6896084: VM does not reserve protected page below heap for compressed oops implicit null checks changeset: 959:3a2dae936e36 user: kvn date: Fri Nov 06 10:23:54 2009 -0800 summary: 6893554: SPECjvm2008 mpegaudio fails with SecurityException changeset: 960:395db6268de2 user: cfang date: Fri Nov 06 14:38:53 2009 -0800 summary: 6876276: assert(!is_visited,"visit only once") changeset: 961:26d0c7276c9e parent: 954:511f4c69c1be user: phh date: Fri Nov 06 19:57:55 2009 -0500 summary: 6898160: Need serviceability support for new vm argument type 'uint64_t' changeset: 962:a76f17a8fd77 parent: 960:395db6268de2 parent: 961:26d0c7276c9e user: phh date: Fri Nov 06 17:44:04 2009 -0800 summary: Merge changeset: 963:788af96b55e3 user: apetrusenko date: Thu Oct 22 07:43:49 2009 -0700 summary: 6858886: G1: guarantee(_next_marked_bytes <= used(),"invariant") at heapRegion.hpp:359 changeset: 964:e3c995ac8078 user: tonyp date: Fri Oct 23 14:34:27 2009 -0400 summary: 6886024: G1: assert(recent_avg_pause_time_ratio() < 1.00,"All GC?") changeset: 965:2572dd3d6d7c user: tonyp date: Wed Sep 30 14:50:51 2009 -0400 summary: 6890137: G1: revamp reachable object dump changeset: 966:850627f5fd81 user: apetrusenko date: Tue Oct 27 02:42:24 2009 -0700 summary: 6870843: G1: G1 GC memory leak changeset: 967:9f7d1f6201ab user: johnc date: Fri Nov 06 11:10:05 2009 -0800 summary: 6895788: G1: SATB and update buffer allocation code allocates too much space changeset: 968:1a1b644fe617 parent: 962:a76f17a8fd77 user: never date: Thu Nov 12 09:24:21 2009 -0800 summary: 6892658: C2 should optimize some stringbuilder patterns changeset: 969:6571190a0304 parent: 968:1a1b644fe617 parent: 967:9f7d1f6201ab user: never date: Thu Nov 12 14:27:25 2009 -0800 summary: Merge changeset: 970:0ad684e27697 parent: 962:a76f17a8fd77 user: phh date: Thu Nov 12 18:07:55 2009 -0500 summary: 6900899: vm fails to start when -Xmx value is less than OldSize + NewSize changeset: 971:da3df85c0bcd parent: 969:6571190a0304 parent: 970:0ad684e27697 user: phh date: Thu Nov 12 15:25:37 2009 -0800 summary: Merge changeset: 972:dba6aafa42ff parent: 969:6571190a0304 user: jmasa date: Thu Nov 12 15:01:43 2009 -0800 summary: 6898857: [Regression] -XX:NewRatio with -XX:+UseConcMarkSweepGC causes fatal error changeset: 973:54d471e8741d parent: 972:dba6aafa42ff parent: 971:da3df85c0bcd user: jmasa date: Thu Nov 12 17:36:13 2009 -0800 summary: Merge changeset: 974:834503c17fc1 user: trims date: Thu Nov 12 19:44:32 2009 -0800 summary: 6900997: Bump the HS16 build number to 12 changeset: 975:938b86f7a7fc user: cfang date: Tue Nov 24 15:52:43 2009 -0800 summary: 6892079: live value must not be garbage failure after fix for 6854812 changeset: 976:c5cb255ec7a3 user: trims date: Wed Nov 25 12:43:26 2009 -0800 summary: 6821003: Update hotspot windows os_win32 for windows 7 changeset: 977:5a6085c47686 user: trims date: Wed Apr 08 15:16:14 2009 -0700 summary: 6828069: Change JDK_MINOR_VER to 6 for 6Update HS versions changeset: 978:5f14026df877 user: asaha date: Fri Jul 10 14:00:02 2009 -0700 summary: 6842999: Update hotspot windows os_win32 for windows 2008 R2 changeset: 979:43e3f86b638d parent: 975:938b86f7a7fc user: cfang date: Wed Nov 25 12:09:02 2009 -0800 summary: 6904191: OptimizeStringConcat should be product instead of experimental changeset: 980:c44e78b9aa0a parent: 978:5f14026df877 parent: 979:43e3f86b638d user: trims date: Wed Nov 25 17:01:17 2009 -0800 summary: Merge changeset: 981:b6e6e189e1db user: trims date: Wed Nov 25 19:15:17 2009 -0800 summary: 6904996: Bump the HS16 build number to 13 changeset: 982:49bd3de668dc user: dholmes date: Tue Dec 01 19:10:24 2009 -0500 summary: 6822370: ReentrantReadWriteLock: threads hung when there are no threads holding onto the lock (Netra x4450) changeset: 983:9adb2f184e47 user: ysr date: Thu Dec 03 15:01:57 2009 -0800 summary: 6906727: UseCompressedOops: some card-marking fixes related to object arrays changeset: 984:62926c7f67a3 user: ysr date: Tue Dec 08 15:12:17 2009 -0800 summary: 6908208: UseCompressedOops: array_size() returns incorrect size for MAX_INT object array following 6906727 I don't see anything obvious though. The only thing I can think of is some option was turned on that Shark doesn't support. As 7 fails too, I'm not optimistic of a quick fix, so we may just have to go for an appropriate warning that hs16+Shark are not supported for this release. >> the shark build fails for me as well when using the new hotspot as bootstrap >> compiler (on ix86 configuring --with-additional-vms=shark), so this is also >> seen with other bootstrap compilers. > > What other bootstrap compilers? ?Other than the arch., that sounds > pretty much like what I did. > >From IRC; sounds like Matthias is hitting the same or a similar problem, but the --with-additional-vms hits it at a different point because Shark is invoked later. >> > > > > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at ubuntu.com Thu Jan 14 08:49:07 2010 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 14 Jan 2010 17:49:07 +0100 Subject: [patch] fix dependency checking for the IcedTeaNPPlugin Message-ID: <4B4F4B03.80506@ubuntu.com> noticed a rebuild of the entire build when trying to run the testsuite, only seen when configured for the NPPlugin. Testing the following patch. I'll check it in for IcedTea6 (trunk and 1.7 branch if it succeeds). Matthias -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: npp.diff Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20100114/cc2a1c8b/npp.diff From doko at icedtea.classpath.org Thu Jan 14 16:26:28 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Fri, 15 Jan 2010 00:26:28 +0000 Subject: /hg/icedtea6: Proper dependency checking for files involved in t... Message-ID: changeset 1a118a8c23ff in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1a118a8c23ff author: doko at ubuntu.com date: Fri Jan 15 01:26:56 2010 +0100 Proper dependency checking for files involved in the build of the NPPlugin 2010-01-14 Matthias Klose * Makefile.am (stamps/icedtea-npplugin): New target, add file dependencies for building the IcedTeaNPPlugin.so. diffstat: 2 files changed, 11 insertions(+), 3 deletions(-) ChangeLog | 5 +++++ Makefile.am | 9 ++++++--- diffs (52 lines): diff -r 9e6623803599 -r 1a118a8c23ff ChangeLog --- a/ChangeLog Wed Jan 13 19:32:07 2010 -0500 +++ b/ChangeLog Fri Jan 15 01:26:56 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-13 Deepak Bhole + + * Makefile.am (stamps/icedtea-npplugin): New target, add file + dependencies for building the IcedTeaNPPlugin.so. + 2010-01-13 Deepak Bhole * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc diff -r 9e6623803599 -r 1a118a8c23ff Makefile.am --- a/Makefile.am Wed Jan 13 19:32:07 2010 -0500 +++ b/Makefile.am Fri Jan 15 01:26:56 2010 +0100 @@ -113,7 +113,7 @@ endif # FIXME (plugin): NPPLUGIN_DIR becomes PLUGIN_DIR if ENABLE_NPPLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaNPPlugin -ICEDTEAPLUGIN_TARGET = IcedTeaNPPlugin.so +ICEDTEAPLUGIN_TARGET = stamps/icedtea-npplugin PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = -C lib/rt netscape NPPLUGIN_DIR=$(abs_top_srcdir)/plugin/icedteanp @@ -1461,7 +1461,7 @@ NPPLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedT IcedTeaJavaRequestProcessor.o IcedTeaPluginRequestProcessor.o \ IcedTeaPluginUtils.o -IcedTeaNPPlugin_objects: +$(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_OBJECTS)): $(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_SRC)) cd $(NPPLUGIN_DIR); \ if [ -e $(abs_top_srcdir)/.hg ] && which $(HG) >/dev/null; then \ revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{rev}')`" ; \ @@ -1478,7 +1478,7 @@ IcedTeaNPPlugin_objects: -fPIC -c $(NPPLUGIN_SRC); \ cd ../ -IcedTeaNPPlugin.so: IcedTeaNPPlugin_objects +$(NPPLUGIN_DIR)/IcedTeaNPPlugin.so: $(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_OBJECTS)) cd $(NPPLUGIN_DIR); \ $(CXX) $(CXXFLAGS) \ $(NPPLUGIN_OBJECTS) \ @@ -1487,6 +1487,9 @@ IcedTeaNPPlugin.so: IcedTeaNPPlugin_obje $(MOZILLA_LIBS)\ -shared -o $@; \ cd ../ + +stamps/icedtea-npplugin: $(NPPLUGIN_DIR)/IcedTeaNPPlugin.so + touch stamps/icedtea-npplugin clean-IcedTeaNPPlugin: cd $(NPPLUGIN_DIR);\ From doko at icedtea.classpath.org Thu Jan 14 16:29:53 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Fri, 15 Jan 2010 00:29:53 +0000 Subject: /hg/release/icedtea6-1.7: Proper dependency checking for files i... Message-ID: changeset 856c59d59185 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=856c59d59185 author: doko at ubuntu.com date: Fri Jan 15 01:29:21 2010 +0100 Proper dependency checking for files involved in the build of the NPPlugin 2010-01-14 Matthias Klose * Makefile.am (stamps/icedtea-npplugin): New target, add file dependencies for building the IcedTeaNPPlugin.so. diffstat: 2 files changed, 11 insertions(+), 3 deletions(-) ChangeLog | 5 +++++ Makefile.am | 9 ++++++--- diffs (52 lines): diff -r eaf5d54cc7d1 -r 856c59d59185 ChangeLog --- a/ChangeLog Wed Jan 13 19:36:54 2010 -0500 +++ b/ChangeLog Fri Jan 15 01:29:21 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-13 Deepak Bhole + + * Makefile.am (stamps/icedtea-npplugin): New target, add file + dependencies for building the IcedTeaNPPlugin.so. + 2010-01-13 Deepak Bhole * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc diff -r eaf5d54cc7d1 -r 856c59d59185 Makefile.am --- a/Makefile.am Wed Jan 13 19:36:54 2010 -0500 +++ b/Makefile.am Fri Jan 15 01:29:21 2010 +0100 @@ -113,7 +113,7 @@ endif # FIXME (plugin): NPPLUGIN_DIR becomes PLUGIN_DIR if ENABLE_NPPLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaNPPlugin -ICEDTEAPLUGIN_TARGET = IcedTeaNPPlugin.so +ICEDTEAPLUGIN_TARGET = stamps/icedtea-npplugin PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = -C lib/rt netscape NPPLUGIN_DIR=$(abs_top_srcdir)/plugin/icedteanp @@ -1458,7 +1458,7 @@ NPPLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedT IcedTeaJavaRequestProcessor.o IcedTeaPluginRequestProcessor.o \ IcedTeaPluginUtils.o -IcedTeaNPPlugin_objects: +$(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_OBJECTS)): $(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_SRC)) cd $(NPPLUGIN_DIR); \ if [ -e $(abs_top_srcdir)/.hg ] && which $(HG) >/dev/null; then \ revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{rev}')`" ; \ @@ -1475,7 +1475,7 @@ IcedTeaNPPlugin_objects: -fPIC -c $(NPPLUGIN_SRC); \ cd ../ -IcedTeaNPPlugin.so: IcedTeaNPPlugin_objects +$(NPPLUGIN_DIR)/IcedTeaNPPlugin.so: $(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_OBJECTS)) cd $(NPPLUGIN_DIR); \ $(CXX) $(CXXFLAGS) \ $(NPPLUGIN_OBJECTS) \ @@ -1484,6 +1484,9 @@ IcedTeaNPPlugin.so: IcedTeaNPPlugin_obje $(MOZILLA_LIBS)\ -shared -o $@; \ cd ../ + +stamps/icedtea-npplugin: $(NPPLUGIN_DIR)/IcedTeaNPPlugin.so + touch stamps/icedtea-npplugin clean-IcedTeaNPPlugin: cd $(NPPLUGIN_DIR);\ From dennis at ausil.us Thu Jan 14 18:10:45 2010 From: dennis at ausil.us (Dennis Gilmore) Date: Thu, 14 Jan 2010 20:10:45 -0600 Subject: build problems on sparc64-linux In-Reply-To: <4B3F6017.9000009@ubuntu.com> References: <4B3F6017.9000009@ubuntu.com> Message-ID: <201001142010.47855.dennis@ausil.us> On Saturday 02 January 2010 09:02:47 am Matthias Klose wrote: > I see a build failure of current 6b17 from the IcedTea6 branch on > sparc64-linux using the original hotspot, but not on sparc-linux (32bit). > The build fails building abstractCompiler.cpp in > build/linux-sparcv9/hotspot/outputdir/linux_sparcv9_compiler2/product > > .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1069: error: inline > function 'void Assembler::emit_long(int)' used but never defined > .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1083: error: inline > function 'void Assembler::add(RegisterImpl*, int, RegisterImpl*, > relocInfo::relocType)' used but never defined > .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1514: error: inline > function 'void Assembler::stb(RegisterImpl*, const Address&, int)' used > but never defined .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1291: > error: inline function 'void Assembler::ldsb(const Address&, > RegisterImpl*, int)' used but never defined > .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1507: error: inline > function 'void Assembler::st(RegisterImpl*, RegisterImpl*, RegisterImpl*)' > used but never defined > > these are all defined in assembler_sparc.inline.hpp. not using precompiled > headers and -save-temps shows that assembler_sparc.inline.hpp is not > included in the saved .ii file. > > I currently fail to see how assembler_x86.inline.hpp and > assembler_zero.inline.hpp are included (or assembler_sparc.inline.hpp on > sparc 32bit). Any hints? > > patches/icedtea-sparc-trapsfix.patch is patched to include asm/traps.h > instead of asm-sparc/traps.h only for one sparc architecture. I don't see > asm-sparc/traps.h anymore with recent kernel headers. maybe this should be > build configure check depending on the kernel headers used? one of the sparc patches in fedora is dealing with the new header locations. kernel headers got moved when sparc and sparc64 kernel trees merged. > the fedora packaging repository does have two sparc patches not found in > IcedTea. Are these still applied? Does the fedora build acctually build and > work in it's current state? yes and yes at least with the last build we did https://sparc.koji.fedoraproject.org/koji/buildinfo?buildID=42183 If you have any sparc questions feel free to ask me. Dennis -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part. Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20100114/d05a6dcc/attachment.bin From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 04:50:32 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 12:50:32 +0000 Subject: [Bug 428] Shark on ARM precompiled header incls/_precompiled.incl.gch build failure Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 ------- Comment #4 from gbenson at redhat.com 2010-01-15 12:50 ------- You have -pedantic and -Werror in your flags. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 05:08:06 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 13:08:06 +0000 Subject: [Bug 179] javascript script support through rhino should not be on bootclasspath Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=179 ------- Comment #6 from hannes at helma.at 2010-01-15 13:08 ------- Regarding my proposal in comment #2 of including the ScriptEngine implementation in Rhino: I've done some work on this in Rhino using the code from scripting.dev.java.net, but unfortunately ran into some erratic behaviour when selecting scripting engines (see my last comment on that bug) https://bugzilla.mozilla.org/show_bug.cgi?id=379385#c3 (In reply to comment #5) > We don't want to be maintaining our own fork of Rhino within IcedTea. I think > we need to look at a solution whereby Rhino is loaded with a lower priority > classloader that can be overridden. > > An interim solution, other than the -Xbootclasspath setting suggested by Mark, > would be to remove the symlink from the JDK install. Yes, this would be the best solution - if it is feasible, which I'm not sure about. I would welcome any efforts in that direction from OpenJDK developers. I tried hacking the OpenJDK scripting engine code myself at one time, but was a bit overwhelmed by its build system (and build times). I agree with Kohsuke that this is seriously hurting projects using their own version of Rhino. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 05:22:39 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 13:22:39 +0000 Subject: [Bug 428] Shark on ARM precompiled header incls/_precompiled.incl.gch build failure Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 xerxes at zafena.se changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|xerxes at zafena.se |.org | Status|NEW |ASSIGNED ------- Comment #5 from xerxes at zafena.se 2010-01-15 13:22 ------- Created an attachment (id=281) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=281&action=view) [patch] strip -pedantic from LLVM_CFLAGS the -pedantic option orgin from LLVM_CFLAGS, the attached patch fixes this issue. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From xerxes at zafena.se Fri Jan 15 06:14:18 2010 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Fri, 15 Jan 2010 15:14:18 +0100 Subject: [patch] PR428 - remove -pedantic from LLVM_CFLAGS on Shark builds Message-ID: <4B50783A.4060509@zafena.se> The attached patch removes -pedantic from LLVM_CFLAGS to fix PR428 http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 ok to push to icedtea6? ok to push to icedtea? ChangeLog message: 2010-01-15 Xerxes R?nby PR icedtea/428: * configure.ac (LLVM_CFLAGS): Remove -pedantic from LLVM_CFLAGS. Cheers and have a great day! Xerxes Index: icedtea6/configure.ac =================================================================== --- icedtea6.orig/configure.ac 2010-01-15 14:55:53.000000000 +0100 +++ icedtea6/configure.ac 2010-01-15 14:58:14.000000000 +0100 @@ -607,7 +607,7 @@ llvm_components="jit engine nativecodegen" LLVM_CFLAGS=`$LLVM_CONFIG --cxxflags $llvm_components | \ sed -e 's/-O.//g' | sed -e 's/-fomit-frame-pointer//g' | \ - sed -e 's/-D_DEBUG//g'` + sed -e 's/-pedantic//g' | sed -e 's/-D_DEBUG//g'` LLVM_CFLAGS="$LLVM_CFLAGS -DSHARK_LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/\.//;s/svn.*//'`" LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags $llvm_components` LLVM_LIBS=`$LLVM_CONFIG --libs $llvm_components` From doko at ubuntu.com Fri Jan 15 06:22:08 2010 From: doko at ubuntu.com (Matthias Klose) Date: Fri, 15 Jan 2010 15:22:08 +0100 Subject: [patch] PR428 - remove -pedantic from LLVM_CFLAGS on Shark builds In-Reply-To: <4B50783A.4060509@zafena.se> References: <4B50783A.4060509@zafena.se> Message-ID: <4B507A10.1010303@ubuntu.com> looks ok. never noticed this because debian's llvm-config already strips -pedantic. Matthias On 15.01.2010 15:14, Xerxes R?nby wrote: > The attached patch removes -pedantic from LLVM_CFLAGS to fix PR428 > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 > > ok to push to icedtea6? > > ok to push to icedtea? > > ChangeLog message: > 2010-01-15 Xerxes R?nby > > PR icedtea/428: > * configure.ac (LLVM_CFLAGS): Remove -pedantic from LLVM_CFLAGS. > > Cheers and have a great day! > Xerxes > > Index: icedtea6/configure.ac > =================================================================== > --- icedtea6.orig/configure.ac 2010-01-15 14:55:53.000000000 +0100 > +++ icedtea6/configure.ac 2010-01-15 14:58:14.000000000 +0100 > @@ -607,7 +607,7 @@ > llvm_components="jit engine nativecodegen" > LLVM_CFLAGS=`$LLVM_CONFIG --cxxflags $llvm_components | \ > sed -e 's/-O.//g' | sed -e 's/-fomit-frame-pointer//g' | \ > - sed -e 's/-D_DEBUG//g'` > + sed -e 's/-pedantic//g' | sed -e 's/-D_DEBUG//g'` > LLVM_CFLAGS="$LLVM_CFLAGS -DSHARK_LLVM_VERSION=`$LLVM_CONFIG > --version | sed 's/\.//;s/svn.*//'`" > LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags $llvm_components` > LLVM_LIBS=`$LLVM_CONFIG --libs $llvm_components` > From gbenson at redhat.com Fri Jan 15 06:31:53 2010 From: gbenson at redhat.com (Gary Benson) Date: Fri, 15 Jan 2010 14:31:53 +0000 Subject: [patch] PR428 - remove -pedantic from LLVM_CFLAGS on Shark builds In-Reply-To: <4B50783A.4060509@zafena.se> References: <4B50783A.4060509@zafena.se> Message-ID: <20100115143153.GB3485@redhat.com> Xerxes R?nby wrote: > The attached patch removes -pedantic from LLVM_CFLAGS to fix PR428 > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=428 > > ok to push to icedtea6? Yes please. > ok to push to icedtea? I expect so. Cheers, Gary -- http://gbenson.net/ From xranby at icedtea.classpath.org Fri Jan 15 06:32:33 2010 From: xranby at icedtea.classpath.org (xranby at icedtea.classpath.org) Date: Fri, 15 Jan 2010 14:32:33 +0000 Subject: /hg/icedtea6: PR icedtea/428: Remove -pedantic from LLVM_CFLAGS. Message-ID: changeset d9e57470d35d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=d9e57470d35d author: Xerxes R?nby date: Fri Jan 15 15:36:43 2010 +0100 PR icedtea/428: Remove -pedantic from LLVM_CFLAGS. 2010-01-15 Xerxes R?nby PR icedtea/428: * configure.ac (LLVM_CFLAGS): Remove -pedantic from LLVM_CFLAGS. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ configure.ac | 2 +- diffs (24 lines): diff -r 1a118a8c23ff -r d9e57470d35d ChangeLog --- a/ChangeLog Fri Jan 15 01:26:56 2010 +0100 +++ b/ChangeLog Fri Jan 15 15:36:43 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-14 Matthias Klose + + PR icedtea/428: + * configure.ac (LLVM_CFLAGS): Remove -pedantic from LLVM_CFLAGS. + 2010-01-14 Matthias Klose * Makefile.am (stamps/icedtea-npplugin): New target, add file diff -r 1a118a8c23ff -r d9e57470d35d configure.ac --- a/configure.ac Fri Jan 15 01:26:56 2010 +0100 +++ b/configure.ac Fri Jan 15 15:36:43 2010 +0100 @@ -607,7 +607,7 @@ if test "x${SHARK_BUILD_TRUE}" = x || te llvm_components="jit engine nativecodegen" LLVM_CFLAGS=`$LLVM_CONFIG --cxxflags $llvm_components | \ sed -e 's/-O.//g' | sed -e 's/-fomit-frame-pointer//g' | \ - sed -e 's/-D_DEBUG//g'` + sed -e 's/-pedantic//g' | sed -e 's/-D_DEBUG//g'` LLVM_CFLAGS="$LLVM_CFLAGS -DSHARK_LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/\.//;s/svn.*//'`" LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags $llvm_components` LLVM_LIBS=`$LLVM_CONFIG --libs $llvm_components` From xranby at icedtea.classpath.org Fri Jan 15 06:37:39 2010 From: xranby at icedtea.classpath.org (xranby at icedtea.classpath.org) Date: Fri, 15 Jan 2010 14:37:39 +0000 Subject: /hg/icedtea: PR icedtea/428: Remove -pedantic from LLVM_CFLAGS. Message-ID: changeset 87d7b8575473 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=87d7b8575473 author: Xerxes R?nby date: Fri Jan 15 15:41:48 2010 +0100 PR icedtea/428: Remove -pedantic from LLVM_CFLAGS. 2010-01-15 Xerxes R?nby PR icedtea/428: * configure.ac (LLVM_CFLAGS): Remove -pedantic from LLVM_CFLAGS. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ configure.ac | 2 +- diffs (24 lines): diff -r ef639bb13850 -r 87d7b8575473 ChangeLog --- a/ChangeLog Wed Jan 13 19:43:16 2010 -0500 +++ b/ChangeLog Fri Jan 15 15:41:48 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-13 Deepak Bhole + + PR icedtea/428: + * configure.ac (LLVM_CFLAGS): Remove -pedantic from LLVM_CFLAGS. + 2010-01-13 Deepak Bhole * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc diff -r ef639bb13850 -r 87d7b8575473 configure.ac --- a/configure.ac Wed Jan 13 19:43:16 2010 -0500 +++ b/configure.ac Fri Jan 15 15:41:48 2010 +0100 @@ -458,7 +458,7 @@ if test "x${SHARK_BUILD_TRUE}" = x || te llvm_components="engine nativecodegen" LLVM_CFLAGS=`$LLVM_CONFIG --cflags $llvm_components | \ sed -e 's/-O.//g' | sed -e 's/-fomit-frame-pointer//g' | \ - sed -e 's/-D_DEBUG//g'` + sed -e 's/-pedantic//g' | sed -e 's/-D_DEBUG//g'` LLVM_CFLAGS="$LLVM_CFLAGS -DSHARK_LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/\.//;s/svn.*//'`" LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags $llvm_components` LLVM_LIBS=`$LLVM_CONFIG --libs $llvm_components` From doko at icedtea.classpath.org Fri Jan 15 06:53:24 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Fri, 15 Jan 2010 14:53:24 +0000 Subject: /hg/icedtea: Proper dependency checking for files involved in th... Message-ID: changeset 663183355f4c in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=663183355f4c author: doko at ubuntu.com date: Fri Jan 15 15:53:39 2010 +0100 Proper dependency checking for files involved in the build of the NPPlugin 2010-01-14 Matthias Klose * Makefile.am (stamps/icedtea-npplugin): New target, add file dependencies for building the IcedTeaNPPlugin.so. diffstat: 2 files changed, 11 insertions(+), 3 deletions(-) ChangeLog | 5 +++++ Makefile.am | 9 ++++++--- diffs (52 lines): diff -r 87d7b8575473 -r 663183355f4c ChangeLog --- a/ChangeLog Fri Jan 15 15:41:48 2010 +0100 +++ b/ChangeLog Fri Jan 15 15:53:39 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-15 Xerxes R??nby + + * Makefile.am (stamps/icedtea-npplugin): New target, add file + dependencies for building the IcedTeaNPPlugin.so. + 2010-01-15 Xerxes R??nby PR icedtea/428: diff -r 87d7b8575473 -r 663183355f4c Makefile.am --- a/Makefile.am Fri Jan 15 15:41:48 2010 +0100 +++ b/Makefile.am Fri Jan 15 15:53:39 2010 +0100 @@ -168,7 +168,7 @@ endif if ENABLE_NPPLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaNPPlugin -ICEDTEAPLUGIN_TARGET = IcedTeaNPPlugin.so +ICEDTEAPLUGIN_TARGET = stamps/icedtea-npplugin PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = sun/applet netscape PLUGIN_DIR=$(abs_top_srcdir)/plugin/icedteanp @@ -1963,7 +1963,7 @@ NPPLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedT IcedTeaJavaRequestProcessor.o IcedTeaPluginRequestProcessor.o \ IcedTeaPluginUtils.o -IcedTeaNPPlugin_objects: +$(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_OBJECTS)): $(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_SRC)) cd $(PLUGIN_DIR); \ if [ -e $(abs_top_srcdir)/.hg ] && which $(HG) >/dev/null; then \ revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{rev}')`" ; \ @@ -1980,7 +1980,7 @@ IcedTeaNPPlugin_objects: -fPIC -c $(NPPLUGIN_SRC); \ cd ../ -IcedTeaNPPlugin.so: IcedTeaNPPlugin_objects +$(NPPLUGIN_DIR)/IcedTeaNPPlugin.so: $(addprefix $(NPPLUGIN_DIR)/,$(NPPLUGIN_OBJECTS)) cd $(PLUGIN_DIR); \ $(CXX) $(CXXFLAGS) \ $(NPPLUGIN_OBJECTS) \ @@ -1989,6 +1989,9 @@ IcedTeaNPPlugin.so: IcedTeaNPPlugin_obje $(MOZILLA_LIBS)\ -shared -o $@ \ cd ../ + +stamps/icedtea-npplugin: $(NPPLUGIN_DIR)/IcedTeaNPPlugin.so + touch stamps/icedtea-npplugin clean-IcedTeaNPPlugin: cd $(PLUGIN_DIR); \ From ed at camswl.com Fri Jan 15 09:12:26 2010 From: ed at camswl.com (Edward Nevill) Date: Fri, 15 Jan 2010 17:12:26 +0000 Subject: RTC to 1.7: fix for hs16 + zero Message-ID: Hi folks, Attached is a fix for building hs16 on zero. As far as I can tell it is broken on all zero platforms, whether or not they build with Shark. The problem is simply that the function is_allocatable in os_linux_zero.cpp is unimplemeted. Now hs14 did not call this but hs16 does seem to call it. The 'fix' I have implemented is simply to copy the implementation from os_linux_x86.cpp to os_linux_zero.cpp. I have tested this with the test_gamma but have not done any further testing as I will have to do a complete rebuild to test it fully. (it cannot be worse than the current implemetation which just called ShouldNotCallThis()). Ok to commit? Regards, Ed. --- CUT HERE --- diff -ruNE old/icedtea6-1.7/ChangeLog new/icedtea6-1.7/ChangeLog --- old/icedtea6-1.7/ChangeLog 2010-01-15 16:57:45.000000000 +0000 +++ new/icedtea6-1.7/ChangeLog 2010-01-15 17:02:23.000000000 +0000 @@ -1,3 +1,8 @@ +2010-01-15 Edard Nevill + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + Implement is_allocatable to make build word with hs16 + 2010-01-14 Matthias Klose * Makefile.am (stamps/icedtea-npplugin): New target, add file diff -ruNE old/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp new/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp --- old/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp 2010-01-15 16:57:47.000000000 +0000 +++ new/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp 2010-01-15 16:59:56.000000000 +0000 @@ -249,7 +249,23 @@ } bool os::is_allocatable(size_t bytes) { - ShouldNotCallThis(); +#ifdef AMD64 + // unused on amd64? + return true; +#else + + if (bytes < 2 * G) { + return true; + } + + char* addr = reserve_memory(bytes, NULL); + + if (addr != NULL) { + release_memory(addr, bytes); + } + + return addr != NULL; +#endif // AMD64 } /////////////////////////////////////////////////////////////////////////////// From gnu_andrew at member.fsf.org Fri Jan 15 09:25:38 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 15 Jan 2010 17:25:38 +0000 Subject: RTC to 1.7: fix for hs16 + zero In-Reply-To: References: Message-ID: <17c6771e1001150925y7b7dfb7emc18e3230fa9cce78@mail.gmail.com> 2010/1/15 Edward Nevill : > Hi folks, > > Attached is a fix for building hs16 on zero. As far as I can tell it is broken on all zero platforms, whether or not they build with Shark. > > The problem is simply that the function is_allocatable in os_linux_zero.cpp is unimplemeted. Now hs14 did not call this but hs16 does seem to call it. > > The 'fix' I have implemented is simply to copy the implementation from os_linux_x86.cpp to os_linux_zero.cpp. > > I have tested this with the test_gamma but have not done any further testing as I will have to do a complete rebuild to test it fully. > > (it cannot be worse than the current implemetation which just called ShouldNotCallThis()). > > Ok to commit? > > Regards, > Ed. > > --- CUT HERE --- > diff -ruNE old/icedtea6-1.7/ChangeLog new/icedtea6-1.7/ChangeLog > --- old/icedtea6-1.7/ChangeLog ?2010-01-15 16:57:45.000000000 +0000 > +++ new/icedtea6-1.7/ChangeLog ?2010-01-15 17:02:23.000000000 +0000 > @@ -1,3 +1,8 @@ > +2010-01-15 ?Edard Nevill > + > + ? ? ? ?* ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp > + ? ? ? Implement is_allocatable to make build word with hs16 > + > ?2010-01-14 ?Matthias Klose ? > > ? ? ? ?* Makefile.am (stamps/icedtea-npplugin): New target, add file > diff -ruNE old/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp new/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp > --- old/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ? 2010-01-15 16:57:47.000000000 +0000 > +++ new/icedtea6-1.7/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ? 2010-01-15 16:59:56.000000000 +0000 > @@ -249,7 +249,23 @@ > ?} > > ?bool os::is_allocatable(size_t bytes) { > - ?ShouldNotCallThis(); > +#ifdef AMD64 > + ?// unused on amd64? > + ?return true; > +#else > + > + ?if (bytes < 2 * G) { > + ? ?return true; > + ?} > + > + ?char* addr = reserve_memory(bytes, NULL); > + > + ?if (addr != NULL) { > + ? ?release_memory(addr, bytes); > + ?} > + > + ?return addr != NULL; > +#endif // AMD64 > ?} > > ?/////////////////////////////////////////////////////////////////////////////// > > > > > > Looks good to me, please push to HEAD and 1.7. Thanks, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From enevill at icedtea.classpath.org Fri Jan 15 09:21:29 2010 From: enevill at icedtea.classpath.org (enevill at icedtea.classpath.org) Date: Fri, 15 Jan 2010 17:21:29 +0000 Subject: /hg/release/icedtea6-1.7: Fix problems with hs16. is_allocatable... Message-ID: changeset adf8932ab9c3 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=adf8932ab9c3 author: Edward Nevill date: Fri Jan 15 17:27:16 2010 +0000 Fix problems with hs16. is_allocatable not implemented diffstat: 2 files changed, 22 insertions(+), 1 deletion(-) ChangeLog | 5 +++ ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 18 +++++++++++++- diffs (40 lines): diff -r 856c59d59185 -r adf8932ab9c3 ChangeLog --- a/ChangeLog Fri Jan 15 01:29:21 2010 +0100 +++ b/ChangeLog Fri Jan 15 17:27:16 2010 +0000 @@ -1,3 +1,8 @@ 2010-01-14 Matthias Klose + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + Implement is_allocatable to make build word with hs16 + 2010-01-14 Matthias Klose * Makefile.am (stamps/icedtea-npplugin): New target, add file diff -r 856c59d59185 -r adf8932ab9c3 ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Fri Jan 15 01:29:21 2010 +0100 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Fri Jan 15 17:27:16 2010 +0000 @@ -249,7 +249,23 @@ void os::Linux::set_fpu_control_word(int } bool os::is_allocatable(size_t bytes) { - ShouldNotCallThis(); +#ifdef AMD64 + // unused on amd64? + return true; +#else + + if (bytes < 2 * G) { + return true; + } + + char* addr = reserve_memory(bytes, NULL); + + if (addr != NULL) { + release_memory(addr, bytes); + } + + return addr != NULL; +#endif // AMD64 } /////////////////////////////////////////////////////////////////////////////// From enevill at icedtea.classpath.org Fri Jan 15 09:30:19 2010 From: enevill at icedtea.classpath.org (enevill at icedtea.classpath.org) Date: Fri, 15 Jan 2010 17:30:19 +0000 Subject: /hg/icedtea6: Fix build for hs16. Add implementation of is_alloc... Message-ID: changeset be36bffde64d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=be36bffde64d author: Edward Nevill date: Fri Jan 15 17:36:07 2010 +0000 Fix build for hs16. Add implementation of is_allocatable diffstat: 2 files changed, 22 insertions(+), 1 deletion(-) ChangeLog | 5 +++ ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 18 +++++++++++++- diffs (40 lines): diff -r d9e57470d35d -r be36bffde64d ChangeLog --- a/ChangeLog Fri Jan 15 15:36:43 2010 +0100 +++ b/ChangeLog Fri Jan 15 17:36:07 2010 +0000 @@ -1,3 +1,8 @@ 2010-01-15 Xerxes R??nby + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + Implement is_allocatable to make build word with hs16 + 2010-01-15 Xerxes R??nby PR icedtea/428: diff -r d9e57470d35d -r be36bffde64d ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Fri Jan 15 15:36:43 2010 +0100 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Fri Jan 15 17:36:07 2010 +0000 @@ -249,7 +249,23 @@ void os::Linux::set_fpu_control_word(int } bool os::is_allocatable(size_t bytes) { - ShouldNotCallThis(); +#ifdef AMD64 + // unused on amd64? + return true; +#else + + if (bytes < 2 * G) { + return true; + } + + char* addr = reserve_memory(bytes, NULL); + + if (addr != NULL) { + release_memory(addr, bytes); + } + + return addr != NULL; +#endif // AMD64 } /////////////////////////////////////////////////////////////////////////////// From gnu_andrew at member.fsf.org Fri Jan 15 11:11:39 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 15 Jan 2010 19:11:39 +0000 Subject: HotSpot 16 In-Reply-To: <17c6771e1001140834h4da73e5dt55889a366e828147@mail.gmail.com> References: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> <4B4F283B.8030103@ubuntu.com> <17c6771e1001140655v4499a0e4q2cf22ba0e6e649fd@mail.gmail.com> <17c6771e1001140834h4da73e5dt55889a366e828147@mail.gmail.com> Message-ID: <17c6771e1001151111q190aa16eu5d71affbb0b8841e@mail.gmail.com> 2010/1/14 Andrew John Hughes : > 2010/1/14 Andrew John Hughes : >> 2010/1/14 Matthias Klose : >>> On 13.01.2010 22:37, Andrew John Hughes wrote: >>>> >>>> I've now bumped IcedTea6 HEAD and 1.7 to build the latest hs16 (b13) >>>> as I believe is used in the proprietary JDK 6 update 18. >>>> >>>> I've confirmed that both normal and Zero builds complete. ?Shark also >>>> builds but can't bootstrap itself; see >>>> http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=430 ?As both >>>> Shark and hs16 are experimental, I don't think that's a release >>>> stopper. >>> >>> so update hotspot two days before a planned release and then declare the >>> regressions as non-stoppers? >>> >> >> It's a minor update to a version of HotSpot that is _not the default_, >> and which fully bootstraps with both normal and Zero builds. ?I don't >> recall Shark working with hs16 before so how is this a regression? >> >> FWIW, Shark also can't bootstrap itself on 7 either >> (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=348) and that's >> been the case for some time. ?If I thought there was going to be a fix >> for this in the next week or so, I would see the point in delaying the >> release. ? Are you offering to fix this? >> >> As is, I don't see how there is anything to gain from waiting >> indefinitely for a fix to a pretty minor build option (hs16+shark). >> Shark is still a work-in-progress and anyone wanting to ship >> Shark+hs16 binaries would be quite mad. >> >> As I said before, I've updated hs16 because if we're going to include >> the option to build with it at all, we should use the same version Sun >> are shipping and that will end up in b18. >> > > On IRC, we found that this is a regression from when we first added > hs16 (though not 1.6 obviously). > > These are the actual changes between the two hs16 revisions: > > changeset: ? 941:6bdfda9a7120 > user: ? ? ? ?trims > date: ? ? ? ?Fri Oct 02 14:16:39 2009 -0700 > summary: ? ? 6887914: Bump the HS16 build number to 10 > > changeset: ? 942:6de2c9c36168 > user: ? ? ? ?tonyp > date: ? ? ? ?Tue Oct 20 19:55:13 2009 -0400 > summary: ? ? 6893095: G1: bulk G1 backports to hs16 > > changeset: ? 943:47ca7aa20d97 > user: ? ? ? ?asaha > date: ? ? ? ?Wed Oct 21 15:43:35 2009 -0700 > summary: ? ? 6858208: jvm crash when specifying TypeProfileWidth=0 on jdk 6.0 > > changeset: ? 944:aa001a20bd61 > parent: ? ? ?941:6bdfda9a7120 > user: ? ? ? ?ysr > date: ? ? ? ?Fri Oct 16 02:05:46 2009 -0700 > summary: ? ? 6888898: CMS: ReduceInitialCardMarks unsafe in the > presence of cms precleaning > > changeset: ? 945:164505f3849e > user: ? ? ? ?ysr > date: ? ? ? ?Tue Oct 20 00:00:23 2009 -0700 > summary: ? ? 6892749: assert(UseParNewGC || UseSerialGC || > UseConcMarkSweepGC, "...") fails > > changeset: ? 946:d43a7bf86266 > parent: ? ? ?945:164505f3849e > parent: ? ? ?942:6de2c9c36168 > user: ? ? ? ?ysr > date: ? ? ? ?Wed Oct 21 12:35:50 2009 -0700 > summary: ? ? Merge > > changeset: ? 947:aa83c08db78c > parent: ? ? ?946:d43a7bf86266 > parent: ? ? ?943:47ca7aa20d97 > user: ? ? ? ?ysr > date: ? ? ? ?Wed Oct 21 19:13:54 2009 -0700 > summary: ? ? Merge > > changeset: ? 948:b7e7fc226009 > parent: ? ? ?946:d43a7bf86266 > parent: ? ? ?943:47ca7aa20d97 > user: ? ? ? ?ysr > date: ? ? ? ?Wed Oct 21 18:57:28 2009 -0700 > summary: ? ? Merge > > changeset: ? 949:0537635c7c16 > parent: ? ? ?948:b7e7fc226009 > parent: ? ? ?947:aa83c08db78c > user: ? ? ? ?ysr > date: ? ? ? ?Wed Oct 21 21:06:27 2009 -0700 > summary: ? ? Merge > > changeset: ? 950:06264910ac5f > user: ? ? ? ?trims > date: ? ? ? ?Wed Oct 21 21:31:53 2009 -0700 > summary: ? ? 6893995: Bump the HS16 build number to 11 > > changeset: ? 951:38b152ff0cac > user: ? ? ? ?trims > date: ? ? ? ?Wed Oct 21 21:34:37 2009 -0700 > summary: ? ? 6893996: change default JPRT release target to be 6u18 > > changeset: ? 952:0799687b7385 > user: ? ? ? ?phh > date: ? ? ? ?Thu Oct 29 11:45:09 2009 -0400 > summary: ? ? 6887571: Increase default heap config sizes > > changeset: ? 953:b0651468aff7 > user: ? ? ? ?ysr > date: ? ? ? ?Wed Oct 28 11:16:42 2009 -0700 > summary: ? ? 6818264: Heap dumper unexpectedly adds .hprof suffix > > changeset: ? 954:511f4c69c1be > user: ? ? ? ?johnc > date: ? ? ? ?Thu Oct 29 09:42:26 2009 -0700 > summary: ? ? 6889740: G1: OpenDS fails with "unhandled exception in > compiled code" > > changeset: ? 955:684c526959a9 > parent: ? ? ?953:b0651468aff7 > user: ? ? ? ?phh > date: ? ? ? ?Tue Nov 03 15:17:42 2009 -0500 > summary: ? ? 6852078: HSX 14/16 in jdk 5.0: api/javax_management > api/org_omg jck tests crashes or make tnameserv crash > > changeset: ? 956:c5388a988d5a > parent: ? ? ?954:511f4c69c1be > parent: ? ? ?955:684c526959a9 > user: ? ? ? ?phh > date: ? ? ? ?Wed Nov 04 07:07:14 2009 -0800 > summary: ? ? Merge > > changeset: ? 957:4385d4e7497b > user: ? ? ? ?ysr > date: ? ? ? ?Tue Nov 03 16:43:16 2009 -0800 > summary: ? ? 6801625: CDS: HeapDump tests crash with internal error in > compactingPermGenGen.cpp > > changeset: ? 958:248f0ad25d21 > user: ? ? ? ?kvn > date: ? ? ? ?Fri Nov 06 10:07:50 2009 -0800 > summary: ? ? 6896084: VM does not reserve protected page below heap > for compressed oops implicit null checks > > changeset: ? 959:3a2dae936e36 > user: ? ? ? ?kvn > date: ? ? ? ?Fri Nov 06 10:23:54 2009 -0800 > summary: ? ? 6893554: SPECjvm2008 mpegaudio fails with SecurityException > > changeset: ? 960:395db6268de2 > user: ? ? ? ?cfang > date: ? ? ? ?Fri Nov 06 14:38:53 2009 -0800 > summary: ? ? 6876276: assert(!is_visited,"visit only once") > > changeset: ? 961:26d0c7276c9e > parent: ? ? ?954:511f4c69c1be > user: ? ? ? ?phh > date: ? ? ? ?Fri Nov 06 19:57:55 2009 -0500 > summary: ? ? 6898160: Need serviceability support for new vm argument > type 'uint64_t' > > changeset: ? 962:a76f17a8fd77 > parent: ? ? ?960:395db6268de2 > parent: ? ? ?961:26d0c7276c9e > user: ? ? ? ?phh > date: ? ? ? ?Fri Nov 06 17:44:04 2009 -0800 > summary: ? ? Merge > > changeset: ? 963:788af96b55e3 > user: ? ? ? ?apetrusenko > date: ? ? ? ?Thu Oct 22 07:43:49 2009 -0700 > summary: ? ? 6858886: G1: guarantee(_next_marked_bytes <= > used(),"invariant") at heapRegion.hpp:359 > > changeset: ? 964:e3c995ac8078 > user: ? ? ? ?tonyp > date: ? ? ? ?Fri Oct 23 14:34:27 2009 -0400 > summary: ? ? 6886024: G1: assert(recent_avg_pause_time_ratio() < 1.00,"All GC?") > > changeset: ? 965:2572dd3d6d7c > user: ? ? ? ?tonyp > date: ? ? ? ?Wed Sep 30 14:50:51 2009 -0400 > summary: ? ? 6890137: G1: revamp reachable object dump > > changeset: ? 966:850627f5fd81 > user: ? ? ? ?apetrusenko > date: ? ? ? ?Tue Oct 27 02:42:24 2009 -0700 > summary: ? ? 6870843: G1: G1 GC memory leak > > changeset: ? 967:9f7d1f6201ab > user: ? ? ? ?johnc > date: ? ? ? ?Fri Nov 06 11:10:05 2009 -0800 > summary: ? ? 6895788: G1: SATB and update buffer allocation code > allocates too much space > > changeset: ? 968:1a1b644fe617 > parent: ? ? ?962:a76f17a8fd77 > user: ? ? ? ?never > date: ? ? ? ?Thu Nov 12 09:24:21 2009 -0800 > summary: ? ? 6892658: C2 should optimize some stringbuilder patterns > > changeset: ? 969:6571190a0304 > parent: ? ? ?968:1a1b644fe617 > parent: ? ? ?967:9f7d1f6201ab > user: ? ? ? ?never > date: ? ? ? ?Thu Nov 12 14:27:25 2009 -0800 > summary: ? ? Merge > > changeset: ? 970:0ad684e27697 > parent: ? ? ?962:a76f17a8fd77 > user: ? ? ? ?phh > date: ? ? ? ?Thu Nov 12 18:07:55 2009 -0500 > summary: ? ? 6900899: vm fails to start when -Xmx value is less than > OldSize + NewSize > > changeset: ? 971:da3df85c0bcd > parent: ? ? ?969:6571190a0304 > parent: ? ? ?970:0ad684e27697 > user: ? ? ? ?phh > date: ? ? ? ?Thu Nov 12 15:25:37 2009 -0800 > summary: ? ? Merge > > changeset: ? 972:dba6aafa42ff > parent: ? ? ?969:6571190a0304 > user: ? ? ? ?jmasa > date: ? ? ? ?Thu Nov 12 15:01:43 2009 -0800 > summary: ? ? 6898857: [Regression] -XX:NewRatio with > -XX:+UseConcMarkSweepGC causes fatal error > > changeset: ? 973:54d471e8741d > parent: ? ? ?972:dba6aafa42ff > parent: ? ? ?971:da3df85c0bcd > user: ? ? ? ?jmasa > date: ? ? ? ?Thu Nov 12 17:36:13 2009 -0800 > summary: ? ? Merge > > changeset: ? 974:834503c17fc1 > user: ? ? ? ?trims > date: ? ? ? ?Thu Nov 12 19:44:32 2009 -0800 > summary: ? ? 6900997: Bump the HS16 build number to 12 > > changeset: ? 975:938b86f7a7fc > user: ? ? ? ?cfang > date: ? ? ? ?Tue Nov 24 15:52:43 2009 -0800 > summary: ? ? 6892079: live value must not be garbage failure after fix > for 6854812 > > changeset: ? 976:c5cb255ec7a3 > user: ? ? ? ?trims > date: ? ? ? ?Wed Nov 25 12:43:26 2009 -0800 > summary: ? ? 6821003: Update hotspot windows os_win32 for windows 7 > > changeset: ? 977:5a6085c47686 > user: ? ? ? ?trims > date: ? ? ? ?Wed Apr 08 15:16:14 2009 -0700 > summary: ? ? 6828069: Change JDK_MINOR_VER to 6 for 6Update HS versions > > changeset: ? 978:5f14026df877 > user: ? ? ? ?asaha > date: ? ? ? ?Fri Jul 10 14:00:02 2009 -0700 > summary: ? ? 6842999: Update hotspot windows os_win32 for windows 2008 R2 > > changeset: ? 979:43e3f86b638d > parent: ? ? ?975:938b86f7a7fc > user: ? ? ? ?cfang > date: ? ? ? ?Wed Nov 25 12:09:02 2009 -0800 > summary: ? ? 6904191: OptimizeStringConcat should be product instead > of experimental > > changeset: ? 980:c44e78b9aa0a > parent: ? ? ?978:5f14026df877 > parent: ? ? ?979:43e3f86b638d > user: ? ? ? ?trims > date: ? ? ? ?Wed Nov 25 17:01:17 2009 -0800 > summary: ? ? Merge > > changeset: ? 981:b6e6e189e1db > user: ? ? ? ?trims > date: ? ? ? ?Wed Nov 25 19:15:17 2009 -0800 > summary: ? ? 6904996: Bump the HS16 build number to 13 > > changeset: ? 982:49bd3de668dc > user: ? ? ? ?dholmes > date: ? ? ? ?Tue Dec 01 19:10:24 2009 -0500 > summary: ? ? 6822370: ReentrantReadWriteLock: threads hung when there > are no threads holding onto the lock (Netra x4450) > > changeset: ? 983:9adb2f184e47 > user: ? ? ? ?ysr > date: ? ? ? ?Thu Dec 03 15:01:57 2009 -0800 > summary: ? ? 6906727: UseCompressedOops: some card-marking fixes > related to object arrays > > changeset: ? 984:62926c7f67a3 > user: ? ? ? ?ysr > date: ? ? ? ?Tue Dec 08 15:12:17 2009 -0800 > summary: ? ? 6908208: UseCompressedOops: array_size() returns > incorrect size for MAX_INT object array following 6906727 > > I don't see anything obvious though. ?The only thing I can think of is > some option was turned on that Shark doesn't support. ?As 7 fails too, > I'm not optimistic of a quick fix, so we may just have to go for an > appropriate warning that hs16+Shark are not supported for this > release. > >>> the shark build fails for me as well when using the new hotspot as bootstrap >>> compiler (on ix86 configuring --with-additional-vms=shark), so this is also >>> seen with other bootstrap compilers. >> >> What other bootstrap compilers? ?Other than the arch., that sounds >> pretty much like what I did. >> > > From IRC; sounds like Matthias is hitting the same or a similar > problem, but the --with-additional-vms hits it at a different point > because Shark is invoked later. > >>> >> >> >> >> -- >> Andrew :-) >> >> Free Java Software Engineer >> Red Hat, Inc. (http://www.redhat.com) >> >> Support Free Java! >> Contribute to GNU Classpath and the OpenJDK >> http://www.gnu.org/software/classpath >> http://openjdk.java.net >> >> PGP Key: 94EFD9D8 (http://subkeys.pgp.net) >> Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 >> > > > > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA ?7927 142C 2591 94EF D9D8 > Ok, I'm going to summarise things in this email because I'm getting confused now as to what works and what doesn't: The only one missing below is the ARM port as these builds are all on x86_64. Normal builds ========== 1. --enable-vms=cacao,shark $ /home/andrew/build/addvm-icedtea6/bin/java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-r1a118a8c23ff) (build 1.6.0_17-b17) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) $ /home/andrew/build/addvm-icedtea6/bin/java -version -zero java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-r1a118a8c23ff) (build 1.6.0_17-b17) OpenJDK 64-Bit Shark VM (build 14.0-b16, mixed mode) $ /home/andrew/build/addvm-icedtea6/bin/java -version -cacao java version "1.6.0_17" IcedTea Runtime Environment (IcedTea6 1.8pre-r1a118a8c23ff) (build 1.6.0_17-b17) CACAO (build 0.99.4, compiled mode) 2. --enable-shark Crashes on stage 2:dbh [javac] # Internal Error (os_linux_zero.cpp:236), pid=22828, tid=47264282425104 [javac] # Error: caught unhandled signal 11 [javac] # [javac] # JRE version: 6.0_17-b17 [javac] # Java VM: OpenJDK 64-Bit Shark VM (14.0-b16 mixed mode linux-amd64 ) [javac] # An error report file with more information is saved as: [javac] # /mnt/builder/shark6/openjdk/langtools/hs_err_pid22828.log $ /mnt/builder/shark6/bootstrap/jdk1.6.0/bin/java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-rd9e57470d35d) (build 1.6.0_17-b17) OpenJDK 64-Bit Shark VM (build 14.0-b16, mixed mode) 3. --enable-zero $ /mnt/builder/zero6/openjdk/build/linux-amd64/j2sdk-image/bin/java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-rd9e57470d35d) (build 1.6.0_17-b17) OpenJDK 64-Bit Zero VM (build 14.0-b16, interpreted mode) Builds using --with-hotspot-build=hs16: =========================== 1. --enable-shark: Crashes on stage 2: [javac] Compiling 244 source files to /mnt/builder/shark6/openjdk/build/linux-amd64/langtools/build/classes [javac] # [javac] # A fatal error has been detected by the Java Runtime Environment: [javac] # [javac] # Internal Error (os_linux_zero.cpp:236), pid=22007, tid=47864850761488 [javac] # Error: caught unhandled signal 11 [javac] # [javac] # JRE version: 6.0_17-b17 [javac] # Java VM: OpenJDK 64-Bit Shark VM (16.0-b13 mixed mode linux-amd64 ) 2. --enable-vms=cacao,zero Succeeds $ /home/andrew/build/addvm-icedtea6/bin/java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-r1a118a8c23ff) (build 1.6.0_17-b17) OpenJDK 64-Bit Server VM (build 16.0-b13, mixed mode) $ /home/andrew/build/addvm-icedtea6/bin/java -zero -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-r1a118a8c23ff) (build 1.6.0_17-b17) OpenJDK 64-Bit Zero VM (build 16.0-b13, interpreted mode) $ /home/andrew/build/addvm-icedtea6/bin/java -cacao -version java version "1.6.0_17" IcedTea Runtime Environment (IcedTea6 1.8pre-r1a118a8c23ff) (build 1.6.0_17-b17) CACAO (build 0.99.4, compiled mode) 3. --enable-zero /mnt/builder/zero6/openjdk/build/linux-amd64/bin/java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-r1a118a8c23ff) (build 1.6.0_17-b17) OpenJDK 64-Bit Zero VM (build 16.0-b13, interpreted mode) 1.6.2+hg ======= 1. --enable-shark java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6.2-r66c327225114) (build 1.6.0_0-b16) OpenJDK 64-Bit Shark VM (build 14.0-b16, mixed mode) HotSpot jtreg: Passed: compiler/6646019/Test.java FAILED: compiler/6646020/Tester.java Passed: compiler/6659207/Test.java Passed: compiler/6661247/Test.java Passed: compiler/6663621/IVTest.java Passed: compiler/6663848/Tester.java Passed: compiler/6689060/Test.java Passed: compiler/6695810/Test.java Passed: compiler/6700047/Test6700047.java Passed: compiler/6711100/Test.java Passed: compiler/6712835/Test6712835.java Passed: compiler/6714694/Tester.java FAILED: compiler/6716441/Tester.java Passed: compiler/6724218/Test.java Passed: compiler/6726999/Test.java FAILED: compiler/6741738/Tester.java Passed: compiler/6756768/Test6756768_2.java Passed: compiler/6756768/Test6756768.java Passed: compiler/6757316/Test6757316.java Passed: compiler/6758234/Test6758234.java Passed: compiler/6775880/Test.java Passed: compiler/6795362/Test6795362.java Passed: compiler/6805724/Test6805724.java Passed: runtime/6819213/TestBootNativeLibraryPath.java Test results: passed: 21; failed: 3 So Shark has regressed to not bootstrapping with either HotSpot in 1.7. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 11:52:25 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 19:52:25 +0000 Subject: [Bug 295] XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Version|unspecified |6-1.4 ------- Comment #5 from gnu_andrew at member.fsf.org 2010-01-15 19:52 ------- Fixed in OpenJDK7 but not backported to 6 yet; relies on updated JAXP bundle: https://bugs.openjdk.java.net/show_bug.cgi?id=100017 The fix is in IcedTeaK6 since: 2009-02-26 Omair Majid * patches/icedtea-xml-encodinginfo.patch: New file. Fix possible StackOverflowError. * Makefile.am (ICEDTEA_PATCHES): Apply the above. * HACKING: Document the above. and is thus in 1.5 and later. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 11:53:42 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 19:53:42 +0000 Subject: [Bug 299] eclipse crashes during file download in a tomcat test scenario Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=299 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #169|text/x-log |text/plain mime type| | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 11:54:10 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 19:54:10 +0000 Subject: [Bug 299] eclipse crashes during file download in a tomcat test scenario Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=299 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 11:55:21 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 19:55:21 +0000 Subject: [Bug 305] eclipse crashes if I try to configure PyDev plugin Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=305 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 ------- Comment #8 from gnu_andrew at member.fsf.org 2010-01-15 19:55 ------- Looks like an issue with a much older version (1.2) than either Omair (1.4) or Jon (1.5)'s tests -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 11:58:07 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 19:58:07 +0000 Subject: [Bug 308] run scilab 5.1 demos at openSUSE11.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=308 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.4 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 12:01:30 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 15 Jan 2010 20:01:30 +0000 Subject: [Bug 321] SIGSEGV (0xb) at pc=0x00a3dcab with Java VM: OpenJDK Server VM (1.6.0-b09 mixed mode linux-x86) Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=321 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mwong at redhat.com Fri Jan 15 14:36:12 2010 From: mwong at redhat.com (Man Wong) Date: Fri, 15 Jan 2010 17:36:12 -0500 (EST) Subject: Patch for review: Adding default value to certain attributes In-Reply-To: <889613722.363591263594967523.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <349797732.363641263594972564.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> This patch allows netx to not cause a failure when the codebase and href attribute under the jnlp tag is missing (codebase and href are not required attributes, hence missing them should not cause an exception to be thrown). Changelog: 2010-01-15 Man Lung Wong * rt/net/sourceforge/jnlp/JNLPFile.java (parse): Added a default value for sourceLocation to make sure it is not null (location is never null). * rt/net/sourceforge/jnlp/Parser.java Removed variable base, and replaced it with codebase. The fix ended with base the same as codebase, hence no longer needed. Otherwise, netx will launch a jnlp file with codebase null and href not null (not the way sun's webstart behaves). * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java (setSecurity): Added a variable codebase, which gets the value of codebase attribute in the jnlp file if it exists. Otherwise, it gets the value of the location of main jar resource (which needs to be changed to the codebase portion instead of the entire location). Any comments? Thanks, Man Lung Wong -------------- next part -------------- A non-text attachment was scrubbed... Name: defaultvalue.patch Type: text/x-patch Size: 6951 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20100115/19ae4843/defaultvalue.patch From bugzilla-daemon at icedtea.classpath.org Fri Jan 15 16:09:12 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 16 Jan 2010 00:09:12 +0000 Subject: [Bug 329] IcedTeaPlugin does not work at all in seamonkey 2.0b1pre Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=329 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |Plugin Version|unspecified |6-1.4 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Fri Jan 15 18:06:41 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Sat, 16 Jan 2010 02:06:41 +0000 Subject: /hg/release/icedtea6-1.7: 3 new changesets Message-ID: changeset 02cf6e66f081 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=02cf6e66f081 author: Andrew John Hughes date: Sat Jan 16 01:45:00 2010 +0000 Cleanup quoting and output of configure macros and make them less error-prone. 2010-01-16 Andrew John Hughes configure output and option cleanup * Makefile.am: Change !ENABLE_OPTIMIZATIONS to DISABLE_OPTIMIZATIONS. * acinclude.m4: (FIND_ECJ_JAR): Always produce output, not just when explicitly specified. (FIND_JAVAH): Handle the yes and no possibilities better. (FIND_JAR): Likewise. (FIND_RMIC): Likewise. (WITH_OPENJDK_SRC_ZIP): Quote checking output. (WITH_ALT_JAR_BINARY): Likewise. (FIND_XALAN2_JAR): Improve wording. (FIND_XALAN2_SERIALIZER_JAR): Likewise. (FIND_XERCES_JAR): Likewise. (FIND_NETBEANS): Handle yes and no possibilities better. (FIND_RHINO_JAR): Quote checking output. (ENABLE_OPTIMIZATIONS): Rename to DISABLE_OPTIMIZATIONS for clarity. (ENABLE_ZERO_BUILD): Quote checking output. (AC_CHECK_WITH_CACAO_SRC_ZIP): Likewise. (AC_CHECK_WITH_CACAO_SRC_DIR): Likewise. (WITH_OPENJDK): Complete output with no when not specified. (IT_CHECK_ADDITIONAL_VMS): Moved to a macro from configure.ac (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): Likewise. * configure.ac: Invoke new macros. Quote output and correct typos. Perform IT_CHECK_ADDITIONAL_VMS earlier with Shark, Zero and CACAO checks. changeset bd63913c82ad in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=bd63913c82ad author: Andrew John Hughes date: Sat Jan 16 01:48:41 2010 +0000 Record errors to config.log rather than /dev/null. 2010-01-16 Andrew John Hughes * acinclude.m4: Send output to AS_MESSAGE_LOG_FD rather than /dev/null so we have a record of errors. changeset 882587aab813 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=882587aab813 author: Andrew John Hughes date: Sat Jan 16 02:12:30 2010 +0000 Handle yes/no correctly in --with-parallel-jobs. 2010-01-16 Andrew John Hughes * acinclude.m4: (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): Handle --with-parallel-jobs and --without-parallel-jobs correctly. --with-parallel-jobs (no arguments) uses available processors + 1, while --without-parallel-jobs (the default) uses 2. (IT_FIND_NUMBER_OF_PROCESSORS): Dependency of above. Uses getconf to obtain the number of available processors. diffstat: 4 files changed, 276 insertions(+), 169 deletions(-) ChangeLog | 57 ++++++++++ Makefile.am | 4 acinclude.m4 | 306 +++++++++++++++++++++++++++++++++++++++------------------- configure.ac | 78 ++------------ diffs (truncated from 774 to 500 lines): diff -r adf8932ab9c3 -r 882587aab813 ChangeLog --- a/ChangeLog Fri Jan 15 17:27:16 2010 +0000 +++ b/ChangeLog Sat Jan 16 02:12:30 2010 +0000 @@ -1,4 +1,59 @@ 2010-01-15 Edard Nevill -2010-01-15 Edard Nevill +2010-01-16 Andrew John Hughes + + * acinclude.m4: + (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): + Handle --with-parallel-jobs and + --without-parallel-jobs correctly. + --with-parallel-jobs (no arguments) uses + available processors + 1, while + --without-parallel-jobs (the default) uses 2. + (IT_FIND_NUMBER_OF_PROCESSORS): + Dependency of above. Uses getconf to + obtain the number of available processors. + +2010-01-16 Andrew John Hughes + + * acinclude.m4: + Send output to AS_MESSAGE_LOG_FD rather + than /dev/null so we have a record of errors. + +2010-01-16 Andrew John Hughes + + configure output and option cleanup + * Makefile.am: + Change !ENABLE_OPTIMIZATIONS to + DISABLE_OPTIMIZATIONS. + * acinclude.m4: + (FIND_ECJ_JAR): Always produce output, + not just when explicitly specified. + (FIND_JAVAH): Handle the yes and no + possibilities better. + (FIND_JAR): Likewise. + (FIND_RMIC): Likewise. + (WITH_OPENJDK_SRC_ZIP): Quote checking output. + (WITH_ALT_JAR_BINARY): Likewise. + (FIND_XALAN2_JAR): Improve wording. + (FIND_XALAN2_SERIALIZER_JAR): Likewise. + (FIND_XERCES_JAR): Likewise. + (FIND_NETBEANS): Handle yes and no + possibilities better. + (FIND_RHINO_JAR): Quote checking output. + (ENABLE_OPTIMIZATIONS): Rename to + DISABLE_OPTIMIZATIONS for clarity. + (ENABLE_ZERO_BUILD): Quote checking output. + (AC_CHECK_WITH_CACAO_SRC_ZIP): Likewise. + (AC_CHECK_WITH_CACAO_SRC_DIR): Likewise. + (WITH_OPENJDK): Complete output + with no when not specified. + (IT_CHECK_ADDITIONAL_VMS): Moved to a macro + from configure.ac + (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): Likewise. + * configure.ac: + Invoke new macros. Quote output and correct + typos. Perform IT_CHECK_ADDITIONAL_VMS earlier + with Shark, Zero and CACAO checks. + +2010-01-15 Edward Nevill * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Implement is_allocatable to make build word with hs16 diff -r adf8932ab9c3 -r 882587aab813 Makefile.am --- a/Makefile.am Fri Jan 15 17:27:16 2010 +0000 +++ b/Makefile.am Sat Jan 16 02:12:30 2010 +0000 @@ -429,7 +429,7 @@ ICEDTEA_ENV += \ ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" endif -if !ENABLE_OPTIMIZATIONS +if DISABLE_OPTIMIZATIONS ICEDTEA_ENV += \ NO_OPTIMIZATIONS="true" \ CC_NO_OPT="-O0 -g" @@ -508,7 +508,7 @@ ICEDTEA_ENV_ECJ += \ ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" endif -if !ENABLE_OPTIMIZATIONS +if DISABLE_OPTIMIZATIONS ICEDTEA_ENV_ECJ += \ NO_OPTIMIZATIONS="true" \ CC_NO_OPT="-O0 -g" diff -r adf8932ab9c3 -r 882587aab813 acinclude.m4 --- a/acinclude.m4 Fri Jan 15 17:27:16 2010 +0000 +++ b/acinclude.m4 Sat Jan 16 02:12:30 2010 +0000 @@ -238,41 +238,33 @@ AC_DEFUN([WITH_OPENJDK_SRC_DIR], AC_DEFUN([FIND_ECJ_JAR], [ + AC_MSG_CHECKING([for an ecj JAR file]) AC_ARG_WITH([ecj-jar], [AS_HELP_STRING(--with-ecj-jar,specify location of the ECJ jar)], [ if test -f "${withval}"; then - AC_MSG_CHECKING(for an ecj jar) ECJ_JAR="${withval}" - AC_MSG_RESULT(${withval}) fi ], [ ECJ_JAR= ]) if test -z "${ECJ_JAR}"; then - AC_MSG_CHECKING(for eclipse-ecj.jar) - if test -e "/usr/share/java/eclipse-ecj.jar"; then - ECJ_JAR=/usr/share/java/eclipse-ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/java/ecj.jar"; then - ECJ_JAR=/usr/share/java/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/eclipse-ecj-3.3/lib/ecj.jar"; then - ECJ_JAR=/usr/share/eclipse-ecj-3.3/lib/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/eclipse-ecj-3.2/lib/ecj.jar"; then - ECJ_JAR=/usr/share/eclipse-ecj-3.2/lib/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/eclipse-ecj-3.1/lib/ecj.jar"; then - ECJ_JAR=/usr/share/eclipse-ecj-3.1/lib/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - else - AC_MSG_RESULT(no) - fi - fi - if test -z "${ECJ_JAR}"; then - AC_MSG_ERROR("A ECJ jar was not found.") + for jar in /usr/share/java/eclipse-ecj.jar \ + /usr/share/java/ecj.jar \ + /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar; do + if test -e $jar; then + ECJ_JAR=$jar + break + fi + done + if test -z "${ECJ_JAR}"; then + ECJ_JAR=no + fi + fi + AC_MSG_RESULT(${ECJ_JAR}) + if test "x${ECJ_JAR}" = "xno"; then + AC_MSG_ERROR("No compiler or ecj JAR file was found.") fi AC_SUBST(ECJ_JAR) ]) @@ -289,20 +281,27 @@ AC_DEFUN([AC_CHECK_GCC_VERSION], AC_DEFUN([FIND_JAVAH], [ + AC_MSG_CHECKING([if a javah executable is specified]) AC_ARG_WITH([javah], - [AS_HELP_STRING(--with-javah,specify location of the javah)], - [ - if test -f "${withval}"; then - AC_MSG_CHECKING(for javah) + [AS_HELP_STRING(--with-javah,specify location of javah)], + [ + if test "x${withval}" = "xyes"; then + JAVAH=no + else JAVAH="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(JAVAH, "${withval}") - fi - ], - [ - JAVAH= - ]) + fi + ], + [ + JAVAH=no + ]) + AC_MSG_RESULT(${JAVAH}) + if ! test -f "${JAVAH}"; then + if test "x${JAVAH}" = "xno"; then + JAVAH= + else + AC_PATH_PROG(JAVAH, "${JAVAH}") + fi + fi if test -z "${JAVAH}"; then AC_PATH_PROG(JAVAH, "gjavah") fi @@ -310,27 +309,34 @@ AC_DEFUN([FIND_JAVAH], AC_PATH_PROG(JAVAH, "javah") fi if test -z "${JAVAH}"; then - AC_MSG_ERROR("javah was not found.") + AC_MSG_ERROR("A Java header generator was not found.") fi AC_SUBST(JAVAH) ]) AC_DEFUN([FIND_JAR], [ + AC_MSG_CHECKING([if a jar executable is specified]) AC_ARG_WITH([jar], - [AS_HELP_STRING(--with-jar,specify location of the jar)], - [ - if test -f "${withval}"; then - AC_MSG_CHECKING(for jar) + [AS_HELP_STRING(--with-jar,specify location of jar)], + [ + if test "x${withval}" = "xyes"; then + JAR=no + else JAR="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(JAR, "${withval}") - fi - ], - [ - JAR= - ]) + fi + ], + [ + JAR=no + ]) + AC_MSG_RESULT(${JAR}) + if ! test -f "${JAR}"; then + if test "x${JAR}" = "xno"; then + JAR= + else + AC_PATH_PROG(JAR, "${JAR}") + fi + fi if test -z "${JAR}"; then AC_PATH_PROG(JAR, "gjar") fi @@ -338,14 +344,14 @@ AC_DEFUN([FIND_JAR], AC_PATH_PROG(JAR, "jar") fi if test -z "${JAR}"; then - AC_MSG_ERROR("jar was not found.") + AC_MSG_ERROR("A jar tool was not found.") fi AC_MSG_CHECKING([whether jar supports @ argument]) touch _config.txt cat >_config.list </dev/null; then + if $JAR cf _config.jar @_config.list 2>&AS_MESSAGE_LOG_FD; then JAR_KNOWS_ATFILE=1 AC_MSG_RESULT(yes) else @@ -353,7 +359,7 @@ EOF AC_MSG_RESULT(no) fi AC_MSG_CHECKING([whether jar supports stdin file arguments]) - if cat _config.list | $JAR cf@ _config.jar 2>/dev/null; then + if cat _config.list | $JAR cf@ _config.jar 2>&AS_MESSAGE_LOG_FD; then JAR_ACCEPTS_STDIN_LIST=1 AC_MSG_RESULT(yes) else @@ -362,7 +368,7 @@ EOF fi rm -f _config.list _config.jar AC_MSG_CHECKING([whether jar supports -J options at the end]) - if $JAR cf _config.jar _config.txt -J-Xmx896m 2>/dev/null; then + if $JAR cf _config.jar _config.txt -J-Xmx896m 2>&AS_MESSAGE_LOG_FD; then JAR_KNOWS_J_OPTIONS=1 AC_MSG_RESULT(yes) else @@ -378,20 +384,27 @@ EOF AC_DEFUN([FIND_RMIC], [ + AC_MSG_CHECKING(if an rmic executable is specified) AC_ARG_WITH([rmic], - [AS_HELP_STRING(--with-rmic,specify location of the rmic)], - [ - if test -f "${withval}"; then - AC_MSG_CHECKING(for rmic) + [AS_HELP_STRING(--with-rmic,specify location of rmic)], + [ + if test "x${withval}" = "xyes"; then + RMIC=no + else RMIC="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(RMIC, "${withval}") - fi - ], - [ - RMIC= - ]) + fi + ], + [ + RMIC=no + ]) + AC_MSG_RESULT(${RMIC}) + if ! test -f "${RMIC}"; then + if test "x${RMIC}" = "xno"; then + RMIC= + else + AC_PATH_PROG(RMIC, "${RMIC}") + fi + fi if test -z "${RMIC}"; then AC_PATH_PROG(RMIC, "grmic") fi @@ -399,7 +412,7 @@ AC_DEFUN([FIND_RMIC], AC_PATH_PROG(RMIC, "rmic") fi if test -z "${RMIC}"; then - AC_MSG_ERROR("rmic was not found.") + AC_MSG_ERROR("An RMI compiler was not found.") fi AC_SUBST(RMIC) ]) @@ -446,7 +459,7 @@ AC_DEFUN([FIND_ENDORSED_JARS], AC_DEFUN([WITH_OPENJDK_SRC_ZIP], [ - AC_MSG_CHECKING(for an OpenJDK source zip) + AC_MSG_CHECKING([for an OpenJDK source zip]) AC_ARG_WITH([openjdk-src-zip], [AS_HELP_STRING(--with-openjdk-src-zip,specify the location of the openjdk source zip)], [ @@ -463,7 +476,7 @@ AC_DEFUN([WITH_OPENJDK_SRC_ZIP], AC_DEFUN([WITH_ALT_JAR_BINARY], [ - AC_MSG_CHECKING(for an alternate jar command) + AC_MSG_CHECKING([for an alternate jar command]) AC_ARG_WITH([alt-jar], [AS_HELP_STRING(--with-alt-jar, specify the location of an alternate jar binary to use for building)], [ @@ -480,7 +493,7 @@ AC_DEFUN([WITH_ALT_JAR_BINARY], AC_DEFUN([FIND_XALAN2_JAR], [ - AC_MSG_CHECKING(xalan2 jar) + AC_MSG_CHECKING([for a xalan2 jar]) AC_ARG_WITH([xalan2-jar], [AS_HELP_STRING(--with-xalan2-jar,specify location of the xalan2 jar)], [ @@ -511,7 +524,7 @@ AC_DEFUN([FIND_XALAN2_JAR], AC_DEFUN([FIND_XALAN2_SERIALIZER_JAR], [ - AC_MSG_CHECKING(for xalan2 serializer jar) + AC_MSG_CHECKING([for a xalan2 serializer jar]) AC_ARG_WITH([xalan2-serializer-jar], [AS_HELP_STRING(--with-xalan2-serializer-jar,specify location of the xalan2-serializer jar)], [ @@ -542,7 +555,7 @@ AC_DEFUN([FIND_XALAN2_SERIALIZER_JAR], AC_DEFUN([FIND_XERCES2_JAR], [ - AC_MSG_CHECKING(for xerces2 jar) + AC_MSG_CHECKING([for a xerces2 jar]) AC_ARG_WITH([xerces2-jar], [AS_HELP_STRING(--with-xerces2-jar,specify location of the xerces2 jar)], [ @@ -575,20 +588,27 @@ AC_DEFUN([FIND_XERCES2_JAR], AC_DEFUN([FIND_NETBEANS], [ + AC_MSG_CHECKING([if the location of NetBeans is specified]) AC_ARG_WITH([netbeans], [AS_HELP_STRING(--with-netbeans,specify location of netbeans)], [ - if test -f "${withval}"; then - AC_MSG_CHECKING(netbeans) + if test "x${withval}" = "xyes"; then + NETBEANS=no + else NETBEANS="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(NETBEANS, "${withval}") - fi - ], - [ - NETBEANS= - ]) + fi + ], + [ + NETBEANS=no + ]) + AC_MSG_RESULT(${NETBEANS}) + if ! test -f "${NETBEANS}"; then + if test "x${NETBEANS}" = "xno"; then + NETBEANS= + else + AC_PATH_PROG(NETBEANS, "${NETBEANS}") + fi + fi if test -z "${NETBEANS}"; then AC_PATH_PROG(NETBEANS, "netbeans") fi @@ -600,7 +620,7 @@ AC_DEFUN([FIND_NETBEANS], AC_DEFUN([FIND_RHINO_JAR], [ - AC_MSG_CHECKING(whether to include Javascript support via Rhino) + AC_MSG_CHECKING([whether to include Javascript support via Rhino]) AC_ARG_WITH([rhino], [AS_HELP_STRING(--with-rhino,specify location of the rhino jar)], [ @@ -642,27 +662,26 @@ AC_DEFUN([FIND_RHINO_JAR], AC_SUBST(RHINO_JAR) ]) -AC_DEFUN([ENABLE_OPTIMIZATIONS], -[ - AC_MSG_CHECKING(whether to disable optimizations) +AC_DEFUN([DISABLE_OPTIMIZATIONS], +[ + AC_MSG_CHECKING([whether to disable optimizations and build with -O0 -g]) AC_ARG_ENABLE([optimizations], [AS_HELP_STRING(--disable-optimizations,build with -O0 -g [[default=no]])], [ case "${enableval}" in no) - AC_MSG_RESULT([yes, building with -O0 -g]) - enable_optimizations=no + disable_optimizations=yes ;; *) - AC_MSG_RESULT([no]) - enable_optimizations=yes + disable_optimizations=no ;; esac ], [ - enable_optimizations=yes - ]) - AM_CONDITIONAL([ENABLE_OPTIMIZATIONS], test x"${enable_optimizations}" = "xyes") + disable_optimizations=no + ]) + AC_MSG_RESULT([$disable_optimizations]) + AM_CONDITIONAL([DISABLE_OPTIMIZATIONS], test x"${disable_optimizations}" = "xyes") ]) AC_DEFUN([FIND_TOOL], @@ -675,7 +694,7 @@ AC_DEFUN([FIND_TOOL], AC_DEFUN([ENABLE_ZERO_BUILD], [ - AC_MSG_CHECKING(whether to use the zero-assembler port) + AC_MSG_CHECKING([whether to use the zero-assembler port]) use_zero=no AC_ARG_ENABLE([zero], [AS_HELP_STRING(--enable-zero, @@ -805,7 +824,7 @@ AC_DEFUN([AC_CHECK_ENABLE_CACAO], AC_DEFUN([AC_CHECK_WITH_CACAO_HOME], [ - AC_MSG_CHECKING(for CACAO home directory) + AC_MSG_CHECKING([for a CACAO home directory]) AC_ARG_WITH([cacao-home], [AS_HELP_STRING([--with-cacao-home], [CACAO home directory [[default=/usr/local/cacao]]])], @@ -830,7 +849,7 @@ AC_DEFUN([AC_CHECK_WITH_CACAO_HOME], AC_DEFUN([AC_CHECK_WITH_CACAO_SRC_ZIP], [ - AC_MSG_CHECKING(for a CACAO source zip) + AC_MSG_CHECKING([for a CACAO source zip]) AC_ARG_WITH([cacao-src-zip], [AS_HELP_STRING(--with-cacao-src-zip,specify the location of the CACAO source zip)], [ @@ -847,7 +866,7 @@ AC_DEFUN([AC_CHECK_WITH_CACAO_SRC_ZIP], AC_DEFUN([AC_CHECK_WITH_CACAO_SRC_DIR], [ - AC_MSG_CHECKING(for a Cacao source directory) + AC_MSG_CHECKING([for a CACAO source directory]) AC_ARG_WITH([cacao-src-dir], [AS_HELP_STRING(--with-cacao-src-dir,specify the location of the Cacao sources)], [ @@ -1009,7 +1028,7 @@ AC_DEFUN([AC_CHECK_FOR_OPENJDK], [ if test "x${withval}" = xno then - SYSTEM_OPENJDK_DIR= + SYSTEM_OPENJDK_DIR=no with_openjdk=false else SYSTEM_OPENJDK_DIR=${withval} @@ -1017,7 +1036,7 @@ AC_DEFUN([AC_CHECK_FOR_OPENJDK], fi ], [ - SYSTEM_OPENJDK_DIR= + SYSTEM_OPENJDK_DIR=no with_openjdk=false ]) From andrew at icedtea.classpath.org Fri Jan 15 18:15:59 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Sat, 16 Jan 2010 02:15:59 +0000 Subject: /hg/icedtea6: 3 new changesets Message-ID: changeset fbcebfe00675 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=fbcebfe00675 author: Andrew John Hughes date: Sat Jan 16 01:45:00 2010 +0000 Cleanup quoting and output of configure macros and make them less error-prone. 2010-01-16 Andrew John Hughes configure output and option cleanup * Makefile.am: Change !ENABLE_OPTIMIZATIONS to DISABLE_OPTIMIZATIONS. * acinclude.m4: (FIND_ECJ_JAR): Always produce output, not just when explicitly specified. (FIND_JAVAH): Handle the yes and no possibilities better. (FIND_JAR): Likewise. (FIND_RMIC): Likewise. (WITH_OPENJDK_SRC_ZIP): Quote checking output. (WITH_ALT_JAR_BINARY): Likewise. (FIND_XALAN2_JAR): Improve wording. (FIND_XALAN2_SERIALIZER_JAR): Likewise. (FIND_XERCES_JAR): Likewise. (FIND_NETBEANS): Handle yes and no possibilities better. (FIND_RHINO_JAR): Quote checking output. (ENABLE_OPTIMIZATIONS): Rename to DISABLE_OPTIMIZATIONS for clarity. (ENABLE_ZERO_BUILD): Quote checking output. (AC_CHECK_WITH_CACAO_SRC_ZIP): Likewise. (AC_CHECK_WITH_CACAO_SRC_DIR): Likewise. (WITH_OPENJDK): Complete output with no when not specified. (IT_CHECK_ADDITIONAL_VMS): Moved to a macro from configure.ac (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): Likewise. * configure.ac: Invoke new macros. Quote output and correct typos. Perform IT_CHECK_ADDITIONAL_VMS earlier with Shark, Zero and CACAO checks. changeset 0b7ad35f4c10 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0b7ad35f4c10 author: Andrew John Hughes date: Sat Jan 16 01:48:41 2010 +0000 Record errors to config.log rather than /dev/null. 2010-01-16 Andrew John Hughes * acinclude.m4: Send output to AS_MESSAGE_LOG_FD rather than /dev/null so we have a record of errors. changeset 327907cd1d5b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=327907cd1d5b author: Andrew John Hughes date: Sat Jan 16 02:12:30 2010 +0000 Handle yes/no correctly in --with-parallel-jobs. 2010-01-16 Andrew John Hughes * acinclude.m4: (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): Handle --with-parallel-jobs and --without-parallel-jobs correctly. --with-parallel-jobs (no arguments) uses available processors + 1, while --without-parallel-jobs (the default) uses 2. (IT_FIND_NUMBER_OF_PROCESSORS): Dependency of above. Uses getconf to obtain the number of available processors. diffstat: 4 files changed, 276 insertions(+), 169 deletions(-) ChangeLog | 57 ++++++++++ Makefile.am | 4 acinclude.m4 | 306 +++++++++++++++++++++++++++++++++++++++------------------- configure.ac | 78 ++------------ diffs (truncated from 774 to 500 lines): diff -r be36bffde64d -r 327907cd1d5b ChangeLog --- a/ChangeLog Fri Jan 15 17:36:07 2010 +0000 +++ b/ChangeLog Sat Jan 16 02:12:30 2010 +0000 @@ -1,4 +1,59 @@ 2010-01-15 Edard Nevill -2010-01-15 Edard Nevill +2010-01-16 Andrew John Hughes + + * acinclude.m4: + (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): + Handle --with-parallel-jobs and + --without-parallel-jobs correctly. + --with-parallel-jobs (no arguments) uses + available processors + 1, while + --without-parallel-jobs (the default) uses 2. + (IT_FIND_NUMBER_OF_PROCESSORS): + Dependency of above. Uses getconf to + obtain the number of available processors. + +2010-01-16 Andrew John Hughes + + * acinclude.m4: + Send output to AS_MESSAGE_LOG_FD rather + than /dev/null so we have a record of errors. + +2010-01-16 Andrew John Hughes + + configure output and option cleanup + * Makefile.am: + Change !ENABLE_OPTIMIZATIONS to + DISABLE_OPTIMIZATIONS. + * acinclude.m4: + (FIND_ECJ_JAR): Always produce output, + not just when explicitly specified. + (FIND_JAVAH): Handle the yes and no + possibilities better. + (FIND_JAR): Likewise. + (FIND_RMIC): Likewise. + (WITH_OPENJDK_SRC_ZIP): Quote checking output. + (WITH_ALT_JAR_BINARY): Likewise. + (FIND_XALAN2_JAR): Improve wording. + (FIND_XALAN2_SERIALIZER_JAR): Likewise. + (FIND_XERCES_JAR): Likewise. + (FIND_NETBEANS): Handle yes and no + possibilities better. + (FIND_RHINO_JAR): Quote checking output. + (ENABLE_OPTIMIZATIONS): Rename to + DISABLE_OPTIMIZATIONS for clarity. + (ENABLE_ZERO_BUILD): Quote checking output. + (AC_CHECK_WITH_CACAO_SRC_ZIP): Likewise. + (AC_CHECK_WITH_CACAO_SRC_DIR): Likewise. + (WITH_OPENJDK): Complete output + with no when not specified. + (IT_CHECK_ADDITIONAL_VMS): Moved to a macro + from configure.ac + (IT_CHECK_NUMBER_OF_PARALLEL_JOBS): Likewise. + * configure.ac: + Invoke new macros. Quote output and correct + typos. Perform IT_CHECK_ADDITIONAL_VMS earlier + with Shark, Zero and CACAO checks. + +2010-01-15 Edward Nevill * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Implement is_allocatable to make build word with hs16 diff -r be36bffde64d -r 327907cd1d5b Makefile.am --- a/Makefile.am Fri Jan 15 17:36:07 2010 +0000 +++ b/Makefile.am Sat Jan 16 02:12:30 2010 +0000 @@ -432,7 +432,7 @@ ICEDTEA_ENV += \ ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" endif -if !ENABLE_OPTIMIZATIONS +if DISABLE_OPTIMIZATIONS ICEDTEA_ENV += \ NO_OPTIMIZATIONS="true" \ CC_NO_OPT="-O0 -g" @@ -511,7 +511,7 @@ ICEDTEA_ENV_ECJ += \ ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" endif -if !ENABLE_OPTIMIZATIONS +if DISABLE_OPTIMIZATIONS ICEDTEA_ENV_ECJ += \ NO_OPTIMIZATIONS="true" \ CC_NO_OPT="-O0 -g" diff -r be36bffde64d -r 327907cd1d5b acinclude.m4 --- a/acinclude.m4 Fri Jan 15 17:36:07 2010 +0000 +++ b/acinclude.m4 Sat Jan 16 02:12:30 2010 +0000 @@ -238,41 +238,33 @@ AC_DEFUN([WITH_OPENJDK_SRC_DIR], AC_DEFUN([FIND_ECJ_JAR], [ + AC_MSG_CHECKING([for an ecj JAR file]) AC_ARG_WITH([ecj-jar], [AS_HELP_STRING(--with-ecj-jar,specify location of the ECJ jar)], [ if test -f "${withval}"; then - AC_MSG_CHECKING(for an ecj jar) ECJ_JAR="${withval}" - AC_MSG_RESULT(${withval}) fi ], [ ECJ_JAR= ]) if test -z "${ECJ_JAR}"; then - AC_MSG_CHECKING(for eclipse-ecj.jar) - if test -e "/usr/share/java/eclipse-ecj.jar"; then - ECJ_JAR=/usr/share/java/eclipse-ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/java/ecj.jar"; then - ECJ_JAR=/usr/share/java/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/eclipse-ecj-3.3/lib/ecj.jar"; then - ECJ_JAR=/usr/share/eclipse-ecj-3.3/lib/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/eclipse-ecj-3.2/lib/ecj.jar"; then - ECJ_JAR=/usr/share/eclipse-ecj-3.2/lib/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - elif test -e "/usr/share/eclipse-ecj-3.1/lib/ecj.jar"; then - ECJ_JAR=/usr/share/eclipse-ecj-3.1/lib/ecj.jar - AC_MSG_RESULT(${ECJ_JAR}) - else - AC_MSG_RESULT(no) - fi - fi - if test -z "${ECJ_JAR}"; then - AC_MSG_ERROR("A ECJ jar was not found.") + for jar in /usr/share/java/eclipse-ecj.jar \ + /usr/share/java/ecj.jar \ + /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar; do + if test -e $jar; then + ECJ_JAR=$jar + break + fi + done + if test -z "${ECJ_JAR}"; then + ECJ_JAR=no + fi + fi + AC_MSG_RESULT(${ECJ_JAR}) + if test "x${ECJ_JAR}" = "xno"; then + AC_MSG_ERROR("No compiler or ecj JAR file was found.") fi AC_SUBST(ECJ_JAR) ]) @@ -289,20 +281,27 @@ AC_DEFUN([AC_CHECK_GCC_VERSION], AC_DEFUN([FIND_JAVAH], [ + AC_MSG_CHECKING([if a javah executable is specified]) AC_ARG_WITH([javah], - [AS_HELP_STRING(--with-javah,specify location of the javah)], - [ - if test -f "${withval}"; then - AC_MSG_CHECKING(for javah) + [AS_HELP_STRING(--with-javah,specify location of javah)], + [ + if test "x${withval}" = "xyes"; then + JAVAH=no + else JAVAH="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(JAVAH, "${withval}") - fi - ], - [ - JAVAH= - ]) + fi + ], + [ + JAVAH=no + ]) + AC_MSG_RESULT(${JAVAH}) + if ! test -f "${JAVAH}"; then + if test "x${JAVAH}" = "xno"; then + JAVAH= + else + AC_PATH_PROG(JAVAH, "${JAVAH}") + fi + fi if test -z "${JAVAH}"; then AC_PATH_PROG(JAVAH, "gjavah") fi @@ -310,27 +309,34 @@ AC_DEFUN([FIND_JAVAH], AC_PATH_PROG(JAVAH, "javah") fi if test -z "${JAVAH}"; then - AC_MSG_ERROR("javah was not found.") + AC_MSG_ERROR("A Java header generator was not found.") fi AC_SUBST(JAVAH) ]) AC_DEFUN([FIND_JAR], [ + AC_MSG_CHECKING([if a jar executable is specified]) AC_ARG_WITH([jar], - [AS_HELP_STRING(--with-jar,specify location of the jar)], - [ - if test -f "${withval}"; then - AC_MSG_CHECKING(for jar) + [AS_HELP_STRING(--with-jar,specify location of jar)], + [ + if test "x${withval}" = "xyes"; then + JAR=no + else JAR="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(JAR, "${withval}") - fi - ], - [ - JAR= - ]) + fi + ], + [ + JAR=no + ]) + AC_MSG_RESULT(${JAR}) + if ! test -f "${JAR}"; then + if test "x${JAR}" = "xno"; then + JAR= + else + AC_PATH_PROG(JAR, "${JAR}") + fi + fi if test -z "${JAR}"; then AC_PATH_PROG(JAR, "gjar") fi @@ -338,14 +344,14 @@ AC_DEFUN([FIND_JAR], AC_PATH_PROG(JAR, "jar") fi if test -z "${JAR}"; then - AC_MSG_ERROR("jar was not found.") + AC_MSG_ERROR("A jar tool was not found.") fi AC_MSG_CHECKING([whether jar supports @ argument]) touch _config.txt cat >_config.list </dev/null; then + if $JAR cf _config.jar @_config.list 2>&AS_MESSAGE_LOG_FD; then JAR_KNOWS_ATFILE=1 AC_MSG_RESULT(yes) else @@ -353,7 +359,7 @@ EOF AC_MSG_RESULT(no) fi AC_MSG_CHECKING([whether jar supports stdin file arguments]) - if cat _config.list | $JAR cf@ _config.jar 2>/dev/null; then + if cat _config.list | $JAR cf@ _config.jar 2>&AS_MESSAGE_LOG_FD; then JAR_ACCEPTS_STDIN_LIST=1 AC_MSG_RESULT(yes) else @@ -362,7 +368,7 @@ EOF fi rm -f _config.list _config.jar AC_MSG_CHECKING([whether jar supports -J options at the end]) - if $JAR cf _config.jar _config.txt -J-Xmx896m 2>/dev/null; then + if $JAR cf _config.jar _config.txt -J-Xmx896m 2>&AS_MESSAGE_LOG_FD; then JAR_KNOWS_J_OPTIONS=1 AC_MSG_RESULT(yes) else @@ -378,20 +384,27 @@ EOF AC_DEFUN([FIND_RMIC], [ + AC_MSG_CHECKING(if an rmic executable is specified) AC_ARG_WITH([rmic], - [AS_HELP_STRING(--with-rmic,specify location of the rmic)], - [ - if test -f "${withval}"; then - AC_MSG_CHECKING(for rmic) + [AS_HELP_STRING(--with-rmic,specify location of rmic)], + [ + if test "x${withval}" = "xyes"; then + RMIC=no + else RMIC="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(RMIC, "${withval}") - fi - ], - [ - RMIC= - ]) + fi + ], + [ + RMIC=no + ]) + AC_MSG_RESULT(${RMIC}) + if ! test -f "${RMIC}"; then + if test "x${RMIC}" = "xno"; then + RMIC= + else + AC_PATH_PROG(RMIC, "${RMIC}") + fi + fi if test -z "${RMIC}"; then AC_PATH_PROG(RMIC, "grmic") fi @@ -399,7 +412,7 @@ AC_DEFUN([FIND_RMIC], AC_PATH_PROG(RMIC, "rmic") fi if test -z "${RMIC}"; then - AC_MSG_ERROR("rmic was not found.") + AC_MSG_ERROR("An RMI compiler was not found.") fi AC_SUBST(RMIC) ]) @@ -446,7 +459,7 @@ AC_DEFUN([FIND_ENDORSED_JARS], AC_DEFUN([WITH_OPENJDK_SRC_ZIP], [ - AC_MSG_CHECKING(for an OpenJDK source zip) + AC_MSG_CHECKING([for an OpenJDK source zip]) AC_ARG_WITH([openjdk-src-zip], [AS_HELP_STRING(--with-openjdk-src-zip,specify the location of the openjdk source zip)], [ @@ -463,7 +476,7 @@ AC_DEFUN([WITH_OPENJDK_SRC_ZIP], AC_DEFUN([WITH_ALT_JAR_BINARY], [ - AC_MSG_CHECKING(for an alternate jar command) + AC_MSG_CHECKING([for an alternate jar command]) AC_ARG_WITH([alt-jar], [AS_HELP_STRING(--with-alt-jar, specify the location of an alternate jar binary to use for building)], [ @@ -480,7 +493,7 @@ AC_DEFUN([WITH_ALT_JAR_BINARY], AC_DEFUN([FIND_XALAN2_JAR], [ - AC_MSG_CHECKING(xalan2 jar) + AC_MSG_CHECKING([for a xalan2 jar]) AC_ARG_WITH([xalan2-jar], [AS_HELP_STRING(--with-xalan2-jar,specify location of the xalan2 jar)], [ @@ -511,7 +524,7 @@ AC_DEFUN([FIND_XALAN2_JAR], AC_DEFUN([FIND_XALAN2_SERIALIZER_JAR], [ - AC_MSG_CHECKING(for xalan2 serializer jar) + AC_MSG_CHECKING([for a xalan2 serializer jar]) AC_ARG_WITH([xalan2-serializer-jar], [AS_HELP_STRING(--with-xalan2-serializer-jar,specify location of the xalan2-serializer jar)], [ @@ -542,7 +555,7 @@ AC_DEFUN([FIND_XALAN2_SERIALIZER_JAR], AC_DEFUN([FIND_XERCES2_JAR], [ - AC_MSG_CHECKING(for xerces2 jar) + AC_MSG_CHECKING([for a xerces2 jar]) AC_ARG_WITH([xerces2-jar], [AS_HELP_STRING(--with-xerces2-jar,specify location of the xerces2 jar)], [ @@ -575,20 +588,27 @@ AC_DEFUN([FIND_XERCES2_JAR], AC_DEFUN([FIND_NETBEANS], [ + AC_MSG_CHECKING([if the location of NetBeans is specified]) AC_ARG_WITH([netbeans], [AS_HELP_STRING(--with-netbeans,specify location of netbeans)], [ - if test -f "${withval}"; then - AC_MSG_CHECKING(netbeans) + if test "x${withval}" = "xyes"; then + NETBEANS=no + else NETBEANS="${withval}" - AC_MSG_RESULT(${withval}) - else - AC_PATH_PROG(NETBEANS, "${withval}") - fi - ], - [ - NETBEANS= - ]) + fi + ], + [ + NETBEANS=no + ]) + AC_MSG_RESULT(${NETBEANS}) + if ! test -f "${NETBEANS}"; then + if test "x${NETBEANS}" = "xno"; then + NETBEANS= + else + AC_PATH_PROG(NETBEANS, "${NETBEANS}") + fi + fi if test -z "${NETBEANS}"; then AC_PATH_PROG(NETBEANS, "netbeans") fi @@ -600,7 +620,7 @@ AC_DEFUN([FIND_NETBEANS], AC_DEFUN([FIND_RHINO_JAR], [ - AC_MSG_CHECKING(whether to include Javascript support via Rhino) + AC_MSG_CHECKING([whether to include Javascript support via Rhino]) AC_ARG_WITH([rhino], [AS_HELP_STRING(--with-rhino,specify location of the rhino jar)], [ @@ -642,27 +662,26 @@ AC_DEFUN([FIND_RHINO_JAR], AC_SUBST(RHINO_JAR) ]) -AC_DEFUN([ENABLE_OPTIMIZATIONS], -[ - AC_MSG_CHECKING(whether to disable optimizations) +AC_DEFUN([DISABLE_OPTIMIZATIONS], +[ + AC_MSG_CHECKING([whether to disable optimizations and build with -O0 -g]) AC_ARG_ENABLE([optimizations], [AS_HELP_STRING(--disable-optimizations,build with -O0 -g [[default=no]])], [ case "${enableval}" in no) - AC_MSG_RESULT([yes, building with -O0 -g]) - enable_optimizations=no + disable_optimizations=yes ;; *) - AC_MSG_RESULT([no]) - enable_optimizations=yes + disable_optimizations=no ;; esac ], [ - enable_optimizations=yes - ]) - AM_CONDITIONAL([ENABLE_OPTIMIZATIONS], test x"${enable_optimizations}" = "xyes") + disable_optimizations=no + ]) + AC_MSG_RESULT([$disable_optimizations]) + AM_CONDITIONAL([DISABLE_OPTIMIZATIONS], test x"${disable_optimizations}" = "xyes") ]) AC_DEFUN([FIND_TOOL], @@ -675,7 +694,7 @@ AC_DEFUN([FIND_TOOL], AC_DEFUN([ENABLE_ZERO_BUILD], [ - AC_MSG_CHECKING(whether to use the zero-assembler port) + AC_MSG_CHECKING([whether to use the zero-assembler port]) use_zero=no AC_ARG_ENABLE([zero], [AS_HELP_STRING(--enable-zero, @@ -805,7 +824,7 @@ AC_DEFUN([AC_CHECK_ENABLE_CACAO], AC_DEFUN([AC_CHECK_WITH_CACAO_HOME], [ - AC_MSG_CHECKING(for CACAO home directory) + AC_MSG_CHECKING([for a CACAO home directory]) AC_ARG_WITH([cacao-home], [AS_HELP_STRING([--with-cacao-home], [CACAO home directory [[default=/usr/local/cacao]]])], @@ -830,7 +849,7 @@ AC_DEFUN([AC_CHECK_WITH_CACAO_HOME], AC_DEFUN([AC_CHECK_WITH_CACAO_SRC_ZIP], [ - AC_MSG_CHECKING(for a CACAO source zip) + AC_MSG_CHECKING([for a CACAO source zip]) AC_ARG_WITH([cacao-src-zip], [AS_HELP_STRING(--with-cacao-src-zip,specify the location of the CACAO source zip)], [ @@ -847,7 +866,7 @@ AC_DEFUN([AC_CHECK_WITH_CACAO_SRC_ZIP], AC_DEFUN([AC_CHECK_WITH_CACAO_SRC_DIR], [ - AC_MSG_CHECKING(for a Cacao source directory) + AC_MSG_CHECKING([for a CACAO source directory]) AC_ARG_WITH([cacao-src-dir], [AS_HELP_STRING(--with-cacao-src-dir,specify the location of the Cacao sources)], [ @@ -1009,7 +1028,7 @@ AC_DEFUN([AC_CHECK_FOR_OPENJDK], [ if test "x${withval}" = xno then - SYSTEM_OPENJDK_DIR= + SYSTEM_OPENJDK_DIR=no with_openjdk=false else SYSTEM_OPENJDK_DIR=${withval} @@ -1017,7 +1036,7 @@ AC_DEFUN([AC_CHECK_FOR_OPENJDK], fi ], [ - SYSTEM_OPENJDK_DIR= + SYSTEM_OPENJDK_DIR=no with_openjdk=false ]) From doko at ubuntu.com Sat Jan 16 15:35:42 2010 From: doko at ubuntu.com (Matthias Klose) Date: Sun, 17 Jan 2010 00:35:42 +0100 Subject: build problems on sparc64-linux In-Reply-To: <201001142010.47855.dennis@ausil.us> References: <4B3F6017.9000009@ubuntu.com> <201001142010.47855.dennis@ausil.us> Message-ID: <4B524D4E.7010805@ubuntu.com> On 15.01.2010 03:10, Dennis Gilmore wrote: > On Saturday 02 January 2010 09:02:47 am Matthias Klose wrote: >> I see a build failure of current 6b17 from the IcedTea6 branch on >> sparc64-linux using the original hotspot, but not on sparc-linux (32bit). >> The build fails building abstractCompiler.cpp in >> build/linux-sparcv9/hotspot/outputdir/linux_sparcv9_compiler2/product >> >> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1069: error: inline >> function 'void Assembler::emit_long(int)' used but never defined >> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1083: error: inline >> function 'void Assembler::add(RegisterImpl*, int, RegisterImpl*, >> relocInfo::relocType)' used but never defined >> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1514: error: inline >> function 'void Assembler::stb(RegisterImpl*, const Address&, int)' used >> but never defined .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1291: >> error: inline function 'void Assembler::ldsb(const Address&, >> RegisterImpl*, int)' used but never defined >> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1507: error: inline >> function 'void Assembler::st(RegisterImpl*, RegisterImpl*, RegisterImpl*)' >> used but never defined >> >> these are all defined in assembler_sparc.inline.hpp. not using precompiled >> headers and -save-temps shows that assembler_sparc.inline.hpp is not >> included in the saved .ii file. >> >> I currently fail to see how assembler_x86.inline.hpp and >> assembler_zero.inline.hpp are included (or assembler_sparc.inline.hpp on >> sparc 32bit). Any hints? >> >> patches/icedtea-sparc-trapsfix.patch is patched to include asm/traps.h >> instead of asm-sparc/traps.h only for one sparc architecture. I don't see >> asm-sparc/traps.h anymore with recent kernel headers. maybe this should be >> build configure check depending on the kernel headers used? > one of the sparc patches in fedora is dealing with the new header locations. > kernel headers got moved when sparc and sparc64 kernel trees merged. ok, I'm checking in the attached patch as a replacement for patches/icedtea-sparc-trapsfix.patch, so the local fedora patches can be dropped. >> the fedora packaging repository does have two sparc patches not found in >> IcedTea. Are these still applied? Does the fedora build acctually build and >> work in it's current state? > yes and yes at least with the last build we did > https://sparc.koji.fedoraproject.org/koji/buildinfo?buildID=42183 > > If you have any sparc questions feel free to ask me. please could you try to build current IcedTea head or 1.7-branch configured with --with-hotspot=hs16 and see if it does build for you on sparc and sparc64? Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-sparc-trapsfix.patch Type: text/x-diff Size: 523 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20100117/1c1bb923/icedtea-sparc-trapsfix.patch From doko at icedtea.classpath.org Sat Jan 16 15:38:02 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Sat, 16 Jan 2010 23:38:02 +0000 Subject: /hg/icedtea6: Look for merged sparc kernel headers in asm/ Message-ID: changeset 83256d3211dd in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=83256d3211dd author: doko at ubuntu.com date: Sun Jan 17 00:37:57 2010 +0100 Look for merged sparc kernel headers in asm/ 2010-01-17 Matthias Klose * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers are located in asm/. diffstat: 2 files changed, 10 insertions(+), 14 deletions(-) ChangeLog | 5 +++++ patches/icedtea-sparc-trapsfix.patch | 19 +++++-------------- diffs (42 lines): diff -r 327907cd1d5b -r 83256d3211dd ChangeLog --- a/ChangeLog Sat Jan 16 02:12:30 2010 +0000 +++ b/ChangeLog Sun Jan 17 00:37:57 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-16 Andrew John Hughes + + * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers + are located in asm/. + 2010-01-16 Andrew John Hughes * acinclude.m4: diff -r 327907cd1d5b -r 83256d3211dd patches/icedtea-sparc-trapsfix.patch --- a/patches/icedtea-sparc-trapsfix.patch Sat Jan 16 02:12:30 2010 +0000 +++ b/patches/icedtea-sparc-trapsfix.patch Sun Jan 17 00:37:57 2010 +0100 @@ -1,21 +1,12 @@ diff -Nru openjdk.orig/hotspot/src/os_cp -diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp ---- openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-04 08:40:18.000000000 +0100 -+++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-09 01:29:51.000000000 +0100 -@@ -25,7 +25,16 @@ +--- openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp.orig 2010-01-16 23:19:45.703450297 +0000 ++++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2010-01-16 23:21:23.942337146 +0000 +@@ -25,7 +25,8 @@ #include "incls/_precompiled.incl" #include "incls/_assembler_linux_sparc.cpp.incl" -#include -+/* Headers for 32bit sparc with a 32bit userland end up in asm/ -+ * Headers for 32bit sparc with a 64bit userland end up in asm-sparc/ -+ * There is no traps.h in asm-sparc64/ -+ */ -+ -+#if defined(__sparc__) && defined(__arch64__) -+# include -+#else -+# include -+#endif ++// always found in asm/ with merged sparc/sparc64 headers ++#include void MacroAssembler::read_ccr_trap(Register ccr_save) { // No implementation From doko at icedtea.classpath.org Sat Jan 16 15:38:29 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Sat, 16 Jan 2010 23:38:29 +0000 Subject: /hg/release/icedtea6-1.7: Look for merged sparc kernel headers i... Message-ID: changeset 00dce3629da2 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=00dce3629da2 author: doko at ubuntu.com date: Sun Jan 17 00:34:54 2010 +0100 Look for merged sparc kernel headers in asm/ 2010-01-17 Matthias Klose * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers are located in asm/. diffstat: 2 files changed, 11 insertions(+), 15 deletions(-) ChangeLog | 7 ++++++- patches/icedtea-sparc-trapsfix.patch | 19 +++++-------------- diffs (51 lines): diff -r 882587aab813 -r 00dce3629da2 ChangeLog --- a/ChangeLog Sat Jan 16 02:12:30 2010 +0000 +++ b/ChangeLog Sun Jan 17 00:34:54 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-16 Andrew John Hughes + + * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers + are located in asm/. + 2010-01-16 Andrew John Hughes * acinclude.m4: @@ -55,7 +60,7 @@ 2010-01-16 Andrew John Hughes - * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Implement is_allocatable to make build word with hs16 2010-01-14 Matthias Klose diff -r 882587aab813 -r 00dce3629da2 patches/icedtea-sparc-trapsfix.patch --- a/patches/icedtea-sparc-trapsfix.patch Sat Jan 16 02:12:30 2010 +0000 +++ b/patches/icedtea-sparc-trapsfix.patch Sun Jan 17 00:34:54 2010 +0100 @@ -1,21 +1,12 @@ diff -Nru openjdk.orig/hotspot/src/os_cp -diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp ---- openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-04 08:40:18.000000000 +0100 -+++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-09 01:29:51.000000000 +0100 -@@ -25,7 +25,16 @@ +--- openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp.orig 2010-01-16 23:19:45.703450297 +0000 ++++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2010-01-16 23:21:23.942337146 +0000 +@@ -25,7 +25,8 @@ #include "incls/_precompiled.incl" #include "incls/_assembler_linux_sparc.cpp.incl" -#include -+/* Headers for 32bit sparc with a 32bit userland end up in asm/ -+ * Headers for 32bit sparc with a 64bit userland end up in asm-sparc/ -+ * There is no traps.h in asm-sparc64/ -+ */ -+ -+#if defined(__sparc__) && defined(__arch64__) -+# include -+#else -+# include -+#endif ++// always found in asm/ with merged sparc/sparc64 headers ++#include void MacroAssembler::read_ccr_trap(Register ccr_save) { // No implementation From doko at icedtea.classpath.org Sat Jan 16 15:40:56 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Sat, 16 Jan 2010 23:40:56 +0000 Subject: /hg/icedtea: Look for merged sparc kernel headers in asm/ Message-ID: changeset aa999f73a911 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=aa999f73a911 author: doko at ubuntu.com date: Sun Jan 17 00:40:56 2010 +0100 Look for merged sparc kernel headers in asm/ 2010-01-17 Matthias Klose * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers are located in asm/. diffstat: 2 files changed, 10 insertions(+), 14 deletions(-) ChangeLog | 5 +++++ patches/icedtea-sparc-trapsfix.patch | 19 +++++-------------- diffs (42 lines): diff -r 663183355f4c -r aa999f73a911 ChangeLog --- a/ChangeLog Fri Jan 15 15:53:39 2010 +0100 +++ b/ChangeLog Sun Jan 17 00:40:56 2010 +0100 @@ -1,3 +1,8 @@ 2010-01-15 Matthias Klose + + * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers + are located in asm/. + 2010-01-15 Matthias Klose * Makefile.am (stamps/icedtea-npplugin): New target, add file diff -r 663183355f4c -r aa999f73a911 patches/icedtea-sparc-trapsfix.patch --- a/patches/icedtea-sparc-trapsfix.patch Fri Jan 15 15:53:39 2010 +0100 +++ b/patches/icedtea-sparc-trapsfix.patch Sun Jan 17 00:40:56 2010 +0100 @@ -1,21 +1,12 @@ diff -Nru openjdk.orig/hotspot/src/os_cp -diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp ---- openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-04 08:40:18.000000000 +0100 -+++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-09 01:29:51.000000000 +0100 -@@ -25,7 +25,16 @@ +--- openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp.orig 2010-01-16 23:19:45.703450297 +0000 ++++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2010-01-16 23:21:23.942337146 +0000 +@@ -25,7 +25,8 @@ #include "incls/_precompiled.incl" #include "incls/_assembler_linux_sparc.cpp.incl" -#include -+/* Headers for 32bit sparc with a 32bit userland end up in asm/ -+ * Headers for 32bit sparc with a 64bit userland end up in asm-sparc/ -+ * There is no traps.h in asm-sparc64/ -+ */ -+ -+#if defined(__sparc__) && defined(__arch64__) -+# include -+#else -+# include -+#endif ++// always found in asm/ with merged sparc/sparc64 headers ++#include void MacroAssembler::read_ccr_trap(Register ccr_save) { // No implementation From gnu_andrew at member.fsf.org Sat Jan 16 16:52:19 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 17 Jan 2010 00:52:19 +0000 Subject: build problems on sparc64-linux In-Reply-To: <4B524D4E.7010805@ubuntu.com> References: <4B3F6017.9000009@ubuntu.com> <201001142010.47855.dennis@ausil.us> <4B524D4E.7010805@ubuntu.com> Message-ID: <17c6771e1001161652k233c9d4ct56b5a36da0d7aff5@mail.gmail.com> 2010/1/16 Matthias Klose : > On 15.01.2010 03:10, Dennis Gilmore wrote: >> >> On Saturday 02 January 2010 09:02:47 am Matthias Klose wrote: >>> >>> I see a build failure of current 6b17 from the IcedTea6 branch on >>> sparc64-linux using the original hotspot, but not on sparc-linux (32bit). >>> The build fails building abstractCompiler.cpp in >>> build/linux-sparcv9/hotspot/outputdir/linux_sparcv9_compiler2/product >>> >>> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1069: error: inline >>> function 'void Assembler::emit_long(int)' used but never defined >>> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1083: error: inline >>> function 'void Assembler::add(RegisterImpl*, int, RegisterImpl*, >>> relocInfo::relocType)' used but never defined >>> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1514: error: inline >>> function 'void Assembler::stb(RegisterImpl*, const Address&, int)' used >>> but never defined .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1291: >>> error: inline function 'void Assembler::ldsb(const Address&, >>> RegisterImpl*, int)' used but never defined >>> .../hotspot/src/cpu/sparc/vm/assembler_sparc.hpp:1507: error: inline >>> function 'void Assembler::st(RegisterImpl*, RegisterImpl*, >>> RegisterImpl*)' >>> used but never defined >>> >>> these are all defined in assembler_sparc.inline.hpp. not using >>> precompiled >>> headers and -save-temps shows that assembler_sparc.inline.hpp is not >>> included in the saved .ii file. >>> >>> I currently fail to see how assembler_x86.inline.hpp and >>> assembler_zero.inline.hpp are included (or assembler_sparc.inline.hpp on >>> sparc 32bit). Any hints? >>> >>> patches/icedtea-sparc-trapsfix.patch is patched to include asm/traps.h >>> instead of asm-sparc/traps.h only for one sparc architecture. I don't see >>> asm-sparc/traps.h anymore with recent kernel headers. maybe this should >>> be >>> build configure check depending on the kernel headers used? >> >> one of the sparc patches in fedora is dealing with the new header >> locations. >> kernel headers got moved when sparc and sparc64 kernel trees merged. > > ok, I'm checking in the attached patch as a replacement for > patches/icedtea-sparc-trapsfix.patch, so the local fedora patches can be > dropped. > >>> the fedora packaging repository does have two sparc patches not found in >>> IcedTea. Are these still applied? Does the fedora build acctually build >>> and >>> work in it's current state? >> >> yes ?and yes ?at least with the last build we did >> https://sparc.koji.fedoraproject.org/koji/buildinfo?buildID=42183 >> >> If you have any sparc questions feel free to ask me. > > please could you try to build current IcedTea head or 1.7-branch configured > with --with-hotspot=hs16 and see if it does build for you on sparc and > sparc64? > > ?Matthias > I looked at the Fedora patches yesterday and agree this is the right change. But I thought we were going to make this dependent on a configure check for the /usr/include/asm-sparc directory? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 05:02:30 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 13:02:30 +0000 Subject: [Bug 431] New: cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 Summary: cacao build broken, making redist all, in icedtea6 Product: IcedTea Version: 6-hg Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: xerxes at zafena.se build configured out of tree on armv7 host with --enable-cacao --build=arm-linux-gnueabi >>>Recursively making redist all @ Sun Jan 17 12:34:04 CET 2010 ... make[5]: Entering directory `/media/disk/icedtea6-cacao/openjdk-ecj/jdk/make/java/redist' BinaryPlugs import started: Sun Jan 17 12:34:08 CET 2010 BINARY_PLUGS_PATH=/media/disk/icedtea6-cacao/bootstrap/jdk1.7.0 /bin/mkdir -p /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes PLUG IMPORT: com/sun/jmx/snmp/SnmpDataTypeEnums.class PLUG IMPORT: com/sun/jmx/snmp/SnmpDefinitions.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOid.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOidRecord.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOidTable.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOidTableSupport.class PLUG IMPORT: com/sun/jmx/snmp/SnmpParameters.class PLUG IMPORT: com/sun/jmx/snmp/SnmpPduPacket.class PLUG IMPORT: com/sun/jmx/snmp/SnmpPeer.class PLUG IMPORT: rt/com/sun/jmx/snmp/SnmpSession.class PLUG IMPORT: com/sun/jmx/snmp/SnmpTimeticks.class PLUG IMPORT: com/sun/jmx/snmp/SnmpVarBind.class PLUG IMPORT: com/sun/jmx/snmp/SnmpVarBindList.class PLUG IMPORT: com/sun/jmx/snmp/daemon/SendQ.class PLUG IMPORT: com/sun/jmx/snmp/daemon/SnmpInformRequest.class PLUG IMPORT: com/sun/jmx/snmp/daemon/SnmpSession.class (cd /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes && /media/disk/icedtea6-cacao/bootstrap/jdk1.6.0/bin/jar xf /media/disk/icedtea6-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/tmp/java/plugs/jmf.clist`) /bin/mkdir -p /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes PLUG IMPORT: gnu (cd /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes && /media/disk/icedtea6-cacao/bootstrap/jdk1.6.0/bin/jar xf /media/disk/icedtea6-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/tmp/java/plugs/gnu.clist`) /bin/mkdir -p /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes PLUG IMPORT: javax/jnlp (cd /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes && /media/disk/icedtea6-cacao/bootstrap/jdk1.6.0/bin/jar xf /media/disk/icedtea6-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/tmp/java/plugs/javax.clist`) /bin/mkdir -p /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes PLUG IMPORT: net (cd /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes && /media/disk/icedtea6-cacao/bootstrap/jdk1.6.0/bin/jar xf /media/disk/icedtea6-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/tmp/java/plugs/netx.clist`) /bin/mkdir -p /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes PLUG IMPORT: netscape (cd /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/classes && /media/disk/icedtea6-cacao/bootstrap/jdk1.6.0/bin/jar xf /media/disk/icedtea6-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/tmp/java/plugs/netscape.clist`) BinaryPlugs import completed: Sun Jan 17 12:35:34 CET 2010 ASSEMBLY_IMPORT: /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server/libjvm.so /bin/mkdir -p /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server rm -f /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server/libjvm.so /bin/cp /media/disk/icedtea6-cacao/cacao/install/jre/lib/arm/server/libjvm.so /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server/libjvm.so ASSEMBLY_IMPORT: /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server/Xusage.txt /bin/mkdir -p /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server rm -f /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server/Xusage.txt /bin/cp /media/disk/icedtea6-cacao/cacao/install/jre/lib/arm/server/Xusage.txt /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server/Xusage.txt make[5]: *** No rule to make target `/media/disk/icedtea6-cacao/cacao/install/jre/lib/arm/client/libjvm.so', needed by `/media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/client/libjvm.so'. Stop. make[5]: Leaving directory `/media/disk/icedtea6-cacao/openjdk-ecj/jdk/make/java/redist' make[4]: *** [all] Error 1 make[4]: Leaving directory `/media/disk/icedtea6-cacao/openjdk-ecj/jdk/make/java' make[3]: *** [all] Error 1 make[3]: Leaving directory `/media/disk/icedtea6-cacao/openjdk-ecj/jdk/make' make[2]: *** [jdk-build] Error 2 make[2]: Leaving directory `/media/disk/icedtea6-cacao/openjdk-ecj' make[1]: *** [jdk_only] Error 2 make[1]: Leaving directory `/media/disk/icedtea6-cacao/openjdk-ecj' make: *** [stamps/icedtea-ecj.stamp] Error 2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 06:13:36 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 14:13:36 +0000 Subject: [Bug 409] additional info Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=409 ticapix at gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ticapix at gmail.com ------- Comment #4 from ticapix at gmail.com 2010-01-17 14:13 ------- (In reply to comment #3) > Can you recheck this on a more recent version? > I have the same error Experimental: JNI_OnLoad called. Stable Library ========================================= Native lib Version = RXTX-2.1-7 Java lib Version = RXTX-2.1-7 RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB0 # # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f1709faa383, pid=11521, tid=139736928360720 # # Java VM: Java HotSpot(TM) 64-Bit Server VM (11.2-b01 mixed mode linux-amd64) # Problematic frame: # C [librxtxSerial-2.1-7.so+0x8383] read_byte_array+0x43 But I'm using the sun jdk 1.6.0_12 and I got the error with sun jdk 1.6.0_16 (I'm running debian) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 09:37:44 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 17:37:44 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |CACAO ------- Comment #1 from gnu_andrew at member.fsf.org 2010-01-17 17:37 ------- Should be filed under CACAO. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 09:38:46 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 17:38:46 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #2 from gnu_andrew at member.fsf.org 2010-01-17 17:38 ------- Did CACAO build successfully earlier? Is there a resulting libjvm.so? The build is failing to copy it over to the JDK tree. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 09:40:55 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 17:40:55 +0000 Subject: [Bug 409] additional info Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=409 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6-1.2 ------- Comment #5 from gnu_andrew at member.fsf.org 2010-01-17 17:40 ------- This is still an old version. The current 1.6 release gives: $ /usr/lib/jvm/icedtea6/bin/java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6.2) (build 1.6.0_0-b16) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 10:36:41 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 18:36:41 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #3 from xerxes at zafena.se 2010-01-17 18:36 ------- Did CACAO build successfully earlier? Is there a resulting libjvm.so? there is a sucessfull built libjvm.so in the cacao server dir /media/disk/icedtea6-cacao/cacao/install/jre/lib/arm/server/libjvm.so that have been copied sucessfully to /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/server/libjvm.so but no ther are no libjvm.so in the client dir... actually there exist no /media/disk/icedtea6-cacao/cacao/install/jre/lib/arm/client/ directory or target /media/disk/icedtea6-cacao/openjdk-ecj/build/linux-arm/lib/arm/client directory. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 10:43:38 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 18:43:38 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #4 from xerxes at zafena.se 2010-01-17 18:43 ------- this bug are reproducable on i386 fc11 >>>Recursively making redist all @ Sun Jan 17 19:32:40 CET 2010 ... make[5]: Entering directory `/icedtea6-1.7-cacao/openjdk-ecj/jdk/make/java/redist' BinaryPlugs import started: Sun Jan 17 19:32:40 CET 2010 BINARY_PLUGS_PATH=/icedtea6-1.7-cacao/bootstrap/jdk1.7.0 /bin/mkdir -p /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes PLUG IMPORT: com/sun/jmx/snmp/SnmpDataTypeEnums.class PLUG IMPORT: com/sun/jmx/snmp/SnmpDefinitions.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOid.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOidRecord.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOidTable.class PLUG IMPORT: com/sun/jmx/snmp/SnmpOidTableSupport.class PLUG IMPORT: com/sun/jmx/snmp/SnmpParameters.class PLUG IMPORT: com/sun/jmx/snmp/SnmpPduPacket.class PLUG IMPORT: com/sun/jmx/snmp/SnmpPeer.class PLUG IMPORT: rt/com/sun/jmx/snmp/SnmpSession.class PLUG IMPORT: com/sun/jmx/snmp/SnmpTimeticks.class PLUG IMPORT: com/sun/jmx/snmp/SnmpVarBind.class PLUG IMPORT: com/sun/jmx/snmp/SnmpVarBindList.class PLUG IMPORT: com/sun/jmx/snmp/daemon/SendQ.class PLUG IMPORT: com/sun/jmx/snmp/daemon/SnmpInformRequest.class PLUG IMPORT: com/sun/jmx/snmp/daemon/SnmpSession.class (cd /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes && /icedtea6-1.7-cacao/bootstrap/jdk1.6.0/bin/jar xf /icedtea6-1.7-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/tmp/java/plugs/jmf.clist`) /bin/mkdir -p /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes PLUG IMPORT: gnu (cd /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes && /icedtea6-1.7-cacao/bootstrap/jdk1.6.0/bin/jar xf /icedtea6-1.7-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/tmp/java/plugs/gnu.clist`) /bin/mkdir -p /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes PLUG IMPORT: javax/jnlp (cd /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes && /icedtea6-1.7-cacao/bootstrap/jdk1.6.0/bin/jar xf /icedtea6-1.7-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/tmp/java/plugs/javax.clist`) /bin/mkdir -p /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes PLUG IMPORT: net (cd /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes && /icedtea6-1.7-cacao/bootstrap/jdk1.6.0/bin/jar xf /icedtea6-1.7-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/tmp/java/plugs/netx.clist`) /bin/mkdir -p /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes PLUG IMPORT: netscape (cd /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/classes && /icedtea6-1.7-cacao/bootstrap/jdk1.6.0/bin/jar xf /icedtea6-1.7-cacao/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar `/bin/cat /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/tmp/java/plugs/netscape.clist`) BinaryPlugs import completed: Sun Jan 17 19:32:45 CET 2010 ASSEMBLY_IMPORT: /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/libjvm.so /bin/mkdir -p /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server rm -f /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/libjvm.so /bin/cp /icedtea6-1.7-cacao/cacao/install/jre/lib/i386/server/libjvm.so /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/libjvm.so ASSEMBLY_IMPORT: /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/Xusage.txt /bin/mkdir -p /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server rm -f /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/Xusage.txt /bin/cp /icedtea6-1.7-cacao/cacao/install/jre/lib/i386/server/Xusage.txt /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/Xusage.txt make[5]: *** No rule to make target `/icedtea6-1.7-cacao/cacao/install/jre/lib/i386/client/libjvm.so', needed by `/icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/client/libjvm.so'. Stop. make[5]: Leaving directory `/icedtea6-1.7-cacao/openjdk-ecj/jdk/make/java/redist' make[4]: *** [all] Error 1 make[4]: Leaving directory `/icedtea6-1.7-cacao/openjdk-ecj/jdk/make/java' make[3]: *** [all] Error 1 make[3]: Leaving directory `/icedtea6-1.7-cacao/openjdk-ecj/jdk/make' make[2]: *** [jdk-build] Error 2 make[2]: Leaving directory `/icedtea6-1.7-cacao/openjdk-ecj' make[1]: *** [jdk_only] Fel 2 make[1]: Leaving directory `/icedtea6-1.7-cacao/openjdk-ecj' make: *** [stamps/icedtea-ecj.stamp] Fel 2 the libjvm.so exists here: [xranby at pusspuss icedtea6-1.7-cacao]$ ls /icedtea6-1.7-cacao/cacao/install/jre/lib/i386/server Xusage.txt libjsig.so libjvm.so [xranby at pusspuss icedtea6-1.7-cacao]$ ls -la /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/libjvm.so -rwxr-xr-x. 1 xranby xranby 2642902 Jan 17 19:32 /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/server/libjvm.so but not where the build look: ls: cannot access /icedtea6-1.7-cacao/cacao/install/jre/lib/i386/client: No such file or directory ls: cannot access /icedtea6-1.7-cacao/openjdk-ecj/build/linux-i586/lib/i386/client/: No such file or directory -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Jan 17 14:05:27 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 17 Jan 2010 22:05:27 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #5 from gnu_andrew at member.fsf.org 2010-01-17 22:05 ------- ah so maybe a CACAO bug in that it doesn't create the necessary client directory for archs which support client (x86, arm). x86_64 doesn't so the OpenJDK build looks for and finds it in server. It seems strange we wouldn't have seen this before though. Indeed, here is the logic from src/cacao/Makefile.am: if WITH_JAVA_RUNTIME_LIBRARY_OPENJDK install-data-local: $(mkdir_p) $(prefix)/jre/lib/$(JAVA_ARCH)/server $(LN_S) -f $(libdir)/libjvm.so $(prefix)/jre/lib/$(JAVA_ARCH)/server $(ECHO) $(ECHO_N) > $(prefix)/jre/lib/$(JAVA_ARCH)/server/Xusage.txt $(ECHO) $(ECHO_N) > $(prefix)/jre/lib/$(JAVA_ARCH)/server/libjsig.so uninstall-local: rm -f $(prefix)/jre/lib/$(JAVA_ARCH)/server/libjvm.so rm -f $(prefix)/jre/lib/$(JAVA_ARCH)/server/Xusage.txt rm -f $(prefix)/jre/lib/$(JAVA_ARCH)/server/libjsig.so endif and grep -r 'client/' in the CACAO tree returns nothing. On the OpenJDK side, make/java/redist/Makefile has this logic: # Hotspot client is only available on 32-bit builds ifeq ($(ARCH_DATA_MODEL), 32) IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \ $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt endif but that's been there since OpenJDK6 was created. So what changed to break this? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Jan 18 02:10:53 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 18 Jan 2010 10:10:53 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #6 from gbenson at redhat.com 2010-01-18 10:10 ------- The Zero build stuff got replaced recently. Maybe the cacao build stuff relied on something from Zero that now moved? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Jan 18 02:38:47 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 18 Jan 2010 10:38:47 +0000 Subject: [Bug 432] New: --with-additional-vms=cacao, shark build fail during add-zero without having openjdk-src-zip and hotspot-src-zip explicitly set. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=432 Summary: --with-additional-vms=cacao,shark build fail during add- zero without having openjdk-src-zip and hotspot-src-zip explicitly set. Product: IcedTea Version: 6-hg Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: xerxes at zafena.se when running a build configured with simply ./configure --with-additional-vms=cacao,shark makes the build fail during the add-zero step. the build tries to unpack openjdk.tar.gz and hotspot.tar.gz instead of the downloaded openjdk-6-src-b17-14_oct_2009.tar.gz file that contain both. IcedTea is served: openjdk/build/linux-arm mkdir -p stamps touch stamps/icedtea.stamp mkdir -p openjdk/build/linux-arm/j2sdk-image/jre/lib/arm/cacao install -m 644 cacao/install/lib/libjvm.so \ openjdk/build/linux-arm/j2sdk-image/jre/lib/arm/cacao/ install -m 644 cacao/install/jre/lib/arm/server/libjsig.so \ openjdk/build/linux-arm/j2sdk-image/jre/lib/arm/cacao/ install -m 644 cacao/install/jre/lib/arm/server/Xusage.txt \ openjdk/build/linux-arm/j2sdk-image/jre/lib/arm/cacao/ printf -- '-cacao KNOWN\n' >> openjdk/build/linux-arm/j2sdk-image/jre/lib/arm/jvm.cfg touch stamps/add-cacao.stamp mkdir -p zerovm cd zerovm && \ BUILD_LANGTOOLS=false ALT_LANGTOOLS_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/langtools/dist BUILD_JAXP=false ALT_JAXP_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/jaxp/dist BUILD_JAXWS=false ALT_JAXWS_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/jaxws/dist BUILD_CORBA=false ALT_CORBA_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/corba/dist BUILD_JDK=false DISTRIBUTION_PATCHES='' \ /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/configure --with-openjdk=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image --enable-zero --enable-shark --disable-docs '--enable-zero' '--disable-docs' '--build=arm-linux-gnueabi' 'build_alias=arm-linux-gnueabi' --with-openjdk-src-zip=/sd/icedtea6-1.7-zero-shark-cacao/openjdk.tar.gz --with-hotspot-src-zip=/sd/icedtea6-1.7-zero-shark-cacao/hotspot.tar.gz checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking how to create a pax tar archive... gnutar checking build system type... arm-unknown-linux-gnueabi checking host system type... arm-unknown-linux-gnueabi checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of gcc... none checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... none checking for make... /usr/bin/make checking for gzip... /bin/gzip checking for ant... /usr/bin/ant checking for find... /usr/bin/find checking for patch... /usr/bin/patch checking for tar... /bin/tar checking for chmod... /bin/chmod checking for md5sum... /usr/bin/md5sum checking for wget... /usr/bin/wget checking for zip... /usr/bin/zip checking for unzip... /usr/bin/unzip checking for cpio... /bin/cpio checking for file... /usr/bin/file checking for fastjar... fastjar checking for gawk... /usr/bin/gawk checking for hg... /usr/bin/hg checking for lsb_release... /usr/bin/lsb_release checking whether to compile ecj natively... no checking which HotSpot build to use... original checking for linux32... /usr/bin/linux32 checking version of GCC... 4.3.3 (major version 4, minor version 3) checking for an existing OpenJDK installation... /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image checking for getconf... /usr/bin/getconf checking the number of online processors... 1 checking how many parallel build jobs to execute... 2 checking for a NetBeans installation... /usr/share/netbeans checking for an Ant home directory... /usr/share/ant checking whether to build VisualVM... no checking whether to build the browser plugin... yes checking whether to build the new experimental browser plugin based on npruntime... no checking whether to include PulseAudio support... no checking whether to build documentation... no checking whether to enable experimental OpenJDK cross-compilation support... no checking whether to include the XRender pipeline... yes checking whether to include NIO2 support... no checking whether to include SystemTap tracing support... no checking whether to include the NSS-based security provider... no checking whether to include Javascript support via Rhino... /usr/share/java/js.jar checking for an OpenJDK source zip... /sd/icedtea6-1.7-zero-shark-cacao/openjdk.tar.gz checking for a HotSpot source zip... /sd/icedtea6-1.7-zero-shark-cacao/hotspot.tar.gz checking for an OpenJDK source directory... /media/disk/icedtea6-1.7-zero-shark-cacao/zerovm/openjdk checking for an alternate jar command... not specified checking whether to use CACAO as VM... no checking for a CACAO home directory... $(abs_top_builddir)/cacao/install checking for a CACAO source zip... not specified checking for a CACAO source directory... not specified checking whether to disable optimizations and build with -O0 -g... no checking whether to use the Shark JIT... yes checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking whether to use the zero-assembler port... yes checking size of void *... 4 checking whether byte ordering is bigendian... no checking for additional virtual machines to build... none checking whether to retrieve the source code from Mercurial... no checking which Mercurial revision to use... tip checking cups/cups.h usability... yes checking cups/cups.h presence... yes checking for cups/cups.h... yes checking cups/ppd.h usability... yes checking cups/ppd.h presence... yes checking for cups/ppd.h... yes checking X11/X.h usability... yes checking X11/X.h presence... yes checking for X11/X.h... yes checking for main in -ljpeg... yes checking for main in -lgif... yes checking for main in -lz... yes checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for XPROTO... yes checking for XT... yes checking for XP... yes checking for X11... yes checking for XINERAMA... yes checking for XRENDER... yes checking for LIBPNG... yes checking for XTST... yes checking for FREETYPE2... yes checking for ALSA... yes checking for XULRUNNER... yes checking for GTK... yes checking for GLIB... yes checking for xulrunner version... 1090015 checking for LIBFFI... yes checking for llvm-config... /usr/local/bin/llvm-config configure: creating ./config.status config.status: creating Makefile config.status: creating jvm.cfg config.status: creating ergo.c config.status: executing depfiles commands BUILD_LANGTOOLS=false ALT_LANGTOOLS_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/langtools/dist BUILD_JAXP=false ALT_JAXP_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/jaxp/dist BUILD_JAXWS=false ALT_JAXWS_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/jaxws/dist BUILD_CORBA=false ALT_CORBA_DIST=/sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/corba/dist BUILD_JDK=false DISTRIBUTION_PATCHES='' \ /usr/bin/make -C zerovm make[1]: Entering directory `/media/disk/icedtea6-1.7-zero-shark-cacao/zerovm' mkdir -p bootstrap rm -f bootstrap/jdk1.6.0 ln -sf /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image bootstrap/jdk1.6.0; \ if ! bootstrap/jdk1.6.0/bin/java -version ; \ then \ echo "bootstrap/jdk1.6.0/bin/java" \ "cannot be found or is corrupted." ; \ exit 1; \ fi java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.7-r00dce3629da2) (build 1.6.0_17-b17) OpenJDK Zero VM (build 14.0-b16, interpreted mode) mkdir -p stamps touch stamps/bootstrap-directory-symlink.stamp mkdir -p stamps touch stamps/hgforest.stamp mkdir -p stamps touch stamps/download.stamp if ! test -d openjdk ; \ then \ mkdir openjdk ; \ /bin/tar xf /sd/icedtea6-1.7-zero-shark-cacao/openjdk.tar.gz -C openjdk; \ chmod -R ug+w openjdk ; \ sh /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/fsg.sh ; \ fi /bin/tar: /sd/icedtea6-1.7-zero-shark-cacao/openjdk.tar.gz: Cannot open: No such file or directory /bin/tar: Error is not recoverable: exiting now Further liberating OpenJDK... if [ ! -e /sd/icedtea6-1.7-zero-shark-cacao/zerovm/generated ]; then \ cp -a /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/generated /sd/icedtea6-1.7-zero-shark-cacao/zerovm; \ find /sd/icedtea6-1.7-zero-shark-cacao/zerovm/generated -type f -exec chmod 640 '{}' ';' \ -o -type d -exec chmod 750 '{}' ';'; \ fi mkdir -p stamps touch stamps/extract.stamp touch stamps/replace-hotspot.stamp for target in /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/make/*/platform_zero.in \ /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/make/*/makefiles/* \ /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/tools \ /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/src/*cpu/* \ /sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/src/share/vm/*; do \ link=$(dirname $target | sed 's/^.*ports/openjdk/'|sed "s#hotspot/build#hotspot/make#"); \ cp -rv $target $link; \ done `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/make/linux/platform_zero.in' -> `openjdk/hotspot/make/linux' cp: cannot create regular file `openjdk/hotspot/make/linux': No such file or directory `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/make/linux/makefiles/shark.make' -> `openjdk/hotspot/make/linux/makefiles' cp: cannot create regular file `openjdk/hotspot/make/linux/makefiles': No such file or directory `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/make/linux/makefiles/zero.make' -> `openjdk/hotspot/make/linux/makefiles' cp: cannot create regular file `openjdk/hotspot/make/linux/makefiles': No such file or directory `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/make/linux/makefiles/zeroshark.make' -> `openjdk/hotspot/make/linux/makefiles' cp: cannot create regular file `openjdk/hotspot/make/linux/makefiles': No such file or directory `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/tools' -> `openjdk/hotspot' `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/tools/mkbc.c' -> `openjdk/hotspot/mkbc.c' cp: cannot create directory `openjdk/hotspot/src/cpu': No such file or directory cp: cannot create directory `openjdk/hotspot/src/os_cpu': No such file or directory `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/src/share/vm/includeDB_shark' -> `openjdk/hotspot/src/share/vm' cp: cannot create regular file `openjdk/hotspot/src/share/vm': No such file or directory `/sd/icedtea6-1.7-zero-shark-cacao/../icedtea6-1.7/ports/hotspot/src/share/vm/includeDB_zero' -> `openjdk/hotspot/src/share/vm' cp: cannot create regular file `openjdk/hotspot/src/share/vm': No such file or directory cp: cannot create directory `openjdk/hotspot/src/share/vm': No such file or directory make[1]: *** [stamps/ports.stamp] Error 1 make[1]: Leaving directory `/media/disk/icedtea6-1.7-zero-shark-cacao/zerovm' make: *** [stamps/add-zero.stamp] Error 2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From xerxes at zafena.se Mon Jan 18 04:59:21 2010 From: xerxes at zafena.se (Xerxes Ranby) Date: Mon, 18 Jan 2010 13:59:21 +0100 Subject: icedtea6-1.7 ARM results - HotSpot 16 In-Reply-To: <17c6771e1001151111q190aa16eu5d71affbb0b8841e@mail.gmail.com> References: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> <4B4F283B.8030103@ubuntu.com> <17c6771e1001140655v4499a0e4q2cf22ba0e6e649fd@mail.gmail.com> <17c6771e1001140834h4da73e5dt55889a366e828147@mail.gmail.com> <17c6771e1001151111q190aa16eu5d71affbb0b8841e@mail.gmail.com> Message-ID: <4B545B29.3020904@zafena.se> > Ok, I'm going to summarise things in this email because I'm getting > confused now as to what works and what doesn't: > The only one missing below is the ARM port as these builds are all on x86_64. > > Hi i will fill in what information i know about various Icedtea6-1.7 and hg builds on ARM > Normal builds > ========== > > 1. --enable-vms=cacao,shark > /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image/bin/java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.7-r00dce3629da2) (build 1.6.0_17-b17) OpenJDK Zero VM (build 14.0-b16, interpreted mode) /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image/bin/java -version -cacao java version "1.6.0_17" IcedTea Runtime Environment (IcedTea6 1.7-r00dce3629da2) (build 1.6.0_17-b17) CACAO (build 0.99.4, compiled mode) /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image/bin/java -version -shark my build failed to add shark see: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=432 > 2. --enable-shark > > Crashes on stage 2: > java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.8pre-rd9e57470d35d) (build 1.6.0_17-b17) OpenJDK Shark VM (build 14.0-b16, mixed mode) mkdir -p stamps touch stamps/bootstrap-directory-symlink.stamp mkdir -p extra-lib if ! test -d /sd/icedtea6-tot/bootstrap/jdk1.6.0 ; \ then \ /usr/bin/ecj -nowarn -g -d extra-lib \ -source 1.5 \ -sourcepath extra -cp bootstrap/jdk1.7.0/jre/lib/rt-closed.jar \ -bootclasspath \'\' @extra-source-files.txt ; \ else \ /sd/icedtea6-tot/bootstrap/jdk1.6.0/bin/javac -g -d extra-lib \ -source 1.5 \ -sourcepath extra -cp bootstrap/jdk1.7.0/jre/lib/rt-closed.jar \ -bootclasspath \'\' @extra-source-files.txt ; \ fi # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (os_linux_zero.cpp:236), pid=448, tid=1087513744 # Error: caught unhandled signal 4 # # JRE version: 6.0_17-b17 # Java VM: OpenJDK Shark VM (14.0-b16 mixed mode linux-arm ) # An error report file with more information is saved as: # /media/disk/icedtea6-tot/hs_err_pid448.log # # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # /bin/bash: line 11: 448 Aborted /sd/icedtea6-tot/bootstrap/jdk1.6.0/bin/javac -g -d extra-lib -source 1.5 -sourcepath extra -cp bootstrap/jdk1.7.0/jre/lib/rt-closed.jar -bootclasspath \'\' @extra-source-files.txt make: *** [stamps/extra-class-files.stamp] Error 134 3. --enable-cacao my build failed see: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 > Builds using --with-hotspot-build=hs16: > =========================== > > I have no information on hs16 builds for ARM. But doko seems to have made at least one sucessfull hs16 zero,shark,cacao ARM build during last xmas https://launchpad.net/ubuntu/+source/openjdk-6/6b17~pre3-1ubuntu2/+build/1414218 > 1.6.2+hg > ======= > 1. --enable-shark > /sd/5nov-j2sdk-image/bin/java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.7pre-rcda20a4144b7) (build 1.6.0_0-b17) OpenJDK Shark VM (build 14.0-b16, mixed mode) > So Shark has regressed to not bootstrapping with either HotSpot in 1.7. > Im in favour for a new release since all jvms on ARM zero,cacao and shark (ecj) can be built with at least some combinations of the available build options. Cheers Xerxes From gnu_andrew at member.fsf.org Mon Jan 18 07:36:51 2010 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 18 Jan 2010 15:36:51 +0000 Subject: icedtea6-1.7 ARM results - HotSpot 16 In-Reply-To: <4B545B29.3020904@zafena.se> References: <17c6771e1001131337s68e4ca2fm2dd2ae9c87bd61c@mail.gmail.com> <4B4F283B.8030103@ubuntu.com> <17c6771e1001140655v4499a0e4q2cf22ba0e6e649fd@mail.gmail.com> <17c6771e1001140834h4da73e5dt55889a366e828147@mail.gmail.com> <17c6771e1001151111q190aa16eu5d71affbb0b8841e@mail.gmail.com> <4B545B29.3020904@zafena.se> Message-ID: <17c6771e1001180736x5f18c267pca74132cf82ddd44@mail.gmail.com> 2010/1/18 Xerxes Ranby : > >> Ok, I'm going to summarise things in this email because I'm getting >> confused now as to what works and what doesn't: >> The only one missing below is the ARM port as these builds are all on >> x86_64. >> >> > > Hi i will fill in what information i know about various Icedtea6-1.7 and hg > builds on ARM > >> Normal builds >> ========== >> >> 1. --enable-vms=cacao,shark >> > > /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image/bin/java > -version > java version "1.6.0_17" > OpenJDK Runtime Environment (IcedTea6 1.7-r00dce3629da2) (build > 1.6.0_17-b17) > OpenJDK Zero VM (build 14.0-b16, interpreted mode) > > /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image/bin/java > -version -cacao > java version "1.6.0_17" > IcedTea Runtime Environment (IcedTea6 1.7-r00dce3629da2) (build > 1.6.0_17-b17) > CACAO (build 0.99.4, compiled mode) > > /sd/icedtea6-1.7-zero-shark-cacao/openjdk/build/linux-arm/j2sdk-image/bin/java > -version -shark > my build failed to add shark see: > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=432 > >> 2. ?--enable-shark >> >> Crashes on stage 2: >> > > java version "1.6.0_17" > OpenJDK Runtime Environment (IcedTea6 1.8pre-rd9e57470d35d) (build > 1.6.0_17-b17) > OpenJDK Shark VM (build 14.0-b16, mixed mode) > mkdir -p stamps > touch stamps/bootstrap-directory-symlink.stamp > mkdir -p extra-lib > if ! test -d /sd/icedtea6-tot/bootstrap/jdk1.6.0 ; \ > ? then \ > ? ? /usr/bin/ecj -nowarn ?-g -d extra-lib \ > ? ? ? -source 1.5 \ > ? ? ? -sourcepath extra -cp bootstrap/jdk1.7.0/jre/lib/rt-closed.jar \ > ? ? ? -bootclasspath \'\' @extra-source-files.txt ; \ > ? else \ > ? ? /sd/icedtea6-tot/bootstrap/jdk1.6.0/bin/javac ?-g -d extra-lib \ > ? ? ? ? ? -source 1.5 \ > ? ? ? ? ? -sourcepath extra -cp bootstrap/jdk1.7.0/jre/lib/rt-closed.jar \ > ? ? ? ? ? -bootclasspath \'\' @extra-source-files.txt ; \ > ? fi > # > # A fatal error has been detected by the Java Runtime Environment: > # > # ?Internal Error (os_linux_zero.cpp:236), pid=448, tid=1087513744 > # ?Error: caught unhandled signal 4 > # > # JRE version: 6.0_17-b17 > # Java VM: OpenJDK Shark VM (14.0-b16 mixed mode linux-arm ) > # An error report file with more information is saved as: > # /media/disk/icedtea6-tot/hs_err_pid448.log > # > # If you would like to submit a bug report, please include > # instructions how to reproduce the bug and visit: > # ? http://icedtea.classpath.org/bugzilla > # > /bin/bash: line 11: ? 448 Aborted > /sd/icedtea6-tot/bootstrap/jdk1.6.0/bin/javac -g -d extra-lib -source 1.5 > -sourcepath extra -cp bootstrap/jdk1.7.0/jre/lib/rt-closed.jar > -bootclasspath \'\' @extra-source-files.txt > make: *** [stamps/extra-class-files.stamp] Error 134 > > > 3. --enable-cacao > my build failed see: > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 >> >> Builds using --with-hotspot-build=hs16: >> =========================== >> >> > > I have no information on hs16 builds for ARM. > But doko seems to have made at least one sucessfull hs16 zero,shark,cacao > ARM build during last xmas > https://launchpad.net/ubuntu/+source/openjdk-6/6b17~pre3-1ubuntu2/+build/1414218 >> >> 1.6.2+hg >> ======= >> 1. --enable-shark >> > > /sd/5nov-j2sdk-image/bin/java -version > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.7pre-rcda20a4144b7) (build > 1.6.0_0-b17) > OpenJDK Shark VM (build 14.0-b16, mixed mode) > >> So Shark has regressed to not bootstrapping with either HotSpot in 1.7. >> > > Im in favour for a new release since all jvms on ARM zero,cacao and shark > (ecj) can be built with at least some combinations of the available build > options. > > Cheers > Xerxes > Ok so it looks like Shark bootstrapping will be broken for this release :( But everything else seems to be working. Assuming Ed's builds come out good tomorrow, I think we are just about ready for release. I'll do some final testing later today and hopefully we'll have the release tomorrow afternoon. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Mon Jan 18 09:12:33 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 18 Jan 2010 17:12:33 +0000 Subject: [Bug 432] --with-additional-vms=cacao, shark build fail during add-zero without having openjdk-src-zip and hotspot-src-zip explicitly set. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=432 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | ------- Comment #1 from gnu_andrew at member.fsf.org 2010-01-18 17:12 ------- Yes, this part: $(foreach i, openjdk hotspot, \ $(if $(findstring --with-$(i)-src-zip=, $(CONFIGURE_ARGS)),, --with-$(i)-src-zip=$(abs_top_builddir)/$(i).tar.gz)) is wrong as the default tarball is no longer called openjdk.tar.gz. $(OPENJDK_SRC_ZIP) and $(HOTSPOT_SRC_ZIP) should be used to avoid this issue. Testing a fix. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Mon Jan 18 12:49:29 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 18 Jan 2010 20:49:29 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 8972093fe4f7 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8972093fe4f7 author: Andrew John Hughes date: Mon Jan 18 20:14:00 2010 +0000 Use AC_LANG_PUSH/AC_LANG_POP rather than deprecated SAVE/RESTORE macros. 2010-01-18 Andrew John Hughes * configure.ac: Use AC_LANG_PUSH and AC_LANG_POP instead of deprecated SAVE and RESTORE macros. changeset 10d4e6ddaac9 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=10d4e6ddaac9 author: Andrew John Hughes date: Mon Jan 18 20:12:25 2010 +0000 PR icedtea/416: Don't use hardcoded tarball names. 2010-01-18 Andrew John Hughes PR icedtea/416: * Makefile.am: Use $(OPENJDK_SRC_ZIP) and $(HOTSPOT_SRC_ZIP) to determine names of tarballs rather than hardcoding openjdk.tar.gz and hotspot.tar.gz diffstat: 3 files changed, 21 insertions(+), 6 deletions(-) ChangeLog | 14 ++++++++++++++ Makefile.am | 6 ++++-- configure.ac | 7 +++---- diffs (65 lines): diff -r 83256d3211dd -r 10d4e6ddaac9 ChangeLog --- a/ChangeLog Sun Jan 17 00:37:57 2010 +0100 +++ b/ChangeLog Mon Jan 18 20:12:25 2010 +0000 @@ -1,3 +1,17 @@ 2010-01-17 Matthias Klose + + * configure.ac: + Use AC_LANG_PUSH and AC_LANG_POP instead + of deprecated SAVE and RESTORE macros. + +2010-01-18 Andrew John Hughes + + PR icedtea/416: + * Makefile.am: + Use $(OPENJDK_SRC_ZIP) and $(HOTSPOT_SRC_ZIP) + to determine names of tarballs rather than + hardcoding openjdk.tar.gz and hotspot.tar.gz + 2010-01-17 Matthias Klose * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers diff -r 83256d3211dd -r 10d4e6ddaac9 Makefile.am --- a/Makefile.am Sun Jan 17 00:37:57 2010 +0100 +++ b/Makefile.am Mon Jan 18 20:12:25 2010 +0000 @@ -1795,8 +1795,10 @@ ADD_ZERO_CONFIGURE_ARGS += \ '--with-rmic=% '--with-additional-vms=% \ '--with-openjdk '--with-openjdk=% , \ $(CONFIGURE_ARGS)) \ - $(foreach i, openjdk hotspot, \ - $(if $(findstring --with-$(i)-src-zip=, $(CONFIGURE_ARGS)),, --with-$(i)-src-zip=$(abs_top_builddir)/$(i).tar.gz)) + $(if $(findstring --with-openjdk-src-zip=, $(CONFIGURE_ARGS)),, \ + --with-openjdk-src-zip=$(abs_top_builddir)/$(OPENJDK_SRC_ZIP)) \ + $(if $(findstring --with-hotspot-src-zip=, $(CONFIGURE_ARGS)),, \ + --with-hotspot-src-zip=$(abs_top_builddir)/$(HOTSPOT_SRC_ZIP)) ADD_ZERO_EXTRA_BUILD_ENV = \ BUILD_LANGTOOLS=false ALT_LANGTOOLS_DIST=$(ICEDTEA_BUILD_DIR)/langtools/dist \ diff -r 83256d3211dd -r 10d4e6ddaac9 configure.ac --- a/configure.ac Sun Jan 17 00:37:57 2010 +0100 +++ b/configure.ac Mon Jan 18 20:12:25 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.8pre], [distro-pk -AC_INIT([icedtea6], [1.8pre], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6],[1.8pre],[distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) @@ -320,8 +320,7 @@ AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUN AC_MSG_ERROR([systemtap support needs sys/sdt.h header])]) AC_MSG_CHECKING([working sys/sdt.h and g++ support]) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS + AC_LANG_PUSH([C++]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include class ProbeClass @@ -354,7 +353,7 @@ public: ProbeClass inst = ProbeClass(i, "call"); inst.method(24); ]])], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([systemtap sdt.h or g++ too old])]) - AC_LANG_RESTORE + AC_LANG_POP([C++]) AC_MSG_CHECKING([for absolute java home install dir]) AC_ARG_WITH([abs-install-dir], From andrew at icedtea.classpath.org Mon Jan 18 12:49:55 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 18 Jan 2010 20:49:55 +0000 Subject: /hg/release/icedtea6-1.7: PR icedtea/416: Don't use hardcoded ta... Message-ID: changeset 67b2774bbe54 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=67b2774bbe54 author: Andrew John Hughes date: Mon Jan 18 20:12:25 2010 +0000 PR icedtea/416: Don't use hardcoded tarball names. 2010-01-18 Andrew John Hughes PR icedtea/416: * Makefile.am: Use $(OPENJDK_SRC_ZIP) and $(HOTSPOT_SRC_ZIP) to determine names of tarballs rather than hardcoding openjdk.tar.gz and hotspot.tar.gz diffstat: 2 files changed, 12 insertions(+), 2 deletions(-) ChangeLog | 8 ++++++++ Makefile.am | 6 ++++-- diffs (31 lines): diff -r 00dce3629da2 -r 67b2774bbe54 ChangeLog --- a/ChangeLog Sun Jan 17 00:34:54 2010 +0100 +++ b/ChangeLog Mon Jan 18 20:12:25 2010 +0000 @@ -1,3 +1,11 @@ 2010-01-17 Matthias Klose + + PR icedtea/416: + * Makefile.am: + Use $(OPENJDK_SRC_ZIP) and $(HOTSPOT_SRC_ZIP) + to determine names of tarballs rather than + hardcoding openjdk.tar.gz and hotspot.tar.gz + 2010-01-17 Matthias Klose * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers diff -r 00dce3629da2 -r 67b2774bbe54 Makefile.am --- a/Makefile.am Sun Jan 17 00:34:54 2010 +0100 +++ b/Makefile.am Mon Jan 18 20:12:25 2010 +0000 @@ -1792,8 +1792,10 @@ ADD_ZERO_CONFIGURE_ARGS += \ '--with-rmic=% '--with-additional-vms=% \ '--with-openjdk '--with-openjdk=% , \ $(CONFIGURE_ARGS)) \ - $(foreach i, openjdk hotspot, \ - $(if $(findstring --with-$(i)-src-zip=, $(CONFIGURE_ARGS)),, --with-$(i)-src-zip=$(abs_top_builddir)/$(i).tar.gz)) + $(if $(findstring --with-openjdk-src-zip=, $(CONFIGURE_ARGS)),, \ + --with-openjdk-src-zip=$(abs_top_builddir)/$(OPENJDK_SRC_ZIP)) \ + $(if $(findstring --with-hotspot-src-zip=, $(CONFIGURE_ARGS)),, \ + --with-hotspot-src-zip=$(abs_top_builddir)/$(HOTSPOT_SRC_ZIP)) ADD_ZERO_EXTRA_BUILD_ENV = \ BUILD_LANGTOOLS=false ALT_LANGTOOLS_DIST=$(ICEDTEA_BUILD_DIR)/langtools/dist \ From bugzilla-daemon at icedtea.classpath.org Tue Jan 19 01:51:32 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 19 Jan 2010 09:51:32 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #7 from xerxes at zafena.se 2010-01-19 09:51 ------- Whats new in Icedtea 1.7 Makefile.am are that the changeset http://icedtea.classpath.org/hg/icedtea6/rev/e7ca0bef8351 sets ARCH_DATA_MODEL="$(ZERO_BITSPERWORD)" for ICEDTEA_ENV and ICEDTEA_ENV_ECJ with ARCH_DATA_MODEL set to 32 triggers this bug in OpenJDK side, make/java/redist/Makefile for --enable-cacao builds on 32bit systems. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Jan 19 03:16:31 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 19 Jan 2010 11:16:31 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #8 from xerxes at zafena.se 2010-01-19 11:16 ------- Created an attachment (id=282) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=282&action=view) set ZERO_BUILD = true for WITH_CACAO builds i was wrong about the ARCH_DATA_MODEL theory.. a red herring, openjdk sets it by itself if icedtea dont supply it. Ok new theory and patch to fix the issue: By browsing the ChangeLog it seems cacao have allways relied on the ZERO build flags to be set, and this build flag have evolved ower time from CORE_BUILD -> CORE_OR_SHARK_BUILD -> now ZERO_BUILD and ICEDTEA_ZERO_BUILD The attached patch fixes CACAO once again by setting ZERO_BUILD and ICEDTEA_ZERO_BUILD to true when WITH_CACAO are enabled. Cheers Xerxes -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Jan 19 03:31:32 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 19 Jan 2010 11:31:32 +0000 Subject: [Bug 431] cacao build broken, making redist all, in icedtea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=431 ------- Comment #9 from xerxes at zafena.se 2010-01-19 11:31 ------- >>>Finished making images @ Tue Jan 19 12:36:44 CET 2010 ... make[3]: Leaving directory `/home/xerxes/icedtea6-1.7-cacao-2/openjdk/jdk/make' Control build finished: 10-01-19 12:36 make[2]: Leaving directory `/home/xerxes/icedtea6-1.7-cacao-2/openjdk' make[1]: L?mnar katalogen "/home/xerxes/icedtea6-1.7-cacao-2/openjdk" mkdir -p openjdk/build/linux-i586/j2sdk-image/jre/lib/i386 mkdir -p openjdk/build/linux-i586/j2re-image/lib/i386 mkdir -p openjdk/build/linux-i586/j2sdk-image/jre/lib/ext mkdir -p openjdk/build/linux-i586/j2re-image/lib/ext cp -pPRf IcedTeaPlugin.so \ openjdk/build/linux-i586/j2sdk-image/jre/lib/i386 cp -pPRf IcedTeaPlugin.so \ openjdk/build/linux-i586/j2re-image/lib/i386 cp /home/xerxes/icedtea6-1.7-cacao-2/../icedtea6-1.7/rt/net/sourceforge/jnlp/resources/about.jnlp \ extra-lib/about.jar \ openjdk/build/linux-i586/j2re-image/lib ; \ cp /home/xerxes/icedtea6-1.7-cacao-2/../icedtea6-1.7/rt/net/sourceforge/jnlp/resources/about.jnlp \ extra-lib/about.jar \ openjdk/build/linux-i586/j2sdk-image/jre/lib printf -- '-cacao ALIASED_TO -server\n' >> openjdk/build/linux-i586/j2sdk-image/jre/lib/i386/jvm.cfg IcedTea is served: openjdk/build/linux-i586 mkdir -p stamps touch stamps/icedtea.stamp printf -- '-cacao ERROR\n' >> openjdk/build/linux-i586/j2sdk-image/jre/lib/i386/jvm.cfg touch stamps/add-cacao.stamp printf -- '-zero ERROR\n' >> openjdk/build/linux-i586/j2sdk-image/jre/lib/i386/jvm.cfg printf -- '-shark ERROR\n' >> openjdk/build/linux-i586/j2sdk-image/jre/lib/i386/jvm.cfg touch stamps/add-zero.stamp real 25m2.707s user 23m23.824s sys 3m0.899s xerxes at xerxes-J464X:~/icedtea6-1.7-cacao-2$ openjdk/build/linux-i586/bin/java -version java version "1.6.0_17" IcedTea Runtime Environment (1.7-r67b2774bbe54) (build 1.6.0_17-b17) CACAO (build 0.99.4, compiled mode) xerxes at xerxes-J464X:~/icedtea6-1.7-cacao-2$ -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From xerxes at zafena.se Tue Jan 19 05:32:37 2010 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Tue, 19 Jan 2010 14:32:37 +0100 Subject: [patch] cacao icedtea6-1.7 pr431 - fix --enable-cacao builds on 32bit systems. Message-ID: <4B55B475.2080305@zafena.se> Hi the attached patch fixes pr431 for --enable-cacao on 32 bit systems. ok to push to Icedtea6-1.7? ok to push to Icedtea6? Cheers Xerxes -------------- next part -------------- A non-text attachment was scrubbed... Name: cacao_icedtea6-1.7_pr431.patch Type: text/x-patch Size: 1020 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20100119/7369a067/cacao_icedtea6-1.7_pr431.patch From dbhole at redhat.com Tue Jan 19 09:16:11 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 19 Jan 2010 12:16:11 -0500 Subject: Patch for review: Adding default value to certain attributes In-Reply-To: <349797732.363641263594972564.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> References: <889613722.363591263594967523.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> <349797732.363641263594972564.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <20100119171611.GA20698@redhat.com> * Man Wong [2010-01-15 17:36]: > This patch allows netx to not cause a failure when the codebase and href attribute under the jnlp tag is missing (codebase and href are not required attributes, hence missing them should not cause an exception to be thrown). > > Changelog: > 2010-01-15 Man Lung Wong > > * rt/net/sourceforge/jnlp/JNLPFile.java > (parse): Added a default value for sourceLocation to make sure it is not null > (location is never null). > > * rt/net/sourceforge/jnlp/Parser.java > Removed variable base, and replaced it with codebase. The fix ended > with base the same as codebase, hence no longer needed. Otherwise, > netx will launch a jnlp file with codebase null and href not null > (not the way sun's webstart behaves). > > * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java > (setSecurity): Added a variable codebase, which gets the value of codebase > attribute in the jnlp file if it exists. Otherwise, it gets > the value of the location of main jar resource (which needs > to be changed to the codebase portion instead of the entire > location). > > Any comments? > Just for the sake of consistency here, the lines in ChangeLog shouldn't be multiply indented. If it overflows on to the next line, it should start at the same spot as the line above. i.e. * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java (setSecurity): Added a variable codebase, which gets the value of codebase attribute in the jnlp file if it exists. Otherwise, it gets the value of the location of main jar resource (which needs to be changed to the codebase portion instead of the entire location). Should be: * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java (setSecurity): Added a variable codebase, which gets the value of codebase attribute in the jnlp file if it exists. Otherwise, it gets the value of the location of main jar resource (which needs to be changed to the codebase portion instead of the entire location). ... ... > diff -r 9e6623803599 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java > --- a/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Jan 13 19:32:07 2010 -0500 > +++ b/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Jan 14 14:21:46 2010 -0500 > @@ -167,6 +167,16 @@ > } > > private void setSecurity() { > + > + URL codebase = null; > + > + if (file.getCodeBase() != null) { > + codebase = file.getCodeBase(); > + } else { The function appears to have indenting issues. The first line is indented, the rest aren't.. it should be consistent with the rest of the function body. Other than that, the rest looks fine. Assuming you have tested it, please fix the above and commit any time. Cheers, Deepak From mwong at icedtea.classpath.org Tue Jan 19 11:35:55 2010 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Tue, 19 Jan 2010 19:35:55 +0000 Subject: /hg/icedtea6: Assignment default values to certain non required ... Message-ID: changeset 98c88b32cdb4 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=98c88b32cdb4 author: Man Lung Wong date: Tue Jan 19 14:38:40 2010 -0500 Assignment default values to certain non required attributes. diffstat: 4 files changed, 72 insertions(+), 50 deletions(-) ChangeLog | 16 +++ rt/net/sourceforge/jnlp/JNLPFile.java | 3 rt/net/sourceforge/jnlp/Parser.java | 28 ++---- rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 75 ++++++++++-------- diffs (230 lines): diff -r 10d4e6ddaac9 -r 98c88b32cdb4 ChangeLog --- a/ChangeLog Mon Jan 18 20:12:25 2010 +0000 +++ b/ChangeLog Tue Jan 19 14:38:40 2010 -0500 @@ -1,3 +1,19 @@ 2010-01-18 Andrew John Hughes + + * rt/net/sourceforge/jnlp/JNLPFile.java + (parse): Added a default value for sourceLocation to make sure it is + not null (location is never null). + * rt/net/sourceforge/jnlp/Parser.java: + Removed variable base, and replaced it with codebase. The fix ended + with base the same as codebase, hence no longer needed. Otherwise, + netx will launch a jnlp file with codebase null and href not + null (not the way sun's webstart behaves). + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (setSecurity): Added a variable codebase, which gets the value of + codebae attribute in the jnlp file ifit exists. Otherwise, it gets + the value of the location of main jar resource (which needs to be + changed to the codebase portion instead of the entire location). + 2010-01-18 Andrew John Hughes * configure.ac: diff -r 10d4e6ddaac9 -r 98c88b32cdb4 rt/net/sourceforge/jnlp/JNLPFile.java --- a/rt/net/sourceforge/jnlp/JNLPFile.java Mon Jan 18 20:12:25 2010 +0000 +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Jan 19 14:38:40 2010 -0500 @@ -559,8 +559,7 @@ public class JNLPFile { specVersion = parser.getSpecVersion(); fileVersion = parser.getFileVersion(); codeBase = parser.getCodeBase(); - sourceLocation = parser.getFileLocation(); - + sourceLocation = parser.getFileLocation() != null ? parser.getFileLocation() : location; info = parser.getInfo(root); resources = parser.getResources(root, false); // false == not a j2se/java resources section launchType = parser.getLauncher(root); diff -r 10d4e6ddaac9 -r 98c88b32cdb4 rt/net/sourceforge/jnlp/Parser.java --- a/rt/net/sourceforge/jnlp/Parser.java Mon Jan 18 20:12:25 2010 +0000 +++ b/rt/net/sourceforge/jnlp/Parser.java Tue Jan 19 14:38:40 2010 -0500 @@ -87,9 +87,6 @@ class Parser { /** the specification version */ private Version spec; - /** the base URL that all hrefs are relative to */ - private URL base; - /** the codebase URL */ private URL codebase; @@ -132,8 +129,8 @@ class Parser { // JNLP tag information this.spec = getVersion(root, "spec", "1.0+"); this.codebase = addSlash(getURL(root, "codebase", base)); - this.base = (codebase!=null) ? codebase : base; // if codebase not specified use default codebase - fileLocation = getURL(root, "href", this.base); + + fileLocation = getURL(root, "href", codebase); // ensure version is supported if (!supportedVersions.matchesAny(spec)) @@ -279,7 +276,7 @@ class Parser { */ public JREDesc getJRE(Node node) throws ParseException { Version version = getVersion(node, "version", null); - URL location = getURL(node, "href", base); + URL location = getURL(node, "href", codebase); String vmArgs = getAttribute(node, "java-vm-args",null); try { checkVMArgs(vmArgs); @@ -306,7 +303,7 @@ class Parser { */ public JARDesc getJAR(Node node) throws ParseException { boolean nativeJar = "nativelib".equals(node.getNodeName()); - URL location = getRequiredURL(node, "href", base); + URL location = getRequiredURL(node, "href", codebase); Version version = getVersion(node, "version", null); String part = getAttribute(node, "part", null); boolean main = "true".equals(getAttribute(node, "main", "false")); @@ -330,7 +327,7 @@ class Parser { public ExtensionDesc getExtension(Node node) throws ParseException { String name = getAttribute(node, "name", null); Version version = getVersion(node, "version", null); - URL location = getRequiredURL(node, "href", base); + URL location = getRequiredURL(node, "href", codebase); ExtensionDesc ext = new ExtensionDesc(name, version, location); @@ -433,7 +430,7 @@ class Parser { addInfo(info, child, kind, getSpanText(child)); } if ("homepage".equals(name)) - addInfo(info, child, null, getRequiredURL(child, "href", base)); + addInfo(info, child, null, getRequiredURL(child, "href", codebase)); if ("icon".equals(name)) addInfo(info, child, getAttribute(child, "kind", "default"), getIcon(child)); if ("offline-allowed".equals(name)) @@ -487,7 +484,7 @@ class Parser { int height = Integer.parseInt(getAttribute(node, "height", "-1")); int size = Integer.parseInt(getAttribute(node, "size", "-1")); int depth = Integer.parseInt(getAttribute(node, "depth", "-1")); - URL location = getRequiredURL(node, "href", base); + URL location = getRequiredURL(node, "href", codebase); Object kind = getAttribute(node, "kind", "default"); return new IconDesc(location, kind, width, height, depth, size); @@ -524,8 +521,8 @@ class Parser { else if (strict) throw new ParseException(R("PEmptySecurity")); - if (base != null) - return new SecurityDesc(file, type, base.getHost()); + if (codebase != null) + return new SecurityDesc(file, type, codebase.getHost()); else return new SecurityDesc(file, type, null); } @@ -592,7 +589,7 @@ class Parser { public AppletDesc getApplet(Node node) throws ParseException { String name = getRequiredAttribute(node, "name", R("PUnknownApplet")); String main = getRequiredAttribute(node, "main-class", null); - URL docbase = getURL(node, "documentbase", base); + URL docbase = getURL(node, "documentbase", codebase); Map paramMap = new HashMap(); int width = 0; int height = 0; @@ -724,7 +721,7 @@ class Parser { public RelatedContentDesc getRelatedContent(Node node) throws ParseException { getRequiredAttribute(node, "href", null); - URL location = getURL(node, "href", base); + URL location = getURL(node, "href", codebase); String title = null; String description = null; @@ -1176,8 +1173,7 @@ class Parser { final XMLElement xml = new XMLElement(); final PipedInputStream pin = new PipedInputStream(); final PipedOutputStream pout = new PipedOutputStream(pin); - final InputStreamReader isr = new InputStreamReader(input); - + final InputStreamReader isr = new InputStreamReader(input); // Clean the jnlp xml file of all comments before passing // it to the parser. new Thread( diff -r 10d4e6ddaac9 -r 98c88b32cdb4 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Mon Jan 18 20:12:25 2010 +0000 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Jan 19 14:38:40 2010 -0500 @@ -167,39 +167,50 @@ public class JNLPClassLoader extends URL } private void setSecurity() { - /** - * When we're trying to load an applet, file.getSecurity() will return - * null since there is no jnlp file to specify permissions. We - * determine security settings here, after trying to verify jars. - */ - if (file instanceof PluginBridge) { - if (signing == true) { - this.security = new SecurityDesc(file, - SecurityDesc.ALL_PERMISSIONS, - file.getCodeBase().getHost()); - } else { - this.security = new SecurityDesc(file, - SecurityDesc.SANDBOX_PERMISSIONS, - file.getCodeBase().getHost()); - } - } else { //regular jnlp file + + URL codebase = null; + + if (file.getCodeBase() != null) { + codebase = file.getCodeBase(); + } else { + //Fixme: codebase should be the codebase of the Main Jar not + //the location. Although, it still works in the current state. + codebase = file.getResources().getMainJAR().getLocation(); + } + + /** + * When we're trying to load an applet, file.getSecurity() will return + * null since there is no jnlp file to specify permissions. We + * determine security settings here, after trying to verify jars. + */ + if (file instanceof PluginBridge) { + if (signing == true) { + this.security = new SecurityDesc(file, + SecurityDesc.ALL_PERMISSIONS, + codebase.getHost()); + } else { + this.security = new SecurityDesc(file, + SecurityDesc.SANDBOX_PERMISSIONS, + codebase.getHost()); + } + } else { //regular jnlp file - /** - * If the application is signed, then we set the SecurityDesc to the - * tag in the jnlp file. Note that if an application is - * signed, but there is no tag in the jnlp file, the - * application will get sandbox permissions. - * If the application is unsigned, we ignore the tag and - * use a sandbox instead. - */ - if (signing == true) { - this.security = file.getSecurity(); - } else { - this.security = new SecurityDesc(file, - SecurityDesc.SANDBOX_PERMISSIONS, - file.getCodeBase().getHost()); - } - } + /** + * If the application is signed, then we set the SecurityDesc to the + * tag in the jnlp file. Note that if an application is + * signed, but there is no tag in the jnlp file, the + * application will get sandbox permissions. + * If the application is unsigned, we ignore the tag and + * use a sandbox instead. + */ + if (signing == true) { + this.security = file.getSecurity(); + } else { + this.security = new SecurityDesc(file, + SecurityDesc.SANDBOX_PERMISSIONS, + codebase.getHost()); + } + } } /** From mwong at icedtea.classpath.org Tue Jan 19 11:53:38 2010 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Tue, 19 Jan 2010 19:53:38 +0000 Subject: /hg/icedtea: Assigned default values to certain non required att... Message-ID: changeset fadd1b656c20 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=fadd1b656c20 author: Man Lung Wong date: Tue Jan 19 14:56:40 2010 -0500 Assigned default values to certain non required attributes. diffstat: 4 files changed, 72 insertions(+), 50 deletions(-) ChangeLog | 16 +++ netx/net/sourceforge/jnlp/JNLPFile.java | 3 netx/net/sourceforge/jnlp/Parser.java | 28 ++--- netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 75 +++++++++------- diffs (230 lines): diff -r aa999f73a911 -r fadd1b656c20 ChangeLog --- a/ChangeLog Sun Jan 17 00:40:56 2010 +0100 +++ b/ChangeLog Tue Jan 19 14:56:40 2010 -0500 @@ -1,3 +1,19 @@ 2010-01-17 Matthias Klose + + * rt/net/sourceforge/jnlp/JNLPFile.java + (parser): Added a default value for sourceLocation to make sure it + is not null (location is never null). + * rt/net/sourceforge/jnlp/Parser.java: + Removed variable base, and replaced it with codebase. The fix ended + with base the same as codebase, hence no longer needed. Otherwise, + netxwill launch a jnlp file with codebase null and href not + null (not the way sun's webstart behaves). + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (setSecurity): Added a variable codebase, which gets the value of + codebase attribute in the jnlp file if it exists. Otherwise, it gets + the value of the location of main jar resource (which needs to be + changed to the codebase portion instead of the entire location). + 2010-01-17 Matthias Klose * patches/icedtea-sparc-trapsfix.patch: Merged sparc headers diff -r aa999f73a911 -r fadd1b656c20 netx/net/sourceforge/jnlp/JNLPFile.java --- a/netx/net/sourceforge/jnlp/JNLPFile.java Sun Jan 17 00:40:56 2010 +0100 +++ b/netx/net/sourceforge/jnlp/JNLPFile.java Tue Jan 19 14:56:40 2010 -0500 @@ -559,8 +559,7 @@ public class JNLPFile { specVersion = parser.getSpecVersion(); fileVersion = parser.getFileVersion(); codeBase = parser.getCodeBase(); - sourceLocation = parser.getFileLocation(); - + sourceLocation = parser.getFileLocation() != null ? parser.getFileLocation() : location; info = parser.getInfo(root); resources = parser.getResources(root, false); // false == not a j2se/java resources section launchType = parser.getLauncher(root); diff -r aa999f73a911 -r fadd1b656c20 netx/net/sourceforge/jnlp/Parser.java --- a/netx/net/sourceforge/jnlp/Parser.java Sun Jan 17 00:40:56 2010 +0100 +++ b/netx/net/sourceforge/jnlp/Parser.java Tue Jan 19 14:56:40 2010 -0500 @@ -87,9 +87,6 @@ class Parser { /** the specification version */ private Version spec; - /** the base URL that all hrefs are relative to */ - private URL base; - /** the codebase URL */ private URL codebase; @@ -132,8 +129,8 @@ class Parser { // JNLP tag information this.spec = getVersion(root, "spec", "1.0+"); this.codebase = addSlash(getURL(root, "codebase", base)); - this.base = (codebase!=null) ? codebase : base; // if codebase not specified use default codebase - fileLocation = getURL(root, "href", this.base); + + fileLocation = getURL(root, "href", codebase); // ensure version is supported if (!supportedVersions.matchesAny(spec)) @@ -279,7 +276,7 @@ class Parser { */ public JREDesc getJRE(Node node) throws ParseException { Version version = getVersion(node, "version", null); - URL location = getURL(node, "href", base); + URL location = getURL(node, "href", codebase); String vmArgs = getAttribute(node, "java-vm-args",null); try { checkVMArgs(vmArgs); @@ -306,7 +303,7 @@ class Parser { */ public JARDesc getJAR(Node node) throws ParseException { boolean nativeJar = "nativelib".equals(node.getNodeName()); - URL location = getRequiredURL(node, "href", base); + URL location = getRequiredURL(node, "href", codebase); Version version = getVersion(node, "version", null); String part = getAttribute(node, "part", null); boolean main = "true".equals(getAttribute(node, "main", "false")); @@ -330,7 +327,7 @@ class Parser { public ExtensionDesc getExtension(Node node) throws ParseException { String name = getAttribute(node, "name", null); Version version = getVersion(node, "version", null); - URL location = getRequiredURL(node, "href", base); + URL location = getRequiredURL(node, "href", codebase); ExtensionDesc ext = new ExtensionDesc(name, version, location); @@ -433,7 +430,7 @@ class Parser { addInfo(info, child, kind, getSpanText(child)); } if ("homepage".equals(name)) - addInfo(info, child, null, getRequiredURL(child, "href", base)); + addInfo(info, child, null, getRequiredURL(child, "href", codebase)); if ("icon".equals(name)) addInfo(info, child, getAttribute(child, "kind", "default"), getIcon(child)); if ("offline-allowed".equals(name)) @@ -487,7 +484,7 @@ class Parser { int height = Integer.parseInt(getAttribute(node, "height", "-1")); int size = Integer.parseInt(getAttribute(node, "size", "-1")); int depth = Integer.parseInt(getAttribute(node, "depth", "-1")); - URL location = getRequiredURL(node, "href", base); + URL location = getRequiredURL(node, "href", codebase); Object kind = getAttribute(node, "kind", "default"); return new IconDesc(location, kind, width, height, depth, size); @@ -524,8 +521,8 @@ class Parser { else if (strict) throw new ParseException(R("PEmptySecurity")); - if (base != null) - return new SecurityDesc(file, type, base.getHost()); + if (codebase != null) + return new SecurityDesc(file, type, codebase.getHost()); else return new SecurityDesc(file, type, null); } @@ -592,7 +589,7 @@ class Parser { public AppletDesc getApplet(Node node) throws ParseException { String name = getRequiredAttribute(node, "name", R("PUnknownApplet")); String main = getRequiredAttribute(node, "main-class", null); - URL docbase = getURL(node, "documentbase", base); + URL docbase = getURL(node, "documentbase", codebase); Map paramMap = new HashMap(); int width = 0; int height = 0; @@ -724,7 +721,7 @@ class Parser { public RelatedContentDesc getRelatedContent(Node node) throws ParseException { getRequiredAttribute(node, "href", null); - URL location = getURL(node, "href", base); + URL location = getURL(node, "href", codebase); String title = null; String description = null; @@ -1176,8 +1173,7 @@ class Parser { final XMLElement xml = new XMLElement(); final PipedInputStream pin = new PipedInputStream(); final PipedOutputStream pout = new PipedOutputStream(pin); - final InputStreamReader isr = new InputStreamReader(input); - + final InputStreamReader isr = new InputStreamReader(input); // Clean the jnlp xml file of all comments before passing // it to the parser. new Thread( diff -r aa999f73a911 -r fadd1b656c20 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Sun Jan 17 00:40:56 2010 +0100 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Jan 19 14:56:40 2010 -0500 @@ -167,39 +167,50 @@ public class JNLPClassLoader extends URL } private void setSecurity() { - /** - * When we're trying to load an applet, file.getSecurity() will return - * null since there is no jnlp file to specify permissions. We - * determine security settings here, after trying to verify jars. - */ - if (file instanceof PluginBridge) { - if (signing == true) { - this.security = new SecurityDesc(file, - SecurityDesc.ALL_PERMISSIONS, - file.getCodeBase().getHost()); - } else { - this.security = new SecurityDesc(file, - SecurityDesc.SANDBOX_PERMISSIONS, - file.getCodeBase().getHost()); - } - } else { //regular jnlp file + + URL codebase = null; + + if (file.getCodeBase() != null) { + codebase = file.getCodeBase(); + } else { + //Fixme: codebase should be the codebase of the Main Jar not + //the location. Although, it still works in the current state. + codebase = file.getResources().getMainJAR().getLocation(); + } + + /** + * When we're trying to load an applet, file.getSecurity() will return + * null since there is no jnlp file to specify permissions. We + * determine security settings here, after trying to verify jars. + */ + if (file instanceof PluginBridge) { + if (signing == true) { + this.security = new SecurityDesc(file, + SecurityDesc.ALL_PERMISSIONS, + codebase.getHost()); + } else { + this.security = new SecurityDesc(file, + SecurityDesc.SANDBOX_PERMISSIONS, + codebase.getHost()); + } + } else { //regular jnlp file - /** - * If the application is signed, then we set the SecurityDesc to the - * tag in the jnlp file. Note that if an application is - * signed, but there is no tag in the jnlp file, the - * application will get sandbox permissions. - * If the application is unsigned, we ignore the tag and - * use a sandbox instead. - */ - if (signing == true) { - this.security = file.getSecurity(); - } else { - this.security = new SecurityDesc(file, - SecurityDesc.SANDBOX_PERMISSIONS, - file.getCodeBase().getHost()); - } - } + /** + * If the application is signed, then we set the SecurityDesc to the + * tag in the jnlp file. Note that if an application is + * signed, but there is no tag in the jnlp file, the + * application will get sandbox permissions. + * If the application is unsigned, we ignore the tag and + * use a sandbox instead. + */ + if (signing == true) { + this.security = file.getSecurity(); + } else { + this.security = new SecurityDesc(file, + SecurityDesc.SANDBOX_PERMISSIONS, + codebase.getHost()); + } + } } /** From ed at camswl.com Tue Jan 19 09:45:50 2010 From: ed at camswl.com (ed at camswl.com) Date: Tue, 19 Jan 2010 17:45:50 GMT Subject: Request to commit to head: Thumb 2 JIT Message-ID: <201001191745.o0JHjoRl004761@mint.camswl.com> Hi folks, The following patch adds a Thumb2 JIT to the ARM port. As the diffs are quite large and may be truncated here, I have put a .gz of the diffs at http://mint.camswl.com/diffs_t2jit.gz The files affected are icedtea6/ports/hotspot/make/linux/makefiles/zeroshark.make icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S icedtea6/ports/hotspot/src/cpu/zero/vm/thumb2.cpp (new file) The only non ARM file affected is zeroshark.make. The change here is to add the make rules for the Thumb2 JIT. The JIT does not build by default. The default build is still the ARM interpreter. To build the JIT Edit /ports/hotspot/make/linux/makefiles/zeroshark.make and add -DTHUMB2EE to the CFLAGS line. If you want to have a play with the JIT I have put pre build binaries at http://mint.camswl.com/j2re-image-jit.tar.bz2 http://mint.camswl.com/j2sdk-image-jit.tar.bz2 http://mint.camswl.com/libjvm-jit.so.bz2 These are hosted on my home computer and as such are using the uplink side of a DSL line so download will be SLOW (9 mins for j2re, 22 mins for j2sdk, 30 secs for libjvm). The images were build on Ubuntu karmic. I have tested the images on Ubuntu karmic, Ubuntu jaunty and Debian lenny. I have done a reasonable amount of testing on the JIT and it seems quite stable but is not quite ready for prime time as there are a number of infelicities. The testing I have done.. - Builds itself using --with-openjdk= - Passes all the 'compiler' and 'langtools' JTReg tests - Fails about the same number of 'jdk' JTReg tests as the interpreter - Passes the same CDC TCK tests as the interpreter except for 4 tests which are due to stack overflow testing. - Runs large applications such as Thunk Free Office. The known infelicities are as follows:- - Stack checking Checking of the Java stack is not implemented. - Notice safepoints The JITTed code ignores the 'Notice safepoint' call. This means that there is a very small possibility the the VM will 'lock up' when a GC is requested. I have never seen this happen. - The compiler is not MP safe I have run it successfully on a 4 core ARM A9 platform and seen no problems, however, I know there are windows where it can end up trying to use the same compile buffer to compile 2 methods at the same time. - For certain excessively large methods the compiler will generate an assertion failure. For this to happen there needs to be a tableswitch which generates > 32K code. I have never seen this happen in testing. If you are having a play with it you may find the following environmental variables useful. T2EE_PRINT_COMPILATION - Prints a line per method compiled if defined T2EE_PRINT_STATISTICS - Prints some compilation time and code size stats if defined T2EE_PRINT_DISASS - Disassembles the generated code T2EE_PRINT_REGUSAGE - Print the register assignment from regalloc. If you want to use T2EE_PRINT_DISASS options you will need to compile in the disassembler. Uncomment the following line in thumb2.cpp //#define T2EE_PRINT_DISASS You will also need to ensure that libopcodes is installed on your system (from package 'bfd'). There have been a number of changes to the interpreter alongside the addition of the JIT. These have generally been tidying up. - Removal of hard coded constants ISTATE_XXX and tos_XXXX. - Moved nore 'complex' asm code to C in asm_helper.cpp from cppInterpreter_asm.S The bytecodes affected are 'new', 'instanceof', 'checkcast', 'aastore'. In addition all the exception handling code has been moved to C. These changes will help may the interpreter more reliable between releases as the interpreter will not be subject to interface changes in the C code (for example, changes in the mangled names which has been a problem in the past). All changes included in and upto icedtes6-1.7 have been merged. The Thumb2 JIT will not build in conjunction with Shark or Cacao. I have tested the tested the interpreter build with Shark using the latest (ie SVN head as of 18/1/10) llvm. This seems to work OK. On non Thumb2 platforms (ie ARM arch < V7) the JIT will revert to the interpreter. I have tested this on ARM V5, but have been unable to test it on ARM V4 due to lack of hardware (I have tested the build with gcc 4.1 so it should build on V4 platforms). If anyone has access to V4 hw could the try it and let me know the results. OK to commit? Regards, Ed. --- CUT HERE -------------------------------------------------------------------------- diff -ruNE old/icedtea6/ports/hotspot/make/linux/makefiles/zeroshark.make new/icedtea6/ports/hotspot/make/linux/makefiles/zeroshark.make --- old/icedtea6/ports/hotspot/make/linux/makefiles/zeroshark.make 2010-01-19 15:29:04.000000000 +0000 +++ new/icedtea6/ports/hotspot/make/linux/makefiles/zeroshark.make 2010-01-19 15:42:27.000000000 +0000 @@ -29,6 +29,7 @@ Obj_Files += asm_helper.o Obj_Files += cppInterpreter_arm.o +Obj_Files += thumb2.o CFLAGS += -DHOTSPOT_ASM @@ -38,6 +39,7 @@ $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) cppInterpreter_arm.o: offsets_arm.s bytecodes_arm.s +thumb2.o: offsets_arm.s offsets_arm.s: mkoffsets @echo Generating assembler offsets diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp new/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp 2010-01-19 15:29:04.000000000 +0000 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp 2010-01-19 15:41:20.000000000 +0000 @@ -16,10 +16,60 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "incls/_precompiled.incl" +#define ARCH_THUMBEE (1<<16) +#define ARCH_VFP (1<<17) +#define ARCH_CLZ (1<<18) #ifndef STATIC_OFFSETS +#include "incls/_bytecodeInterpreter.cpp.incl" + +#include +#include + +#define VECBUFF_SIZE 64 + +extern "C" unsigned hwcap(void) +{ + int fd; + unsigned vecs[VECBUFF_SIZE]; + unsigned *p; + int i, n; + unsigned rc = 0; + unsigned arch = 4; + + fd = open("/proc/self/auxv", O_RDONLY); + if (fd < 0) return 0; + do { + n = read(fd, vecs, VECBUFF_SIZE * sizeof(unsigned)); + p = vecs; + i = n/8; + while (--i >= 0) { + unsigned tag = *p++; + unsigned value = *p++; + if (tag == 0) goto fini; + if (tag == AT_HWCAP) { + if (value & HWCAP_THUMBEE) rc |= ARCH_THUMBEE; + if (value & HWCAP_VFP) rc |= ARCH_VFP; + } else if (tag == AT_PLATFORM) { + const char *s = (const char *)value; + int c; + + if (*s++ == 'v') { + arch = 0; + while ((isdigit)(c = *s++)) arch = arch * 10 + c - '0'; + } + } + } + } while (n == VECBUFF_SIZE * sizeof(unsigned)); +fini: + close(fd); +// printf("arch = %d, rc = 0x%08x\n", arch, rc); + if (arch >= 5) rc |= ARCH_CLZ; + if (arch >= 7) rc |= ARCH_THUMBEE; + return rc | (1<obj_at_addr(index); + } +}; + +extern "C" oop Helper_new(interpreterState istate, unsigned index) +{ + JavaThread *thread = istate->thread(); + + constantPoolOop constants = istate->method()->constants(); + oop result = NULL; + if (!constants->tag_at(index).is_unresolved_klass()) { + // Make sure klass is initialized and doesn't have a finalizer + oop entry = VMStructs::klass_at_addr(constants, index); + klassOop k_entry = (klassOop) entry; + instanceKlass* ik = (instanceKlass*) k_entry->klass_part(); + if ( ik->is_initialized() && ik->can_be_fastpath_allocated() ) { + size_t obj_size = ik->size_helper(); + // If the TLAB isn't pre-zeroed then we'll have to do it + bool need_zero = !ZeroTLAB; + if (UseTLAB) { + result = (oop) thread->tlab().allocate(obj_size); + } + if (result == NULL) { + need_zero = true; + // Try allocate in shared eden + retry: + HeapWord* compare_to = *Universe::heap()->top_addr(); + HeapWord* new_top = compare_to + obj_size; + if (new_top <= *Universe::heap()->end_addr()) { + if (Atomic::cmpxchg_ptr(new_top, Universe::heap()->top_addr(), compare_to) != compare_to) { + goto retry; + } + result = (oop) compare_to; + } + } + if (result != NULL) { + // Initialize object (if nonzero size and need) and then the header + if (need_zero ) { + HeapWord* to_zero = (HeapWord*) result + sizeof(oopDesc) / oopSize; + obj_size -= sizeof(oopDesc) / oopSize; + if (obj_size > 0 ) { + memset(to_zero, 0, obj_size * HeapWordSize); + } + } + if (UseBiasedLocking) { + result->set_mark(ik->prototype_header()); + } else { + result->set_mark(markOopDesc::prototype()); + } + result->set_klass_gap(0); + result->set_klass(k_entry); + return result; + } + } + } + // Slow case allocation + InterpreterRuntime::_new(thread, istate->method()->constants(), index); + result = thread->vm_result(); + thread->set_vm_result(NULL); + return result; +} + +extern "C" int Helper_instanceof(interpreterState istate, unsigned index, oop tos) +{ + if (tos == NULL) return 0; + + // Constant pool may have actual klass or unresolved klass. If it is + // unresolved we must resolve it + if (istate->method()->constants()->tag_at(index).is_unresolved_klass()) { + InterpreterRuntime::quicken_io_cc(istate->thread()); + if (istate->thread()->has_pending_exception()) return 0; + } + klassOop klassOf = VMStructs::klass_at_addr(istate->method()->constants(), index); + klassOop objKlassOop = tos->klass(); + // + // Check for compatibilty. This check must not GC!! + // Seems way more expensive now that we must dispatch + // + return objKlassOop == klassOf || objKlassOop->klass_part()->is_subtype_of(klassOf); +} + +extern "C" oop Helper_checkcast(interpreterState istate, unsigned index, oop tos) +{ + if (tos == NULL) return NULL; + + // Constant pool may have actual klass or unresolved klass. If it is + // unresolved we must resolve it + if (istate->method()->constants()->tag_at(index).is_unresolved_klass()) { + oop except_oop; + InterpreterRuntime::quicken_io_cc(istate->thread()); + if (except_oop = istate->thread()->pending_exception()) return except_oop; + } + klassOop klassOf = VMStructs::klass_at_addr(istate->method()->constants(), index); + klassOop objKlassOop = tos->klass(); //ebx + // + // Check for compatibilty. This check must not GC!! + // Seems way more expensive now that we must dispatch + // + if (objKlassOop != klassOf && !objKlassOop->klass_part()->is_subtype_of(klassOf)) { + ResourceMark rm(istate->thread()); + const char* objName = Klass::cast(objKlassOop)->external_name(); + const char* klassName = Klass::cast(klassOf)->external_name(); + char* message = SharedRuntime::generate_class_cast_message(objName, klassName); + ThreadInVMfromJava trans(istate->thread()); + HELPER_THROW(istate->thread(), vmSymbols::java_lang_ClassCastException(), message); + } + return istate->thread()->pending_exception(); +} + +extern "C" oop Helper_aastore(interpreterState istate, oop value, int index, arrayOop arrayref) +{ + if (arrayref == NULL) { + ThreadInVMfromJava trans(istate->thread()); + HELPER_THROW(istate->thread(), vmSymbols::java_lang_NullPointerException(), ""); + } else if ((uint32_t)index >= (uint32_t)arrayref->length()) { + char message[jintAsStringSize]; + sprintf(message, "%d", index); + HELPER_THROW(istate->thread(), vmSymbols::java_lang_ArrayIndexOutOfBoundsException(), message); + } else { + if (value != NULL) { + /* Check assignability of value into arrayref */ + klassOop rhsKlassOop = value->klass(); // EBX (subclass) + klassOop elemKlassOop = ((objArrayKlass*) arrayref->klass()->klass_part())->element_klass(); + // + // Check for compatibilty. This check must not GC!! + // Seems way more expensive now that we must dispatch + // + if (rhsKlassOop != elemKlassOop && !rhsKlassOop->klass_part()->is_subtype_of(elemKlassOop)) { + HELPER_THROW(istate->thread(), vmSymbols::java_lang_ArrayStoreException(), ""); + goto handle_exception; + } + } + oop* elem_loc = (oop*)(((address) arrayref->base(T_OBJECT)) + index * sizeof(oop)); + // *(oop*)(((address) arrayref->base(T_OBJECT)) + index * sizeof(oop)) = value; + *elem_loc = value; + // Mark the card + BarrierSet* bs = Universe::heap()->barrier_set(); + static volatile jbyte* _byte_map_base = (volatile jbyte*)(((CardTableModRefBS*)bs)->byte_map_base); + OrderAccess::release_store(&_byte_map_base[(uintptr_t)elem_loc >> CardTableModRefBS::card_shift], 0); + } +handle_exception: + return istate->thread()->pending_exception(); +} + +extern "C" void Helper_aputfield(oop obj) +{ + BarrierSet* bs = Universe::heap()->barrier_set(); + static volatile jbyte* _byte_map_base = (volatile jbyte*)(((CardTableModRefBS*)bs)->byte_map_base); + OrderAccess::release_store(&_byte_map_base[(uintptr_t)obj >> CardTableModRefBS::card_shift], 0); +} + +extern "C" oop Helper_synchronized_enter(JavaThread *thread, BasicObjectLock *mon) +{ + BasicLock *lock = mon->lock(); + markOop displaced = lock->displaced_header(); + + if (thread->is_lock_owned((address)displaced->clear_lock_bits())) + lock->set_displaced_header(NULL); + else + InterpreterRuntime::monitorenter(thread, mon); + return thread->pending_exception(); +} + +extern "C" oop Helper_synchronized_exit(JavaThread *thread, BasicObjectLock *mon) +{ + { + HandleMark __hm(thread); + if (mon->obj() == NULL) + InterpreterRuntime::throw_illegal_monitor_state_exception(thread); + else + InterpreterRuntime::monitorexit(thread, mon); + } + return thread->pending_exception(); +} + +extern "C" oop Helper_SafePoint(JavaThread *thread) +{ + { + HandleMarkCleaner __hmc(thread); + } + SafepointSynchronize::block(thread); + return thread->pending_exception(); +} + +extern "C" void Helper_RaiseArrayBoundException(JavaThread *thread, int index) +{ + char message[jintAsStringSize]; + sprintf(message, "%d", index); + { + ThreadInVMfromJava trans(thread); + Exceptions::_throw_msg(thread, "[Bytecoce Interpreter]", 99, + vmSymbols::java_lang_ArrayIndexOutOfBoundsException(), message); + } +} + +extern "C" void Helper_Raise(JavaThread *thread, symbolOopDesc *name, char const *msg) +{ + ThreadInVMfromJava trans(thread); + Exceptions::_throw_msg(thread, "[Bytecoce Interpreter]", 99, name, msg); +} + +extern "C" void Helper_RaiseIllegalMonitorException(JavaThread *thread) +{ + HandleMark __hm(thread); + InterpreterRuntime::throw_illegal_monitor_state_exception(thread); +} + +extern "C" address Helper_HandleException(interpreterState istate, JavaThread *thread) +{ + HandleMarkCleaner __hmc(thread); + Handle except_oop(thread, thread->pending_exception()); + HandleMark __hm(thread); + intptr_t continuation_bci; + intptr_t *topOfStack; + address pc; + + thread->clear_pending_exception(); + continuation_bci = (intptr_t)InterpreterRuntime::exception_handler_for_exception(thread, except_oop()); + except_oop = (oop) thread->vm_result(); + thread->set_vm_result(NULL); + if (continuation_bci >= 0) { + topOfStack = (intptr_t *)istate->stack(); + *topOfStack-- = (intptr_t)except_oop(); + istate->set_stack(topOfStack); + pc = istate->method()->code_base() + continuation_bci; +#if 0 + tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", Klass::cast(except_oop->klass())->external_name(), except_oop()); + tty->print_cr(" thrown in interpreter method <%s>", istate->method()->name_and_sig_as_C_string()); + tty->print_cr(" at bci %d, continuing at %d for thread " INTPTR_FORMAT, + pc - (intptr_t)istate->method()->code_base(), + continuation_bci, thread); +#endif + return pc; + } +#if 0 + tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", Klass::cast(except_oop->klass())->external_name(), except_oop()); + tty->print_cr(" thrown in interpreter method <%s>", istate->method()->name_and_sig_as_C_string()); + tty->print_cr(" at bci %d, unwinding for thread " INTPTR_FORMAT, + pc - (intptr_t) istate->method()->code_base(), + thread); +#endif + thread->set_pending_exception(except_oop(), NULL, 0); + return 0; +} + #endif // STATIC_OFFSETS #ifdef STATIC_OFFSETS +#include "incls/_precompiled.incl" + class VMStructs { public: static void print_vm_offsets(void); @@ -57,6 +359,7 @@ void print_def(const char *s, int v) { + fprintf(outfile, "#undef %-40s\n", s); fprintf(outfile, "#define %-40s 0x%02x\n", s, v); } @@ -65,80 +368,115 @@ fputc('\n', outfile); } +// ZeroFrame is not friends with VMStructs, but it is with ZeroStackPrinter +class ZeroStackPrinter { +public: + static void print_vm_offsets(void); +}; + +void ZeroStackPrinter::print_vm_offsets(void) +{ + print_def("INTERPRETER_FRAME", ZeroFrame::INTERPRETER_FRAME); +} + void VMStructs::print_vm_offsets(void) { - print_def("THREAD_PENDING_EXC", offset_of(JavaThread, _pending_exception)); - print_def("THREAD_SUSPEND_FLAGS", offset_of(JavaThread, _suspend_flags)); - print_def("THREAD_ACTIVE_HANDLES", offset_of(JavaThread, _active_handles)); - print_def("THREAD_LAST_HANDLE_MARK", offset_of(JavaThread, _last_handle_mark)); - print_def("THREAD_TLAB_TOP", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _top)); - print_def("THREAD_TLAB_END", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _end)); - print_def("THREAD_RESOURCEAREA", offset_of(JavaThread, _resource_area)); - print_def("THREAD_HANDLE_AREA", offset_of(JavaThread, _handle_area)); - print_def("THREAD_STACK_BASE", offset_of(JavaThread, _stack_base)); - print_def("THREAD_STACK_SIZE", offset_of(JavaThread, _stack_size)); - print_def("THREAD_LAST_JAVA_SP", offset_of(JavaThread, _anchor) + offset_of(JavaFrameAnchor, _last_Java_sp)); - print_def("THREAD_JNI_ENVIRONMENT", offset_of(JavaThread, _jni_environment)); - print_def("THREAD_VM_RESULT", offset_of(JavaThread, _vm_result)); - print_def("THREAD_STATE", offset_of(JavaThread, _thread_state)); - print_def("THREAD_DO_NOT_UNLOCK", offset_of(JavaThread, _do_not_unlock_if_synchronized)); - - print_def("THREAD_JAVA_STACK_BASE", offset_of(JavaThread, _zero_stack) + in_bytes(ZeroStack::base_offset())); - print_def("THREAD_JAVA_SP", offset_of(JavaThread, _zero_stack) + in_bytes(ZeroStack::sp_offset())); - print_def("THREAD_TOP_ZERO_FRAME", offset_of(JavaThread, _top_zero_frame)); - print_def("THREAD_SPECIALRUNTIMEEXITCONDITION", offset_of(JavaThread, _special_runtime_exit_condition)); - nl(); - print_def("_thread_external_suspend", Thread::_external_suspend); - print_def("_thread_ext_suspended", Thread::_ext_suspended); - print_def("_thread_deopt_suspend", Thread::_deopt_suspend); - nl(); - print_def("METHOD_CONSTMETHOD", offset_of(methodOopDesc, _constMethod)); - print_def("METHOD_CONSTANTS", offset_of(methodOopDesc, _constants)); - print_def("METHOD_METHODDATA", offset_of(methodOopDesc, _method_data)); - print_def("METHOD_INVOKECOUNT", offset_of(methodOopDesc, _interpreter_invocation_count)); - print_def("METHOD_ACCESSFLAGS", offset_of(methodOopDesc, _access_flags)); - print_def("METHOD_VTABLEINDEX", offset_of(methodOopDesc, _vtable_index)); - print_def("METHOD_RESULTINDEX", offset_of(methodOopDesc, _result_index)); - print_def("METHOD_METHODSIZE", offset_of(methodOopDesc, _method_size)); - print_def("METHOD_MAXSTACK", offset_of(methodOopDesc, _max_stack)); - print_def("METHOD_MAXLOCALS", offset_of(methodOopDesc, _max_locals)); - print_def("METHOD_SIZEOFPARAMETERS", offset_of(methodOopDesc, _size_of_parameters)); - print_def("METHOD_INVOCATIONCOUNTER", offset_of(methodOopDesc, _invocation_counter)); - print_def("METHOD_BACKEDGECOUNTER", offset_of(methodOopDesc, _backedge_counter)); - print_def("METHOD_FROM_INTERPRETED", offset_of(methodOopDesc, _from_interpreted_entry)); - // ECN: These two appear to be just tagged onto the end of the class - print_def("METHOD_NATIVEHANDLER", sizeof(methodOopDesc)); - print_def("METHOD_SIGNATUREHANDLER", sizeof(methodOopDesc)+4); - nl(); - print_def("CONSTMETHOD_CODESIZE", offset_of(constMethodOopDesc, _code_size)); - print_def("CONSTMETHOD_CODEOFFSET", sizeof(constMethodOopDesc)); - nl(); - print_def("JNIHANDLEBLOCK_TOP", offset_of(JNIHandleBlock, _top)); - nl(); - print_def("KLASS_PART", klassOopDesc::klass_part_offset_in_bytes()); - print_def("KLASS_ACCESSFLAGS", offset_of(Klass, _access_flags)); - print_def("INSTANCEKLASS_INITSTATE", offset_of(instanceKlass, _init_state)); - print_def("INSTANCEKLASS_VTABLE_LEN", offset_of(instanceKlass, _vtable_len)); - print_def("INSTANCEKLASS_ITABLE_LEN", offset_of(instanceKlass, _itable_len)); - print_def("INSTANCEKLASS_VTABLE_OFFSET", instanceKlass::vtable_start_offset() * sizeof(int *)); - print_def("OBJARRAYKLASS_ELEMENTKLASS", offset_of(objArrayKlass, _element_klass)); - nl(); - print_def("CONSTANTPOOL_TAGS", offset_of(constantPoolOopDesc, _tags)); - print_def("CONSTANTPOOL_CACHE", offset_of(constantPoolOopDesc, _cache)); - print_def("CONSTANTPOOL_BASE", sizeof(constantPoolOopDesc)); - nl(); - print_def("CP_OFFSET", in_bytes(constantPoolCacheOopDesc::base_offset())); - nl(); - print_def("BASE_OFFSET_BYTE", arrayOopDesc::base_offset_in_bytes(T_BYTE)); - print_def("BASE_OFFSET_SHORT", arrayOopDesc::base_offset_in_bytes(T_SHORT)); - print_def("BASE_OFFSET_WORD", arrayOopDesc::base_offset_in_bytes(T_INT)); - print_def("BASE_OFFSET_LONG", arrayOopDesc::base_offset_in_bytes(T_LONG)); - nl(); - print_def("SIZEOF_HANDLEMARK", sizeof(HandleMark)); + print_def("ISTATE_THREAD", offset_of(BytecodeInterpreter, _thread)); + print_def("ISTATE_BCP", offset_of(BytecodeInterpreter, _bcp)); + print_def("ISTATE_LOCALS", offset_of(BytecodeInterpreter, _locals)); + print_def("ISTATE_CONSTANTS", offset_of(BytecodeInterpreter, _constants)); + print_def("ISTATE_METHOD", offset_of(BytecodeInterpreter, _method)); + print_def("ISTATE_STACK", offset_of(BytecodeInterpreter, _stack)); + print_def("ISTATE_MSG", offset_of(BytecodeInterpreter, _msg)); + print_def("ISTATE_OOP_TEMP", offset_of(BytecodeInterpreter, _oop_temp)); + print_def("ISTATE_STACK_BASE",offset_of(BytecodeInterpreter, _stack_base)); + print_def("ISTATE_STACK_LIMIT",offset_of(BytecodeInterpreter, _stack_limit)); + print_def("ISTATE_MONITOR_BASE",offset_of(BytecodeInterpreter, _monitor_base)); + print_def("ISTATE_SELF_LINK", offset_of(BytecodeInterpreter, _self_link)); + print_def("ISTATE_FRAME_TYPE", sizeof(BytecodeInterpreter) + 0); + print_def("ISTATE_NEXT_FRAME", sizeof(BytecodeInterpreter) + 4); + print_def("FRAME_SIZE", sizeof(BytecodeInterpreter) + 8); + nl(); + ZeroStackPrinter::print_vm_offsets(); + nl(); + print_def("THREAD_PENDING_EXC", offset_of(JavaThread, _pending_exception)); + print_def("THREAD_SUSPEND_FLAGS", offset_of(JavaThread, _suspend_flags)); + print_def("THREAD_ACTIVE_HANDLES", offset_of(JavaThread, _active_handles)); + print_def("THREAD_LAST_HANDLE_MARK", offset_of(JavaThread, _last_handle_mark)); + print_def("THREAD_TLAB_TOP", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _top)); + print_def("THREAD_TLAB_END", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _end)); + print_def("THREAD_RESOURCEAREA", offset_of(JavaThread, _resource_area)); + print_def("THREAD_HANDLE_AREA", offset_of(JavaThread, _handle_area)); + print_def("THREAD_STACK_BASE", offset_of(JavaThread, _stack_base)); + print_def("THREAD_STACK_SIZE", offset_of(JavaThread, _stack_size)); + print_def("THREAD_LAST_JAVA_SP", offset_of(JavaThread, _anchor) + offset_of(JavaFrameAnchor, _last_Java_sp)); + print_def("THREAD_JNI_ENVIRONMENT", offset_of(JavaThread, _jni_environment)); + print_def("THREAD_VM_RESULT", offset_of(JavaThread, _vm_result)); + print_def("THREAD_STATE", offset_of(JavaThread, _thread_state)); + print_def("THREAD_DO_NOT_UNLOCK", offset_of(JavaThread, _do_not_unlock_if_synchronized)); + + print_def("THREAD_JAVA_STACK_BASE", offset_of(JavaThread, _zero_stack) + in_bytes(ZeroStack::base_offset())); + print_def("THREAD_JAVA_SP", offset_of(JavaThread, _zero_stack) + in_bytes(ZeroStack::sp_offset())); + print_def("THREAD_TOP_ZERO_FRAME", offset_of(JavaThread, _top_zero_frame)); + print_def("THREAD_SPECIALRUNTIMEEXITCONDITION", offset_of(JavaThread, _special_runtime_exit_condition)); + nl(); + print_def("_thread_external_suspend", Thread::_external_suspend); + print_def("_thread_ext_suspended", Thread::_ext_suspended); + print_def("_thread_deopt_suspend", Thread::_deopt_suspend); + nl(); + print_def("METHOD_CONSTMETHOD", offset_of(methodOopDesc, _constMethod)); + print_def("METHOD_CONSTANTS", offset_of(methodOopDesc, _constants)); + print_def("METHOD_METHODDATA", offset_of(methodOopDesc, _method_data)); + print_def("METHOD_INVOKECOUNT", offset_of(methodOopDesc, _interpreter_invocation_count)); + print_def("METHOD_ACCESSFLAGS", offset_of(methodOopDesc, _access_flags)); + print_def("METHOD_VTABLEINDEX", offset_of(methodOopDesc, _vtable_index)); + print_def("METHOD_RESULTINDEX", offset_of(methodOopDesc, _result_index)); + print_def("METHOD_METHODSIZE", offset_of(methodOopDesc, _method_size)); + print_def("METHOD_MAXSTACK", offset_of(methodOopDesc, _max_stack)); + print_def("METHOD_MAXLOCALS", offset_of(methodOopDesc, _max_locals)); + print_def("METHOD_SIZEOFPARAMETERS", offset_of(methodOopDesc, _size_of_parameters)); + print_def("METHOD_INVOCATIONCOUNTER", offset_of(methodOopDesc, _invocation_counter)); + print_def("METHOD_BACKEDGECOUNTER", offset_of(methodOopDesc, _backedge_counter)); + print_def("METHOD_FROM_INTERPRETED", offset_of(methodOopDesc, _from_interpreted_entry)); + // ECN: These two appear to be just tagged onto the end of the class + print_def("METHOD_NATIVEHANDLER", sizeof(methodOopDesc)); + print_def("METHOD_SIGNATUREHANDLER", sizeof(methodOopDesc)+4); + nl(); + print_def("CONSTMETHOD_CODESIZE", offset_of(constMethodOopDesc, _code_size)); + print_def("CONSTMETHOD_CODEOFFSET", sizeof(constMethodOopDesc)); + nl(); + print_def("JNIHANDLEBLOCK_TOP", offset_of(JNIHandleBlock, _top)); + nl(); + print_def("KLASS_PART", klassOopDesc::klass_part_offset_in_bytes()); + print_def("KLASS_ACCESSFLAGS", offset_of(Klass, _access_flags)); + print_def("KLASS_JAVA_MIRROR", offset_of(Klass, _java_mirror)); + print_def("INSTANCEKLASS_INITSTATE", offset_of(instanceKlass, _init_state)); + print_def("INSTANCEKLASS_VTABLE_LEN", offset_of(instanceKlass, _vtable_len)); + print_def("INSTANCEKLASS_ITABLE_LEN", offset_of(instanceKlass, _itable_len)); + print_def("INSTANCEKLASS_VTABLE_OFFSET", instanceKlass::vtable_start_offset() * sizeof(int *)); + print_def("OBJARRAYKLASS_ELEMENTKLASS", offset_of(objArrayKlass, _element_klass)); + nl(); + print_def("CONSTANTPOOL_TAGS", offset_of(constantPoolOopDesc, _tags)); + print_def("CONSTANTPOOL_CACHE", offset_of(constantPoolOopDesc, _cache)); + print_def("CONSTANTPOOL_POOL_HOLDER", offset_of(constantPoolOopDesc, _pool_holder)); + print_def("CONSTANTPOOL_BASE", sizeof(constantPoolOopDesc)); + nl(); + print_def("CP_OFFSET", in_bytes(constantPoolCacheOopDesc::base_offset())); + nl(); + print_def("BASE_OFFSET_BYTE", arrayOopDesc::base_offset_in_bytes(T_BYTE)); + print_def("BASE_OFFSET_SHORT", arrayOopDesc::base_offset_in_bytes(T_SHORT)); + print_def("BASE_OFFSET_WORD", arrayOopDesc::base_offset_in_bytes(T_INT)); + print_def("BASE_OFFSET_LONG", arrayOopDesc::base_offset_in_bytes(T_LONG)); + nl(); + print_def("SIZEOF_HANDLEMARK", sizeof(HandleMark)); } int main(void) { + print_def("ARCH_VFP", ARCH_VFP); + print_def("ARCH_THUMBEE", ARCH_THUMBEE); + print_def("ARCH_CLZ", ARCH_CLZ); + nl(); print_def("JVM_CONSTANT_Utf8", JVM_CONSTANT_Utf8); print_def("JVM_CONSTANT_Unicode", JVM_CONSTANT_Unicode); print_def("JVM_CONSTANT_Integer", JVM_CONSTANT_Integer); @@ -190,6 +528,15 @@ print_def("T_ARRAY", T_ARRAY); print_def("T_VOID", T_VOID); nl(); + print_def("tos_btos", btos); + print_def("tos_ctos", ctos); + print_def("tos_stos", stos); + print_def("tos_itos", itos); + print_def("tos_ltos", ltos); + print_def("tos_ftos", ftos); + print_def("tos_dtos", dtos); + print_def("tos_atos", atos); + nl(); print_def("_thread_uninitialized", _thread_uninitialized); print_def("_thread_new", _thread_new); print_def("_thread_new_trans", _thread_new_trans); diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def 2010-01-19 15:29:04.000000000 +0000 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def 2010-01-19 15:41:58.000000000 +0000 @@ -267,8 +267,6 @@ @return_register_finalizer = 0xe5, 1 -dmac = 0xe6, 2 - iload_0_iconst_N = 0xe7, 2 iload_1_iconst_N = 0xe8, 2 iload_2_iconst_N = 0xe9, 2 @@ -967,7 +965,7 @@ } (frem) frem { -@ ECN: It must be possible to do better than this +@ It must be possible to do better than this POP r0 bl __aeabi_f2d PUSH r0, r1 @@ -1336,166 +1334,138 @@ @ r2 = [jpc, #1] @ r1 = [jpc, #2] (ifeq,ifnull) ifeq_unsafe { - ldrb r1, [jpc, #2] POP r3 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp r3, #0 - orr ip, r1, r2, asr #16 beq 1f - mov ip, #3 + DISPATCH 3 1: + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 ldrb r0, [jpc, ip]! DISPATCH_BYTECODE } (ifne,ifnonnull) ifne_unsafe { - ldrb r1, [jpc, #2] POP r3 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp r3, #0 - orr ip, r1, r2, asr #16 bne 1f - mov ip, #3 + DISPATCH 3 1: + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 ldrb r0, [jpc, ip]! DISPATCH_BYTECODE } (iflt) iflt_unsafe { - ldrb r1, [jpc, #2] POP r3 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp r3, #0 - orr ip, r1, r2, asr #16 blt 1f - mov ip, #3 + DISPATCH 3 1: + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 ldrb r0, [jpc, ip]! DISPATCH_BYTECODE } (ifge) ifge_unsafe { - ldrb r1, [jpc, #2] POP r3 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp r3, #0 - orr ip, r1, r2, asr #16 bge 1f - mov ip, #3 + DISPATCH 3 1: + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 ldrb r0, [jpc, ip]! DISPATCH_BYTECODE } (ifgt) ifgt_unsafe { - ldrb r1, [jpc, #2] POP r3 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp r3, #0 - orr ip, r1, r2, asr #16 bgt 1f - mov ip, #3 + DISPATCH 3 1: + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 ldrb r0, [jpc, ip]! DISPATCH_BYTECODE } (ifle) ifle_unsafe { - ldrb r1, [jpc, #2] POP r3 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp r3, #0 - orr ip, r1, r2, asr #16 ble 1f - mov ip, #3 + DISPATCH 3 1: + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 ldrb r0, [jpc, ip]! DISPATCH_BYTECODE } (if_icmpeq,if_acmpeq) if_icmpeq_unsafe { - ldrb r1, [jpc, #2] POP r3, tmp1 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp tmp1, r3 - orr ip, r1, r2, asr #16 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe + DISPATCH 3 } (if_icmpne,if_acmpne) if_icmpne_unsafe { - ldrb r1, [jpc, #2] POP r3, tmp1 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp tmp1, r3 - orr ip, r1, r2, asr #16 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe + DISPATCH 3 } (if_icmplt) if_icmplt_unsafe { - ldrb r1, [jpc, #2] POP r3, tmp1 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp tmp1, r3 - orr ip, r1, r2, asr #16 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe + DISPATCH 3 } (if_icmpge) if_icmpge_unsafe { - ldrb r1, [jpc, #2] POP r3, tmp1 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp tmp1, r3 - orr ip, r1, r2, asr #16 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe + DISPATCH 3 } (if_icmpgt) if_icmpgt_unsafe { - ldrb r1, [jpc, #2] POP r3, tmp1 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp tmp1, r3 - orr ip, r1, r2, asr #16 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe + DISPATCH 3 } (if_icmple) if_icmple_unsafe { - ldrb r1, [jpc, #2] POP r3, tmp1 - mov r2, r2, lsl #24 + ldrb r1, [jpc, #2] cmp tmp1, r3 - orr ip, r1, r2, asr #16 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe + DISPATCH 3 } (goto) goto_unsafe { ldrb r1, [jpc, #2] mov r2, r2, lsl #24 - orr ip, r1, r2, asr #16 - DISPATCH_START_REG ip + orr tmp1, r1, r2, asr #16 + DISPATCH_START_REG tmp1 + USEC cmp tmp1, #0 + USEC ble do_backedge DISPATCH_BYTECODE } @@ -1520,7 +1490,7 @@ DISPATCH 48 } -@ ECN: We dont do safe and unsafe versions of tableswitch and lookupswitch +@ We dont do safe and unsafe versions of tableswitch and lookupswitch (tableswitch) tableswitch { POP a2 bic a1, jpc, #3 @@ -1752,28 +1722,17 @@ (aputfield) aputfield { ldrb r1, [jpc, #2] - GET_STACK 1, r0 @ r0 = object - POP oop_value_tmp @ r1 = value - add r3, constpool, r1, lsl #12 - add r3, r3, r2, lsl #4 - ldr r3, [r3, #CP_OFFSET+8] - SW_NPC cmp r0, #0 - add oop_address_tmp, r0, r3 - SW_NPC beq null_ptr_exception + POP r3, tmp1 @ r3 = value, tmp1 = object + add tmp2, constpool, r1, lsl #12 + add tmp2, tmp2, r2, lsl #4 + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] .abortentry113: - HW_NPC ldr ip, [r0] @ Only to provoke an abort - bl oop_store - ldr r3, [dispatch, #Universe_collectedHeap_Address-XXX] - DISPATCH_START 3 - POP r2 - ldr r3, [r3, #0] - DISPATCH_NEXT - ldr r3, [r3, #12] - DISPATCH_NEXT - ldr r3, [r3, #76] - mov tmp2, #0 - strb tmp2, [r3, r2, lsr #9] - DISPATCH_FINISH + str r3, [tmp1, tmp2] + mov r0, tmp1 + bl Helper_aputfield + DISPATCH 3 } (lputfield) lputfield { @@ -1862,29 +1821,11 @@ add r1, r2, #4 str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] add stack, r1, r0, lsl #2 - cmp ip, #0 - beq normal_return - sub istate, istate, #ISTATE_NEXT_FRAME + str stack, [tmp_xxx, #THREAD_JAVA_SP] - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT - add r2, r2, #4 - DISPATCH_NEXT - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT - DISPATCH_FINISH + ldmfd arm_sp!, {fast_regset, pc} 1: bl return_check_monitors b 2b @@ -1909,30 +1850,12 @@ ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - sub istate, istate, #ISTATE_NEXT_FRAME + str stack, [tmp_xxx, #THREAD_JAVA_SP] - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH + ldmfd arm_sp!, {fast_regset, pc} 1: bl return_check_monitors b 2b @@ -1956,33 +1879,14 @@ add r1, r2, #4 str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - POP r2, r3 add stack, r1, r0, lsl #2 stmdb stack!, {r2, r3} - cmp ip, #0 - beq normal_return - sub istate, istate, #ISTATE_NEXT_FRAME + str stack, [tmp_xxx, #THREAD_JAVA_SP] - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT - add r2, r2, #4 - DISPATCH_NEXT - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT - DISPATCH_FINISH + ldmfd arm_sp!, {fast_regset, pc} 1: bl return_check_monitors b 2b @@ -2032,12 +1936,10 @@ mov r1, #0 bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb ldr r0, [istate, #ISTATE_THREAD] @ thread - ASSERT_STACK_CACHED CACHE_CP ldr r1, [r0, #THREAD_PENDING_EXC] CACHE_JPC cmp r1, #0 - ASSERT_LOCALS_CACHED bne handle_exception ldr r3, [r0, #THREAD_VM_RESULT] mov r2, #0 @@ -2089,8 +1991,6 @@ DECACHE_STACK mov r1, #1 bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] @ thread CACHE_CP ldr r1, [r0, #THREAD_PENDING_EXC] @@ -2455,10 +2355,7 @@ } (dmul) dmul_vfp { - FBC cmp r2, #opc_dadd DISPATCH_START_R2 - FBC beq 1f -2: vldr d7, [stack, #12] vldr d6, [stack, #4] DISPATCH_NEXT @@ -2469,31 +2366,8 @@ vstr d0, [stack, #12] add stack, stack, #8 DISPATCH_FINISH -1: - FBC mov r2, #opc_dmac - FBC strb r2, [jpc, #-1] - FBC b 2b -} - -#ifdef FAST_BYTECODES - -(dmac) dmac_vfp { - DISPATCH_START \seq_len - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_NEXT - DISPATCH_NEXT - fmacd d2, d1, d0 - DISPATCH_NEXT - DISPATCH_NEXT - vstr d2, [stack, #20] - add stack, stack, #16 - DISPATCH_FINISH } -#endif // FAST_BYTECODES - (fdiv) fdiv_vfp { DISPATCH_START_R2 vldr s15, [stack, #8] @@ -2623,10 +2497,10 @@ #ifdef FAST_BYTECODES @############################################################################## -@ ECN: Optimised bytecode pairs +@ Optimised bytecode pairs @############################################################################## -@ --- ECN: load; iaccess ------------------------------------------------------ +@ --- load; iaccess ------------------------------------------------------ (iload_0,iload_1,iload_2,iload_3) (iaccess_0,iaccess_1,iaccess_2,iaccess_3) @@ -2680,7 +2554,7 @@ DISPATCH_FINISH } -@ --- ECN: load; load --------------------------------------------------------- +@ --- load; load --------------------------------------------------------- (aload_0,aload_1,aload_2,aload_3) (aload_0,aload_1,aload_2,aload_3) @@ -2875,7 +2749,7 @@ DISPATCH_FINISH } -@ --- ECN: load; store -------------------------------------------------------- +@ --- load; store -------------------------------------------------------- (aload_0,aload_1,aload_2,aload_3) (astore_0,astore_1,astore_2,astore_3) @@ -2986,7 +2860,7 @@ DISPATCH_FINISH } -@ --- ECN: load; const ------------------------------------------------------- +@ --- load; const ------------------------------------------------------- (aload_0,aload_1,aload_2,aload_3) (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) @@ -3109,7 +2983,7 @@ DISPATCH_FINISH } -@ --- ECN: load; Xaload ------------------------------------------------------- +@ --- load; Xaload ------------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (iaload,aaload,faload) @@ -3271,7 +3145,7 @@ DISPATCH_FINISH } -@ --- ECN: load; Xastore ------------------------------------------------------- +@ --- load; Xastore ------------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (iastore,fastore) @@ -3384,7 +3258,7 @@ DISPATCH_FINISH } -@ --- ECN: load; dataop ------------------------------------------------------- +@ --- load; dataop ------------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (iadd) @@ -3472,40 +3346,6 @@ } (iload_0,iload_1,iload_2,iload_3) -(idiv) -{ - rsb tmp2, r0, #opc_iload_0 - DISPATCH_START 2 - ldr tmp2, [locals, tmp2, lsl #2] - POP tmp1 - b int_div -} - -(iload,aload,fload)(idiv) { - DISPATCH_START 3 - POP tmp1 - ldr tmp2, [locals, -r2, lsl #2] - b int_div -} - -(iload_0,iload_1,iload_2,iload_3) -(irem) -{ - rsb tmp2, r0, #opc_iload_0 - DISPATCH_START 2 - ldr tmp2, [locals, tmp2, lsl #2] - POP tmp1 - b int_rem -} - -(iload,aload,fload)(irem) { - DISPATCH_START 3 - POP tmp1 - ldr tmp2, [locals, -r2, lsl #2] - b int_rem -} - -(iload_0,iload_1,iload_2,iload_3) (ineg) { rsb lr, r0, #opc_iload_0 @@ -3717,192 +3557,138 @@ #ifdef NOTICE_SAFEPOINTS -@ --- ECN: load; branch ------------------------------------------------------- +@ --- load; branch ------------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (ifeq,ifnull) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] rsb r3, r0, #opc_iload_0 - add jpc, jpc, #1 + ldrsb r1, [jpc, #2] ldr r3, [locals, r3, lsl #2] + ldrb ip, [jpc, #3] cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(ifeq,ifnull) { + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r3, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - add jpc, jpc, #2 - ldr r3, [locals, -r2, lsl #2] cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) (ifne,ifnonnull) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] rsb r3, r0, #opc_iload_0 - add jpc, jpc, #1 + ldrsb r1, [jpc, #2] ldr r3, [locals, r3, lsl #2] + ldrb ip, [jpc, #3] cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(ifne,ifnonnull) { + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r3, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - add jpc, jpc, #2 - ldr r3, [locals, -r2, lsl #2] cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) (iflt) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] rsb r3, r0, #opc_iload_0 - add jpc, jpc, #1 + ldrsb r1, [jpc, #2] ldr r3, [locals, r3, lsl #2] + ldrb ip, [jpc, #3] cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(iflt) { + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r3, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - add jpc, jpc, #2 - ldr r3, [locals, -r2, lsl #2] cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) (ifge) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] rsb r3, r0, #opc_iload_0 - add jpc, jpc, #1 + ldrsb r1, [jpc, #2] ldr r3, [locals, r3, lsl #2] + ldrb ip, [jpc, #3] cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(ifge) { + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r3, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - add jpc, jpc, #2 - ldr r3, [locals, -r2, lsl #2] cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) (ifgt) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] rsb r3, r0, #opc_iload_0 - add jpc, jpc, #1 + ldrsb r1, [jpc, #2] ldr r3, [locals, r3, lsl #2] + ldrb ip, [jpc, #3] cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(ifgt) { + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r3, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - add jpc, jpc, #2 - ldr r3, [locals, -r2, lsl #2] cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) (ifle) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] rsb r3, r0, #opc_iload_0 - add jpc, jpc, #1 + ldrsb r1, [jpc, #2] ldr r3, [locals, r3, lsl #2] + ldrb ip, [jpc, #3] cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(ifle) { + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r3, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - add jpc, jpc, #2 - ldr r3, [locals, -r2, lsl #2] cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) @@ -3911,31 +3697,22 @@ POP r3 rsb r2, r0, #opc_iload_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #1 + ldrb ip, [jpc, #3] cmp r3, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(if_icmpeq,if_acmpeq) { POP r3 + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - ldr r2, [locals, -r2, lsl #2] - add jpc, jpc, #2 cmp r3, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) @@ -3944,31 +3721,22 @@ POP r3 rsb r2, r0, #opc_iload_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #1 + ldrb ip, [jpc, #3] cmp r3, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(if_icmpne,if_acmpne) { POP r3 + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - ldr r2, [locals, -r2, lsl #2] - add jpc, jpc, #2 cmp r3, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) @@ -3977,31 +3745,22 @@ POP r3 rsb r2, r0, #opc_iload_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #1 + ldrb ip, [jpc, #3] cmp r3, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(if_icmplt) { POP r3 + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - ldr r2, [locals, -r2, lsl #2] - add jpc, jpc, #2 cmp r3, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) @@ -4010,31 +3769,22 @@ POP r3 rsb r2, r0, #opc_iload_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #1 + ldrb ip, [jpc, #3] cmp r3, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(if_icmpge) { POP r3 + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - ldr r2, [locals, -r2, lsl #2] - add jpc, jpc, #2 cmp r3, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) @@ -4043,31 +3793,22 @@ POP r3 rsb r2, r0, #opc_iload_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #1 + ldrb ip, [jpc, #3] cmp r3, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(if_icmpgt) { POP r3 + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - ldr r2, [locals, -r2, lsl #2] - add jpc, jpc, #2 cmp r3, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_2 + DISPATCH 5 } (iload_0,iload_1,iload_2,iload_3) @@ -4076,34 +3817,25 @@ POP r3 rsb r2, r0, #opc_iload_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #1 + ldrb ip, [jpc, #3] cmp r3, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_1 + DISPATCH 4 } (iload,aload,fload)(if_icmple) { POP r3 + rsb r2, r2, #0 ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] ldrb ip, [jpc, #4] - ldr r2, [locals, -r2, lsl #2] - add jpc, jpc, #2 cmp r3, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_2 + DISPATCH 5 } -@ --- ECN: load; return/invoke ------------------------------------------------- +@ --- load; return/invoke ------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (ireturn,areturn,freturn) @@ -4122,30 +3854,12 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - sub istate, istate, #ISTATE_NEXT_FRAME + str stack, [tmp_xxx, #THREAD_JAVA_SP] - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH + ldmfd arm_sp!, {fast_regset, pc} 1: PUSH r1 add jpc, jpc, #1 @@ -4169,30 +3883,12 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - sub istate, istate, #ISTATE_NEXT_FRAME + str stack, [tmp_xxx, #THREAD_JAVA_SP] - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH + ldmfd arm_sp!, {fast_regset, pc} 1: PUSH r1 add jpc, jpc, #2 @@ -4399,7 +4095,7 @@ DISPATCH_FINISH } -@ --- ECN: iconst; store ------------------------------------------------- +@ --- iconst; store ------------------------------------------------- (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) (istore_0,istore_1,istore_2,istore_3) @@ -4419,7 +4115,7 @@ DISPATCH_BYTECODE } -@ --- ECN: iconst; dataop ------------------------------------------------- +@ --- iconst; dataop ------------------------------------------------- (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(iadd) { sub tmp1, r0, #opc_iconst_0 @@ -4505,7 +4201,7 @@ DISPATCH_FINISH } -@ --- ECN: iconst; branch ------------------------------------------------- +@ --- iconst; branch ------------------------------------------------- #ifdef NOTICE_SAFEPOINTS @@ -4513,90 +4209,60 @@ POP r3 sub r2, r0, #opc_iconst_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 cmp r3, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ldrb ip, [jpc, #3] + beq branch_taken_unsafe_1 + DISPATCH 4 } (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(if_icmpne) { POP r3 sub r2, r0, #opc_iconst_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 cmp r3, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ldrb ip, [jpc, #3] + bne branch_taken_unsafe_1 + DISPATCH 4 } (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(if_icmplt) { POP r3 sub r2, r0, #opc_iconst_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 cmp r3, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ldrb ip, [jpc, #3] + blt branch_taken_unsafe_1 + DISPATCH 4 } (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(if_icmpge) { POP r3 sub r2, r0, #opc_iconst_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 cmp r3, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ldrb ip, [jpc, #3] + bge branch_taken_unsafe_1 + DISPATCH 4 } (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(if_icmpgt) { POP r3 sub r2, r0, #opc_iconst_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 cmp r3, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ldrb ip, [jpc, #3] + bgt branch_taken_unsafe_1 + DISPATCH 4 } (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(if_icmple) { POP r3 sub r2, r0, #opc_iconst_0 ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 cmp r3, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ldrb ip, [jpc, #3] + ble branch_taken_unsafe_1 + DISPATCH 4 } (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(ireturn) { @@ -4613,30 +4279,12 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - sub istate, istate, #ISTATE_NEXT_FRAME + str stack, [tmp_xxx, #THREAD_JAVA_SP] - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH + ldmfd arm_sp!, {fast_regset, pc} 1: PUSH r1 add jpc, jpc, #1 @@ -5001,295 +4649,253 @@ DISPATCH_FINISH } -#ifdef NOTICE_SAFEPOINTS - -(iaload,faload,aaload)(ifeq,ifnull) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry61: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r3, [r3, #BASE_OFFSET_WORD] @ r1 = tos +@ ---- iadd; xxx ------------------------------------------------------------ - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(iadd)(iload,fload,aload) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH r3, tmp2 + DISPATCH_FINISH } -(iaload,faload,aaload)(ifne,ifnonnull) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry62: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r3, [r3, #BASE_OFFSET_WORD] @ r1 = tos - - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(iadd) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3, tmp2 + DISPATCH_FINISH } -(iaload,faload,aaload)(iflt) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry63: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r3, [r3, #BASE_OFFSET_WORD] @ r1 = tos - - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(iadd)(iaload,aaload,faload) { + POP r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + add r2, r3, r2 @ r2 = index + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry73: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_1 + add lr, lr, r2, lsl #2 + ldr tmp1, [lr, #BASE_OFFSET_WORD] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH } -(iaload,faload,aaload)(ifge) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry64: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r3, [r3, #BASE_OFFSET_WORD] @ r1 = tos - - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(iadd)(istore) { + mov r0, #opc_iadd_u4store + strb r0, [jpc] + b do_iadd_u4store } -(iaload,faload,aaload)(ifgt) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry65: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r3, [r3, #BASE_OFFSET_WORD] @ r1 = tos - - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(iadd) +(istore_0,istore_1,istore_2,istore_3) { + mov r0, #opc_iadd_istore_N + strb r0, [jpc] + b do_iadd_istore_N } -(iaload,faload,aaload)(ifle) { - POP r2, r3 @ r2 = index, r3 = arrayref +(iadd)(iastore,fastore) { + POP r2, r3 + DISPATCH_START \seq_len + add tmp1, r3, r2 @ tmp1 = value + POP r2, r3 @ r2, index, r3 = ref SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry66: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry106: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT add r3, r3, r2, lsl #2 - ldr r3, [r3, #BASE_OFFSET_WORD] @ r1 = tos - - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + str tmp1, [r3, #BASE_OFFSET_WORD] + DISPATCH_FINISH } -(iaload,faload,aaload)(if_icmpeq,if_acmpeq) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry67: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r2, [r3, #BASE_OFFSET_WORD] @ r1 = tos - - POP r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(iadd)(iadd) { + DISPATCH_START \seq_len + POP r2, r3, tmp1 + DISPATCH_NEXT + add tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH } -(iaload,faload,aaload)(if_icmpne,if_acmpne) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry68: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r2, [r3, #BASE_OFFSET_WORD] @ r1 = tos - - POP r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(iadd)(isub) { + DISPATCH_START \seq_len + POP r2, r3, tmp1 + DISPATCH_NEXT + add tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH } -(iaload,faload,aaload)(if_icmplt) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry69: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r2, [r3, #BASE_OFFSET_WORD] @ r1 = tos +(iadd)(iinc) { + POP tmp1, lr + DISPATCH_START \seq_len + add tmp1, lr, tmp1 + ldrb r3, [jpc, #-2] @ jpc now points to next bc + ldrsb r2, [jpc, #-1] + DISPATCH_NEXT + PUSH tmp1 + ldr tmp1, [locals, -r3, lsl #2] + DISPATCH_NEXT + add tmp1, tmp1, r2 + str tmp1, [locals, -r3, lsl #2] + DISPATCH_FINISH +} +@ ---- sub; xxx ------------------------------------------------------------ - POP r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(isub)(iload,fload,aload) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH r3, tmp2 + DISPATCH_FINISH } -(iaload,faload,aaload)(if_icmpge) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry70: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r2, [r3, #BASE_OFFSET_WORD] @ r1 = tos +(isub) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3, tmp2 + DISPATCH_FINISH +} - POP r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(isub)(iaload,aaload,faload) { + POP r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + sub r2, r3, r2 @ r2 = index + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry74: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_1 + add lr, lr, r2, lsl #2 + ldr tmp1, [lr, #BASE_OFFSET_WORD] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH } -(iaload,faload,aaload)(if_icmpgt) { - POP r2, r3 @ r2 = index, r3 = arrayref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry71: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 - add r3, r3, r2, lsl #2 - ldr r2, [r3, #BASE_OFFSET_WORD] @ r1 = tos +(isub)(istore) { + mov r0, #opc_isub_u4store + strb r0, [jpc] + b do_isub_u4store +} - POP r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(isub) +(istore_0,istore_1,istore_2,istore_3) { + mov r0, #opc_isub_istore_N + strb r0, [jpc] + b do_isub_istore_N } -(iaload,faload,aaload)(if_icmple) { - POP r2, r3 @ r2 = index, r3 = arrayref +(isub)(iastore,fastore) { + POP r2, r3 + DISPATCH_START \seq_len + sub tmp1, r3, r2 @ tmp1 = value + POP r2, r3 @ r2, index, r3 = ref SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_0 -.abortentry72: - ldr r1, [r3, #8] @ r1 = length - cmp r2, r1 - bcs array_bound_exception_jpc_0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry105: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT add r3, r3, r2, lsl #2 - ldr r2, [r3, #BASE_OFFSET_WORD] @ r1 = tos + str tmp1, [r3, #BASE_OFFSET_WORD] + DISPATCH_FINISH +} - POP r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - cmp r3, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(isub)(iadd) { + DISPATCH_START \seq_len + POP r2, r3, tmp1 + DISPATCH_NEXT + sub tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH } -#endif // NOTICE_SAFEPOINTS +(isub)(isub) { + DISPATCH_START \seq_len + POP r2, r3, tmp1 + DISPATCH_NEXT + sub tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} -@ ---- iadd; xxx ------------------------------------------------------------ +(isub)(iinc) { + POP tmp1, lr + DISPATCH_START \seq_len + sub tmp1, lr, tmp1 + ldrb r3, [jpc, #-2] @ jpc now points to next bc + ldrsb r2, [jpc, #-1] + DISPATCH_NEXT + PUSH tmp1 + ldr tmp1, [locals, -r3, lsl #2] + DISPATCH_NEXT + add tmp1, tmp1, r2 + str tmp1, [locals, -r3, lsl #2] + DISPATCH_FINISH +} +@ ---- iand; xxx ------------------------------------------------------------ -(iadd)(iload,fload,aload) { +(iand)(iload,fload,aload) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len POP tmp2, tmp1 @@ -5298,13 +4904,13 @@ DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - add tmp2, tmp1, tmp2 + and tmp2, tmp1, tmp2 DISPATCH_NEXT PUSH r3, tmp2 DISPATCH_FINISH } -(iadd) +(iand) (iload_0,iload_1,iload_2,iload_3) { DISPATCH_START \seq_len @@ -5312,7 +4918,7 @@ POP tmp2, tmp1 DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] - add tmp2, tmp1, tmp2 + and tmp2, tmp1, tmp2 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -5320,13 +4926,13 @@ DISPATCH_FINISH } -(iadd)(iaload,aaload,faload) { +(iand)(iaload,aaload,faload) { POP r2, r3, lr @ lr = ref DISPATCH_START \seq_len - add r2, r3, r2 @ r2 = index + and r2, r3, r2 @ r2 = index SW_NPC cmp lr, #0 SW_NPC beq null_ptr_exception_jpc_1 -.abortentry73: +.abortentry75: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT cmp r2, tmp1 @@ -5338,27 +4944,27 @@ DISPATCH_FINISH } -(iadd)(istore) { - mov r0, #opc_iadd_u4store +(iand)(istore) { + mov r0, #opc_iand_u4store strb r0, [jpc] - b do_iadd_u4store + b do_iand_u4store } -(iadd) +(iand) (istore_0,istore_1,istore_2,istore_3) { - mov r0, #opc_iadd_istore_N + mov r0, #opc_iand_istore_N strb r0, [jpc] - b do_iadd_istore_N + b do_iand_istore_N } -(iadd)(iastore,fastore) { +(iand)(iastore,fastore) { POP r2, r3 DISPATCH_START \seq_len - add tmp1, r3, r2 @ tmp1 = value + and tmp1, r3, r2 @ tmp1 = value POP r2, r3 @ r2, index, r3 = ref SW_NPC cmp r3, #0 SW_NPC beq null_ptr_exception_jpc_1 -.abortentry106: +.abortentry107: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT cmp r2, lr @@ -5369,11 +4975,11 @@ DISPATCH_FINISH } -(iadd)(iadd) { +(iand)(iadd) { DISPATCH_START \seq_len POP r2, r3, tmp1 DISPATCH_NEXT - add tmp2, r3, r2 + and tmp2, r3, r2 DISPATCH_NEXT add tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -5382,11 +4988,11 @@ DISPATCH_FINISH } -(iadd)(isub) { +(iand)(isub) { DISPATCH_START \seq_len POP r2, r3, tmp1 DISPATCH_NEXT - add tmp2, r3, r2 + and tmp2, r3, r2 DISPATCH_NEXT sub tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -5395,1353 +5001,11 @@ DISPATCH_FINISH } -#ifdef NOTICE_SAFEPOINTS - -(iadd)(ifeq,ifnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(ifne,ifnonnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(iflt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(ifge) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(ifgt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(ifle) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(if_icmpeq,if_acmpeq) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(if_icmpne,if_acmpne) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(if_icmplt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(if_icmpge) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(if_icmpgt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(if_icmple) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iadd)(goto) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - orr ip, ip, r1, lsl #8 - DISPATCH_START_REG ip - POP r2, r3 - add r2, r3, r2 - DISPATCH_NEXT - PUSH r2 - DISPATCH_FINISH -} - -(iadd)(ireturn) { - POP r2, r3 - ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base - ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end - add r1, r3, r2 - ldr tmp_xxx, [istate, #ISTATE_THREAD] - cmp tmp1, tmp2 - bcc 1f -2: - mov r3, #0 - ldr stack, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_METHOD] - ldr r3, [stack, #0] - ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - - sub istate, istate, #ISTATE_NEXT_FRAME - - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH -1: - PUSH r1 - add jpc, jpc, #1 - bl return_check_monitors - POP r1 - b 2b -} - -#endif // NOTICE_SAFEPOINTS - -(iadd)(iinc) { - POP tmp1, lr - DISPATCH_START \seq_len - add tmp1, lr, tmp1 - ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc - ldrsb r2, [jpc, #-1] - DISPATCH_NEXT - PUSH tmp1 - ldr tmp1, [locals, -r3, lsl #2] - DISPATCH_NEXT - add tmp1, tmp1, r2 - str tmp1, [locals, -r3, lsl #2] - DISPATCH_FINISH -} -@ ---- sub; xxx ------------------------------------------------------------ - -(isub)(iload,fload,aload) { - ldrb r3, [jpc, #2] - DISPATCH_START \seq_len - POP tmp2, tmp1 - DISPATCH_NEXT - rsb r3, r3, #0 - DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] - DISPATCH_NEXT - sub tmp2, tmp1, tmp2 - DISPATCH_NEXT - PUSH r3, tmp2 - DISPATCH_FINISH -} - -(isub) -(iload_0,iload_1,iload_2,iload_3) -{ - DISPATCH_START \seq_len - rsb r3, r1, #opc_iload_0 - POP tmp2, tmp1 - DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] - sub tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH r3, tmp2 - DISPATCH_FINISH -} - -(isub)(iaload,aaload,faload) { - POP r2, r3, lr @ lr = ref - DISPATCH_START \seq_len - sub r2, r3, r2 @ r2 = index - SW_NPC cmp lr, #0 - SW_NPC beq null_ptr_exception_jpc_1 -.abortentry74: - ldr tmp1, [lr, #8] @ tmp1 = length - DISPATCH_NEXT - cmp r2, tmp1 - bcs array_bound_exception_jpc_1 - add lr, lr, r2, lsl #2 - ldr tmp1, [lr, #BASE_OFFSET_WORD] - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -(isub)(istore) { - mov r0, #opc_isub_u4store - strb r0, [jpc] - b do_isub_u4store -} - -(isub) -(istore_0,istore_1,istore_2,istore_3) { - mov r0, #opc_isub_istore_N - strb r0, [jpc] - b do_isub_istore_N -} - -(isub)(iastore,fastore) { - POP r2, r3 - DISPATCH_START \seq_len - sub tmp1, r3, r2 @ tmp1 = value - POP r2, r3 @ r2, index, r3 = ref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_1 -.abortentry105: - ldr lr, [r3, #8] @ lr = limit - DISPATCH_NEXT - cmp r2, lr - bcs array_bound_exception_jpc_1 - DISPATCH_NEXT - add r3, r3, r2, lsl #2 - str tmp1, [r3, #BASE_OFFSET_WORD] - DISPATCH_FINISH -} - -(isub)(iadd) { - DISPATCH_START \seq_len - POP r2, r3, tmp1 - DISPATCH_NEXT - sub tmp2, r3, r2 - DISPATCH_NEXT - add tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -} - -(isub)(isub) { - DISPATCH_START \seq_len - POP r2, r3, tmp1 - DISPATCH_NEXT - sub tmp2, r3, r2 - DISPATCH_NEXT - sub tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -} - -#ifdef NOTICE_SAFEPOINTS - -(isub)(ifeq,ifnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(ifne,ifnonnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(iflt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(ifge) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(ifgt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(ifle) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(if_icmpeq,if_acmpeq) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(if_icmpne,if_acmpne) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(if_icmplt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(if_icmpge) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(if_icmpgt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(if_icmple) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - sub r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(isub)(goto) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - orr ip, ip, r1, lsl #8 - DISPATCH_START_REG ip - POP r2, r3 - sub r2, r3, r2 - DISPATCH_NEXT - PUSH r2 - DISPATCH_FINISH -} - -(isub)(ireturn) { - POP r2, r3 - ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base - ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end - sub r1, r3, r2 - ldr tmp_xxx, [istate, #ISTATE_THREAD] - cmp tmp1, tmp2 - bcc 1f -2: - mov r3, #0 - ldr stack, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_METHOD] - ldr r3, [stack, #0] - ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - - sub istate, istate, #ISTATE_NEXT_FRAME - - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH -1: - PUSH r1 - add jpc, jpc, #1 - bl return_check_monitors - POP r1 - b 2b -} - -#endif // NOTICE_SAFEPOINTS - -(isub)(iinc) { - POP tmp1, lr - DISPATCH_START \seq_len - sub tmp1, lr, tmp1 - ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc - ldrsb r2, [jpc, #-1] - DISPATCH_NEXT - PUSH tmp1 - ldr tmp1, [locals, -r3, lsl #2] - DISPATCH_NEXT - add tmp1, tmp1, r2 - str tmp1, [locals, -r3, lsl #2] - DISPATCH_FINISH -} -@ ---- iand; xxx ------------------------------------------------------------ - -(iand)(iload,fload,aload) { - ldrb r3, [jpc, #2] - DISPATCH_START \seq_len - POP tmp2, tmp1 - DISPATCH_NEXT - rsb r3, r3, #0 - DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] - DISPATCH_NEXT - and tmp2, tmp1, tmp2 - DISPATCH_NEXT - PUSH r3, tmp2 - DISPATCH_FINISH -} - -(iand) -(iload_0,iload_1,iload_2,iload_3) -{ - DISPATCH_START \seq_len - rsb r3, r1, #opc_iload_0 - POP tmp2, tmp1 - DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] - and tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH r3, tmp2 - DISPATCH_FINISH -} - -(iand)(iaload,aaload,faload) { - POP r2, r3, lr @ lr = ref - DISPATCH_START \seq_len - and r2, r3, r2 @ r2 = index - SW_NPC cmp lr, #0 - SW_NPC beq null_ptr_exception_jpc_1 -.abortentry75: - ldr tmp1, [lr, #8] @ tmp1 = length - DISPATCH_NEXT - cmp r2, tmp1 - bcs array_bound_exception_jpc_1 - add lr, lr, r2, lsl #2 - ldr tmp1, [lr, #BASE_OFFSET_WORD] - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -(iand)(istore) { - mov r0, #opc_iand_u4store - strb r0, [jpc] - b do_iand_u4store -} - -(iand) -(istore_0,istore_1,istore_2,istore_3) { - mov r0, #opc_iand_istore_N - strb r0, [jpc] - b do_iand_istore_N -} - -(iand)(iastore,fastore) { - POP r2, r3 - DISPATCH_START \seq_len - and tmp1, r3, r2 @ tmp1 = value - POP r2, r3 @ r2, index, r3 = ref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_1 -.abortentry107: - ldr lr, [r3, #8] @ lr = limit - DISPATCH_NEXT - cmp r2, lr - bcs array_bound_exception_jpc_1 - DISPATCH_NEXT - add r3, r3, r2, lsl #2 - str tmp1, [r3, #BASE_OFFSET_WORD] - DISPATCH_FINISH -} - -(iand)(iadd) { - DISPATCH_START \seq_len - POP r2, r3, tmp1 - DISPATCH_NEXT - and tmp2, r3, r2 - DISPATCH_NEXT - add tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -} - -(iand)(isub) { - DISPATCH_START \seq_len - POP r2, r3, tmp1 - DISPATCH_NEXT - and tmp2, r3, r2 - DISPATCH_NEXT - sub tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -} - -#ifdef NOTICE_SAFEPOINTS - -(iand)(ifeq,ifnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(ifne,ifnonnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(iflt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(ifge) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(ifgt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(ifle) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(if_icmpeq,if_acmpeq) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(if_icmpne,if_acmpne) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(if_icmplt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(if_icmpge) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(if_icmpgt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(if_icmple) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - and r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iand)(goto) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - orr ip, ip, r1, lsl #8 - DISPATCH_START_REG ip - POP r2, r3 - and r2, r3, r2 - DISPATCH_NEXT - PUSH r2 - DISPATCH_FINISH -} - -(iand)(ireturn) { - POP r2, r3 - ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base - ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end - and r1, r3, r2 - ldr tmp_xxx, [istate, #ISTATE_THREAD] - cmp tmp1, tmp2 - bcc 1f -2: - mov r3, #0 - ldr stack, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_METHOD] - ldr r3, [stack, #0] - ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - - sub istate, istate, #ISTATE_NEXT_FRAME - - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH -1: - PUSH r1 - add jpc, jpc, #1 - bl return_check_monitors - POP r1 - b 2b -} - -#endif // NOTICE_SAFEPOINTS - -(iand)(iinc) { - POP tmp1, lr - DISPATCH_START \seq_len - and tmp1, lr, tmp1 - ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc - ldrsb r2, [jpc, #-1] - DISPATCH_NEXT - PUSH tmp1 - ldr tmp1, [locals, -r3, lsl #2] - DISPATCH_NEXT - add tmp1, tmp1, r2 - str tmp1, [locals, -r3, lsl #2] - DISPATCH_FINISH -} -@ ---- ior; xxx ------------------------------------------------------------ - -(ior)(iload,fload,aload) { - ldrb r3, [jpc, #2] - DISPATCH_START \seq_len - POP tmp2, tmp1 - DISPATCH_NEXT - rsb r3, r3, #0 - DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] - DISPATCH_NEXT - orr tmp2, tmp1, tmp2 - DISPATCH_NEXT - PUSH r3, tmp2 - DISPATCH_FINISH -} - -(ior) -(iload_0,iload_1,iload_2,iload_3) -{ - DISPATCH_START \seq_len - rsb r3, r1, #opc_iload_0 - POP tmp2, tmp1 - DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] - orr tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH r3, tmp2 - DISPATCH_FINISH -} - -(ior)(iaload,aaload,faload) { - POP r2, r3, lr @ lr = ref - DISPATCH_START \seq_len - orr r2, r3, r2 @ r2 = index - SW_NPC cmp lr, #0 - SW_NPC beq null_ptr_exception_jpc_1 -.abortentry76: - ldr tmp1, [lr, #8] @ tmp1 = length - DISPATCH_NEXT - cmp r2, tmp1 - bcs array_bound_exception_jpc_1 - add lr, lr, r2, lsl #2 - ldr tmp1, [lr, #BASE_OFFSET_WORD] - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -(ior)(istore) { - mov r0, #opc_ior_u4store - strb r0, [jpc] - b do_ior_u4store -} - -(ior) -(istore_0,istore_1,istore_2,istore_3) { - mov r0, #opc_ior_istore_N - strb r0, [jpc] - b do_ior_istore_N -} - -(ior)(iastore,fastore) { - POP r2, r3 - DISPATCH_START \seq_len - orr tmp1, r3, r2 @ tmp1 = value - POP r2, r3 @ r2, index, r3 = ref - SW_NPC cmp r3, #0 - SW_NPC beq null_ptr_exception_jpc_1 -.abortentry108: - ldr lr, [r3, #8] @ lr = limit - DISPATCH_NEXT - cmp r2, lr - bcs array_bound_exception_jpc_1 - DISPATCH_NEXT - add r3, r3, r2, lsl #2 - str tmp1, [r3, #BASE_OFFSET_WORD] - DISPATCH_FINISH -} - -(ior)(iadd) { - DISPATCH_START \seq_len - POP r2, r3, tmp1 - DISPATCH_NEXT - orr tmp2, r3, r2 - DISPATCH_NEXT - add tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -} - -(ior)(isub) { - DISPATCH_START \seq_len - POP r2, r3, tmp1 - DISPATCH_NEXT - orr tmp2, r3, r2 - DISPATCH_NEXT - sub tmp2, tmp1, tmp2 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -} - -#ifdef NOTICE_SAFEPOINTS - -(ior)(ifeq,ifnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(ifne,ifnonnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(iflt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(ifge) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(ifgt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(ifle) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(if_icmpeq,if_acmpeq) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(if_icmpne,if_acmpne) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(if_icmplt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(if_icmpge) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(if_icmpgt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(if_icmple) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - orr r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ior)(goto) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - orr ip, ip, r1, lsl #8 - DISPATCH_START_REG ip - POP r2, r3 - orr r2, r3, r2 - DISPATCH_NEXT - PUSH r2 - DISPATCH_FINISH -} - -(ior)(ireturn) { - POP r2, r3 - ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base - ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end - orr r1, r3, r2 - ldr tmp_xxx, [istate, #ISTATE_THREAD] - cmp tmp1, tmp2 - bcc 1f -2: - mov r3, #0 - ldr stack, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_METHOD] - ldr r3, [stack, #0] - ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - - sub istate, istate, #ISTATE_NEXT_FRAME - - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr - DISPATCH_FINISH -1: - PUSH r1 - add jpc, jpc, #1 - bl return_check_monitors - POP r1 - b 2b -} - -#endif // NOTICE_SAFEPOINTS - -(ior)(iinc) { +(iand)(iinc) { POP tmp1, lr DISPATCH_START \seq_len - orr tmp1, lr, tmp1 - ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc + and tmp1, lr, tmp1 + ldrb r3, [jpc, #-2] @ jpc now points to next bc ldrsb r2, [jpc, #-1] DISPATCH_NEXT PUSH tmp1 @@ -6751,10 +5015,9 @@ str tmp1, [locals, -r3, lsl #2] DISPATCH_FINISH } +@ ---- ior; xxx ------------------------------------------------------------ -@ ---- ixor; xxx ------------------------------------------------------------ - -(ixor)(iload,fload,aload) { +(ior)(iload,fload,aload) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len POP tmp2, tmp1 @@ -6763,13 +5026,13 @@ DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - eor tmp2, tmp1, tmp2 + orr tmp2, tmp1, tmp2 DISPATCH_NEXT PUSH r3, tmp2 DISPATCH_FINISH } -(ixor) +(ior) (iload_0,iload_1,iload_2,iload_3) { DISPATCH_START \seq_len @@ -6777,7 +5040,7 @@ POP tmp2, tmp1 DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] - eor tmp2, tmp1, tmp2 + orr tmp2, tmp1, tmp2 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -6785,13 +5048,13 @@ DISPATCH_FINISH } -(ixor)(iaload,aaload,faload) { +(ior)(iaload,aaload,faload) { POP r2, r3, lr @ lr = ref DISPATCH_START \seq_len - eor r2, r3, r2 @ r2 = index + orr r2, r3, r2 @ r2 = index SW_NPC cmp lr, #0 SW_NPC beq null_ptr_exception_jpc_1 -.abortentry77: +.abortentry76: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT cmp r2, tmp1 @@ -6803,27 +5066,27 @@ DISPATCH_FINISH } -(ixor)(istore) { - mov r0, #opc_ixor_u4store +(ior)(istore) { + mov r0, #opc_ior_u4store strb r0, [jpc] - b do_ixor_u4store + b do_ior_u4store } -(ixor) +(ior) (istore_0,istore_1,istore_2,istore_3) { - mov r0, #opc_ixor_istore_N + mov r0, #opc_ior_istore_N strb r0, [jpc] - b do_ixor_istore_N + b do_ior_istore_N } -(ixor)(iastore,fastore) { +(ior)(iastore,fastore) { POP r2, r3 DISPATCH_START \seq_len - eor tmp1, r3, r2 @ tmp1 = value + orr tmp1, r3, r2 @ tmp1 = value POP r2, r3 @ r2, index, r3 = ref SW_NPC cmp r3, #0 SW_NPC beq null_ptr_exception_jpc_1 -.abortentry109: +.abortentry108: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT cmp r2, lr @@ -6834,11 +5097,11 @@ DISPATCH_FINISH } -(ixor)(iadd) { +(ior)(iadd) { DISPATCH_START \seq_len POP r2, r3, tmp1 DISPATCH_NEXT - eor tmp2, r3, r2 + orr tmp2, r3, r2 DISPATCH_NEXT add tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -6847,11 +5110,11 @@ DISPATCH_FINISH } -(ixor)(isub) { +(ior)(isub) { DISPATCH_START \seq_len POP r2, r3, tmp1 DISPATCH_NEXT - eor tmp2, r3, r2 + orr tmp2, r3, r2 DISPATCH_NEXT sub tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -6860,255 +5123,134 @@ DISPATCH_FINISH } -#ifdef NOTICE_SAFEPOINTS - -(ixor)(ifeq,ifnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ixor)(ifne,ifnonnull) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ixor)(iflt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ixor)(ifge) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ixor)(ifgt) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(ixor)(ifle) { - POP r2, r3 - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r3, r3, r2 - add jpc, jpc, #1 - cmp r3, #0 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(ior)(iinc) { + POP tmp1, lr + DISPATCH_START \seq_len + orr tmp1, lr, tmp1 + ldrb r3, [jpc, #-2] @ jpc now points to next bc + ldrsb r2, [jpc, #-1] + DISPATCH_NEXT + PUSH tmp1 + ldr tmp1, [locals, -r3, lsl #2] + DISPATCH_NEXT + add tmp1, tmp1, r2 + str tmp1, [locals, -r3, lsl #2] + DISPATCH_FINISH } -(ixor)(if_icmpeq,if_acmpeq) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} +@ ---- ixor; xxx ------------------------------------------------------------ -(ixor)(if_icmpne,if_acmpne) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(ixor)(iload,fload,aload) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH r3, tmp2 + DISPATCH_FINISH } -(ixor)(if_icmplt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(ixor) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3, tmp2 + DISPATCH_FINISH } -(ixor)(if_icmpge) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(ixor)(iaload,aaload,faload) { + POP r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + eor r2, r3, r2 @ r2 = index + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry77: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_1 + add lr, lr, r2, lsl #2 + ldr tmp1, [lr, #BASE_OFFSET_WORD] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH } -(ixor)(if_icmpgt) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(ixor)(istore) { + mov r0, #opc_ixor_u4store + strb r0, [jpc] + b do_ixor_u4store } -(ixor)(if_icmple) { - POP r2, r3, lr - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - eor r2, r3, r2 - add jpc, jpc, #1 - cmp lr, r2 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE +(ixor) +(istore_0,istore_1,istore_2,istore_3) { + mov r0, #opc_ixor_istore_N + strb r0, [jpc] + b do_ixor_istore_N } -(ixor)(goto) { - ldrsb r1, [jpc, #2] - ldrb ip, [jpc, #3] - add jpc, jpc, #1 - orr ip, ip, r1, lsl #8 - DISPATCH_START_REG ip +(ixor)(iastore,fastore) { POP r2, r3 - eor r2, r3, r2 + DISPATCH_START \seq_len + eor tmp1, r3, r2 @ tmp1 = value + POP r2, r3 @ r2, index, r3 = ref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry109: + ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT - PUSH r2 + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #2 + str tmp1, [r3, #BASE_OFFSET_WORD] DISPATCH_FINISH -} - -(ixor)(ireturn) { - POP r2, r3 - ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base - ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end - eor r1, r3, r2 - ldr tmp_xxx, [istate, #ISTATE_THREAD] - cmp tmp1, tmp2 - bcc 1f -2: - mov r3, #0 - ldr stack, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_METHOD] - ldr r3, [stack, #0] - ldrh r0, [r0, #40] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - str r1, [stack, r0, lsl #2]! - cmp ip, #0 - beq normal_return - - sub istate, istate, #ISTATE_NEXT_FRAME +} - CACHE_JPC - ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START_REG ip - sub stack, stack, #4 - ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - DISPATCH_NEXT @ ldrb r1, [jpc, #2] - add r2, r2, #4 - DISPATCH_NEXT @ ldr ip, [dispatch, r0, lsl #2] - str r2, [tmp_xxx, #THREAD_JAVA_SP] - DISPATCH_NEXT @ ldrb r2, [jpc, #1] - str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - CACHE_CP - CACHE_LOCALS - DISPATCH_NEXT @ ands lr, ip, lr +(ixor)(iadd) { + DISPATCH_START \seq_len + POP r2, r3, tmp1 + DISPATCH_NEXT + eor tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 DISPATCH_FINISH -1: - PUSH r1 - add jpc, jpc, #1 - bl return_check_monitors - POP r1 - b 2b } -#endif // NOTICE_SAFEPOINTS +(ixor)(isub) { + DISPATCH_START \seq_len + POP r2, r3, tmp1 + DISPATCH_NEXT + eor tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} (ixor)(iinc) { POP tmp1, lr DISPATCH_START \seq_len eor tmp1, lr, tmp1 - ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc + ldrb r3, [jpc, #-2] @ jpc now points to next bc ldrsb r2, [jpc, #-1] DISPATCH_NEXT PUSH tmp1 @@ -7175,7 +5317,7 @@ } @############################################################################### -@# ECN: Optimised bytecode triples +@# Optimised bytecode triples @############################################################################### (iaccess_0,iaccess_1,iaccess_2,iaccess_3) @@ -7233,334 +5375,24 @@ rsb tmp1, r0, #opc_iaccess_0 ldrb ip, [jpc, #2] add tmp2, constpool, r2, lsl #12 - DISPATCH_START 5 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - DISPATCH_NEXT - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_4 - DISPATCH_NEXT - ldr tmp2, [tmp2, #CP_OFFSET+8] - DISPATCH_NEXT - POP r3 -.abortentry91: - ldr tmp2, [tmp1, tmp2] - DISPATCH_NEXT - add tmp2, tmp2, r3 - PUSH tmp2 - DISPATCH_FINISH -} - -#ifdef NOTICE_SAFEPOINTS - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(ifeq,ifnull) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - orr ip, ip, r0, lsl #8 -.abortentry92: - ldr tmp2, [tmp1, tmp2] - cmp tmp2, #0 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(ifne,ifnonnull) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - orr ip, ip, r0, lsl #8 -.abortentry93: - ldr tmp2, [tmp1, tmp2] - cmp tmp2, #0 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(iflt) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - orr ip, ip, r0, lsl #8 -.abortentry94: - ldr tmp2, [tmp1, tmp2] - cmp tmp2, #0 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(ifge) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - orr ip, ip, r0, lsl #8 -.abortentry95: - ldr tmp2, [tmp1, tmp2] - cmp tmp2, #0 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(ifgt) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - orr ip, ip, r0, lsl #8 -.abortentry96: - ldr tmp2, [tmp1, tmp2] - cmp tmp2, #0 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(ifle) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - orr ip, ip, r0, lsl #8 -.abortentry97: - ldr tmp2, [tmp1, tmp2] - cmp tmp2, #0 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(if_icmpeq,if_acmpeq) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - POP r3 - orr ip, ip, r0, lsl #8 -.abortentry98: - ldr tmp2, [tmp1, tmp2] - cmp r3, tmp2 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(if_icmpne,if_acmpne) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - POP r3 - orr ip, ip, r0, lsl #8 -.abortentry99: - ldr tmp2, [tmp1, tmp2] - cmp r3, tmp2 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(if_icmplt) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - POP r3 - orr ip, ip, r0, lsl #8 -.abortentry100: - ldr tmp2, [tmp1, tmp2] - cmp r3, tmp2 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(if_icmpge) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - POP r3 - orr ip, ip, r0, lsl #8 -.abortentry101: - ldr tmp2, [tmp1, tmp2] - cmp r3, tmp2 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(if_icmpgt) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 - ldr tmp1, [locals, tmp1, lsl #2] - add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 - ldr tmp2, [tmp2, #CP_OFFSET+8] - POP r3 - orr ip, ip, r0, lsl #8 -.abortentry102: - ldr tmp2, [tmp1, tmp2] - cmp r3, tmp2 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -(iaccess_0,iaccess_1,iaccess_2,iaccess_3) -(if_icmple) { - ldrb r2, [jpc, #3] - rsb tmp1, r0, #opc_iaccess_0 - ldrb ip, [jpc, #2] - add jpc, jpc, #4 - ldrsb r0, [jpc, #1] - add tmp2, constpool, r2, lsl #12 + DISPATCH_START 5 ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 - ldrb ip, [jpc, #2] + DISPATCH_NEXT SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception_jpc_3 + SW_NPC beq null_ptr_exception_jpc_4 + DISPATCH_NEXT ldr tmp2, [tmp2, #CP_OFFSET+8] + DISPATCH_NEXT POP r3 - orr ip, ip, r0, lsl #8 -.abortentry103: +.abortentry91: ldr tmp2, [tmp1, tmp2] - cmp r3, tmp2 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + DISPATCH_NEXT + add tmp2, tmp2, r3 + PUSH tmp2 + DISPATCH_FINISH } -#endif // NOTICE_SAFEPOINTS - (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) (iadd) { @@ -8564,23 +6396,20 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) (if_icmpeq,if_acmpeq) { ldrb r3, [jpc, #1] rsb r2, r0, #opc_iload_0_iconst_N ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #2 cmp r2, r3 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_2 + DISPATCH 5 } (iload_iconst_N) @@ -8589,17 +6418,12 @@ ldrb r3, [jpc, #2] rsb r2, r2, #0 ldrsb r1, [jpc, #4] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #5] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #3 cmp r2, r3 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) @@ -8608,17 +6432,12 @@ ldrb r3, [jpc, #1] rsb r2, r0, #opc_iload_0_iconst_N ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #2 cmp r2, r3 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_2 + DISPATCH 5 } (iload_iconst_N) @@ -8627,17 +6446,12 @@ ldrb r3, [jpc, #2] rsb r2, r2, #0 ldrsb r1, [jpc, #4] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #5] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #3 cmp r2, r3 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) @@ -8646,17 +6460,12 @@ ldrb r3, [jpc, #1] rsb r2, r0, #opc_iload_0_iconst_N ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #2 cmp r2, r3 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_2 + DISPATCH 5 } (iload_iconst_N) @@ -8665,17 +6474,12 @@ ldrb r3, [jpc, #2] rsb r2, r2, #0 ldrsb r1, [jpc, #4] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #5] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #3 cmp r2, r3 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) @@ -8684,17 +6488,12 @@ ldrb r3, [jpc, #1] rsb r2, r0, #opc_iload_0_iconst_N ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #2 cmp r2, r3 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_2 + DISPATCH 5 } (iload_iconst_N) @@ -8703,17 +6502,12 @@ ldrb r3, [jpc, #2] rsb r2, r2, #0 ldrsb r1, [jpc, #4] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #5] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #3 cmp r2, r3 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) @@ -8722,17 +6516,12 @@ ldrb r3, [jpc, #1] rsb r2, r0, #opc_iload_0_iconst_N ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #2 cmp r2, r3 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_2 + DISPATCH 5 } (iload_iconst_N) @@ -8741,17 +6530,12 @@ ldrb r3, [jpc, #2] rsb r2, r2, #0 ldrsb r1, [jpc, #4] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #5] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #3 cmp r2, r3 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) @@ -8760,17 +6544,12 @@ ldrb r3, [jpc, #1] rsb r2, r0, #opc_iload_0_iconst_N ldrsb r1, [jpc, #3] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #2 cmp r2, r3 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_2 + DISPATCH 5 } (iload_iconst_N) @@ -8779,19 +6558,16 @@ ldrb r3, [jpc, #2] rsb r2, r2, #0 ldrsb r1, [jpc, #4] + ldr r2, [locals, r2, lsl #2] sub r3, r3, #opc_iconst_0 ldrb ip, [jpc, #5] - ldr r2, [locals, r2, lsl #2] - add jpc, jpc, #3 cmp r2, r3 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_3 + DISPATCH 6 } +#endif // NOTICE_SAFEPOINTS + (iload_iload) (iadd_istore_N) { @@ -9582,23 +7358,20 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (iload_iload) (if_icmpeq,if_acmpeq) { ldrb r3, [jpc, #3] rsb r2, r2, #0 ldrsb r1, [jpc, #5] rsb r3, r3, #0 - ldrb ip, [jpc, #6] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #4 + ldrb ip, [jpc, #6] cmp r2, r3 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_4 + DISPATCH 7 } (iload_iload_N) @@ -9607,17 +7380,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #4] rsb r3, r3, #opc_iload_0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) @@ -9626,35 +7394,39 @@ rsb r2, r0, #opc_iload_0_iload ldrsb r1, [jpc, #4] rsb r3, r3, #0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + beq branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) (if_icmpeq,if_acmpeq) { rsb r3, r2, #opc_iload_0 - rsb r2, r0, #opc_iload_0_iload_N ldrsb r1, [jpc, #3] + rsb r2, r0, #opc_iload_0_iload_N + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] ldrb ip, [jpc, #4] + cmp r2, r3 + beq branch_taken_unsafe_2 + DISPATCH 5 +} + +(iload_iload) +(if_icmpne,if_acmpne) { + ldrb r3, [jpc, #3] + rsb r2, r2, #0 + ldrsb r1, [jpc, #5] + rsb r3, r3, #0 ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #2 + ldrb ip, [jpc, #6] cmp r2, r3 - orr ip, ip, r1, lsl #8 - beq 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_4 + DISPATCH 7 } (iload_iload_N) @@ -9663,17 +7435,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #4] rsb r3, r3, #opc_iload_0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) @@ -9682,35 +7449,25 @@ rsb r2, r0, #opc_iload_0_iload ldrsb r1, [jpc, #4] rsb r3, r3, #0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) (if_icmpne,if_acmpne) { rsb r3, r2, #opc_iload_0 - rsb r2, r0, #opc_iload_0_iload_N ldrsb r1, [jpc, #3] - ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] + rsb r2, r0, #opc_iload_0_iload_N ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #2 + ldr r2, [locals, r2, lsl #2] + ldrb ip, [jpc, #4] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bne 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bne branch_taken_unsafe_2 + DISPATCH 5 } (iload_iload) @@ -9719,17 +7476,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #5] rsb r3, r3, #0 - ldrb ip, [jpc, #6] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #4 + ldrb ip, [jpc, #6] cmp r2, r3 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_4 + DISPATCH 7 } (iload_iload_N) @@ -9738,17 +7490,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #4] rsb r3, r3, #opc_iload_0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) @@ -9757,35 +7504,25 @@ rsb r2, r0, #opc_iload_0_iload ldrsb r1, [jpc, #4] rsb r3, r3, #0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) (if_icmplt) { rsb r3, r2, #opc_iload_0 - rsb r2, r0, #opc_iload_0_iload_N ldrsb r1, [jpc, #3] - ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] + rsb r2, r0, #opc_iload_0_iload_N ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #2 + ldr r2, [locals, r2, lsl #2] + ldrb ip, [jpc, #4] cmp r2, r3 - orr ip, ip, r1, lsl #8 - blt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + blt branch_taken_unsafe_2 + DISPATCH 5 } (iload_iload) @@ -9794,17 +7531,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #5] rsb r3, r3, #0 - ldrb ip, [jpc, #6] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #4 + ldrb ip, [jpc, #6] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_4 + DISPATCH 7 } (iload_iload_N) @@ -9813,17 +7545,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #4] rsb r3, r3, #opc_iload_0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) @@ -9832,35 +7559,25 @@ rsb r2, r0, #opc_iload_0_iload ldrsb r1, [jpc, #4] rsb r3, r3, #0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) (if_icmpge) { rsb r3, r2, #opc_iload_0 - rsb r2, r0, #opc_iload_0_iload_N ldrsb r1, [jpc, #3] - ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] + rsb r2, r0, #opc_iload_0_iload_N ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #2 + ldr r2, [locals, r2, lsl #2] + ldrb ip, [jpc, #4] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bge 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bge branch_taken_unsafe_2 + DISPATCH 5 } (iload_iload) @@ -9869,17 +7586,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #5] rsb r3, r3, #0 - ldrb ip, [jpc, #6] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #4 + ldrb ip, [jpc, #6] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_4 + DISPATCH 7 } (iload_iload_N) @@ -9888,17 +7600,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #4] rsb r3, r3, #opc_iload_0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) @@ -9907,35 +7614,25 @@ rsb r2, r0, #opc_iload_0_iload ldrsb r1, [jpc, #4] rsb r3, r3, #0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) (if_icmpgt) { rsb r3, r2, #opc_iload_0 - rsb r2, r0, #opc_iload_0_iload_N ldrsb r1, [jpc, #3] - ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] + rsb r2, r0, #opc_iload_0_iload_N ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #2 + ldr r2, [locals, r2, lsl #2] + ldrb ip, [jpc, #4] cmp r2, r3 - orr ip, ip, r1, lsl #8 - bgt 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + bgt branch_taken_unsafe_2 + DISPATCH 5 } (iload_iload) @@ -9944,17 +7641,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #5] rsb r3, r3, #0 - ldrb ip, [jpc, #6] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #4 + ldrb ip, [jpc, #6] cmp r2, r3 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_4 + DISPATCH 7 } (iload_iload_N) @@ -9963,17 +7655,12 @@ rsb r2, r2, #0 ldrsb r1, [jpc, #4] rsb r3, r3, #opc_iload_0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) @@ -9982,63 +7669,27 @@ rsb r2, r0, #opc_iload_0_iload ldrsb r1, [jpc, #4] rsb r3, r3, #0 - ldrb ip, [jpc, #5] ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #3 + ldrb ip, [jpc, #5] cmp r2, r3 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE + ble branch_taken_unsafe_3 + DISPATCH 6 } (iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) (if_icmple) { rsb r3, r2, #opc_iload_0 - rsb r2, r0, #opc_iload_0_iload_N ldrsb r1, [jpc, #3] - ldrb ip, [jpc, #4] - ldr r2, [locals, r2, lsl #2] + rsb r2, r0, #opc_iload_0_iload_N ldr r3, [locals, r3, lsl #2] - add jpc, jpc, #2 + ldr r2, [locals, r2, lsl #2] + ldrb ip, [jpc, #4] cmp r2, r3 - orr ip, ip, r1, lsl #8 - ble 1f - mov ip, #3 -1: - ldrb r0, [jpc, ip]! - DISPATCH_BYTECODE -} - -#ifdef HW_FP - -(dmac)(dastore) { - ldr tmp2, [stack, #28] - ldr tmp1, [stack, #32] - vldr d2, [stack, #20] - vldr d1, [stack, #12] - vldr d0, [stack, #4] - DISPATCH_START \seq_len - SW_NPC cmp tmp1, #0 - SW_NPC beq null_ptr_exception -.abortentry120: - ldr ip, [tmp1, #8] - cmp tmp2, ip - DISPATCH_NEXT - bcs array_bound_exception_jpc_1_tmp2 - DISPATCH_NEXT - add tmp2, tmp1, tmp2, lsl #3 - fmacd d2, d1, d0 - vstr d2, [tmp2, #BASE_OFFSET_LONG] - DISPATCH_NEXT - DISPATCH_NEXT - add stack, stack, #32 - DISPATCH_FINISH + ble branch_taken_unsafe_2 + DISPATCH 5 } -#endif //HW_FP +#endif #endif // FAST_BYTECODES diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S new/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2010-01-19 15:29:04.000000000 +0000 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2010-01-19 15:41:12.000000000 +0000 @@ -19,15 +19,21 @@ #define ARMv4 -#ifdef SHARK +#if defined(SHARK) || defined(THUMB2EE) + #define USE_COMPILER -#define DISABLE_NOTICE_SAFEPOINTS + #endif #ifdef USE_COMPILER +#ifdef SHARK #define MP_COMPILE_THRESHOLD 0x10000 // 65536 - must be a single MOV constant #define UP_COMPILE_THRESHOLD 0x30000 // 196608 - must be a single MOV constant +#else +#define MP_COMPILE_THRESHOLD 0x2700 // 10000 - must be a single MOV constant +#define UP_COMPILE_THRESHOLD 0x2700 // 10000 - must be a single MOV constant +#endif #define MAX_FG_METHOD_SIZE 500 @@ -38,6 +44,12 @@ #define DISABLE_BG_COMP_ON_NON_MP #endif +#ifdef THUMB2EE +#define FREQ_COUNT_OVERFLOW Thumb2_Compile +#else +#define FREQ_COUNT_OVERFLOW _ZN18InterpreterRuntime26frequency_counter_overflowEP10JavaThreadPh +#endif + #endif // USE_COMPILER #ifndef DISABLE_NOTICE_SAFEPOINTS @@ -46,12 +58,6 @@ #ifndef DISABLE_HW_NULL_PTR_CHECK #define HW_NULL_PTR_CHECK #endif -#ifndef DISABLE_FASTPATH_ENTRY -#define FASTPATH_ENTRY -#endif -#ifndef DISABLE_NATIVE_ENTRY -#define NATIVE_ENTRY -#endif #ifndef DISABLE_FAST_BYTECODES #define FAST_BYTECODES #endif @@ -74,67 +80,25 @@ #define tmp1 r11 #define tmp2 r10 -#define tmp_invoke_len lr - -#define regset r3-r11 - -// XXX hardwired constants! -#define tos_btos 0 -#define tos_ctos 1 -#define tos_stos 2 -#define tos_itos 3 -#define tos_ltos 4 -#define tos_ftos 5 -#define tos_dtos 6 -#define tos_atos 7 +#define regset r4,r5,r6,r7,r9,r10,r11 +#define fast_regset r8 #include "offsets_arm.s" -// XXX hardwired constants! -#define RESOURCEAREA_AREA 0 -#define RESOURCEAREA_CHUNK 4 -#define RESOURCEAREA_HWM 8 -#define RESOURCEAREA_MAX 12 - -// XXX hardwired constants! -#define ISTATE_THREAD 0 -#define ISTATE_BCP 4 -#define ISTATE_LOCALS 8 -#define ISTATE_CONSTANTS 12 -#define ISTATE_METHOD 16 -#define ISTATE_MDX 20 -#define ISTATE_STACK 24 -#define ISTATE_ADVANCE_PC 28 -#define ISTATE_MSG 28 -#define ISTATE_CALLEE 32 // union frame_manager_message -#define ISTATE_PREV_LINK 44 -#define ISTATE_OOP_TEMP 48 -#define ISTATE_STACK_BASE 52 -#define ISTATE_STACK_LIMIT 56 -#define ISTATE_MONITOR_BASE 60 -#define ISTATE_SELF_LINK 64 -#define ISTATE_FRAME_TYPE 68 -#define ISTATE_NEXT_FRAME 72 -#define FRAME_SIZE 76 - -// XXX hardwired constants! -#define ENTRY_FRAME 1 -#define INTERPRETER_FRAME 2 -#define SHARK_FRAME 3 -#define FAKE_STUB_FRAME 4 - #define last_implemented_bytecode 201 +#define CODE_ALIGN_SIZE 64 + .macro ALIGN_CODE - .align 3 + .align 6 .endm .macro ALIGN_DATA - .align 3 + .align 6 .endm .macro ALIGN_OPCODE - .align 3 + .align 6 .endm .macro ALIGN_WORD @@ -276,6 +240,24 @@ .endif #endif .endm + at ------------------------------------------------ +@ THUMB2 specific code macro +@ Usage: +@ T2 + at ------------------------------------------------ + .macro T2 p1, p2, p3, p4 +#ifdef THUMB2EE + .ifnes "\p4", "" + \p1 \p2, \p3, \p4 + .else + .ifnes "\p3", "" + \p1 \p2, \p3 + .else + \p1 \p2 + .endif + .endif +#endif + .endm .macro Opcode label ALIGN_OPCODE @@ -290,6 +272,7 @@ str \reg, [stack, #(\offset+1) * 4] .endm +#define PUSH java_push .macro PUSH reg1, reg2, reg3, reg4 .ifnes "\reg4", "" stmda stack!, {\reg1, \reg2, \reg3, \reg4} @@ -306,6 +289,7 @@ .endif .endm +#define POP java_pop .macro POP reg1, reg2, reg3, reg4 .ifnes "\reg4", "" ldmib stack!, {\reg1, \reg2, \reg3, \reg4} @@ -346,227 +330,6 @@ str jpc, [istate, #ISTATE_BCP] .endm -@ ECN: I assert that istate->locals and istate->stack cannot move on a GC. -@ The reasoning is that istate itself is stored on the Java stack -@ and locals and stack are relative to istate. Therefore if locals or -@ stack were to move, istate itself would have to move and we would -@ lose our entire interpreter state. -@ To prove this I have changed the code which recaches locals and stack -@ to assert that locals == istate->locals and stack == istate->stack. -@ This saves a lot of needles recaching of interpreter state. - .macro ASSERT_LOCALS_CACHED -#if 0 - str ip, [arm_sp, #-4]! - mrs ip, cpsr - str ip, [arm_sp, #-4]! - mov ip, locals - ldr locals, [istate, #ISTATE_LOCALS] - cmp ip, locals - strne r0, [r0, -r0] - ldr ip, [arm_sp], #4 - msr cpsr, ip - ldr ip, [arm_sp], #4 -#endif - .endm - - .macro ASSERT_STACK_CACHED -#if 0 - str ip, [arm_sp, #-4]! - mrs ip, cpsr - str ip, [arm_sp, #-4]! - mov ip, stack - ldr stack, [istate, #ISTATE_STACK] - cmp ip, stack - strne r0, [r0, -r0] - ldr ip, [arm_sp], #4 - msr cpsr, ip - ldr ip, [arm_sp], #4 -#endif - .endm - -@ DISPATCH_LOOP causes the dispatch code to branch every time to a label 'dispatch_loop' -@ This is primarily for debugging so we can stick assertions at the dispatch_loop label -@ which will then be checked after every bytcode. -@ #define DISPATCH_LOOP - -@ CODETRACE tarces bytecodes in a code buffer which can be examined under gdb -@ Note: DISPATCH_LOOP must be enabled for CODETRACE to work -@ #define CODETRACE - -@ DISPATCH_ASSERTS enables various assertions in the dispatch loop, such as checking -@ stack, frame, locals and constpool are all consistent and not corrupted -@#define DISPATCH_ASSERTS - - .macro ABORTNE - strne r0, [r0, -r0] - .endm - - .macro ABORTCS - strcs r0, [r0, -r0] - .endm - - .macro ABORTCC - strcc r0, [r0, -r0] - .endm - - .macro CHECK_CONSTPOOL -#ifdef DISPATCH_ASSERTS - @ First check istate->constpool == method->constpool - ldr r1, [istate, #ISTATE_CONSTANTS] - ldr r2, [istate, #ISTATE_METHOD] - ldr r2, [r2, #METHOD_CONSTANTS] - ldr r2, [r2, #CONSTANTPOOL_CACHE] - cmp r1, r2 - ABORTNE -@ cmp r1, constpool -@ ABORTNE -#endif - .endm - - .macro CHECK_LOCALS -#ifdef DISPATCH_ASSERTS - @ Check cached locals var is the same as that in istate - ldr r1, [istate, #ISTATE_LOCALS] - cmp r1, locals - ABORTNE -#endif - .endm - - .macro CHECK_FRAME -#ifdef DISPATCH_ASSERTS - @ Check #INTERPRETER_FRAME hasn't been overwritten - ldr r1, [istate, #ISTATE_FRAME_TYPE] - cmp r1, #INTERPRETER_FRAME - ABORTNE - @ Check we are still the topmost frame - ldr r1, [istate, #ISTATE_THREAD] - ldr r1, [r1, #THREAD_TOP_ZERO_FRAME] - add r2, istate, #ISTATE_NEXT_FRAME - cmp r1, r2 - ABORTNE - @ And check the NEXT_FRAME pointer points to a valid frame - ldr r1, [istate, #ISTATE_NEXT_FRAME] - ldr r2, [r1, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] - bic r2, r2, #7 @ ECN: Allow for differing frames - cmp r2, #0 - ABORTNE -#endif - .endm - - .macro CHECK_BACKTRACE -#ifdef DISPATCH_ASSERTS - add r3, istate, #ISTATE_NEXT_FRAME -@ ECN: Only check a limited no of frames back. topmost frame already checked -@ Check 2nd frame up - ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] - cmp r2, #ENTRY_FRAME - beq 2f - cmp ip, #INTERPRETER_FRAME - ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME - ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] - ldr r2, [r2, #12] - ldr r2, [r2, #12] - cmp r1, r2 - ABORTNE -@ Check 3rd frame up - ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] - cmp r2, #ENTRY_FRAME - beq 2f - cmp r2, #INTERPRETER_FRAME - ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME - ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] - ldr r2, [r2, #12] - ldr r2, [r2, #12] - cmp r1, r2 - ABORTNE -@ Check 4th frame up - ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] - cmp r2, #ENTRY_FRAME - beq 2f - cmp r2, #INTERPRETER_FRAME - ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME - ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] - ldr r2, [r2, #12] - ldr r2, [r2, #12] - cmp r1, r2 - ABORTNE -@ Check 5th frame up - ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] - cmp r2, #ENTRY_FRAME - beq 2f - cmp r2, #INTERPRETER_FRAME - ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME - ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] - ldr r2, [r2, #12] - ldr r2, [r2, #12] - cmp r1, r2 - ABORTNE -@ Check 7th frame up - ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] - cmp r2, #ENTRY_FRAME - beq 2f - cmp r2, #INTERPRETER_FRAME - ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME - ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] - ldr r2, [r2, #12] - ldr r2, [r2, #12] - cmp r1, r2 - ABORTNE -@ Check 8th frame up - ldr r3, [r3] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_FRAME_TYPE] - cmp r2, #ENTRY_FRAME - beq 2f - cmp r2, #INTERPRETER_FRAME - ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME - ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] - ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] - ldr r2, [r2, #12] - ldr r2, [r2, #12] - cmp r1, r2 - ABORTNE -2: -#endif - .endm - - .macro CHECK_STACK -#ifdef DISPATCH_ASSERTS - ldr r1, [istate, #ISTATE_STACK_BASE] - cmp stack, r1 - ABORTCS - ldr r1, [istate, #ISTATE_STACK_LIMIT] - @ ECN: The stack can point below the stack limit in the - @ case that we have a full stack. As long as we dont actually - @ try writing to it. - add r2, stack, #4 - cmp r2, r1 - ABORTCC -#endif - .endm - -#define CODETRACE_BUFFER_SIZE (1 * 1024) - .macro TRACE_CODE -#ifdef CODETRACE - ldr r1, [dispatch, #CodeTrace_Idx-XXX] - cmp r1, #CODETRACE_BUFFER_SIZE - moveq r1, #0 - sub r2, dispatch, #XXX-CodeTrace_Buffer_Base - str jpc, [r2, r1] - add r1, r1, #4 - str r1, [dispatch, #CodeTrace_Idx-XXX] -#endif - .endm - .macro BREAK_DISPATCH ldr r1, [dispatch, #DispatchBreakPoint-XXX] cmp r1, jpc @@ -605,23 +368,6 @@ mov r0, r2 .endm -#ifdef DISPATCH_LOOP - .macro DISPATCH_NEXT - .endm - - .macro DISPATCH_FINISH - b dispatch_loop - .endm - - .macro DISPATCH_BYTECODE - b dispatch_loop - .endm - - .macro DISPATCH step=0 - ldrb r0, [jpc, #\step]! - b dispatch_loop - .endm -#else .macro DISPATCH_1 @ ldrb r1, [jpc, #2] .endm @@ -702,7 +448,6 @@ bic ip, ip, #7 ldr pc, [ip, r1, lsl #2] .endm -#endif // DISPATCH_LOOP #define FFI_TYPE_VOID 0 #define FFI_TYPE_FLOAT 2 @@ -759,105 +504,6 @@ .text -do_dispatch_break: - mov pc, lr - -#ifdef DISPATCH_LOOP -@ r0 = bytecode -@ jpc has been updated -dispatch_loop: - TRACE_CODE -dispatch_check_constpool: - CHECK_CONSTPOOL -dispatch_check_locals: - CHECK_LOCALS -dispatch_check_stack: - CHECK_STACK -dispatch_check_frame: - CHECK_FRAME -dispatch_check_backtrace: - CHECK_BACKTRACE -dispatch_break: - BREAK_DISPATCH - ldrb r1, [jpc, #2] - ldr ip, [dispatch, r0, lsl #2] - ldrb r2, [jpc, #1] - ands lr, ip, #7 - moveq pc, ip - ldrb r1, [jpc, lr] - bic ip, ip, #7 - ldr ip, [ip, r1, lsl #2] - mov pc, ip -#endif - -is_subtype_of: - ldr r2, [r1, #16] - add ip, r0, r2 - ldr ip, [ip, #-8] - cmp ip, r1 - moveq r0, #1 - bxeq lr - cmp r2, #20 - movne r0, #0 - bxne lr - b _ZNK5Klass23search_secondary_supersEP12klassOopDesc - -HandleC: - stmfd sp!, {r4, r5, r6, lr} - ldr r3, HandleC_adcons - subs r5, r1, #0 - mov r4, r0 -.HandleC_pic: - add r3, pc, r3 - streq r5, [r0, #0] - beq 2f - ldr r2, HandleC_adcons+4 - ldr r3, [r3, r2] - ldr r0, [r3, #0] - bl pthread_getspecific - ldr r3, [r0, #THREAD_HANDLE_AREA] - ldr r0, [r3, #8] - ldr r1, [r3, #12] - add r2, r0, #4 - cmp r2, r1 - strls r2, [r3, #8] - bhi 3f -1: - str r5, [r0, #0] - str r0, [r4, #0] -2: - mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} -3: - mov r0, r3 - mov r1, #4 - bl _ZN5Arena4growEj - b 1b -HandleC_adcons: - .word _GLOBAL_OFFSET_TABLE_-(.HandleC_pic+8) - .word _ZN18ThreadLocalStorage13_thread_indexE(GOT) - -HandleMarkCleanerD: - stmfd sp!, {r4, r5, r6, lr} - ldr r3, [r0, #0] - mov r6, r0 - ldr r4, [r3, #40] - ldr r0, [r4, #8] - ldr r5, [r4, #4] - ldr r3, [r0, #0] - cmp r3, #0 - beq 1f - bl _ZN5Chunk9next_chopEv - ldr r0, [r4, #8] -1: - str r0, [r5, #4] - mov r0, r6 - ldr r3, [r4, #12] - str r3, [r5, #8] - ldr r3, [r4, #16] - str r3, [r5, #12] - ldmfd sp!, {r4, r5, r6, pc} - cmpxchg_ptr: stmfd sp!, {r4, r5, r6, r7, r8, lr} mov r6, #0xffffffc0 @@ -883,126 +529,6 @@ mov r0, r8 ldmfd sp!, {r4, r5, r6, r7, r8, pc} -ThreadInVMfromJavaD: - stmfd sp!, {r4, r5, r6, lr} - ldr r5, ThreadInVMfromJavaD_adcons - ldr r3, ThreadInVMfromJavaD_adcons+4 - mov r2, #_thread_in_vm_trans -.ThreadInVMfromJavaD_pic: - add r5, pc, r5 - ldr r6, [r0, #0] - mov r4, r0 - ldr r3, [r5, r3] - str r2, [r6, #THREAD_STATE] - ldr r3, [r3, #0] - cmp r3, #1 - ble 1f - ldr r3, ThreadInVMfromJavaD_adcons+8 - ldr r3, [r5, r3] - ldrb r3, [r3, #0] @ zero_extendqisi2 - cmp r3, #0 - bne 6f - ldr r3, ThreadInVMfromJavaD_adcons+12 - mov r1, #1 - ldr r2, ThreadInVMfromJavaD_adcons+16 - ldr r3, [r5, r3] - ldr r2, [r5, r2] - ldr r3, [r3, #0] - ldr r2, [r2, #0] - and r3, r3, r6, lsr #3 - str r1, [r2, r3] -1: - ldr r3, ThreadInVMfromJavaD_adcons+20 - ldr r3, [r5, r3] - ldr r3, [r3, #0] - cmp r3, #0 - bne 5f -2: - mov r3, #8 - str r3, [r6, #THREAD_STATE] - ldr r0, [r4, #0] - ldr r3, [r0, #THREAD_SPECIALRUNTIMEEXITCONDITION] - cmp r3, #0 - bne 3f - ldr r3, [r0, #THREAD_SUSPEND_FLAGS] - tst r3, #_thread_external_suspend - beq 4f -3: - mov r1, #1 - bl _ZN10JavaThread37handle_special_runtime_exit_conditionEb - mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} -4: - ldr r3, [r0, #THREAD_SUSPEND_FLAGS] - tst r3, #_thread_deopt_suspend - bne 3b - mov r0, r4 - ldmfd sp!, {r4, r5, r6, pc} -5: - mov r0, r6 - bl _ZN20SafepointSynchronize5blockEP10JavaThread - b 2b -6: - mov r3, #0xffffffa0 - bic r3, r3, #0xf000 - blx r3 - b 1b -ThreadInVMfromJavaD_adcons: - .word _GLOBAL_OFFSET_TABLE_-(.ThreadInVMfromJavaD_pic+8) - .word _ZN2os16_processor_countE(GOT) - .word UseMembar(GOT) - .word _ZN2os20_serialize_page_maskE(GOT) - .word _ZN2os19_mem_serialize_pageE(GOT) - .word _ZN20SafepointSynchronize6_stateE(GOT) - -#define oop_address_tmp tmp1 -#define oop_value_tmp tmp2 -#define oop_lr locals - - ALIGN_CODE -oop_store: - mov oop_lr, lr -@ mov oop_address_tmp, r0 -@ mov oop_value_tmp, r1 - ldr r3, [dispatch, #oopDesc_Address-XXX] - ldr r3, [r3, #0] - ldr r2, [r3, #8] - cmp r2, #1 - beq 1f - mov r0, r3 - mov r1, oop_address_tmp - ldr r3, [r3, #0] - mov r2, oop_value_tmp - mov lr, pc - ldr pc, [r3, #48] -1: - ldr r3, [dispatch, #always_do_update_barrier_Address-XXX] - ldrb r3, [r3] - cmp r3, #0 - beq 2f - mov r3, #0xffffffa0 - bic r3, r3, #0xf000 - blx r3 -2: - mov lr, oop_lr - CACHE_LOCALS - ldr r3, [dispatch, #oopDesc_Address-XXX] - str oop_value_tmp, [oop_address_tmp, #0] - ldr r3, [r3, #0] - ldr r2, [r3, #8] - cmp r2, #1 - beq 3f - mov r0, r3 - mov r1, oop_address_tmp - mov r2, oop_value_tmp - ldr r3, [r3, #0] - ldr pc, [r3, #52] -3: - ldr r3, [r3, #76] - mov r2, #0 - strb r2, [r3, oop_address_tmp, lsr #9] - mov pc, lr - build_frame: mov r3, r0 ldr r0, [r1, #METHOD_ACCESSFLAGS] @@ -1093,13 +619,6 @@ add r1, r1, ip add r1, r1, r2 @ r1->dispatch -#ifndef USE_COMPILER - ldr r2, [r1, #UseCompiler_Address-XXX] - ldrb r2, [r2] - cmp r2, #0 - bne 1f -#endif - ldr r2, [r1, #can_post_interpreter_events-XXX] ldrb r2, [r2] cmp r2, #0 @@ -1119,26 +638,33 @@ asm_method_table: .word normal_entry .word normal_entry_synchronized -#ifdef NATIVE_ENTRY .word native_entry -#else - .word 0 -#endif - .word 0 @ cppInterpreter can handle native_entry_synchronized + .word native_entry_synchronized .word empty_entry .word accessor_entry - .word normal_entry - .word normal_entry - .word normal_entry - .word normal_entry - .word normal_entry - .word normal_entry - .word normal_entry - .word normal_entry + .word normal_entry @ abstract entry + .word normal_entry @ java_lang_math_sin + .word normal_entry @ java_lang_math_cos + .word normal_entry @ java_lang_math_tan + .word normal_entry @ java_lang_math_abs + .word normal_entry @ java_lang_math_sqrt + .word normal_entry @ java_lang_math_log + .word normal_entry @ java_lang_math_log10 + + ALIGN_CODE +native_entry_synchronized: + b fast_native_entry_synchronized + + ALIGN_CODE +fast_native_entry_synchronized: + b _ZN14CppInterpreter12native_entryEP13methodOopDesciP6Thread ALIGN_CODE - .global empty_entry empty_entry: + b fast_empty_entry + + ALIGN_CODE +fast_empty_entry: ldr r3, .L1359 ldr r1, .L1359+4 .LPIC19: @@ -1160,22 +686,22 @@ @ ---- START execute.s --------------------------------------------------------------------- + .global asm_check_null_ptr +asm_check_null_ptr: + #ifdef HW_NULL_PTR_CHECK #define uc_mcontext 20 #define arm_registers_offset 12 #define arm_cpsr_offset 16*4 - .global asm_check_null_ptr -asm_check_null_ptr: add r0, r0, #uc_mcontext + arm_registers_offset ldr r1, [r0, #15*4] adr ip, abort_table abort_loop: ldr r2, [ip], #8 cmp r2, #0 - moveq r0, #0 - bxeq lr + beq 2f cmp r2, r1 bne abort_loop @@ -1193,6 +719,16 @@ do_setcontext: mov r0, #1 bx lr +#endif // HW_NULL_PTR_CHECK +2: +#ifdef THUMB2EE + b Thumb2_Check_Null +#else + mov r0, #0 + bx lr +#endif + +#ifdef HW_NULL_PTR_CHECK abort_table: .word .abortentry5, 1 .word .abortentry6, 1 @@ -1240,19 +776,6 @@ FBC .word .abortentry59, 2 FBC .word .abortentry60, 2 - NSP FBC .word .abortentry61, 0 - NSP FBC .word .abortentry62, 0 - NSP FBC .word .abortentry63, 0 - NSP FBC .word .abortentry64, 0 - NSP FBC .word .abortentry65, 0 - NSP FBC .word .abortentry66, 0 - NSP FBC .word .abortentry67, 0 - NSP FBC .word .abortentry68, 0 - NSP FBC .word .abortentry69, 0 - NSP FBC .word .abortentry70, 0 - NSP FBC .word .abortentry71, 0 - NSP FBC .word .abortentry72, 0 - FBC .word .abortentry73, 1 FBC .word .abortentry74, 1 FBC .word .abortentry75, 1 @@ -1274,18 +797,6 @@ FBC .word .abortentry89, 5 FBC .word .abortentry90, 4 FBC .word .abortentry91, 4 - NSP FBC .word .abortentry92, 3 - NSP FBC .word .abortentry93, 3 - NSP FBC .word .abortentry94, 3 - NSP FBC .word .abortentry95, 3 - NSP FBC .word .abortentry96, 3 - NSP FBC .word .abortentry97, 3 - NSP FBC .word .abortentry98, 3 - NSP FBC .word .abortentry99, 3 - NSP FBC .word .abortentry100, 3 - NSP FBC .word .abortentry101, 3 - NSP FBC .word .abortentry102, 3 - NSP FBC .word .abortentry103, 3 FBC .word .abortentry104, 0 FBC .word .abortentry105, 1 FBC .word .abortentry106, 1 @@ -1299,28 +810,27 @@ FBC .word .abortentry113, 0 .word .abortentry114, 1 - .word .abortentry115, 0 - .word .abortentry116, abstractmethod_exception FBC .word .abortentry117, 0 .word .abortentry118, 0 - .word .abortentry119, return_throw_illegal_monitor_state - FBC .word .abortentry120, 0 .word 0 -#else - .global asm_check_null_ptr -asm_check_null_ptr: - mov r0, #0 - bx lr - #endif -#ifdef NATIVE_ENTRY + + ALIGN_CODE +native_entry: + stmfd arm_sp!, {regset, lr} + bl fast_native_entry + ldmia sp!, {regset, pc} + ALIGN_CODE fast_native_entry: - mov r2, tmp1 - mov r11, tmp2 -fast_native_entry_with_args: + adrl ip, dispatch_init_adcon + mov r11, r0 + ldm ip, {dispatch, r7} + stmdb sp!, {fast_regset, lr} + add dispatch, dispatch, ip + add dispatch, dispatch, r7 ldrh r1, [r11, #METHOD_SIZEOFPARAMETERS] ldr r4, [r2, #THREAD_JAVA_SP] ldr r3, [r2, #THREAD_TOP_ZERO_FRAME] @@ -1477,24 +987,6 @@ ldr ip, [r11, #METHOD_NATIVEHANDLER] ldrh r11, [r11, #METHOD_SIZEOFPARAMETERS] -#ifdef CODETRACE - ldr r1, [dispatch, #CodeTrace_Idx-XXX] - cmp r1, #CODETRACE_BUFFER_SIZE - moveq r1, #0 - sub r2, dispatch, #XXX-CodeTrace_Buffer_Base - mov r3, #0x4e << 24 @ 'NATV' -> r3 - orr r3, r3, #0x4a << 16 - orr r3, r3, #0x54 << 8 - orr r3, r3, #0x56 - str r3, [r2, r1] - add r1, r1, #4 - cmp r1, #CODETRACE_BUFFER_SIZE - moveq r1, #0 - str ip, [r2, r1] - add r1, r1, #4 - str r1, [dispatch, #CodeTrace_Idx-XXX] -#endif - ldmia arm_sp!, {r0, r1, r2, r3} blx ip @@ -1557,50 +1049,40 @@ str lr, [r9, #THREAD_TOP_ZERO_FRAME] str tmp1, [ip, #JNIHANDLEBLOCK_TOP] str r1, [r5, #4] - cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - bne .fast_native_return - ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} + ldmfd arm_sp!, {fast_regset, pc} .fast_native_return_byte: mov r0, r0, lsl #24 str lr, [r9, #THREAD_TOP_ZERO_FRAME] mov r0, r0, asr #24 str tmp1, [ip, #JNIHANDLEBLOCK_TOP] str r0, [r5, #-4]! - cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - bne .fast_native_return - ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} + ldmfd arm_sp!, {fast_regset, pc} .fast_native_return_char: mov r0, r0, lsl #16 str lr, [r9, #THREAD_TOP_ZERO_FRAME] mov r0, r0, lsr #16 str tmp1, [ip, #JNIHANDLEBLOCK_TOP] str r0, [r5, #-4]! - cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - bne .fast_native_return - ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} + ldmfd arm_sp!, {fast_regset, pc} .fast_native_return_bool: ands r0, r0, #255 str lr, [r9, #THREAD_TOP_ZERO_FRAME] movne r0, #1 str tmp1, [ip, #JNIHANDLEBLOCK_TOP] str r0, [r5, #-4]! - cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - bne .fast_native_return - ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} + ldmfd arm_sp!, {fast_regset, pc} .fast_native_return_obj: cmp r0, #0 ldrne r0, [r0] str r0, [r5, #-4]! str lr, [r9, #THREAD_TOP_ZERO_FRAME] str tmp1, [ip, #JNIHANDLEBLOCK_TOP] - cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - bne .fast_native_return - ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} + ldmfd arm_sp!, {fast_regset, pc} .fast_native_return_short: mov r0, r0, lsl #16 mov r0, r0, asr #16 @@ -1610,32 +1092,8 @@ str lr, [r9, #THREAD_TOP_ZERO_FRAME] str tmp1, [ip, #JNIHANDLEBLOCK_TOP] .fast_native_exit: - cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - ldmeqfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} -.fast_native_return: - ldr r2, [istate, #ISTATE_STACK_LIMIT] - sub r5, r5, #4 - str r5, [istate, #ISTATE_STACK] - - ldr r1, [r9, #THREAD_TOP_ZERO_FRAME] - add r2, r2, #4 - str r2, [r9, #THREAD_JAVA_SP] - str r1, [r9, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_THREAD] - CACHE_STACK - CACHE_JPC - ldr r3, [r0, #THREAD_PENDING_EXC] - DISPATCH_START 3 - DISPATCH_NEXT - CACHE_CP - DISPATCH_NEXT - cmp r3, #0 - DISPATCH_NEXT - bne invokenative_exception - DISPATCH_NEXT - CACHE_LOCALS - DISPATCH_FINISH + ldmfd arm_sp!, {fast_regset, pc} .fast_native_entry_throw_stack_overflow: str r0, [r9, #THREAD_LAST_JAVA_SP] @@ -1659,958 +1117,46 @@ bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ ldmia arm_sp!, {r0, r1} b .fast_native_entry_do_return -#endif // NATIVE_ENTRY #include "bytecodes_arm.s" Opcode idiv - POP tmp2, tmp1 - DISPATCH_START 1 -int_div: - cmp tmp2, #0x20 - DISPATCH_NEXT - adr r3, .div_table - DISPATCH_NEXT - ldrcc pc, [r3, tmp2, lsl #2] - - ands a4, tmp2, #0x80000000 - rsbmi tmp2, tmp2, #0 - eors lr, a4, tmp1, ASR #32 - rsbcs tmp1, tmp1, #0 - movs a3, tmp2 -.s_loop: - cmp a3, tmp1, LSR #8 - movls a3, a3, LSL #8 - blo .s_loop - cmp a3, tmp1, LSR #1 - bhi .s_jump7 - cmp a3, tmp1, LSR #2 - bhi .s_jump6 - cmp a3, tmp1, LSR #3 - bhi .s_jump5 - cmp a3, tmp1, LSR #4 - bhi .s_jump4 - cmp a3, tmp1, LSR #5 - bhi .s_jump3 - cmp a3, tmp1, LSR #6 - bhi .s_jump2 - cmp a3, tmp1, LSR #7 - bhi .s_jump1 -.s_loop2: -@ not executed when falling into .s_loop2 - movhi a3, a3, LSR #8 - cmp tmp1, a3, LSL #7 - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #7 - cmp tmp1, a3, LSL #6 -.s_jump1: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #6 - cmp tmp1, a3, LSL #5 -.s_jump2: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #5 - cmp tmp1, a3, LSL #4 -.s_jump3: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #4 - cmp tmp1, a3, LSL #3 -.s_jump4: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #3 - cmp tmp1, a3, LSL #2 -.s_jump5: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #2 - cmp tmp1, a3, LSL #1 -.s_jump6: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #1 -.s_jump7: - cmp tmp1, a3 - adc a4, a4, a4 - subcs tmp1, tmp1, a3 - cmp a3, tmp2 - bne .s_loop2 - movs lr, lr, lsl #1 - rsbcs a4, a4, #0 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH a4 - DISPATCH_FINISH - -.div_table: - .word div_zero_jpc_1 - .word .divc_1 - .word .divc_2 - .word .divc_3 - .word .divc_4 - .word .divc_5 - .word .divc_6 - .word .divc_7 - .word .divc_8 - .word .divc_9 - .word .divc_10 - .word .divc_11 - .word .divc_12 - .word .divc_13 - .word .divc_14 - .word .divc_15 - .word .divc_16 - .word .divc_17 - .word .divc_18 - .word .divc_19 - .word .divc_20 - .word .divc_21 - .word .divc_22 - .word .divc_23 - .word .divc_24 - .word .divc_25 - .word .divc_26 - .word .divc_27 - .word .divc_28 - .word .divc_29 - .word .divc_30 - .word .divc_31 + POP r1 + POP r0 + cmp r1, #0 + beq divide_by_zero_exception + bl __aeabi_idiv + PUSH r0 + DISPATCH 1 -.divc_1: - DISPATCH_STATE 3 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -.divc_2: - DISPATCH_STATE 3 - DISPATCH_NEXT - add tmp1, tmp1, tmp1, lsr #31 - mov tmp2, tmp1, asr #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_3: - DISPATCH_STATE 3 - ldr tmp2, .dc_3 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - sub tmp2, a4, tmp1, asr #31 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_4: - DISPATCH_STATE 3 - movs a4, tmp1 - DISPATCH_NEXT - addmi a4, a4, #3 - mov tmp2, a4, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_5: - DISPATCH_STATE 3 - ldr tmp2, .dc_5 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_6: - DISPATCH_STATE 3 - ldr tmp2, .dc_6 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - sub tmp2, a4, tmp1, asr #31 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_7: - DISPATCH_STATE 3 - ldr tmp2, .dc_7 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_8: - DISPATCH_STATE 3 - movs lr, tmp1 - DISPATCH_NEXT - addmi lr, lr, #7 - mov tmp2, lr, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_9: - DISPATCH_STATE 3 - ldr tmp2, .dc_9 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_10: - DISPATCH_STATE 3 - ldr tmp2, .dc_10 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_11: - DISPATCH_STATE 3 - ldr tmp2, .dc_11 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_12: - DISPATCH_STATE 3 - ldr tmp2, .dc_12 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_13: - DISPATCH_STATE 3 - ldr tmp2, .dc_13 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_14: - DISPATCH_STATE 3 - ldr tmp2, .dc_14 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_15: - DISPATCH_STATE 3 - ldr tmp2, .dc_15 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_16: - DISPATCH_STATE 3 - movs lr, tmp1 - DISPATCH_NEXT - addmi lr, lr, #15 - mov tmp2, lr, asr #4 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_17: - DISPATCH_STATE 3 - ldr tmp2, .dc_17 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_18: - DISPATCH_STATE 3 - ldr tmp2, .dc_18 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_19: - DISPATCH_STATE 3 - ldr tmp2, .dc_19 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_20: - DISPATCH_STATE 3 - ldr tmp2, .dc_20 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_21: - DISPATCH_STATE 3 - ldr tmp2, .dc_21 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_22: - DISPATCH_STATE 3 - ldr tmp2, .dc_22 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_23: - DISPATCH_STATE 3 - ldr tmp2, .dc_23 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_24: - DISPATCH_STATE 3 - ldr tmp2, .dc_24 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_25: - DISPATCH_STATE 3 - ldr tmp2, .dc_25 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_26: - DISPATCH_STATE 3 - ldr tmp2, .dc_26 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_27: - DISPATCH_STATE 3 - ldr tmp2, .dc_27 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_28: - DISPATCH_STATE 3 - ldr tmp2, .dc_28 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_29: - DISPATCH_STATE 3 - ldr tmp2, .dc_29 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_30: - DISPATCH_STATE 3 - ldr tmp2, .dc_30 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.divc_31: - DISPATCH_STATE 3 - ldr tmp2, .dc_31 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.dc_7: -.dc_14: - .word 0x92492493 -.dc_15: -.dc_30: - .word 0x88888889 -.dc_23: - .word 0xb21642c9 -.dc_28: - .word 0x92492493 -.dc_29: - .word 0x8d3dcb09 -.dc_31: - .word 0x84210843 -.dc_6: -.dc_12: -.dc_24: - .word 0x2aaaaaab -.dc_19: - .word 0x6bca1af3 -.dc_5: -.dc_10: -.dc_20: - .word 0x66666667 -.dc_21: - .word 0x30c30c31 -.dc_11: -.dc_22: - .word 0x2e8ba2e9 -.dc_26: -.dc_13: - .word 0x4ec4ec4f -.dc_25: - .word 0x51eb851f -.dc_27: - .word 0x4bda12f7 -.dc_3: - .word 0x55555556 -.dc_17: - .word 0x78787879 -.dc_9: -.dc_18: - .word 0x38e38e39 + Opcode idiv_clz + POP r1 + POP r0 + bl int_div +idiv_clz_ret: + PUSH r0 + DISPATCH 1 Opcode irem - POP tmp2, tmp1 - DISPATCH_START 1 -int_rem: - cmp tmp2, #0x20 - DISPATCH_NEXT - adr r3, .rem_table - DISPATCH_NEXT - ldrcc pc, [r3, tmp2, lsl #2] - - ands a4, tmp2, #0x80000000 - rsbmi tmp2, tmp2, #0 - eors lr, a4, tmp1, ASR #32 - rsbcs tmp1, tmp1, #0 - movs a3, tmp2 -.r_loop: - cmp a3, tmp1, LSR #8 - movls a3, a3, LSL #8 - blo .r_loop - cmp a3, tmp1, LSR #1 - bhi .r_jump7 - cmp a3, tmp1, LSR #2 - bhi .r_jump6 - cmp a3, tmp1, LSR #3 - bhi .r_jump5 - cmp a3, tmp1, LSR #4 - bhi .r_jump4 - cmp a3, tmp1, LSR #5 - bhi .r_jump3 - cmp a3, tmp1, LSR #6 - bhi .r_jump2 - cmp a3, tmp1, LSR #7 - bhi .r_jump1 -.r_loop2: -@ not executed when falling into .r_loop2 - movhi a3, a3, LSR #8 - cmp tmp1, a3, LSL #7 - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #7 - cmp tmp1, a3, LSL #6 -.r_jump1: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #6 - cmp tmp1, a3, LSL #5 -.r_jump2: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #5 - cmp tmp1, a3, LSL #4 -.r_jump3: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #4 - cmp tmp1, a3, LSL #3 -.r_jump4: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #3 - cmp tmp1, a3, LSL #2 -.r_jump5: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #2 - cmp tmp1, a3, LSL #1 -.r_jump6: - adc a4, a4, a4 - subcs tmp1, tmp1, a3, LSL #1 -.r_jump7: - cmp tmp1, a3 - adc a4, a4, a4 - subcs tmp1, tmp1, a3 - cmp a3, tmp2 - bne .r_loop2 - movs lr, lr, lsl #1 - DISPATCH_NEXT - rsbmi tmp1, tmp1, #0 - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH + POP r1 + POP r0 + cmp r1, #0 + beq divide_by_zero_exception + bl __aeabi_idivmod + PUSH r1 + DISPATCH 1 -.rem_table: - .word div_zero_jpc_1 - .word .remc_1 - .word .remc_2 - .word .remc_3 - .word .remc_4 - .word .remc_5 - .word .remc_6 - .word .remc_7 - .word .remc_8 - .word .remc_9 - .word .remc_10 - .word .remc_11 - .word .remc_12 - .word .remc_13 - .word .remc_14 - .word .remc_15 - .word .remc_16 - .word .remc_17 - .word .remc_18 - .word .remc_19 - .word .remc_20 - .word .remc_21 - .word .remc_22 - .word .remc_23 - .word .remc_24 - .word .remc_25 - .word .remc_26 - .word .remc_27 - .word .remc_28 - .word .remc_29 - .word .remc_30 - .word .remc_31 + Opcode irem_clz -.remc_1: - DISPATCH_STATE 3 - DISPATCH_NEXT - mov tmp2, #0 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_2: - DISPATCH_STATE 3 - add lr, tmp1, tmp1, lsr #31 - mov tmp2, lr, asr #1 - DISPATCH_NEXT - sub tmp2, tmp1, tmp2, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_3: - DISPATCH_STATE 3 - ldr tmp2, .dc_3 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - sub tmp2, a4, tmp1, asr #31 - add lr, tmp2, tmp2, lsl #1 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_4: - DISPATCH_STATE 3 - movs lr, tmp1 - DISPATCH_NEXT - addmi lr, lr, #3 - mov tmp2, lr, asr #2 - sub tmp2, tmp1, tmp2, lsl #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_5: - DISPATCH_STATE 3 - ldr tmp2, .dc_5 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - add lr, tmp2, tmp2, lsl #2 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_6: - DISPATCH_STATE 3 - ldr tmp2, .dc_6 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - sub tmp2, a4, tmp1, asr #31 - add lr, tmp2, tmp2, lsl #1 - sub tmp2, tmp1, lr, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_7: - DISPATCH_STATE 3 - ldr tmp2, .dc_7 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #2 - rsb lr, tmp2, tmp2, lsl #3 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_8: - DISPATCH_STATE 3 - movs lr, tmp1 - DISPATCH_NEXT - addmi lr, lr, #7 - mov tmp2, lr, asr #3 - sub tmp2, tmp1, tmp2, lsl #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_9: - DISPATCH_STATE 3 - ldr tmp2, .dc_9 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - add lr, tmp2, tmp2, lsl #3 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_10: - DISPATCH_STATE 3 - ldr tmp2, .dc_10 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - add lr, tmp2, tmp2, lsl #2 - sub tmp2, tmp1, lr, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_11: - DISPATCH_STATE 3 - ldr tmp2, .dc_11 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - add lr, tmp2, tmp2, lsl #2 - add lr, tmp2, lr, lsl #1 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_12: - DISPATCH_STATE 3 - ldr tmp2, .dc_12 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #1 - add lr, tmp2, tmp2, lsl #1 - sub tmp2, tmp1, lr, lsl #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_13: - DISPATCH_STATE 3 - ldr tmp2, .dc_13 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - add lr, tmp2, tmp2, lsl #1 - add lr, tmp2, lr, lsl #2 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_14: - DISPATCH_STATE 3 - ldr tmp2, .dc_14 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #3 - rsb lr, tmp2, tmp2, lsl #3 - sub tmp2, tmp1, lr, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_15: - DISPATCH_STATE 3 - ldr tmp2, .dc_15 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #3 - rsb lr, tmp2, tmp2, lsl #4 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_16: - DISPATCH_STATE 3 - movs lr, tmp1 - DISPATCH_NEXT - addmi lr, lr, #15 - mov tmp2, lr, asr #4 - sub tmp2, tmp1, tmp2, lsl #4 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_17: - DISPATCH_STATE 3 - ldr tmp2, .dc_17 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - add lr, tmp2, tmp2, lsl #4 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_18: - DISPATCH_STATE 3 - ldr tmp2, .dc_18 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - add lr, tmp2, tmp2, lsl #3 - sub tmp2, tmp1, lr, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_19: - DISPATCH_STATE 3 - ldr tmp2, .dc_19 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - add lr, tmp2, tmp2, lsl #3 - add lr, tmp2, lr, lsl #1 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_20: - DISPATCH_STATE 3 - ldr tmp2, .dc_20 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - add lr, tmp2, tmp2, lsl #2 - sub tmp2, tmp1, lr, lsl #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_21: - DISPATCH_STATE 3 - ldr tmp2, .dc_21 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - add lr, tmp2, tmp2, lsl #1 - rsb lr, lr, lr, lsl #3 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_22: - DISPATCH_STATE 3 - ldr tmp2, .dc_22 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - add lr, tmp2, tmp2, lsl #2 - add lr, tmp2, lr, lsl #1 - sub tmp2, tmp1, lr, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_23: - DISPATCH_STATE 3 - ldr tmp2, .dc_23 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - add lr, tmp2, tmp2, lsl #1 - rsb lr, tmp2, lr, lsl #3 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_24: - DISPATCH_STATE 3 - ldr tmp2, .dc_24 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #2 - add lr, tmp2, tmp2, lsl #1 - sub tmp2, tmp1, lr, lsl #3 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_25: - DISPATCH_STATE 3 - ldr tmp2, .dc_25 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - add lr, tmp2, tmp2, lsl #2 - add lr, lr, lr, lsl #2 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_26: - DISPATCH_STATE 3 - ldr tmp2, .dc_26 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - add lr, tmp2, tmp2, lsl #1 - add lr, tmp2, lr, lsl #2 - sub tmp2, tmp1, lr, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_27: - DISPATCH_STATE 3 - ldr tmp2, .dc_27 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov lr, tmp1, asr #31 - rsb tmp2, lr, a4, asr #3 - add lr, tmp2, tmp2, lsl #1 - add lr, lr, lr, lsl #3 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_28: - DISPATCH_STATE 3 - ldr tmp2, .dc_28 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - rsb lr, tmp2, tmp2, lsl #3 - sub tmp2, tmp1, lr, lsl #2 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_29: - DISPATCH_STATE 3 - ldr tmp2, .dc_29 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - rsb lr, tmp2, tmp2, lsl #3 - add lr, tmp2, lr, lsl #2 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_30: - DISPATCH_STATE 3 - ldr tmp2, .dc_30 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - rsb lr, tmp2, tmp2, lsl #4 - sub tmp2, tmp1, lr, lsl #1 - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH -.remc_31: - DISPATCH_STATE 3 - ldr tmp2, .dc_31 - DISPATCH_NEXT - smull lr, a4, tmp1, tmp2 - mov tmp2, tmp1, asr #31 - add lr, tmp1, a4 - rsb tmp2, tmp2, lr, asr #4 - rsb lr, tmp2, tmp2, lsl #5 - sub tmp2, tmp1, lr - DISPATCH_NEXT - PUSH tmp2 - DISPATCH_FINISH + POP r1 + POP r0 + bl int_rem +irem_clz_ret: + PUSH r0 + DISPATCH 1 Opcode goto ldrsb r1, [jpc, #1] @@ -2622,6 +1168,46 @@ ble do_backedge DISPATCH_FINISH +branch_taken_unsafe: + mov r2, r2, lsl #24 + orr tmp1, r1, r2, asr #16 + DISPATCH_START_REG tmp1 + USEC cmp tmp1, #0 + USEC ble do_backedge + DISPATCH_FINISH + +branch_taken_unsafe_1: + add jpc, jpc, #1 + orr tmp1, ip, r1, lsl #8 + DISPATCH_START_REG tmp1 + USEC cmp tmp1, #0 + USEC ble do_backedge + DISPATCH_FINISH + +branch_taken_unsafe_2: + add jpc, jpc, #2 + orr tmp1, ip, r1, lsl #8 + DISPATCH_START_REG tmp1 + USEC cmp tmp1, #0 + USEC ble do_backedge + DISPATCH_FINISH + +branch_taken_unsafe_3: + add jpc, jpc, #3 + orr tmp1, ip, r1, lsl #8 + DISPATCH_START_REG tmp1 + USEC cmp tmp1, #0 + USEC ble do_backedge + DISPATCH_FINISH + +branch_taken_unsafe_4: + add jpc, jpc, #4 + orr tmp1, ip, r1, lsl #8 + DISPATCH_START_REG tmp1 + USEC cmp tmp1, #0 + USEC ble do_backedge + DISPATCH_FINISH + do_backedge: USEC ldr tmp2, [istate, #ISTATE_METHOD] OSR ldr lr, [dispatch, #InterpreterInvocationLimit_Address-XXX] @@ -2631,7 +1217,11 @@ OSR ldr lr, [lr] USEC add ip, ip, #INVOCATIONCOUNTER_COUNTINCREMENT USEC str r1, [tmp2, #METHOD_BACKEDGECOUNTER] +#ifdef THUMB2EE + OSR cmp r1, lr +#else OSR cmp r1, lr, lsl #2 +#endif USEC str ip, [tmp2, #METHOD_INVOCATIONCOUNTER] OSR bcs do_osr @@ -2645,23 +1235,37 @@ do_synchronize: - add r0, istate, #ISTATE_THREAD - bl HandleMarkCleanerD - ldr r0, [istate, #ISTATE_THREAD] DECACHE_JPC DECACHE_STACK - bl _ZN20SafepointSynchronize5blockEP10JavaThread - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] + bl Helper_SafePoint CACHE_CP - ldr r3, [r0, #THREAD_PENDING_EXC] CACHE_JPC - cmp r3, #0 + cmp r0, #0 bne handle_exception DISPATCH 0 #ifdef ON_STACK_REPLACEMENT + +#ifdef THUMB2EE +do_osr: + ldr r3, [tmp2, #METHOD_CONSTMETHOD] + DECACHE_JPC + DECACHE_STACK + ldr r0, [istate, #ISTATE_THREAD] + sub r1, jpc, r3 + sub r1, r1, #CONSTMETHOD_CODEOFFSET + bl FREQ_COUNT_OVERFLOW +1: + cmp r0, #0 + bne call_thumb2 + CACHE_CP + CACHE_JPC + DISPATCH_START 0 + b osr_continue + +#else + do_osr: ldr ip, [dispatch, #UseOnStackReplacement_Address-XXX] ldrb ip, [ip] @@ -2680,15 +1284,13 @@ mov r3, #1 ldr r5, [tmp2] str r3, [tmp2] - bl _ZN18InterpreterRuntime26frequency_counter_overflowEP10JavaThreadPh + bl FREQ_COUNT_OVERFLOW str r5, [tmp2] b 2f 1: - bl _ZN18InterpreterRuntime26frequency_counter_overflowEP10JavaThreadPh + bl FREQ_COUNT_OVERFLOW 2: ldr r3, [istate, #ISTATE_THREAD] - ASSERT_LOCALS_CACHED - ASSERT_STACK_CACHED CACHE_CP ldr r1, [r3, #THREAD_PENDING_EXC] CACHE_JPC @@ -2702,13 +1304,9 @@ 1: DISPATCH_START 0 b osr_continue -#endif -#ifdef ON_STACK_REPLACEMENT osr_migrate: ldr tmp1, [r0, #128] @ osr_method->osr_entry() - ldr tmp2, [istate, #ISTATE_ADVANCE_PC] -@ ldr istate, [istate, #ISTATE_NEXT_FRAME] mov r0, r3 bl _ZN13SharedRuntime19OSR_migration_beginEP10JavaThread mov r1, r0 @@ -2730,32 +1328,11 @@ mov lr, pc ldr pc, [tmp1] - cmp tmp2, #0 - ldmeqfd arm_sp!, {regset, pc} + ldmfd arm_sp!, {fast_regset, pc} - ldr istate, [istate, #ISTATE_NEXT_FRAME] - ldr lr, [istate, #-ISTATE_NEXT_FRAME+ISTATE_THREAD]! - CACHE_JPC - ldr stack, [lr, #THREAD_JAVA_SP] - ldr r2, [istate, #ISTATE_STACK_LIMIT] - sub stack, stack, #4 +#endif // THUMB2EE - ldr r1, [lr, #THREAD_TOP_ZERO_FRAME] - add r2, r2, #4 - str r2, [lr, #THREAD_JAVA_SP] - str r1, [lr, #THREAD_LAST_JAVA_SP] - ldr r3, [lr, #THREAD_PENDING_EXC] - DISPATCH_START_REG tmp2 - CACHE_LOCALS - DISPATCH_NEXT - DISPATCH_NEXT - cmp r3, #0 - DISPATCH_NEXT - bne return_exception - DISPATCH_NEXT - CACHE_CP - DISPATCH_FINISH -#endif +#endif // ON_STACK_REPLACEMENT Opcode ifeq Opcode ifnull @@ -2867,18 +1444,12 @@ ldr r1, [r3] cmp r1, #1 bne handle_return - add r0, istate, #ISTATE_THREAD - bl HandleMarkCleanerD - ldr r0, [istate, #ISTATE_THREAD] DECACHE_JPC DECACHE_STACK - bl _ZN20SafepointSynchronize5blockEP10JavaThread ldr r0, [istate, #ISTATE_THREAD] - ASSERT_STACK_CACHED - ldr r3, [r0, #THREAD_PENDING_EXC] + bl Helper_SafePoint CACHE_JPC -@ CACHE_LOCALS & CACHE_CP not require for handle_retuen / handle_exception - cmp r3, #0 + cmp r0, #0 beq handle_return b handle_exception @@ -2889,8 +1460,6 @@ DECACHE_JPC DECACHE_STACK bl _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] @@ -3057,19 +1626,12 @@ stm tmp2, {r2, r3} DISPATCH 3 putfield_a: - GET_STACK 1, r0 - add oop_address_tmp, r0, tmp2 - POP oop_value_tmp - cmp r0, #0 + POP r2, r3 + cmp r3, #0 beq null_ptr_exception - bl oop_store - ldr r3, [dispatch, #Universe_collectedHeap_Address-XXX] - POP r2 - ldr r3, [r3, #0] - ldr r3, [r3, #12] - ldr r3, [r3, #76] - mov tmp2, #0 - strb tmp2, [r3, r2, lsr #9] + str r2, [r3, tmp2] + mov r0, r3 + bl Helper_aputfield DISPATCH 3 #endif @@ -3134,21 +1696,11 @@ stm r2, {r3, tmp2} DISPATCH_FINISH putstatic_a: - POP oop_value_tmp - add oop_address_tmp, r3, r2 - PUSH r3 - bl oop_store - ldr r3, [dispatch, #Universe_collectedHeap_Address-XXX] - DISPATCH_START 3 - POP r2 - ldr r3, [r3] - DISPATCH_NEXT - ldr r3, [r3, #12] - DISPATCH_NEXT - mov tmp2, #0 - ldr r3, [r3, #76] - strb tmp2, [r3, r2, lsr #9] - DISPATCH_FINISH + POP tmp2 + str tmp2, [r3, r2] + mov r0, r3 + bl Helper_aputfield + DISPATCH 3 resolve_invokeinterface: mov r1, #opc_invokeinterface @@ -3167,8 +1719,6 @@ DECACHE_JPC DECACHE_STACK bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr r3, [r0, #4] @@ -3185,109 +1735,17 @@ # r1 = [jpc, #2] Opcode new ldrb r1, [jpc, #2] -#define k_entry tmp2 -#define new_result r7 -#define top_addr r7 -#define uch r7 -#define obj_size tmp1 - ldr r3, [istate, #ISTATE_METHOD] - orr r2, r1, r2, lsl #8 - ldr lr, [r3, #METHOD_CONSTANTS] - ldr r1, [lr, #CONSTANTPOOL_TAGS] - add r1, r1, #12 - ldrb r3, [r1, r2] - cmp r3, #JVM_CONSTANT_UnresolvedClassInError - cmpne r3, #JVM_CONSTANT_UnresolvedClass - beq .new_slow_case - - add r3, lr, #CONSTANTPOOL_BASE - ldr k_entry, [r3, r2, lsl #2] - - add r1, k_entry, #KLASS_PART - ldr r3, [r1, #INSTANCEKLASS_INITSTATE] - cmp r3, #class_fully_initialized - bne .new_slow_case - ldr r3, [r1, #4] - tst r3, #1 - bne .new_slow_case - - mov obj_size, r3, asr #2 -.new_retry: - ldr r0, [dispatch, #Universe_collectedHeap_Address-XXX] - ldr r0, [r0] - bl CollectedHeap_top_addr - mov top_addr, r0 - ldr r0, [dispatch, #Universe_collectedHeap_Address-XXX] - ldr r0, [r0] - bl CollectedHeap_end_addr - mov r1, top_addr - ldr new_result, [top_addr, #0] - add ip, new_result, obj_size, lsl #2 - ldr r3, [r0, #0] - cmp ip, r3 - bhi .new_slow_case - mov r2, new_result - add r0, new_result, obj_size, lsl #2 - bl cmpxchg_ptr - cmp r0, new_result - bne .new_retry - subs r2, obj_size, #2 -@ ECN: sub optimimal memset - tst r2, #1 - add r0, new_result, #8 - mov r1, #0 - mov ip, #0 - strne r1, [r0], #4 - tst r2, #2 - mov r3, #0 - mov lr, #0 - stmneia r0!, {r1, r3} - bics r2, r2, #3 - beq .new_zero_done -1: - subs r2, r2, #4 - stmia r0!, {r1, r3, ip, lr} - bne 1b -.new_zero_done: - ldr r3, [dispatch, #always_do_update_barrier_Address-XXX] - mov r2, #1 - ldrb r1, [r3] @ zero_extendqisi2 - str r2, [new_result, #0] - cmp r1, #0 - bne .new_do_update_barrier - str k_entry, [new_result, #4] -.new_exit: - str new_result, [stack], #-4 - CACHE_LOCALS - DISPATCH 3 -.new_do_update_barrier: - add oop_address_tmp, new_result, #4 -@ mov oop_value_tmp, k_entry @ oop_value_tmp == k_entry - adr lr, .new_exit - b oop_store -.new_slow_case: - ldrb r2, [jpc, #1] - ldrb r1, [jpc, #2] - ldr r3, [istate, #ISTATE_METHOD] DECACHE_JPC DECACHE_STACK - orr r2, r1, r2, lsl #8 - ldr r0, [istate, #ISTATE_THREAD] - ldr r1, [r3, #METHOD_CONSTANTS] - bl _ZN18InterpreterRuntime4_newEP10JavaThreadP19constantPoolOopDesci - ldr r0, [istate, #ISTATE_THREAD] - ASSERT_STACK_CACHED - ldr ip, [r0, #THREAD_PENDING_EXC] + orr r1, r1, r2, lsl #8 + mov r0, r8 + bl Helper_new CACHE_JPC CACHE_CP - cmp ip, #0 - CACHE_LOCALS - bne handle_exception - ldr r2, [r0, #THREAD_VM_RESULT] - str r2, [stack], #-4 - ldr r3, [istate, #ISTATE_THREAD] - str ip, [r3, #THREAD_VM_RESULT] - DISPATCH 3 + cmp r0, #0 + beq handle_exception + PUSH r0 + DISPATCH 3 bytecode_interpreter_str: .ascii "[Bytecode Interpreter]\000" @@ -3300,8 +1758,6 @@ DECACHE_JPC DECACHE_STACK bl _ZN18InterpreterRuntime8newarrayEP10JavaThread9BasicTypei - ASSERT_LOCALS_CACHED - ASSERT_STACK_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr ip, [r0, #THREAD_PENDING_EXC] @@ -3324,8 +1780,6 @@ ldr r1, [lr, #METHOD_CONSTANTS] ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime9anewarrayEP10JavaThreadP19constantPoolOopDescii - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr ip, [r0, #THREAD_PENDING_EXC] @@ -3370,174 +1824,34 @@ # r1 = [jpc, #2] Opcode checkcast ldrb r1, [jpc, #2] - ldr r3, [istate, #ISTATE_METHOD] - ldr r0, [stack, #4] - ldr r3, [r3, #METHOD_CONSTANTS] @ R3 = METHOD->constants() - cmp r0, #0 - ldr ip, [r3, #CONSTANTPOOL_TAGS] - beq .checkcast_exit - add ip, ip, #12 - orr tmp2, r1, r2, lsl #8 - ldrb r2, [ip, tmp2] @ zero_extendqisi2 - cmp r2, #JVM_CONSTANT_UnresolvedClassInError - cmpne r2, #JVM_CONSTANT_UnresolvedClass - beq 3f - -4: - ldr r0, [r0, #4] - add r3, r3, tmp2, lsl #2 - ldr tmp1, [r3, #CONSTANTPOOL_BASE] - cmp tmp1, r0 - beq .checkcast_exit - - ldr r2, [tmp1, #16] - add tmp2, r0, #8 - add ip, tmp2, r2 - ldr ip, [ip, #-8] - cmp ip, tmp1 - beq .checkcast_exit - - cmp r2, #secondary_super_cache_offset_in_bytes - bne 2f - - mov r0, tmp2 - mov r1, tmp1 - - bl _ZNK5Klass23search_secondary_supersEP12klassOopDesc - cmp r0, #0 - beq 2f -.checkcast_exit: - DISPATCH 3 - -3: - ldr r0, [istate, #ISTATE_THREAD] DECACHE_JPC DECACHE_STACK - bl _ZN18InterpreterRuntime13quicken_io_ccEP10JavaThread - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED - ldr r0, [istate, #ISTATE_THREAD] + orr r1, r1, r2, lsl #8 + mov r0, r8 + GET_STACK 0, r2 + bl Helper_checkcast CACHE_JPC - ldr r3, [r0, #THREAD_PENDING_EXC] CACHE_CP - cmp r3, #0 - ldr r3, [istate, #ISTATE_METHOD] + cmp r0, #0 bne handle_exception - ldr r0, [stack, #4] - ldr r3, [r3, #METHOD_CONSTANTS] @ METHOD->constanst() might have moved - b 4b - -2: - DECACHE_JPC - DECACHE_STACK - mov r0, tmp2 - ldr r3, [istate, #ISTATE_THREAD] - ldr tmp2, [r3, #THREAD_RESOURCEAREA] - - ldr tmp_chunk, [tmp2, #RESOURCEAREA_CHUNK] - ldr tmp_hwm, [tmp2, #RESOURCEAREA_HWM] - ldr tmp_max, [tmp2, #RESOURCEAREA_MAX] - - bl _ZNK5Klass13external_nameEv - mov ip, r0 - add r0, tmp1, #8 - mov tmp1, ip - bl _ZNK5Klass13external_nameEv - mov r1, r0 - mov r0, tmp1 - bl SharedRuntime_generate_class_cast_message - str r0, [arm_sp, #0] - ldr r0, [istate, #ISTATE_THREAD] - adrl r1, bytecode_interpreter_str - mov r2, #99 - mov r3, #_thread_in_vm - str r3, [r0, #THREAD_STATE] - ldr r3, [dispatch, #VmSymbols_symbols_Address-XXX] - ldr r3, [r3, #VMSYMBOLS_ClassCastException * 4] - bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ - add r0, istate, #ISTATE_THREAD - bl ThreadInVMfromJavaD - mov r0, tmp_chunk - ldr r3, [r0, #0] - CACHE_JPC - cmp r3, #0 - beq 1f - bl _ZN5Chunk9next_chopEv -1: - str tmp_hwm, [tmp2, #RESOURCEAREA_HWM] - str tmp_max, [tmp2, #RESOURCEAREA_MAX] - str tmp_chunk, [tmp2, #RESOURCEAREA_CHUNK] - b handle_exception + DISPATCH 3 # r2 = [jpc, #1] # r1 = [jpc, #2] Opcode instanceof ldrb r1, [jpc, #2] - ldr r3, [istate, #ISTATE_METHOD] - ldr r0, [stack, #4] - ldr r3, [r3, #METHOD_CONSTANTS] - cmp r0, #0 - ldr ip, [r3, #CONSTANTPOOL_TAGS] - beq .instanceof_not_instance - add ip, ip, #BASE_OFFSET_BYTE - orr tmp2, r1, r2, lsl #8 - ldrb r2, [ip, tmp2] - cmp r2, #JVM_CONSTANT_UnresolvedClassInError - cmpne r2, #JVM_CONSTANT_UnresolvedClass - beq 2f - -1: - ldr r0, [r0, #4] - add r3, r3, tmp2, lsl #2 - ldr tmp1, [r3, #CONSTANTPOOL_BASE] - cmp tmp1, r0 - beq .instanceof_is_instance - - ldr r2, [tmp1, #16] - add tmp2, r0, #8 - add ip, tmp2, r2 - ldr ip, [ip, #-8] - cmp ip, tmp1 - beq .instanceof_is_instance - - mov r0, #0 - cmp r2, #secondary_super_cache_offset_in_bytes - bne .instanceof_not_instance - - mov r0, tmp2 - mov r1, tmp1 - - bl _ZNK5Klass23search_secondary_supersEP12klassOopDesc - cmp r0, #0 - beq .instanceof_not_instance - -.instanceof_is_instance: - mov r0, #1 - str r0, [stack, #4] - DISPATCH 3 -.instanceof_not_instance: - mov r0, #0 - str r0, [stack, #4] - DISPATCH 3 - -2: - ldr r0, [istate, #ISTATE_THREAD] DECACHE_JPC DECACHE_STACK - bl _ZN18InterpreterRuntime13quicken_io_ccEP10JavaThread - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED - ldr r0, [istate, #ISTATE_THREAD] + orr r1, r1, r2, lsl #8 + mov r0, r8 + POP r2 + bl Helper_instanceof CACHE_JPC - ldr r3, [r0, #THREAD_PENDING_EXC] CACHE_CP - cmp r3, #0 - bne handle_exception - - ldr r3, [istate, #ISTATE_METHOD] - ldr r0, [stack, #4] - ldr r3, [r3, #METHOD_CONSTANTS] @ METHOD->constanst() might have moved - b 1b + cmp r0, #-1 + beq handle_exception + PUSH r0 + DISPATCH 3 Opcode monitorenter ldr r1, [stack, #4] @@ -3583,8 +1897,6 @@ DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] @@ -3640,7 +1952,6 @@ ldr sl, [istate, #ISTATE_STACK_BASE] ldr r3, [stack, #4] CACHE_JPC - ASSERT_LOCALS_CACHED mov r1, r3 str r3, [sl, #4] ldr r2, [r3, #0] @@ -3663,8 +1974,6 @@ DECACHE_JPC DECACHE_STACK bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] @@ -3710,8 +2019,6 @@ ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock ldr r0, [istate, #ISTATE_THREAD] - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r3, [r0, #THREAD_PENDING_EXC] CACHE_JPC cmp r3, #0 @@ -3740,39 +2047,16 @@ ALIGN_WORD Opcode aastore - ldr tmp1, [stack, #12] @ arrObj - ldr tmp_vvv, [stack, #8] - SW_NPC cmp tmp1, #0 - ldr sl, [stack, #4] - SW_NPC beq null_ptr_exception -.abortentry115: - ldr r3, [tmp1, #8] - cmp tmp_vvv, r3 - bcs array_bounds_exception - cmp sl, #0 - beq .aastore_exit - ldr r3, [tmp1, #4] @ arrObj->klass() - ldr r0, [sl, #4] - ldr r1, [r3, #KLASS_PART+OBJARRAYKLASS_ELEMENTKLASS] - cmp r0, r1 - beq .aastore_exit - add r0, r0, #8 - bl is_subtype_of - cmp r0, #0 - moveq r0, #VMSYMBOLS_ArrayStoreException - beq raise_exception -.aastore_exit: - ldr r2, [dispatch, #Universe_collectedHeap_Address-XXX] - add r1, tmp1, #BASE_OFFSET_WORD - str sl, [r1, tmp_vvv, asl #2]! - ldr r3, [r2] - mov lr, #0 - ldr r3, [r3, #12] - add stack, stack, #12 - ldr r3, [r3, #76] - strb lr, [r3, r1, lsr #9] + DECACHE_JPC + DECACHE_STACK + mov r0, r8 + POP r1, r2, r3 + bl Helper_aastore + CACHE_JPC CACHE_CP - DISPATCH 1 + cmp r0, #0 + bne handle_exception + DISPATCH 1 Opcode wide ldrb r2, [jpc, #1] @@ -3862,8 +2146,6 @@ DECACHE_JPC DECACHE_STACK bl _ZN18InterpreterRuntime14multianewarrayEP10JavaThreadPi - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr r1, [r0, #THREAD_PENDING_EXC] @@ -3901,19 +2183,13 @@ ldr r1, [r3] cmp r1, #1 bne 1f - add r0, istate, #ISTATE_THREAD - bl HandleMarkCleanerD - ldr r0, [istate, #ISTATE_THREAD] DECACHE_JPC DECACHE_STACK - bl _ZN20SafepointSynchronize5blockEP10JavaThread - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] + bl Helper_SafePoint CACHE_JPC - ldr r3, [r0, #THREAD_PENDING_EXC] CACHE_CP - cmp r3, #0 + cmp r0, #0 bne handle_exception 1: DISPATCH 0 @@ -3933,8 +2209,6 @@ ldr r2, [istate, #ISTATE_BCP] ldr r1, [istate, #ISTATE_METHOD] bl _ZN18InterpreterRuntime11_breakpointEP10JavaThreadP13methodOopDescPh - ASSERT_STACK_CACHED - ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] @@ -3986,7 +2260,7 @@ ldrcc ip, [r2, r3, asl #2] adr r2, unimplemented_opcode_msg mov r1, #99 - str ip, [arm_sp, #0] + str ip, [arm_sp, #-8]! bl _Z19report_fatal_varargPKciS0_z b breakpoint unimplemented_opcode_msg: @@ -4005,7 +2279,6 @@ DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime18register_finalizerEP10JavaThreadP7oopDesc - ASSERT_STACK_CACHED ldr r0, [istate, #ISTATE_THREAD] CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] @@ -4014,11 +2287,16 @@ beq handle_return b handle_exception -@ ECN: normal_entry_synchronized doesn't really mean synchronized. It means -@ may or may not be synchronized. So we still have to check the synchronized -@ flag in the synchronized path, otherwise we may get an IllegalMonitor. + ALIGN_CODE normal_entry_synchronized: stmfd arm_sp!, {regset, lr} + bl fast_normal_entry_synchronized + ldmfd arm_sp!, {regset, pc} + + ALIGN_CODE +fast_normal_entry_synchronized: + stmfd arm_sp!, {fast_regset, lr} + mov sl, r0 mov tmp1, r2 @@ -4027,7 +2305,7 @@ rsb r3, r0, r3 rsb r3, r3, arm_sp cmp r3, #32768 - blt stack_overflow_no_frame + blt stack_overflow_before_frame ldrh r2, [sl, #METHOD_MAXLOCALS] ldrh r3, [sl, #METHOD_SIZEOFPARAMETERS] @@ -4041,7 +2319,7 @@ sub r5, r5, #FRAME_SIZE+4 sub r5, r5, r0, lsl #2 cmp r3, r5 - bcs stack_overflow_no_frame + bcs stack_overflow_before_frame cmp r8, #0 ble .normal_entry_synchronized_no_locals @@ -4067,61 +2345,17 @@ ldm ip, {r0, r1} add r0, r0, ip str tmp_vvv, [tmp1, #THREAD_TOP_ZERO_FRAME] - CACHE_JPC +@ CACHE_JPC str tmp_vvv, [tmp1, #THREAD_LAST_JAVA_SP] add dispatch, r1, r0 ldr r0, [istate, #ISTATE_METHOD] - CACHE_STACK - USEC ldr r2, [r0, #METHOD_INVOCATIONCOUNTER] - USEC ldr lr, [dispatch, #InterpreterInvocationLimit_Address-XXX] - USEC add r2, r2, #INVOCATIONCOUNTER_COUNTINCREMENT - USEC ldr lr, [lr] - USEC str r2, [r0, #METHOD_INVOCATIONCOUNTER] - USEC cmp r2, lr - ldr r3, [r0, #METHOD_ACCESSFLAGS] - USEC bcs sync_method_entry_freq_count_overflow - CACHE_LOCALS - tst r3, #JVM_ACC_SYNCHRONIZED - CACHE_CP - bne normal_do_synchronization - DISPATCH 0 - -#ifdef USE_COMPILER -sync_method_entry_freq_count_overflow: - ldr r3, [r0, #METHOD_CONSTMETHOD] - ldrh r3, [r3, #CONSTMETHOD_CODESIZE] - mov r1, #0 - mov r0, tmp1 - cmp r3, #MAX_FG_METHOD_SIZE - bcc 1f - ldr tmp2, [dispatch, #BackgroundCompilation_Address-XXX] - mov r3, #1 - ldr r5, [tmp2] - str r3, [tmp2] - bl _ZN18InterpreterRuntime26frequency_counter_overflowEP10JavaThreadPh - str r5, [tmp2] - b 2f -1: - bl _ZN18InterpreterRuntime26frequency_counter_overflowEP10JavaThreadPh -2: - ldr r0, [istate, #ISTATE_METHOD] - CACHE_JPC ldr r3, [r0, #METHOD_ACCESSFLAGS] - CACHE_LOCALS tst r3, #JVM_ACC_SYNCHRONIZED - CACHE_CP - bne normal_do_synchronization - DISPATCH 0 -#endif + beq 1f -do_execute_java_bytecodes_restore_locals_and_jpc: - CACHE_JPC -do_execute_java_bytecodes_restore_locals: +@ Do Synchronisation + CACHE_STACK CACHE_LOCALS - CACHE_CP - DISPATCH 0 - -normal_do_synchronization: tst r3, #JVM_ACC_STATIC ldrne r3, [r0, #METHOD_CONSTANTS] ldreq sl, [locals, #0] @@ -4143,9 +2377,8 @@ blx r3 cmp r0, #0 bne .normal_do_synchronisation_2 + b 1f .normal_do_synchronisation_3: - cmp tmp_xxx, tmp_vvv - beq do_execute_java_bytecodes_restore_locals ldr r0, [istate, #ISTATE_THREAD] bic r1, tmp_xxx, #3 bl JavaThread_is_lock_owned @@ -4153,39 +2386,76 @@ beq .normal_do_synchronisation_4 mov r3, #0 str r3, [tmp1] - b do_execute_java_bytecodes_restore_locals + b 1f .normal_do_synchronisation_4: mov r1, tmp1 DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock ldr r0, [istate, #ISTATE_THREAD] - ASSERT_STACK_CACHED ldr r3, [r0, #THREAD_PENDING_EXC] cmp r3, #0 mov r2, r0 - beq do_execute_java_bytecodes_restore_locals_and_jpc - b handle_exception_do_not_unlock - -# r2 = [jpc, #1] -# r1 = [jpc, #2] - Opcode invokeinterface - ldrb r1, [jpc, #2] - DECACHE_STACK - add r0, constpool, r1, lsl #12 - add r0, r0, r2, asl #4 - DECACHE_JPC - ldr r2, [r0, #CP_OFFSET] - and r2, r2, #0x00ff0000 - cmp r2, #opc_invokeinterface << 16 - blne resolve_invokeinterface + bne handle_exception_do_not_unlock +1: + USEC ldr r0, [istate, #ISTATE_METHOD] + USEC ldr r2, [r0, #METHOD_INVOCATIONCOUNTER] + USEC ldr lr, [dispatch, #InterpreterInvocationLimit_Address-XXX] + USEC add r2, r2, #INVOCATIONCOUNTER_COUNTINCREMENT + USEC ldr lr, [lr] + USEC str r2, [r0, #METHOD_INVOCATIONCOUNTER] + USEC cmp r2, lr + USEC bcs sync_method_entry_freq_count_overflow + CACHE_JPC + CACHE_LOCALS + CACHE_CP + DISPATCH 0 - ldr r3, [r0, #CP_OFFSET+12] - and r2, r3, #255 - ldr r2, [stack, r2, lsl #2] - SW_NPC cmp r2, #0 - SW_NPC beq null_ptr_exception -.abortentry110: +#ifdef USE_COMPILER +sync_method_entry_freq_count_overflow: + ldr r3, [r0, #METHOD_CONSTMETHOD] + ldrh r3, [r3, #CONSTMETHOD_CODESIZE] + mov r1, #0 + ldr r0, [istate, #ISTATE_THREAD] + cmp r3, #MAX_FG_METHOD_SIZE + bcc 1f + ldr tmp2, [dispatch, #BackgroundCompilation_Address-XXX] + mov r3, #1 + ldr r5, [tmp2] + str r3, [tmp2] + bl FREQ_COUNT_OVERFLOW + str r5, [tmp2] + b 2f +1: + bl FREQ_COUNT_OVERFLOW +2: + T2 cmp r0, #0 + CACHE_LOCALS + T2 bne call_thumb2 + CACHE_JPC + CACHE_CP + DISPATCH 0 +#endif + +# r2 = [jpc, #1] +# r1 = [jpc, #2] + Opcode invokeinterface + ldrb r1, [jpc, #2] + DECACHE_STACK + add r0, constpool, r1, lsl #12 + add r0, r0, r2, asl #4 + DECACHE_JPC + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0x00ff0000 + cmp r2, #opc_invokeinterface << 16 + blne resolve_invokeinterface + + ldr r3, [r0, #CP_OFFSET+12] + and r2, r3, #255 + ldr r2, [stack, r2, lsl #2] + SW_NPC cmp r2, #0 + SW_NPC beq null_ptr_exception +.abortentry110: ldr tmp2, [r2, #4] @ rcvr->klass() tst r3, #flag_methodInterface bne .invokeinterface_methodInterface @@ -4213,12 +2483,11 @@ ldr r2, [r1, #-4] add r3, tmp2, r3, lsl #2 ldr tmp2, [r3, r2] - SW_NPC cmp tmp2, #0 - SW_NPC beq abstractmethod_exception + cmp tmp2, #0 + beq abstractmethod_exception .invokeinterface_invoke: ldr tmp1, [istate, #ISTATE_THREAD] @ str tmp2, [istate, #ISTATE_CALLEE] -.abortentry116: ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] mov r1, #0 str ip, [istate, #36] @@ -4229,20 +2498,20 @@ ldr r3, [ip] - mov tmp_invoke_len, #5 - -#ifdef FASTPATH_ENTRY - adr r0, normal_entry - cmp r3, r0 - beq fast_normal_entry_with_len -#endif - mov r0, tmp2 mov r1, ip +#ifndef SHARK + add r3, r3, #CODE_ALIGN_SIZE +#endif mov r2, tmp1 blx r3 - ASSERT_LOCALS_CACHED + adrl ip, dispatch_init_adcon + ldm ip, {r0, r1} + add r0, r0, ip + add dispatch, r1, r0 + + CACHE_LOCALS ldr ip, [istate, #ISTATE_THREAD] CACHE_JPC @@ -4304,19 +2573,6 @@ str stack, [tmp1, #THREAD_JAVA_SP] ldr r3, [ip, #0] -#ifdef FASTPATH_ENTRY - adr r0, normal_entry - cmp r3, r0 - beq fast_normal_entry -#ifdef NATIVE_ENTRY - adrl r0, native_entry - cmp r3, r0 - beq fast_native_entry -#endif - adr r0, accessor_entry - cmp r3, r0 - beq fast_accessor_entry -#endif b normal_dispatch_and_return #endif // FAST_BYTECODES @@ -4389,28 +2645,22 @@ str stack, [tmp1, #THREAD_JAVA_SP] ldr r3, [ip, #0] -#ifdef FASTPATH_ENTRY - adr r0, normal_entry - cmp r3, r0 - beq fast_normal_entry -#ifdef NATIVE_ENTRY - adr r0, native_entry - cmp r3, r0 - beq fast_native_entry -#endif - adr r0, accessor_entry - cmp r3, r0 - beq fast_accessor_entry -#endif normal_dispatch_and_return: mov r0, tmp2 mov r1, ip +#ifndef SHARK + add r3, r3, #CODE_ALIGN_SIZE +#endif mov r2, tmp1 - ldr r2, [istate, #ISTATE_THREAD] blx r3 - ASSERT_LOCALS_CACHED + adrl ip, dispatch_init_adcon + ldm ip, {r0, r1} + add r0, r0, ip + add dispatch, r1, r0 + + CACHE_LOCALS ldr ip, [istate, #ISTATE_THREAD] CACHE_JPC @@ -4464,48 +2714,8 @@ ldr ip, [istate, #36] ldr r3, [ip, #0] -#ifdef FASTPATH_ENTRY - adr r0, normal_entry - cmp r3, r0 - beq fast_normal_entry -#ifdef NATIVE_ENTRY - adr r0, native_entry - cmp r3, r0 - beq fast_native_entry -#endif - adr r0, accessor_entry - cmp r3, r0 - beq fast_accessor_entry -#endif b normal_dispatch_and_return - ALIGN_CODE -normal_entry: - adrl ip, dispatch_init_adcon - stmfd arm_sp!, {regset, lr} - mov tmp2, r0 - ldm ip, {r0, r1} - - mov tmp_invoke_len, #0 - mov tmp1, r2 - - add r0, r0, ip - add dispatch, r1, r0 - - USEC ldr r2, [r10, #METHOD_INVOCATIONCOUNTER] - - ldr stack, [tmp1, #THREAD_JAVA_SP] - - ldr r0, [tmp1, #THREAD_STACK_SIZE] - USEC add r2, r2, #INVOCATIONCOUNTER_COUNTINCREMENT * 4 - ldr r3, [tmp1, #THREAD_STACK_BASE] - rsb r3, r0, r3 - rsb r3, r3, arm_sp - USEC str r2, [tmp2, #METHOD_INVOCATIONCOUNTER] - cmp r3, #32768 - bge fast_normal_entry_with_len - - b stack_overflow_before_frame Opcode invokespecial ldrb r1, [jpc, #2] @@ -4546,81 +2756,35 @@ str stack, [tmp1, #THREAD_JAVA_SP] ldr r3, [ip, #0] -#ifdef FASTPATH_ENTRY - adr r0, normal_entry - cmp r3, r0 - beq fast_normal_entry -#ifdef NATIVE_ENTRY - adr r0, native_entry - cmp r3, r0 - beq fast_native_entry -#endif - adr r0, accessor_entry - cmp r3, r0 - beq fast_accessor_entry -#endif b normal_dispatch_and_return ALIGN_CODE -accessor_entry: - adrl ip, dispatch_init_adcon - ldr r3, [ip] - add r3, r3, ip - ldr ip, [ip, #12] - ldr ip, [r3, ip] - ldr r1, [r0, #8] - ldr ip, [ip, #0] - ldrb r3, [r1, #50] - ldrb r1, [r1, #51] - cmp ip, #0 - ldr ip, [r0, #12] - bne normal_entry - ldr ip, [ip, #12] - orr r3, r3, r1, lsl #8 @ r3 = index - - add r1, ip, #16 - ldr r3, [r1, r3, lsl #4]! @ r1 = cache, r3 = flags - ldr ip, [r2, #THREAD_JAVA_SP] @ ip == stack - and r3, r3, #0x00ff0000 - cmp r3, #opc_getfield << 16 - ldr r3, [ip, #0] - bne normal_entry +normal_entry: + stmfd arm_sp!, {regset, lr} - cmp r3, #0 - beq normal_entry + ldr r7, [r2, #THREAD_STACK_SIZE] + ldr r3, [r2, #THREAD_STACK_BASE] + rsb r3, r7, r3 + rsb r3, r3, arm_sp + cmp r3, #32768 + blt stack_overflow_no_frame - ldr r0, [r1, #12] - ldr r1, [r1, #8] - movs r0, r0, lsr #29 - bls accessor_non_w + bl fast_normal_entry - ldr r0, [r3, r1] - str r0, [ip, #0] - bx lr + ldmfd arm_sp!, {regset, pc} -#ifdef NATIVE_ENTRY ALIGN_CODE -native_entry: +fast_normal_entry: adrl ip, dispatch_init_adcon - stmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, lr} - - ldm ip, {dispatch, r7} - mov r11, r0 - add dispatch, dispatch, ip - add dispatch, dispatch, r7 - - mov istate, #0 + mov tmp2, r0 + ldm ip, {r0, r1} + mov tmp1, r2 + add r0, r0, ip + ldr stack, [tmp1, #THREAD_JAVA_SP] + add dispatch, r1, r0 - b fast_native_entry_with_args -#endif + stmdb arm_sp!, {fast_regset, lr} -@ tmp1 = thread -@ tmp2 == method -@ stack == THREAD_JAVA_SP (=> FULL stack) - ALIGN_CODE -fast_normal_entry: - mov tmp_invoke_len, #3 -fast_normal_entry_with_len: ldrh r0, [tmp2, #METHOD_MAXLOCALS] mov r1, #0 ldrh r3, [tmp2, #METHOD_SIZEOFPARAMETERS] @@ -4646,9 +2810,10 @@ bcs 1b 3: ldr r3, [tmp1, #THREAD_TOP_ZERO_FRAME] + mov lr, #0 sub istate, stack, #FRAME_SIZE sub r2, istate, r2, lsl #2 - str tmp_invoke_len, [istate, #ISTATE_ADVANCE_PC] + str lr, [istate, #ISTATE_MSG] str r2, [tmp1, #THREAD_JAVA_SP] sub r5, r2, #4 @ stack limit = istate - stackwords - 4 str r3, [istate, #ISTATE_NEXT_FRAME] @@ -4664,7 +2829,7 @@ ldr jpc, [tmp2, #METHOD_CONSTMETHOD] ldr constpool, [tmp2, #METHOD_CONSTANTS] add ip, istate, #ISTATE_NEXT_FRAME - DISPATCH_START 48 + DISPATCH_START CONSTMETHOD_CODEOFFSET ldr constpool, [constpool, #CONSTANTPOOL_CACHE] str ip, [tmp1, #THREAD_TOP_ZERO_FRAME] USEC ldr r3, [r10, #METHOD_INVOCATIONCOUNTER] @@ -4701,22 +2866,35 @@ mov r3, #1 ldr r5, [tmp2] str r3, [tmp2] - bl _ZN18InterpreterRuntime26frequency_counter_overflowEP10JavaThreadPh + bl FREQ_COUNT_OVERFLOW str r5, [tmp2] b 2f 1: - bl _ZN18InterpreterRuntime26frequency_counter_overflowEP10JavaThreadPh + bl FREQ_COUNT_OVERFLOW 2: + T2 cmp r0, #0 + T2 bne call_thumb2 CACHE_JPC CACHE_CP DISPATCH 0 -#endif +#ifdef THUMB2EE +call_thumb2: + mov ip, r1 + mov r1, locals + ldr r2, [istate, #ISTATE_THREAD] + add stack, stack, #4 + bx ip +#endif // THUMB2EE -handle_return: -@ CHECK_CONSTPOOL -@ CHECK_BACKTRACE +#endif // USE_COMPILER + .global Thumb2_Install +Thumb2_Install: +@ ldr r0, [r0] + str r1, [r0, #METHOD_FROM_INTERPRETED] + bx lr +handle_return: ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end @@ -4725,9 +2903,6 @@ cmp tmp1, tmp2 blcc return_check_monitors -@ CHECK_CONSTPOOL -@ CHECK_BACKTRACE - mov r3, #0 ldrb lr, [jpc, #0] @@ -4739,9 +2914,6 @@ add r1, r2, #4 str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - add r1, r1, r0, lsl #2 cmp lr, #opc_lreturn @@ -4756,152 +2928,27 @@ str r1, [tmp_xxx, #THREAD_JAVA_SP] - cmp ip, #0 - - ldmeqfd arm_sp!, {regset, pc} - - ldr lr, [istate, #-ISTATE_NEXT_FRAME+ISTATE_THREAD]! - CACHE_JPC - ldr stack, [lr, #THREAD_JAVA_SP] - ldr r2, [istate, #ISTATE_STACK_LIMIT] - sub stack, stack, #4 - - ldr r1, [lr, #THREAD_TOP_ZERO_FRAME] - add r2, r2, #4 - str r2, [lr, #THREAD_JAVA_SP] - str r1, [lr, #THREAD_LAST_JAVA_SP] - ldr r3, [lr, #THREAD_PENDING_EXC] - DISPATCH_START_REG ip - CACHE_LOCALS - DISPATCH_NEXT - DISPATCH_NEXT - cmp r3, #0 - DISPATCH_NEXT - bne return_exception - DISPATCH_NEXT - CACHE_CP - DISPATCH_FINISH - -@ ip = PC ADVANCE -fast_handle_return: - ldr lr, [istate, #-ISTATE_NEXT_FRAME+ISTATE_THREAD]! - CACHE_JPC - ldr stack, [lr, #THREAD_JAVA_SP] - ldr r2, [istate, #ISTATE_STACK_LIMIT] - sub stack, stack, #4 - - ldr r1, [lr, #THREAD_TOP_ZERO_FRAME] - add r2, r2, #4 - str r2, [lr, #THREAD_JAVA_SP] - str r1, [lr, #THREAD_LAST_JAVA_SP] - ldr r3, [lr, #THREAD_PENDING_EXC] - DISPATCH_START_REG ip - CACHE_LOCALS - DISPATCH_NEXT - DISPATCH_NEXT - cmp r3, #0 - DISPATCH_NEXT - bne return_exception - DISPATCH_NEXT - CACHE_CP - DISPATCH_FINISH - -normal_return: - str stack, [tmp_xxx, #THREAD_JAVA_SP] - ldmfd arm_sp!, {regset, pc} - -return_check_monitors: - ldr r2, [istate, #ISTATE_METHOD] - ldr r0, [r2, #24] - tst r0, #1<<5 - subne tmp2, tmp2, #8 - cmp tmp1, tmp2 - bcs .return_unlock -1: - ldr r3, [tmp1, #4] - cmp r3, #0 - bne return_throw_illegal_monitor_state - add tmp1, tmp1, #8 - cmp tmp1, tmp2 - bcc 1b - -#define RETURN_STACKSIZE SIZEOF_HANDLEMARK - -.return_unlock: - tst r0, #1<<5 - bxeq lr - - ldr tmp1, [tmp2, #4] @ base->obj == NULL - SW_NPC cmp tmp1, #0 - SW_NPC beq return_throw_illegal_monitor_state -.abortentry119: - HW_NPC ldr ip, [tmp1] @ Only to provoke abort - - ldr r0, [tmp2, #0] @ r0 = header - mov r3, #0 - cmp r0, #0 - str r3, [tmp2, #4] @ base->obj = NULL - bxeq lr - - mov tmp_vvv, lr - mov r1, tmp1 - mov r2, tmp2 - bl cmpxchg_ptr - cmp tmp2, r0 - bxeq tmp_vvv - - str tmp1, [tmp2, #4] - sub arm_sp, arm_sp, #RETURN_STACKSIZE - mov r0, arm_sp - mov r1, tmp_xxx - bl _ZN10HandleMark10initializeEP6Thread - mov r1, tmp2 - mov r0, tmp_xxx - DECACHE_JPC - DECACHE_STACK - bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock - ASSERT_STACK_CACHED - CACHE_JPC - mov r0, arm_sp - bl _ZN10HandleMarkD1Ev - add arm_sp, arm_sp, #RETURN_STACKSIZE - ldr r3, [tmp_xxx, #THREAD_PENDING_EXC] - cmp r3, #0 - bne handle_exception - mov lr, tmp_vvv - bx lr - -return_throw_illegal_monitor_state: - sub arm_sp, arm_sp, #RETURN_STACKSIZE - mov r0, arm_sp - mov r1, tmp_xxx - bl _ZN10HandleMark10initializeEP6Thread - DECACHE_JPC - DECACHE_STACK - mov r0, tmp_xxx - bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread - mov r0, arm_sp - bl _ZN10HandleMarkD1Ev - add arm_sp, arm_sp, #RETURN_STACKSIZE - b handle_exception_with_bcp + ldmfd arm_sp!, {fast_regset, pc} @ ---------------------------------------------------------------------------------------- stack_overflow_no_frame: - mov tmp_invoke_len, #0 -stack_overflow_before_frame: mov r0, tmp1 ldr ip, [r0, #THREAD_TOP_ZERO_FRAME] str ip, [r0, #THREAD_LAST_JAVA_SP] - mov tmp1, tmp_invoke_len bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread - cmp tmp1, #0 - bne handle_exception_with_bcp ldmfd arm_sp!, {regset, pc} +stack_overflow_before_frame: + mov r0, tmp1 + ldr ip, [r0, #THREAD_TOP_ZERO_FRAME] + str ip, [r0, #THREAD_LAST_JAVA_SP] + bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread + ldmfd arm_sp!, {fast_regset, pc} + handle_exception_do_not_unlock: mov r3, #1 strb r3, [r2, #THREAD_DO_NOT_UNLOCK] - b handle_exception + b handle_exception_with_bcp abstractmethod_exception: mov r0, #VMSYMBOLS_AbstractMethodError @@ -4911,39 +2958,21 @@ raise_exception: adr r1, null_str raise_exception_with_msg: - str r1, [arm_sp] - ldr r3, [dispatch, #VmSymbols_symbols_Address-XXX] - ldr r3, [r3, r0, lsl #2] - ldr r0, [istate, #ISTATE_THREAD] + stmdb sp!, {r0, r1} + bl load_dispatch + ldmia sp!, {r0, r1} DECACHE_JPC DECACHE_STACK - mov ip, #_thread_in_vm - str ip, [r0, #THREAD_STATE] - mov r2, #99 - adrl r1, bytecode_interpreter_str - bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ - add r0, istate, #ISTATE_THREAD - bl ThreadInVMfromJavaD + mov r2, r1 + ldr r1, [dispatch, #VmSymbols_symbols_Address-XXX] + ldr r1, [r1, r0, lsl #2] + ldr r0, [istate, #ISTATE_THREAD] + bl Helper_Raise b handle_exception_with_bcp null_str: .byte 0 ALIGN_WORD -#define EXCEPTION_HANDLEMARK 0 -#define EXCEPTION_THREAD EXCEPTION_HANDLEMARK + SIZEOF_HANDLEMARK -#define EXCEPTION_EXCEPTION EXCEPTION_THREAD + 4 -#define EXCEPTION_EXCEPTION2 EXCEPTION_EXCEPTION + 4 -#define EXCEPTION_MONITORBASE EXCEPTION_EXCEPTION2 + 4 -#define EXCEPTION_TMP1 EXCEPTION_MONITORBASE + 4 -#define EXCEPTION_HANDLEMARK2 EXCEPTION_TMP1 + 4 -#define EXCEPTION_HANDLE EXCEPTION_HANDLEMARK2 + SIZEOF_HANDLEMARK -#define EXCEPTION_HANDLE2 EXCEPTION_HANDLE + 4 -#define EXCEPTION_HANDLE3 EXCEPTION_HANDLE2 + 4 - -#define EXCEPTION_STACKSIZE EXCEPTION_HANDLE3 + 4 - -#define except_sp r13 - invokeinterface_exception_fix: sub jpc, jpc, #2 invoke_exception_fix: @@ -4960,432 +2989,157 @@ @ constpool = garbage DECACHE_JPC handle_exception_with_bcp: - sub except_sp, except_sp, #EXCEPTION_STACKSIZE + bl load_dispatch ldr stack, [istate, #ISTATE_STACK_BASE] sub stack, stack, #4 DECACHE_STACK - ldr r0, [istate, #ISTATE_THREAD] -handle_exception_1: - ldr sl, [r0, #4] - str r0, [except_sp, #EXCEPTION_THREAD] - cmp sl, #0 - moveq tmp_yyy, sl - beq .handle_exception_3 - ldr r0, [r0, #THREAD_HANDLE_AREA] - ldr r1, [r0, #8] - ldr r3, [r0, #12] - add r2, r1, #4 - cmp r2, r3 - movls r3, r1 - strls r2, [r0, #8] - bls .handle_exception_2 - mov r1, #4 - bl _ZN5Arena4growEj - mov r3, r0 -.handle_exception_2: - str sl, [r3, #0] - mov tmp_yyy, r3 - ldr r0, [istate, #ISTATE_THREAD] -.handle_exception_3: - mov r1, r0 - add r0, except_sp, #EXCEPTION_HANDLEMARK - bl _ZN10HandleMark10initializeEP6Thread - ldr r0, [istate, #ISTATE_THREAD] - bl _ZN12ThreadShadow23clear_pending_exceptionEv - ldr r1, [istate, #ISTATE_STACK_BASE] - ldr r0, [istate, #ISTATE_THREAD] - cmp tmp_yyy, #0 - sub stack, r1, #4 - moveq r1, tmp_yyy - DECACHE_STACK - ldrne r1, [tmp_yyy, #0] - bl _ZN18InterpreterRuntime31exception_handler_for_exceptionEP10JavaThreadP7oopDesc - ASSERT_STACK_CACHED - mov sl, r0 - ldr r0, [istate, #ISTATE_THREAD] - ldr r3, [r0, #THREAD_PENDING_EXC] - cmp r3, #0 - beq .handle_exception_5 - add r0, except_sp, #EXCEPTION_HANDLEMARK - bl _ZN10HandleMarkD1Ev - ldr r1, [except_sp, #EXCEPTION_THREAD] - ldr tmp_yyy, [r1, #THREAD_LAST_HANDLE_MARK] - ldr r0, [tmp_yyy, #8] - ldr sl, [tmp_yyy, #4] - ldr r3, [r0, #0] - cmp r3, #0 - beq .handle_exception_4 - bl _ZN5Chunk9next_chopEv - ldr r0, [tmp_yyy, #8] -.handle_exception_4: - str r0, [sl, #4] - ldr r3, [tmp_yyy, #12] - str r3, [sl, #8] - ldr r2, [tmp_yyy, #16] - str r2, [sl, #12] - ldr r0, [istate, #ISTATE_THREAD] - b handle_exception_1 -.handle_exception_5: - ldr tmp_yyy, [r0, #THREAD_VM_RESULT] - cmp tmp_yyy, #0 - moveq r1, tmp_yyy - beq .handle_exception_7 - ldr r3, [dispatch, #ThreadLocalStorage_thread_index-XXX] - ldr r0, [r3] - bl pthread_getspecific - ldr r0, [r0, #THREAD_HANDLE_AREA] - ldr r1, [r0, #8] - ldr r3, [r0, #12] - add r2, r1, #4 - cmp r2, r3 - movls r3, r1 - strls r2, [r0, #8] - bls .handle_exception_6 - mov r1, #4 - bl _ZN5Arena4growEj - mov r3, r0 -.handle_exception_6: - str tmp_yyy, [r3, #0] - mov r1, r3 - ldr r0, [istate, #ISTATE_THREAD] -.handle_exception_7: - cmp sl, #0 - mov r3, #0 - str r3, [r0, #THREAD_VM_RESULT] - blt .handle_exception_9 - cmp r1, r3 - moveq r0, r1 - ldrne r0, [r1, #0] - str r0, [stack, #0] - sub stack, stack, #4 - ldr r3, [istate, #ISTATE_METHOD] - add r0, except_sp, #EXCEPTION_HANDLEMARK - ldr r2, [r3, #8] - add r2, r2, #48 - add ip, r2, sl - str ip, [istate, #ISTATE_BCP] - bl _ZN10HandleMarkD1Ev - ldr r1, [except_sp, #EXCEPTION_THREAD] - ldr tmp_yyy, [r1, #THREAD_LAST_HANDLE_MARK] - ldr r0, [tmp_yyy, #8] - ldr sl, [tmp_yyy, #4] - ldr r3, [r0, #0] - cmp r3, #0 - beq .handle_exception_8 - bl _ZN5Chunk9next_chopEv - ldr r0, [tmp_yyy, #8] -.handle_exception_8: - str r0, [sl, #4] - ldr r3, [tmp_yyy, #12] - str r3, [sl, #8] - ldr r2, [tmp_yyy, #16] - str r2, [sl, #12] - add except_sp, except_sp, #EXCEPTION_STACKSIZE - b do_execute_java_bytecodes_restore_locals_and_jpc -.handle_exception_9: - cmp r1, #0 - ldr r0, [istate, #ISTATE_THREAD] - mov r2, #0 - ldrne r1, [r1, #0] - mov r3, r2 - bl _ZN12ThreadShadow21set_pending_exceptionEP7oopDescPKci - ldr r0, [istate, #ISTATE_THREAD] - ldr tmp_yyy, [r0, #4] - cmp tmp_yyy, #0 - streq tmp_yyy, [except_sp, #EXCEPTION_EXCEPTION] - beq .handle_exception_11 - ldr r0, [r0, #THREAD_HANDLE_AREA] - ldr r1, [r0, #8] - ldr r3, [r0, #12] - add r2, r1, #4 - cmp r2, r3 - movls r3, r1 - strls r2, [r0, #8] - bls .handle_exception_10 - mov r1, #4 - bl _ZN5Arena4growEj - mov r3, r0 -.handle_exception_10: - str tmp_yyy, [r3, #0] - ldr r0, [istate, #ISTATE_THREAD] - str r3, [except_sp, #EXCEPTION_EXCEPTION] -.handle_exception_11: - bl _ZN12ThreadShadow23clear_pending_exceptionEv - mov r1, #0 - ldr r0, [istate, #ISTATE_THREAD] - str r1, [except_sp, #EXCEPTION_EXCEPTION2] - ldrb r3, [r0, #THREAD_DO_NOT_UNLOCK] @ zero_extendqisi2 - cmp r3, r1 - beq .handle_exception_15 - strb r1, [r0, #THREAD_DO_NOT_UNLOCK] - ldr r0, [istate, #ISTATE_THREAD] -.handle_exception_12: - ldr r1, [except_sp, #EXCEPTION_EXCEPTION] - cmp r1, #0 - movne r2, r1 - ldrne r1, [r2, #0] -.handle_exception_13: - mov r2, #0 - mov r3, r2 - bl _ZN12ThreadShadow21set_pending_exceptionEP7oopDescPKci + + mov r0, istate + ldr r1, [istate, #ISTATE_THREAD] + bl Helper_HandleException + cmp r0, #0 + beq 1f + + mov jpc, r0 + CACHE_STACK + CACHE_LOCALS + CACHE_CP + DISPATCH 0 +1: + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + mov r3, #0 - ldr r2, [istate, #ISTATE_BCP] - ldrb r2, [r2, #0] @ zero_extendqisi2 - DECACHE_STACK - str r2, [istate, #ISTATE_CALLEE] - ldr lr, [istate, #ISTATE_THREAD] - ldr r1, [lr, #THREAD_TOP_ZERO_FRAME] - str r3, [lr, #THREAD_LAST_JAVA_SP] - add r2, r1, #4 - str r2, [lr, #THREAD_JAVA_SP] - ldr r3, [r1, #0] - str r3, [lr, #THREAD_TOP_ZERO_FRAME] - ldr r1, [istate, #ISTATE_METHOD] - ldrh r3, [r1, #40] - add r0, except_sp, #EXCEPTION_HANDLEMARK - mov r3, r3, asl #2 - add r2, r2, r3 - str r2, [lr, #THREAD_JAVA_SP] - bl _ZN10HandleMarkD1Ev - ldr r0, [except_sp, #EXCEPTION_THREAD] - ldr tmp_yyy, [r0, #THREAD_LAST_HANDLE_MARK] - ldr r0, [tmp_yyy, #8] - ldr sl, [tmp_yyy, #4] - ldr r3, [r0, #0] - cmp r3, #0 - beq .handle_exception_14 - bl _ZN5Chunk9next_chopEv - ldr r0, [tmp_yyy, #8] -.handle_exception_14: - str r0, [sl, #4] - ldr r3, [tmp_yyy, #12] - str r3, [sl, #8] - ldr r2, [tmp_yyy, #16] - str r2, [sl, #12] - add except_sp, except_sp, #EXCEPTION_STACKSIZE - ldr ip, [istate, #ISTATE_ADVANCE_PC] - ldr istate, [istate, #ISTATE_NEXT_FRAME] - cmp ip, #0 - bne fast_handle_return - ldmfd arm_sp!, {regset, pc} -.handle_exception_15: - ldr ip, [istate, #ISTATE_MONITOR_BASE] - ldr r2, [istate, #ISTATE_METHOD] - str ip, [except_sp, #EXCEPTION_MONITORBASE] - ldr tmp_vvv, [istate, #ISTATE_STACK_BASE] - ldr r3, [r2, #24] - mov r3, r3, lsr #5 - ands r3, r3, #1 - subne ip, ip, #8 - strne ip, [except_sp, #EXCEPTION_MONITORBASE] - ldr lr, [except_sp, #EXCEPTION_MONITORBASE] - str r3, [except_sp, #EXCEPTION_TMP1] - cmp tmp_vvv, lr - bcs .handle_exception_21 - - .p2align 3 -.handle_exception_16: - ldr tmp_yyy, [tmp_vvv, #4] - cmp tmp_yyy, #0 - beq .handle_exception_20 - ldr fp, [tmp_vvv, #0] - mov r2, #0 - cmp fp, r2 - str r2, [tmp_vvv, #4] - beq .handle_exception_19 - .p2align 3 -.handle_exception_17: - ldr sl, [tmp_yyy, #0] - cmp tmp_vvv, sl - bne .handle_exception_18 - mov r0, tmp_vvv - mov r1, fp - mov r2, tmp_yyy - mov r3, #0xffffffc0 - bic r3, r3, #0xf000 - blx r3 + ldrb r0, [tmp_xxx, #THREAD_DO_NOT_UNLOCK] + strb r3, [tmp_xxx, #THREAD_DO_NOT_UNLOCK] cmp r0, #0 - bne .handle_exception_17 -.handle_exception_18: - cmp tmp_vvv, sl - beq .handle_exception_19 - str tmp_yyy, [tmp_vvv, #4] - add r0, except_sp, #EXCEPTION_HANDLEMARK2 - ldr r1, [istate, #ISTATE_THREAD] - bl _ZN10HandleMark10initializeEP6Thread - mov r1, tmp_vvv - ldr r0, [istate, #ISTATE_THREAD] - DECACHE_STACK - bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock - ASSERT_STACK_CACHED - add r0, except_sp, #EXCEPTION_HANDLEMARK2 - bl _ZN10HandleMarkD1Ev -.handle_exception_19: - ldr r1, [except_sp, #EXCEPTION_EXCEPTION2] - cmp r1, #0 - beq .handle_exception_27 - ldr r3, [r1, #0] + bne 2f + + cmp tmp1, tmp2 + blcc return_check_monitors + +2: + mov r3, #0 + + ldr r2, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] + ldr r0, [istate, #ISTATE_METHOD] + ldr r3, [r2, #0] + ldrh r0, [r0, #40] + add r1, r2, #4 + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + + add r1, r1, r0, lsl #2 + + str r1, [tmp_xxx, #THREAD_JAVA_SP] + + ldmfd arm_sp!, {fast_regset, pc} + +return_check_monitors: + stmdb arm_sp!, {r4, lr} + + ldr r2, [istate, #ISTATE_METHOD] + ldr r4, [r2, #METHOD_ACCESSFLAGS] + tst r4, #1<<5 + subne tmp2, tmp2, #8 + cmp tmp1, tmp2 + bcs 2f +1: + ldr r3, [tmp1, #4] cmp r3, #0 - beq .handle_exception_27 -.handle_exception_20: - ldr r3, [except_sp, #EXCEPTION_MONITORBASE] - add tmp_vvv, tmp_vvv, #8 - cmp tmp_vvv, r3 - bcc .handle_exception_16 -.handle_exception_21: - ldr ip, [except_sp, #EXCEPTION_TMP1] - cmp ip, #0 - beq .handle_exception_23 - ldr r0, [except_sp, #EXCEPTION_MONITORBASE] - ldr sl, [r0, #4] - cmp sl, #0 - beq .handle_exception_26 - mov ip, r0 - ldr r0, [r0, #0] + bne 3f + add tmp1, tmp1, #8 + cmp tmp1, tmp2 + bcc 1b + +2: + tst r4, #1<<5 + + ldmeqia arm_sp!, {r4, pc} + + ldr tmp1, [tmp2, #4] @ base->obj == NULL + cmp tmp1, #0 + beq 4f + + ldr r0, [tmp2, #0] @ r0 = header mov r3, #0 cmp r0, #0 - str r3, [ip, #4] - beq .handle_exception_23 - mov r1, sl - ldr r2, [except_sp, #EXCEPTION_MONITORBASE] - bl cmpxchg_ptr - ldr r1, [except_sp, #EXCEPTION_MONITORBASE] - cmp r1, r0 - beq .handle_exception_22 - ldr r3, [except_sp, #EXCEPTION_MONITORBASE] - add tmp_yyy, except_sp, #EXCEPTION_HANDLEMARK2 - mov r0, tmp_yyy - str sl, [r3, #4] - ldr r1, [istate, #ISTATE_THREAD] - bl _ZN10HandleMark10initializeEP6Thread - ldr r1, [except_sp, #EXCEPTION_MONITORBASE] - ldr r0, [istate, #ISTATE_THREAD] - DECACHE_STACK - bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock - mov r0, tmp_yyy - ASSERT_STACK_CACHED - bl _ZN10HandleMarkD1Ev - ldr r0, [istate, #ISTATE_THREAD] - ldr r1, [r0, #4] - cmp r1, #0 - beq .handle_exception_24 - add r0, except_sp, #EXCEPTION_HANDLE2 - bl HandleC - ldr r1, [except_sp, #EXCEPTION_HANDLE2] - ldr r0, [istate, #ISTATE_THREAD] - str r1, [except_sp, #EXCEPTION_EXCEPTION2] - bl _ZN12ThreadShadow23clear_pending_exceptionEv -.handle_exception_22: - ldr r0, [istate, #ISTATE_THREAD] - b .handle_exception_24 -.handle_exception_23: - ldr r0, [istate, #ISTATE_THREAD] -.handle_exception_24: - ldr r3, [except_sp, #EXCEPTION_EXCEPTION2] - cmp r3, #0 - beq .handle_exception_12 -.handle_exception_25: - ldr lr, [except_sp, #EXCEPTION_EXCEPTION2] - ldr r1, [lr, #0] - cmp r1, #0 - bne .handle_exception_13 - b .handle_exception_12 -.handle_exception_26: - ldr r1, [except_sp, #EXCEPTION_EXCEPTION2] - cmp r1, #0 - beq .handle_exception_29 - ldr r3, [r1, #0] - cmp r3, #0 - beq .handle_exception_29 - ldr r0, [istate, #ISTATE_THREAD] - b .handle_exception_25 + str r3, [tmp2, #4] @ base->obj = NULL -.handle_exception_27: - add r0, except_sp, #EXCEPTION_HANDLEMARK2 - ldr r1, [istate, #ISTATE_THREAD] - bl _ZN10HandleMark10initializeEP6Thread - ldr r0, [istate, #ISTATE_THREAD] - DECACHE_STACK - bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread - add r0, except_sp, #EXCEPTION_HANDLEMARK2 - ASSERT_STACK_CACHED - bl _ZN10HandleMarkD1Ev - add r0, except_sp, #EXCEPTION_HANDLE - ldr r3, [istate, #ISTATE_THREAD] - ldr r1, [r3, #4] - bl HandleC - ldr r2, [except_sp, #EXCEPTION_HANDLE] - ldr r0, [istate, #ISTATE_THREAD] - str r2, [except_sp, #EXCEPTION_EXCEPTION2] - bl _ZN12ThreadShadow23clear_pending_exceptionEv - b .handle_exception_20 -.handle_exception_29: - add tmp_yyy, except_sp, #EXCEPTION_HANDLEMARK2 - mov r0, tmp_yyy - ldr r1, [istate, #ISTATE_THREAD] - bl _ZN10HandleMark10initializeEP6Thread - ldr r0, [istate, #ISTATE_THREAD] - DECACHE_STACK - bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread - mov r0, tmp_yyy - ASSERT_STACK_CACHED - bl _ZN10HandleMarkD1Ev - ldr r3, [istate, #ISTATE_THREAD] - add r0, except_sp, #EXCEPTION_HANDLE3 - ldr r1, [r3, #4] - bl HandleC - ldr r2, [except_sp, #EXCEPTION_HANDLE3] - ldr r0, [istate, #ISTATE_THREAD] - str r2, [except_sp, #EXCEPTION_EXCEPTION2] - bl _ZN12ThreadShadow23clear_pending_exceptionEv - ldr r0, [istate, #ISTATE_THREAD] - b .handle_exception_24 + ldmeqia arm_sp!, {r4, pc} -#ifdef FASTPATH_ENTRY + mov r1, tmp1 + mov r2, tmp2 + bl cmpxchg_ptr + cmp tmp2, r0 - ALIGN_CODE -fast_accessor_entry: - ldr ip, [dispatch, #SafePointSynchronize_state_Address-XXX] - ldr r3, [tmp2, #8] - ldr ip, [ip, #0] - ldrb r2, [r3, #50] - ldrb r3, [r3, #51] - cmp ip, #0 - ldr ip, [tmp2, #12] - bne fast_normal_entry - ldr ip, [ip, #12] + ldmeqia arm_sp!, {r4, pc} - DISPATCH_START 3 + str tmp1, [tmp2, #4] - orr r2, r2, r3, lsl #8 @ r2 = index - add r3, ip, #16 - ldr r2, [r3, r2, lsl #4]! @ r3 = cache, r2 = flags + mov r1, tmp2 + ldr r0, [istate, #ISTATE_THREAD] + bl Helper_synchronized_exit - DISPATCH_NEXT + ldmeqia arm_sp!, {r4, pc} - cmp r2, #opc_getfield << 16 - GET_STACK 0, r2 - bne fast_normal_entry +3: + ldr r0, [istate, #ISTATE_THREAD] + bl Helper_RaiseIllegalMonitorException + b 2b - cmp r2, #0 - beq fast_normal_entry +4: + ldr r0, [istate, #ISTATE_THREAD] + bl Helper_RaiseIllegalMonitorException + ldmia arm_sp!, {r4, pc} + ALIGN_CODE +accessor_entry: + b slow_accessor_entry - ldr lr, [r3, #12] - ldr r3, [r3, #8] - movs lr, lr, lsr #29 - bls .fast_accessor_non_w + ALIGN_CODE +slow_accessor_entry: + USEC adrl ip, dispatch_init_adcon + USEC ldr r3, [ip] + USEC add r3, r3, ip + USEC ldr ip, [ip, #invocationlimit_adcon-dispatch_init_adcon] + USEC ldr ip, [r3, ip] - DISPATCH_NEXT + USEC ldr r3, [r0, #METHOD_INVOCATIONCOUNTER] + USEC ldr ip, [ip, #0] + USEC add r3, r3, #INVOCATIONCOUNTER_COUNTINCREMENT + USEC str r3, [r0, #METHOD_INVOCATIONCOUNTER] + USEC cmp r3, ip + USEC bcs normal_entry + + ldr r1, [r0, #METHOD_CONSTMETHOD] + ldrb r3, [r1, #CONSTMETHOD_CODEOFFSET+2] + ldrb r1, [r1, #CONSTMETHOD_CODEOFFSET+3] + ldr ip, [r0, #METHOD_CONSTANTS] + ldr ip, [ip, #CONSTANTPOOL_CACHE] + orr r3, r3, r1, lsl #8 @ r3 = index - ldr tmp1, [r2, r3] + add r1, ip, #CP_OFFSET + ldr r3, [r1, r3, lsl #4]! @ r1 = cache, r3 = flags + ldr ip, [r2, #THREAD_JAVA_SP] @ ip == stack + and r3, r3, #0x00ff0000 + cmp r3, #opc_getfield << 16 + ldr r3, [ip, #0] + bne normal_entry - DISPATCH_NEXT - DISPATCH_NEXT + cmp r3, #0 + beq normal_entry - PUT_STACK 0, tmp1 + ldr r0, [r1, #12] + ldr r1, [r1, #8] + movs r0, r0, lsr #29 + bls accessor_non_w - DISPATCH_FINISH + ldr r0, [r3, r1] + str r0, [ip, #0] + bx lr .fast_accessor_non_w: bcs .fast_accessor_h @@ -5427,10 +3181,8 @@ PUSH tmp2 DISPATCH_FINISH -#endif // FASTPATH_ENTRY - div_zero_jpc_1: - sub jpc, jpc, #1 @ Point to idiv + sub jpc, jpc, #1 .lrem_0: .ldiv_0: divide_by_zero_exception: @@ -5465,30 +3217,12 @@ sub jpc, jpc, #1 array_bound_exception_jpc_0: array_bounds_exception: - adr r1, percent_d_str - sub arm_sp, arm_sp, #16 - add r0, arm_sp, #4 - bl sprintf - add r1, arm_sp, #4 - mov r0, #VMSYMBOLS_ArrayIndexOutOfBounds - str r1, [arm_sp] - ldr r3, [dispatch, #VmSymbols_symbols_Address-XXX] - ldr r3, [r3, r0, lsl #2] - ldr r0, [istate, #ISTATE_THREAD] DECACHE_JPC DECACHE_STACK - mov ip, #_thread_in_vm - str ip, [r0, #THREAD_STATE] - mov r2, #99 - adrl r1, bytecode_interpreter_str - bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ - add r0, istate, #ISTATE_THREAD - bl ThreadInVMfromJavaD - add arm_sp, arm_sp, #16 + mov r1, r2 + ldr r0, [istate, #ISTATE_THREAD] + bl Helper_RaiseArrayBoundException b handle_exception_with_bcp -percent_d_str: - .ascii "%d\000" - ALIGN_WORD #ifndef HW_NULL_PTR_CHECK null_ptr_exception_jpc_5: @@ -5780,8 +3514,6 @@ bpl .dadd_exit b .return_double_NaN -@ ECN: load 1st arg off stack and do a reverse subtract -@ ECN: We want TOSM1 - TOS, but args end up in wrong order so do rsb @ --- do_dsub_itos ------------------------------------------------- Opcode dsub POP al, ah, bl, bh @@ -6189,7 +3921,6 @@ orr ah, ah, al, LSR ul @ put in high end of low word mov al, tl -@ ECN: Reload tmp mov tmp, #0x7f00000 orr tmp, tmp, #0x00f0000 @@ -6228,7 +3959,6 @@ orr bh, bh, bl, LSR ul @ put in high end of low word mov bl, tl -@ ECN: Reload tmp mov tmp, #0x7f00000 orr tmp, tmp, #0x00f0000 @@ -6293,9 +4023,9 @@ strb r3, [r2, #0] adrl r3, main_dispatch_table #ifdef HW_FP - ldr r0, [ip, #VFP_Flag-XXX] - cmp r0, #0 - bne 2f + ldr r0, [ip, #CPUInfo-XXX] + tst r0, #ARCH_VFP + beq 2f #endif mov r2, #256 1: @@ -6303,7 +4033,8 @@ str r1, [ip], #4 subs r2, r2, #1 bne 1b - bx lr + sub ip, ip, #4 * 256 + b 4f @ No HW FP - must update the table from a combination main_dispatch_table and @ vfp_table. Previously this updated from main_dispatch_table first, and then @@ -6327,9 +4058,23 @@ add r2, r2, #1 cmp r2, #256 bcc 3b + sub ip, ip, #4 * 256 ldmia arm_sp!, {r4, lr} #endif // HW_FP + +4: + ldr r0, [ip, #CPUInfo-XXX] + tst r0, #ARCH_CLZ + beq 5f + + adrl r0, do_idiv_clz + str r0, [ip, #opc_idiv * 4] + adrl r0, do_irem_clz + str r0, [ip, #opc_irem * 4] + +5: #endif // NOTICE_SAFEPOINTS + bx lr @ --- notice_safepoints --------------------------------------------------------------------------- @@ -6384,6 +4129,9 @@ subs r1, r1, #1 bne 2b + bl hwcap + str r0, [r4, #CPUInfo-XXX] + #ifdef USE_COMPILER #define NPROCESSORS_CONF 83 @@ -6403,51 +4151,18 @@ ldr r1, [r4, #CompileThreshold_Address-XXX] str r0, [r1] - #endif // USE_COMPILER - ldmfd sp!, {r4, lr} +#ifdef THUMB2EE + ldr r1, [r4, #CPUInfo-XXX] + tst r1, #ARCH_THUMBEE + blne Thumb2_Initialize +#endif #ifdef HW_FP -vfp_init: - stmfd sp!, {r4, r5, lr} - sub sp, sp, #132 - mov r4, #0 - adr r0, proc_self_auxv - mov r1, #0 - bl open - subs r5, r0, #0 - blt .exit_vfp_init -.vfp_init_read_loop: - mov r2, #128 - mov r0, r5 - mov r1, sp - bl read - mov r2, sp - mov r3, r0, lsr #3 - b .vfp_init_1 -.vfp_init_vec_loop: - ldmia r2!, {r1, ip} - cmp r1, #0 - beq .fini_vfp_init - cmp r1, #16 - bne .vfp_init_1 - tst ip, #64 - movne r4, #1 - bne .fini_vfp_init -.vfp_init_1: - subs r3, r3, #1 - bpl .vfp_init_vec_loop - cmp r0, #128 - beq .vfp_init_read_loop -.fini_vfp_init: - mov r0, r5 - bl close -.exit_vfp_init: - movs r0, r4 - add sp, sp, #132 - ldmfd sp!, {r4, r5, lr} - bxne lr @ We have HW FP - just exit + ldr r0, [r4, #CPUInfo-XXX] + tst r0, #ARCH_VFP + bne 4f @ No HW FP - replace the HW FP entries with SW entries update_vfp_table: @@ -6456,17 +4171,26 @@ ldm ip, {r2, r3} add r2, r2, ip add ip, r3, r2 - mov r1, #1 - str r1, [ip, #VFP_Flag-XXX] .update_vfp_loop: ldr r1, [r0], #4 cmp r1, #0 ldrne r2, [r0], #4 strne r2, [ip, r1, lsl #2] bne .update_vfp_loop +4: #endif // HW_FP - bx lr + ldr r0, [r4, #CPUInfo-XXX] + tst r0, #ARCH_CLZ + beq 5f + + adrl r0, do_idiv_clz + str r0, [r4, #opc_idiv * 4] + adrl r0, do_irem_clz + str r0, [r4, #opc_irem * 4] + +5: + ldmia sp!, {r4, pc} #ifdef HW_FP vfp_table: @@ -6483,13 +4207,15 @@ .word opc_dcmpl, do_dcmpl .word opc_dcmpg, do_dcmpg .word 0 - -proc_self_auxv: - .ascii "/proc/self/auxv\000" - .align 2 - #endif // HW_FP +load_dispatch: + adrl ip, dispatch_init_adcon + ldm ip, {r0, r1} + add r0, r0, ip + add dispatch, r1, r0 + mov pc, lr + ALIGN_DATA dispatch_init_adcon: .word _GLOBAL_OFFSET_TABLE_-dispatch_init_adcon, opclabels_data(GOTOFF) @@ -6506,6 +4232,7 @@ .word PrintCommandLineFlags(GOT) .word _ZN11JvmtiExport28_can_post_interpreter_eventsE(GOT) .word UseCompiler(GOT) +invocationlimit_adcon: .word _ZN17InvocationCounter26InterpreterInvocationLimitE(GOT) .word CompileThreshold(GOT) .word BackgroundCompilation(GOT) @@ -6516,8 +4243,6 @@ main_dispatch_table: MAIN_DISPATCH_TABLE -@ ECN: Strange logic here! We don't need the safe_dispatch_table if NOTICE_SAFEPOINTS is -@ disabled because in this case the main_dispatch_table must be safepoint safe. #ifdef NOTICE_SAFEPOINTS safe_dispatch_table: .word do_nop @@ -6780,19 +4505,1717 @@ SUB_DISPATCH_TABLES - .section .init_array,"aw",%init_array - .word bci_init(target1) + .arch armv7-a - .data - ALIGN_DATA -#ifdef CODETRACE -CodeTrace_Buffer_Base: - .space CODETRACE_BUFFER_SIZE -#endif + ALIGN_CODE + .global Thumb2_stubs +Thumb2_stubs: + .global Thumb2_idiv_stub +Thumb2_idiv_stub: +int_div: + cmp r1, #0x21 + adr r3, 1f + eor r12, r0, r1 + ldrcc pc, [r3, r1, lsl #2] + rsblt r1, r1, #0 + subs r2, r1, #1 + beq 2f + movs r3, r0 + rsbmi r3, r0, #0 + cmp r3, r1 + bls 3f + tst r1, r2 + beq 4f + clz r2, r3 + clz r0, r1 + sub r2, r0, r2 + rsbs r2, r2, #31 + add r2, r2, r2, lsl #1 + mov r0, #0 + add pc, pc, r2, lsl #2 + mov r0, #0 + cmp r3, r1, lsl #31 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #31 + cmp r3, r1, lsl #30 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #30 + cmp r3, r1, lsl #29 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #29 + cmp r3, r1, lsl #28 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #28 + cmp r3, r1, lsl #27 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #27 + cmp r3, r1, lsl #26 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #26 + cmp r3, r1, lsl #25 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #25 + cmp r3, r1, lsl #24 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #24 + cmp r3, r1, lsl #23 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #23 + cmp r3, r1, lsl #22 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #22 + cmp r3, r1, lsl #21 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #21 + cmp r3, r1, lsl #20 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #20 + cmp r3, r1, lsl #19 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #19 + cmp r3, r1, lsl #18 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #18 + cmp r3, r1, lsl #17 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #17 + cmp r3, r1, lsl #16 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #16 + cmp r3, r1, lsl #15 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #15 + cmp r3, r1, lsl #14 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #14 + cmp r3, r1, lsl #13 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #13 + cmp r3, r1, lsl #12 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #12 + cmp r3, r1, lsl #11 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #11 + cmp r3, r1, lsl #10 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #10 + cmp r3, r1, lsl #9 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #9 + cmp r3, r1, lsl #8 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #8 + cmp r3, r1, lsl #7 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #7 + cmp r3, r1, lsl #6 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #6 + cmp r3, r1, lsl #5 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #5 + cmp r3, r1, lsl #4 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #4 + cmp r3, r1, lsl #3 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #3 + cmp r3, r1, lsl #2 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #2 + cmp r3, r1, lsl #1 + adc r0, r0, r0 + subcs r3, r3, r1, lsl #1 + cmp r3, r1 + adc r0, r0, r0 + subcs r3, r3, r1 + cmp r12, #0 + rsbmi r0, r0, #0 + bx lr +2: + teq r12, r0 + rsbmi r0, r0, #0 + bx lr +3: + movcc r0, #0 + asreq r0, r12, #31 + orreq r0, r0, #1 + bx lr +4: + clz r2, r1 + rsb r2, r2, #31 + cmp r12, #0 + lsr r0, r3, r2 + rsbmi r0, r0, #0 + bx lr +1: + .word Thumb2_DivZero_Handler + .word jdiv_1 + .word jdiv_2 + .word jdiv_3 + .word jdiv_4 + .word jdiv_5 + .word jdiv_6 + .word jdiv_7 + .word jdiv_8 + .word jdiv_9 + .word jdiv_10 + .word jdiv_11 + .word jdiv_12 + .word jdiv_13 + .word jdiv_14 + .word jdiv_15 + .word jdiv_16 + .word jdiv_17 + .word jdiv_18 + .word jdiv_19 + .word jdiv_20 + .word jdiv_21 + .word jdiv_22 + .word jdiv_23 + .word jdiv_24 + .word jdiv_25 + .word jdiv_26 + .word jdiv_27 + .word jdiv_28 + .word jdiv_29 + .word jdiv_30 + .word jdiv_31 + .word jdiv_32 + ALIGN_CODE + .global Thumb2_irem_stub +Thumb2_irem_stub: +int_rem: + cmp r1, #0x21 + adr r3, 1f + ldrcc pc, [r3, r1, lsl #2] + rsblt r1, r1, #0 + subs r2, r1, #1 + beq 2f + movs r12, r0 + rsbmi r0, r0, #0 + cmp r0, r1 + bls 3f + tst r1, r2 + beq 4f + clz r2, r0 + clz r3, r1 + sub r2, r3, r2 + rsbs r2, r2, #31 + add pc, pc, r2, lsl #3 + mov r3, #0 + cmp r0, r1, lsl #31 + subcs r0, r0, r1, lsl #31 + cmp r0, r1, lsl #30 + subcs r0, r0, r1, lsl #30 + cmp r0, r1, lsl #29 + subcs r0, r0, r1, lsl #29 + cmp r0, r1, lsl #28 + subcs r0, r0, r1, lsl #28 + cmp r0, r1, lsl #27 + subcs r0, r0, r1, lsl #27 + cmp r0, r1, lsl #26 + subcs r0, r0, r1, lsl #26 + cmp r0, r1, lsl #25 + subcs r0, r0, r1, lsl #25 + cmp r0, r1, lsl #24 + subcs r0, r0, r1, lsl #24 + cmp r0, r1, lsl #23 + subcs r0, r0, r1, lsl #23 + cmp r0, r1, lsl #22 + subcs r0, r0, r1, lsl #22 + cmp r0, r1, lsl #21 + subcs r0, r0, r1, lsl #21 + cmp r0, r1, lsl #20 + subcs r0, r0, r1, lsl #20 + cmp r0, r1, lsl #19 + subcs r0, r0, r1, lsl #19 + cmp r0, r1, lsl #18 + subcs r0, r0, r1, lsl #18 + cmp r0, r1, lsl #17 + subcs r0, r0, r1, lsl #17 + cmp r0, r1, lsl #16 + subcs r0, r0, r1, lsl #16 + cmp r0, r1, lsl #15 + subcs r0, r0, r1, lsl #15 + cmp r0, r1, lsl #14 + subcs r0, r0, r1, lsl #14 + cmp r0, r1, lsl #13 + subcs r0, r0, r1, lsl #13 + cmp r0, r1, lsl #12 + subcs r0, r0, r1, lsl #12 + cmp r0, r1, lsl #11 + subcs r0, r0, r1, lsl #11 + cmp r0, r1, lsl #10 + subcs r0, r0, r1, lsl #10 + cmp r0, r1, lsl #9 + subcs r0, r0, r1, lsl #9 + cmp r0, r1, lsl #8 + subcs r0, r0, r1, lsl #8 + cmp r0, r1, lsl #7 + subcs r0, r0, r1, lsl #7 + cmp r0, r1, lsl #6 + subcs r0, r0, r1, lsl #6 + cmp r0, r1, lsl #5 + subcs r0, r0, r1, lsl #5 + cmp r0, r1, lsl #4 + subcs r0, r0, r1, lsl #4 + cmp r0, r1, lsl #3 + subcs r0, r0, r1, lsl #3 + cmp r0, r1, lsl #2 + subcs r0, r0, r1, lsl #2 + cmp r0, r1, lsl #1 + subcs r0, r0, r1, lsl #1 + cmp r0, r1 + subcs r0, r0, r1 + cmp r12, #0 + rsbmi r0, r0, #0 + bx lr +2: + mov r0, #0 + bx lr +3: + moveq r0, #0 + cmp r12, #0 + rsbmi r0, r0, #0 + bx lr +4: + and r0, r0, r2 + cmp r12, #0 + rsbmi r0, r0, #0 + bx lr +1: + .word Thumb2_DivZero_Handler + .word jrem_1 + .word jrem_2 + .word jrem_3 + .word jrem_4 + .word jrem_5 + .word jrem_6 + .word jrem_7 + .word jrem_8 + .word jrem_9 + .word jrem_10 + .word jrem_11 + .word jrem_12 + .word jrem_13 + .word jrem_14 + .word jrem_15 + .word jrem_16 + .word jrem_17 + .word jrem_18 + .word jrem_19 + .word jrem_20 + .word jrem_21 + .word jrem_22 + .word jrem_23 + .word jrem_24 + .word jrem_25 + .word jrem_26 + .word jrem_27 + .word jrem_28 + .word jrem_29 + .word jrem_30 + .word jrem_31 + .word jrem_32 + +#ifdef THUMB2EE +@ R0 = BCI +@ R1 = index +#define Rthread r9 + .global Thumb2_invokeinterface_stub +Thumb2_invokeinterface_stub: + stmdb sp!, {ip, lr} + ldr ip, [istate, #ISTATE_METHOD] + sub stack, stack, #4 + ldr r2, [istate, #ISTATE_CONSTANTS] + ldr ip, [ip, #METHOD_CONSTMETHOD] + DECACHE_STACK + add jpc, ip, r0 + + add r0, r2, r1, lsl #4 + DECACHE_JPC + + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0x00ff0000 + cmp r2, #opc_invokeinterface << 16 + bne istub_resolve +2: + ldr r3, [r0, #CP_OFFSET+12] + and r2, r3, #255 + ldr r2, [stack, r2, lsl #2] + cmp r2, #0 + beq istub_null_ptr_exception + ldr tmp2, [r2, #4] @ rcvr->klass() + tst r3, #flag_methodInterface + bne istub_methodInterface + + ldr lr, [r0, #CP_OFFSET+4] @ lr = iclass + + add r1, tmp2, #INSTANCEKLASS_VTABLE_OFFSET + ldr r2, [tmp2, #KLASS_PART+INSTANCEKLASS_VTABLE_LEN] + ldr ip, [tmp2, #KLASS_PART+INSTANCEKLASS_ITABLE_LEN] + add r2, r2, #1 + bic r2, r2, #1 + + add r1, r1, r2, lsl #2 + + mov r2, #0 +1: + cmp r2, ip + beq istub_incompatibleclass_exception + ldr r3, [r1], #8 + add r2, r2, #1 + cmp lr, r3 + bne 1b + + ldr r3, [r0, #CP_OFFSET+8] + ldr r2, [r1, #-4] + add r3, tmp2, r3, lsl #2 + ldr tmp2, [r3, r2] + cmp tmp2, #0 + beq istub_abstractmethod_exception +istub_invoke: + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] + mov r1, #0 + str ip, [istate, #36] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + + add stack, stack, #4 + str stack, [Rthread, #THREAD_JAVA_SP] + + ldr r3, [ip] + + mov r0, tmp2 + mov r1, ip +#ifndef SHARK + add r3, r3, #CODE_ALIGN_SIZE +#endif + mov r2, Rthread + blx r3 + + ldr Rthread, [istate, #ISTATE_THREAD] + + ldr stack, [Rthread, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + + ldr r1, [Rthread, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [Rthread, #THREAD_JAVA_SP] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + ldr r3, [Rthread, #4] + cmp r3, #0 + bne istub_exception + ldmia sp!, {ip, pc} + +istub_methodInterface: + tst r3, #flag_vfinalMethod + ldrne tmp2, [r0, #CP_OFFSET+8] + bne istub_invoke + ldr r1, [r0, #CP_OFFSET+8] + add r3, tmp2, r1, lsl #2 + ldr tmp2, [r3, #INSTANCEKLASS_VTABLE_OFFSET] + b istub_invoke + +istub_resolve: + mov tmp2, r1 + mov r1, #opc_invokeinterface + ldr r0, [istate, #ISTATE_THREAD] + ldr ip, resolve_invoke_adcon + blx ip + ldr r3, [Rthread, #4] + ldr r2, [istate, #ISTATE_CONSTANTS] + cmp r3, #0 + bne istub_exception + add r0, r2, tmp2, lsl #4 @ r1 = cache + b 2b + +istub_exception: + ldmia sp!, {ip, lr} + ldr ip, handle_exception_adcon + bx ip + +istub_null_ptr_exception: + mov r0, #VMSYMBOLS_NullPointerException + b 3f +istub_abstractmethod_exception: + mov r0, #VMSYMBOLS_AbstractMethodError + b 3f +istub_incompatibleclass_exception: + mov r0, #VMSYMBOLS_IncompatibleClassChangeError +3: + CACHE_JPC + ldmia sp!, {ip, lr} + ldr ip, raise_exception_adcon + bx ip + +resolve_invoke_adcon: + .word _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE +resolve_get_put_adcon: + .word _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE +handle_exception_adcon: + .word handle_exception_with_bcp +raise_exception_adcon: + .word raise_exception +helper_aputfield_adcon: + .word Helper_aputfield + +@ R0 = BCI +@ R1 = index + .global Thumb2_invokevirtual_stub +Thumb2_invokevirtual_stub: + stmdb sp!, {ip, lr} + ldr ip, [istate, #ISTATE_METHOD] + sub stack, stack, #4 + ldr r2, [istate, #ISTATE_CONSTANTS] + ldr ip, [ip, #METHOD_CONSTMETHOD] + DECACHE_STACK + add jpc, ip, r0 + + add r0, r2, r1, lsl #4 + DECACHE_JPC + + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0xff000000 + cmp r2, #opc_invokevirtual << 24 + bne ivstub_resolve +2: + + ldr r3, [r0, #CP_OFFSET+12] + and r2, r3, #255 + ldr r2, [stack, r2, asl #2] + cmp r2, #0 + beq istub_null_ptr_exception + + ldr tmp2, [r0, #CP_OFFSET+8] + tst r3, #flag_vfinalMethod + bne 1f + + ldr r3, [r2, #4] + add r3, r3, tmp2, lsl #2 + ldr tmp2, [r3, #INSTANCEKLASS_VTABLE_OFFSET] +1: + mov r1, #0 + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + str ip, [istate, #36] + + add stack, stack, #4 + str stack, [Rthread, #THREAD_JAVA_SP] + + ldr r3, [ip, #0] + + mov r0, tmp2 + mov r1, ip +#ifndef SHARK + add r3, r3, #CODE_ALIGN_SIZE +#endif + mov r2, Rthread + blx r3 + + ldr Rthread, [istate, #ISTATE_THREAD] + + ldr stack, [Rthread, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + + ldr r1, [Rthread, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [Rthread, #THREAD_JAVA_SP] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + ldr r3, [Rthread, #4] + cmp r3, #0 + bne istub_exception + ldmia sp!, {ip, pc} + +ivstub_resolve: + mov tmp2, r1 + mov r1, #opc_invokevirtual + ldr r0, [istate, #ISTATE_THREAD] + ldr ip, resolve_invoke_adcon + blx ip + ldr r3, [Rthread, #4] + ldr r2, [istate, #ISTATE_CONSTANTS] + cmp r3, #0 + bne istub_exception + add r0, r2, tmp2, lsl #4 @ r1 = cache + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_invokestatic_stub +Thumb2_invokestatic_stub: + stmdb sp!, {ip, lr} + ldr ip, [istate, #ISTATE_METHOD] + sub stack, stack, #4 + ldr r2, [istate, #ISTATE_CONSTANTS] + ldr ip, [ip, #METHOD_CONSTMETHOD] + DECACHE_STACK + add jpc, ip, r0 + + add r0, r2, r1, lsl #4 + DECACHE_JPC + + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0x00ff0000 + cmp r2, #opc_invokestatic << 16 + bne isstub_resolve +2: + ldr tmp2, [r0, #CP_OFFSET+4] + mov r1, #0 + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + str ip, [istate, #36] + + add stack, stack, #4 + str stack, [Rthread, #THREAD_JAVA_SP] + + ldr r3, [ip, #0] + + mov r0, tmp2 + mov r1, ip +#ifndef SHARK + add r3, r3, #CODE_ALIGN_SIZE +#endif + mov r2, Rthread + blx r3 + + ldr Rthread, [istate, #ISTATE_THREAD] + + ldr stack, [Rthread, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + + ldr r1, [Rthread, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [Rthread, #THREAD_JAVA_SP] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + ldr r3, [Rthread, #4] + cmp r3, #0 + bne istub_exception + ldmia sp!, {ip, pc} + +isstub_resolve: + mov tmp2, r1 + mov r1, #opc_invokestatic + ldr r0, [istate, #ISTATE_THREAD] + ldr ip, resolve_invoke_adcon + blx ip + ldr r3, [Rthread, #4] + ldr r2, [istate, #ISTATE_CONSTANTS] + cmp r3, #0 + bne istub_exception + add r0, r2, tmp2, lsl #4 @ r1 = cache + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_invokespecial_stub +Thumb2_invokespecial_stub: + stmdb sp!, {ip, lr} + ldr ip, [istate, #ISTATE_METHOD] + sub stack, stack, #4 + ldr r2, [istate, #ISTATE_CONSTANTS] + ldr ip, [ip, #METHOD_CONSTMETHOD] + DECACHE_STACK + add jpc, ip, r0 + + add r0, r2, r1, lsl #4 + DECACHE_JPC + + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0x00ff0000 + cmp r2, #opc_invokespecial << 16 + bne ispstub_resolve +2: + ldr r3, [r0, #CP_OFFSET+12] + and r3, r3, #255 + ldr r2, [stack, r3, asl #2] + cmp r2, #0 + beq istub_null_ptr_exception + + ldr tmp2, [r0, #CP_OFFSET+4] + mov r1, #0 + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + str ip, [istate, #36] + + add stack, stack, #4 + str stack, [Rthread, #THREAD_JAVA_SP] + + ldr r3, [ip, #0] + + mov r0, tmp2 + mov r1, ip +#ifndef SHARK + add r3, r3, #CODE_ALIGN_SIZE +#endif + mov r2, Rthread + blx r3 + + ldr Rthread, [istate, #ISTATE_THREAD] + + ldr stack, [Rthread, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + + ldr r1, [Rthread, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [Rthread, #THREAD_JAVA_SP] + str r1, [Rthread, #THREAD_LAST_JAVA_SP] + ldr r3, [Rthread, #4] + cmp r3, #0 + bne istub_exception + ldmia sp!, {ip, pc} + +ispstub_resolve: + mov tmp2, r1 + mov r1, #opc_invokespecial + ldr r0, [istate, #ISTATE_THREAD] + ldr ip, resolve_invoke_adcon + blx ip + ldr r3, [Rthread, #4] + ldr r2, [istate, #ISTATE_CONSTANTS] + cmp r3, #0 + bne istub_exception + add r0, r2, tmp2, lsl #4 @ r1 = cache + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_getfield_word_stub +Thumb2_getfield_word_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getfield << 16 + bne 1f +2: + ldr r3, [stack], #4 @ POP r3 + ldr ip, [r2, #CP_OFFSET+8] + cmp r3, #0 + beq field_null_ptr_exception + + ldr r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getfield_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_getfield_sh_stub +Thumb2_getfield_sh_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getfield << 16 + bne 1f +2: + ldr r3, [stack], #4 @ POP r3 + ldr ip, [r2, #CP_OFFSET+8] + cmp r3, #0 + beq field_null_ptr_exception + + ldrsh r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getfield_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_getfield_h_stub +Thumb2_getfield_h_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getfield << 16 + bne 1f +2: + ldr r3, [stack], #4 @ POP r3 + ldr ip, [r2, #CP_OFFSET+8] + cmp r3, #0 + beq field_null_ptr_exception + + ldrh r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getfield_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_getfield_sb_stub +Thumb2_getfield_sb_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getfield << 16 + bne 1f +2: + ldr r3, [stack], #4 @ POP r3 + ldr ip, [r2, #CP_OFFSET+8] + cmp r3, #0 + beq field_null_ptr_exception + + ldrsb r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getfield_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_getfield_dw_stub +Thumb2_getfield_dw_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getfield << 16 + bne 1f +2: + ldr r3, [stack], #4 @ POP r3 + ldr ip, [r2, #CP_OFFSET+8] + cmp r3, #0 + beq field_null_ptr_exception + + ldrd r2, r3, [r3, ip] + stmdb stack!, {r2, r3} @ PUSH r2, r3 + bx lr +1: + mov ip, lr + bl getfield_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index +putstatic_stub_unresolved: + mov r2, #opc_putstatic + b field_stub_unresolved +getstatic_stub_unresolved: + mov r2, #opc_getstatic + b field_stub_unresolved +putfield_stub_unresolved: + mov r2, #opc_putfield + b field_stub_unresolved +getfield_stub_unresolved: + mov r2, #opc_getfield +field_stub_unresolved: + stmdb sp!, {r0, r1, ip, lr} + ldr ip, [istate, #ISTATE_METHOD] + sub r3, stack, #4 + ldr ip, [ip, #METHOD_CONSTMETHOD] + str r3, [istate, #ISTATE_STACK] @ DECACHE_STACK + add r3, ip, r0 + str r3, [istate, #ISTATE_BCP] @ DECACHE_JPC + ldr ip, resolve_get_put_adcon + mov r1, r2 + ldr r0, [istate, #ISTATE_THREAD] + blx ip + ldmia sp!, {r0, r1, ip, lr} + ldr r3, [Rthread, #4] + ldr r2, [istate, #ISTATE_CONSTANTS] + cmp r3, #0 + bne field_exception + add r2, r2, r1, lsl #4 + bx lr + +field_null_ptr_exception: + ldr ip, [istate, #ISTATE_METHOD] + ldr ip, [ip, #METHOD_CONSTMETHOD] + add jpc, ip, r0 + mov r0, #VMSYMBOLS_NullPointerException + ldr ip, raise_exception_adcon + bx ip + +field_exception: + ldr ip, handle_exception_adcon + bx ip + +@ R0 = BCI +@ R1 = index + .global Thumb2_putfield_word_stub +Thumb2_putfield_word_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putfield << 24 + bne 1f +2: + ldr ip, [r2, #CP_OFFSET+8] + ldmia stack!, {r2, r3} @ r2 = value, r3 = obj + cmp r3, #0 + beq field_null_ptr_exception + + str r2, [r3, ip] + bx lr +1: + mov ip, lr + bl putfield_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_putfield_h_stub +Thumb2_putfield_h_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putfield << 24 + bne 1f +2: + ldr ip, [r2, #CP_OFFSET+8] + ldmia stack!, {r2, r3} @ r2 = value, r3 = obj + cmp r3, #0 + beq field_null_ptr_exception + + strh r2, [r3, ip] + bx lr +1: + mov ip, lr + bl putfield_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_putfield_b_stub +Thumb2_putfield_b_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putfield << 24 + bne 1f +2: + ldr ip, [r2, #CP_OFFSET+8] + ldmia stack!, {r2, r3} @ r2 = value, r3 = obj + cmp r3, #0 + beq field_null_ptr_exception + + strb r2, [r3, ip] + bx lr +1: + mov ip, lr + bl putfield_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_putfield_a_stub +Thumb2_putfield_a_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putfield << 24 + bne 1f +2: + ldr ip, [r2, #CP_OFFSET+8] + ldmia stack!, {r2, r3} @ r2 = value, r3 = obj + cmp r3, #0 + beq field_null_ptr_exception + + str r2, [r3, ip] + ldr ip, helper_aputfield_adcon + mov r0, r3 + bx ip +1: + mov ip, lr + bl putfield_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_putfield_dw_stub +Thumb2_putfield_dw_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putfield << 24 + bne 1f +2: + ldr r1, [r2, #CP_OFFSET+8] + ldmia stack!, {r2, r3, ip} @ r2,r3 = value, ip = obj + cmp ip, #0 + beq field_null_ptr_exception + + strd r2,r3, [ip, r1] + bx lr +1: + mov ip, lr + bl putfield_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_getstatic_word_stub +Thumb2_getstatic_word_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getstatic << 16 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + + ldr r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getstatic_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_getstatic_h_stub +Thumb2_getstatic_h_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getstatic << 16 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + + ldrh r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getstatic_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_getstatic_sh_stub +Thumb2_getstatic_sh_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getstatic << 16 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + + ldrsh r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getstatic_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_getstatic_sb_stub +Thumb2_getstatic_sb_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getstatic << 16 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + + ldrsb r3, [r3, ip] + str r3, [stack, #-4]! @ PUSH r3 + bx lr +1: + mov ip, lr + bl getstatic_stub_unresolved + mov lr, ip + b 2b + + .global Thumb2_getstatic_dw_stub +Thumb2_getstatic_dw_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0x00ff0000 + cmp r3, #opc_getstatic << 16 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + + ldrd r2, r3, [r3, ip] + stmdb stack!, {r2, r3} @ PUSH r2, r3 + bx lr +1: + mov ip, lr + bl getstatic_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_putstatic_word_stub +Thumb2_putstatic_word_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putstatic << 24 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + ldr r2, [stack], #4 @ POP r2 + + str r2, [r3, ip] + bx lr +1: + mov ip, lr + bl putstatic_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_putstatic_h_stub +Thumb2_putstatic_h_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putstatic << 24 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + ldr r2, [stack], #4 @ POP r2 + + strh r2, [r3, ip] + bx lr +1: + mov ip, lr + bl putstatic_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_putstatic_b_stub +Thumb2_putstatic_b_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putstatic << 24 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + ldr r2, [stack], #4 @ POP r2 + + strb r2, [r3, ip] + bx lr +1: + mov ip, lr + bl putstatic_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_putstatic_dw_stub +Thumb2_putstatic_dw_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putstatic << 24 + bne 1f +2: + ldr r1, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + ldmia stack!, {r2, r3} + + strd r2,r3, [r1, ip] + bx lr +1: + mov ip, lr + bl putstatic_stub_unresolved + mov lr, ip + b 2b + +@ R0 = BCI +@ R1 = index + .global Thumb2_putstatic_a_stub +Thumb2_putstatic_a_stub: + ldr r2, [istate, #ISTATE_CONSTANTS] + add r2, r2, r1, lsl #4 + ldr r3, [r2, #CP_OFFSET] + and r3, r3, #0xff000000 + cmp r3, #opc_putstatic << 24 + bne 1f +2: + ldr r3, [r2, #CP_OFFSET+4] + ldr ip, [r2, #CP_OFFSET+8] + ldr r2, [stack], #4 @ POP r2 + + str r2, [r3, ip] + ldr ip, helper_aputfield_adcon + mov r0, r3 + bx ip +1: + mov ip, lr + bl putstatic_stub_unresolved + mov lr, ip + b 2b + +#endif // THUMB2EE + + .global Thumb2_stubs_end +Thumb2_stubs_end: + + ALIGN_CODE +jdiv_1: + bx lr +jdiv_2: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + bx lr +jdiv_24: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_12: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_6: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_3: + ldr r1, dc_3 + smull r3, r2, r0, r1 + sub r0, r2, r0, asr #31 + bx lr +jdiv_4: + mov r1, r0, asr #31 + add r0, r0, r1, lsr #30 + mov r0, r0, asr #2 + bx lr +jdiv_20: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_10: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_5: + ldr r1, dc_5 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #1 + bx lr +jdiv_28: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_14: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_7: + ldr r1, dc_7 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r0, r1, r3, asr #2 + bx lr +jdiv_8: + mov r1, r0, asr #31 + add r0, r0, r1, lsr #29 + mov r0, r0, asr #3 + bx lr +jdiv_18: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_9: + ldr r1, dc_9 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #1 + bx lr +jdiv_22: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_11: + ldr r1, dc_11 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #1 + bx lr +jdiv_26: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_13: + ldr r1, dc_13 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #2 + bx lr +jdiv_30: + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 +jdiv_15: + ldr r1, dc_15 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r0, r1, r3, asr #3 + bx lr +jdiv_16: + mov r1, r0, asr #31 + add r0, r0, r1, lsr #28 + mov r0, r0, asr #4 + bx lr +jdiv_17: + ldr r1, dc_17 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #3 + bx lr +jdiv_19: + ldr r1, dc_19 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #3 + bx lr +jdiv_21: + ldr r1, dc_21 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #2 + bx lr +jdiv_23: + ldr r1, dc_23 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r0, r1, r3, asr #4 + bx lr +jdiv_25: + ldr r1, dc_25 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #3 + bx lr +jdiv_27: + ldr r1, dc_27 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r0, r3, r2, asr #3 + bx lr +jdiv_29: + ldr r1, dc_29 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r0, r1, r3, asr #4 + bx lr +jdiv_31: + ldr r1, dc_31 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r0, r1, r3, asr #4 + bx lr +jdiv_32: + mov r1, r0, asr #31 + add r0, r0, r1, lsr #27 + mov r0, r0, asr #5 + bx lr +jrem_1: + mov r0, #0 + bx lr +jrem_2: + add r3, r0, r0, lsr #31 + mov r1, r3, asr #1 + sub r0, r0, r1, lsl #1 + bx lr +jrem_3: + ldr r1, dc_3 + smull r3, r2, r0, r1 + sub r1, r2, r0, asr #31 + add r3, r1, r1, lsl #1 + sub r0, r0, r3 + bx lr +jrem_4: + movs r3, r0 + addmi r3, r3, #3 + mov r1, r3, asr #2 + sub r0, r0, r1, lsl #2 + bx lr +jrem_5: + ldr r1, dc_5 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #1 + add r3, r1, r1, lsl #2 + sub r0, r0, r3 + bx lr +jrem_6: + ldr r1, dc_6 + smull r3, r2, r0, r1 + sub r1, r2, r0, asr #31 + add r3, r1, r1, lsl #1 + sub r0, r0, r3, lsl #1 + bx lr +jrem_7: + ldr r1, dc_7 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #2 + rsb r3, r1, r1, lsl #3 + sub r0, r0, r3 + bx lr +jrem_8: + movs r3, r0 + addmi r3, r3, #7 + mov r1, r3, asr #3 + sub r0, r0, r1, lsl #3 + bx lr +jrem_9: + ldr r1, dc_9 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #1 + add r3, r1, r1, lsl #3 + sub r0, r0, r3 + bx lr +jrem_10: + ldr r1, dc_10 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #2 + add r3, r1, r1, lsl #2 + sub r0, r0, r3, lsl #1 + bx lr +jrem_11: + ldr r1, dc_11 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #1 + add r3, r1, r1, lsl #2 + add r3, r1, r3, lsl #1 + sub r0, r0, r3 + bx lr +jrem_12: + ldr r1, dc_12 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #1 + add r3, r1, r1, lsl #1 + sub r0, r0, r3, lsl #2 + bx lr +jrem_13: + ldr r1, dc_13 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #2 + add r3, r1, r1, lsl #1 + add r3, r1, r3, lsl #2 + sub r0, r0, r3 + bx lr +jrem_14: + ldr r1, dc_14 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #3 + rsb r3, r1, r1, lsl #3 + sub r0, r0, r3, lsl #1 + bx lr +jrem_15: + ldr r1, dc_15 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #3 + rsb r3, r1, r1, lsl #4 + sub r0, r0, r3 + bx lr +jrem_16: + movs r3, r0 + addmi r3, r3, #15 + mov r1, r3, asr #4 + sub r0, r0, r1, lsl #4 + bx lr +jrem_17: + ldr r1, dc_17 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #3 + add r3, r1, r1, lsl #4 + sub r0, r0, r3 + bx lr +jrem_18: + ldr r1, dc_18 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #2 + add r3, r1, r1, lsl #3 + sub r0, r0, r3, lsl #1 + bx lr +jrem_19: + ldr r1, dc_19 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #3 + add r3, r1, r1, lsl #3 + add r3, r1, r3, lsl #1 + sub r0, r0, r3 + bx lr +jrem_20: + ldr r1, dc_20 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #3 + add r3, r1, r1, lsl #2 + sub r0, r0, r3, lsl #2 + bx lr +jrem_21: + ldr r1, dc_21 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #2 + add r3, r1, r1, lsl #1 + rsb r3, r3, r3, lsl #3 + sub r0, r0, r3 + bx lr +jrem_22: + ldr r1, dc_22 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #2 + add r3, r1, r1, lsl #2 + add r3, r1, r3, lsl #1 + sub r0, r0, r3, lsl #1 + bx lr +jrem_23: + ldr r1, dc_23 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #4 + add r3, r1, r1, lsl #1 + rsb r3, r1, r3, lsl #3 + sub r0, r0, r3 + bx lr +jrem_24: + ldr r1, dc_24 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #2 + add r3, r1, r1, lsl #1 + sub r0, r0, r3, lsl #3 + bx lr +jrem_25: + ldr r1, dc_25 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #3 + add r3, r1, r1, lsl #2 + add r3, r3, r3, lsl #2 + sub r0, r0, r3 + bx lr +jrem_26: + ldr r1, dc_26 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #3 + add r3, r1, r1, lsl #1 + add r3, r1, r3, lsl #2 + sub r0, r0, r3, lsl #1 + bx lr +jrem_27: + ldr r1, dc_27 + smull r3, r2, r0, r1 + mov r3, r0, asr #31 + rsb r1, r3, r2, asr #3 + add r3, r1, r1, lsl #1 + add r3, r3, r3, lsl #3 + sub r0, r0, r3 + bx lr +jrem_28: + ldr r1, dc_28 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #4 + rsb r3, r1, r1, lsl #3 + sub r0, r0, r3, lsl #2 + bx lr +jrem_29: + ldr r1, dc_29 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #4 + rsb r3, r1, r1, lsl #3 + add r3, r1, r3, lsl #2 + sub r0, r0, r3 + bx lr +jrem_30: + ldr r1, dc_30 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #4 + rsb r3, r1, r1, lsl #4 + sub r0, r0, r3, lsl #1 + bx lr +jrem_31: + ldr r1, dc_31 + smull r3, r2, r0, r1 + mov r1, r0, asr #31 + add r3, r0, r2 + rsb r1, r1, r3, asr #4 + rsb r3, r1, r1, lsl #5 + sub r0, r0, r3 + bx lr +jrem_32: + movs r3, r0 + addmi r3, r3, #31 + mov r1, r3, asr #5 + sub r0, r0, r1, lsl #5 + bx lr + ALIGN_DATA +dc_7: +dc_14: + .word 0x92492493 +dc_15: +dc_30: + .word 0x88888889 +dc_23: + .word 0xb21642c9 +dc_28: + .word 0x92492493 +dc_29: + .word 0x8d3dcb09 +dc_31: + .word 0x84210843 +dc_6: +dc_12: +dc_24: + .word 0x2aaaaaab +dc_19: + .word 0x6bca1af3 +dc_5: +dc_10: +dc_20: + .word 0x66666667 +dc_21: + .word 0x30c30c31 +dc_11: +dc_22: + .word 0x2e8ba2e9 +dc_26: +dc_13: + .word 0x4ec4ec4f +dc_25: + .word 0x51eb851f +dc_27: + .word 0x4bda12f7 +dc_3: + .word 0x55555556 +dc_17: + .word 0x78787879 +dc_9: +dc_18: + .word 0x38e38e39 + + .global Thumb2_DivZero_Handler +Thumb2_DivZero_Handler: + adrl r0, idiv_clz_ret + cmp r0, lr + addne r0, r0, #irem_clz_ret - idiv_clz_ret + cmpne r0, lr + beq divide_by_zero_exception + ldr r0, [istate, #ISTATE_METHOD] + ldr jpc, [r0, #METHOD_CONSTMETHOD] + add jpc, jpc, #CONSTMETHOD_CODEOFFSET + bl load_dispatch + b divide_by_zero_exception + +#ifdef THUMB2EE + + .global Thumb2_Handle_Exception + .global Thumb2_ArrayBounds_Handler + .global Thumb2_NullPtr_Handler +Thumb2_ArrayBounds_Handler: + ldr r0, [istate, #ISTATE_METHOD] + ldr jpc, [r0, #METHOD_CONSTMETHOD] + add jpc, jpc, #CONSTMETHOD_CODEOFFSET + bl load_dispatch + mov r0, #VMSYMBOLS_ArrayIndexOutOfBounds + b raise_exception +Thumb2_Handle_Exception: + ldr r0, [istate, #ISTATE_METHOD] + ldr jpc, [r0, #METHOD_CONSTMETHOD] + add jpc, jpc, #CONSTMETHOD_CODEOFFSET + bl load_dispatch + b handle_exception + + .global Thumb2_Exit_To_Interpreter +Thumb2_Exit_To_Interpreter: + bl load_dispatch + sub stack, stack, #4 + CACHE_CP + CACHE_LOCALS + DISPATCH 0 + +Thumb2_NullPtr_Handler: + ldr r0, [istate, #ISTATE_METHOD] + ldr jpc, [r0, #METHOD_CONSTMETHOD] + add jpc, jpc, #CONSTMETHOD_CODEOFFSET + bl load_dispatch + b null_ptr_exception + + .global Thumb2_Clear_Cache +Thumb2_Clear_Cache: + stmdb sp!, {r7} + mov r2, #0 + mov r7, #2 + orr r7, r7, #0xf0000 + svc 0 + ldmia sp!, {r7} + bx lr + +#endif // THUMB2EE + + .section .init_array,"aw",%init_array + .word bci_init(target1) + + .data + .global CPUInfo + ALIGN_DATA .word 0, 0, 0, 0, 0, 0, 0, 0 .word 0, 0, 0, 0, 0 DispatchBreakPoint: .word 0 -VFP_Flag: .word 0 +CPUInfo: .word 0 CodeTrace_Idx: .word 0 UseOnStackReplacement_Address: .word 0 BackgroundCompilation_Address: .word 0 diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/thumb2.cpp new/icedtea6/ports/hotspot/src/cpu/zero/vm/thumb2.cpp --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/thumb2.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/thumb2.cpp 2010-01-19 15:42:03.000000000 +0000 @@ -0,0 +1,7141 @@ +#ifdef THUMB2EE + +#define T2EE_PRINT_COMPILATION +#define T2EE_PRINT_STATISTICS +//#define T2EE_PRINT_DISASS +#define T2EE_PRINT_REGUSAGE + +#ifdef T2EE_PRINT_COMPILATION +static char *t2ee_print_compilation; +#endif + +#ifdef T2EE_PRINT_STATISTICS +static char *t2ee_print_statistics; +#endif + +#ifdef T2EE_PRINT_DISASS +static char *t2ee_print_disass; +#endif + +#ifdef T2EE_PRINT_REGUSAGE +static char *t2ee_print_regusage; +#endif + +#define THUMB2_CODEBUF_SIZE (8 * 1024 * 1024) + +#include + +#include "incls/_precompiled.incl" + +#ifdef T2EE_PRINT_DISASS +#include "dis-asm.h" +#include "bfd.h" +#endif + +#define opc_nop 0x00 +#define opc_aconst_null 0x01 +#define opc_iconst_m1 0x02 +#define opc_iconst_0 0x03 +#define opc_iconst_1 0x04 +#define opc_iconst_2 0x05 +#define opc_iconst_3 0x06 +#define opc_iconst_4 0x07 +#define opc_iconst_5 0x08 +#define opc_lconst_0 0x09 +#define opc_lconst_1 0x0a +#define opc_fconst_0 0x0b +#define opc_fconst_1 0x0c +#define opc_fconst_2 0x0d +#define opc_dconst_0 0x0e +#define opc_dconst_1 0x0f +#define opc_bipush 0x10 +#define opc_sipush 0x11 +#define opc_ldc 0x12 +#define opc_ldc_w 0x13 +#define opc_ldc2_w 0x14 +#define opc_iload 0x15 +#define opc_lload 0x16 +#define opc_fload 0x17 +#define opc_dload 0x18 +#define opc_aload 0x19 +#define opc_iload_0 0x1a +#define opc_iload_1 0x1b +#define opc_iload_2 0x1c +#define opc_iload_3 0x1d +#define opc_lload_0 0x1e +#define opc_lload_1 0x1f +#define opc_lload_2 0x20 +#define opc_lload_3 0x21 +#define opc_fload_0 0x22 +#define opc_fload_1 0x23 +#define opc_fload_2 0x24 +#define opc_fload_3 0x25 +#define opc_dload_0 0x26 +#define opc_dload_1 0x27 +#define opc_dload_2 0x28 +#define opc_dload_3 0x29 +#define opc_aload_0 0x2a +#define opc_aload_1 0x2b +#define opc_aload_2 0x2c +#define opc_aload_3 0x2d +#define opc_iaload 0x2e +#define opc_laload 0x2f +#define opc_faload 0x30 +#define opc_daload 0x31 +#define opc_aaload 0x32 +#define opc_baload 0x33 +#define opc_caload 0x34 +#define opc_saload 0x35 +#define opc_istore 0x36 +#define opc_lstore 0x37 +#define opc_fstore 0x38 +#define opc_dstore 0x39 +#define opc_astore 0x3a +#define opc_istore_0 0x3b +#define opc_istore_1 0x3c +#define opc_istore_2 0x3d +#define opc_istore_3 0x3e +#define opc_lstore_0 0x3f +#define opc_lstore_1 0x40 +#define opc_lstore_2 0x41 +#define opc_lstore_3 0x42 +#define opc_fstore_0 0x43 +#define opc_fstore_1 0x44 +#define opc_fstore_2 0x45 +#define opc_fstore_3 0x46 +#define opc_dstore_0 0x47 +#define opc_dstore_1 0x48 +#define opc_dstore_2 0x49 +#define opc_dstore_3 0x4a +#define opc_astore_0 0x4b +#define opc_astore_1 0x4c +#define opc_astore_2 0x4d +#define opc_astore_3 0x4e +#define opc_iastore 0x4f +#define opc_lastore 0x50 +#define opc_fastore 0x51 +#define opc_dastore 0x52 +#define opc_aastore 0x53 +#define opc_bastore 0x54 +#define opc_castore 0x55 +#define opc_sastore 0x56 +#define opc_pop 0x57 +#define opc_pop2 0x58 +#define opc_dup 0x59 +#define opc_dup_x1 0x5a +#define opc_dup_x2 0x5b +#define opc_dup2 0x5c +#define opc_dup2_x1 0x5d +#define opc_dup2_x2 0x5e +#define opc_swap 0x5f +#define opc_iadd 0x60 +#define opc_ladd 0x61 +#define opc_fadd 0x62 +#define opc_dadd 0x63 +#define opc_isub 0x64 +#define opc_lsub 0x65 +#define opc_fsub 0x66 +#define opc_dsub 0x67 +#define opc_imul 0x68 +#define opc_lmul 0x69 +#define opc_fmul 0x6a +#define opc_dmul 0x6b +#define opc_idiv 0x6c +#define opc_ldiv 0x6d +#define opc_fdiv 0x6e +#define opc_ddiv 0x6f +#define opc_irem 0x70 +#define opc_lrem 0x71 +#define opc_frem 0x72 +#define opc_drem 0x73 +#define opc_ineg 0x74 +#define opc_lneg 0x75 +#define opc_fneg 0x76 +#define opc_dneg 0x77 +#define opc_ishl 0x78 +#define opc_lshl 0x79 +#define opc_ishr 0x7a +#define opc_lshr 0x7b +#define opc_iushr 0x7c +#define opc_lushr 0x7d +#define opc_iand 0x7e +#define opc_land 0x7f +#define opc_ior 0x80 +#define opc_lor 0x81 +#define opc_ixor 0x82 +#define opc_lxor 0x83 +#define opc_iinc 0x84 +#define opc_i2l 0x85 +#define opc_i2f 0x86 +#define opc_i2d 0x87 +#define opc_l2i 0x88 +#define opc_l2f 0x89 +#define opc_l2d 0x8a +#define opc_f2i 0x8b +#define opc_f2l 0x8c +#define opc_f2d 0x8d +#define opc_d2i 0x8e +#define opc_d2l 0x8f +#define opc_d2f 0x90 +#define opc_i2b 0x91 +#define opc_i2c 0x92 +#define opc_i2s 0x93 +#define opc_lcmp 0x94 +#define opc_fcmpl 0x95 +#define opc_fcmpg 0x96 +#define opc_dcmpl 0x97 +#define opc_dcmpg 0x98 +#define opc_ifeq 0x99 +#define opc_ifne 0x9a +#define opc_iflt 0x9b +#define opc_ifge 0x9c +#define opc_ifgt 0x9d +#define opc_ifle 0x9e +#define opc_if_icmpeq 0x9f +#define opc_if_icmpne 0xa0 +#define opc_if_icmplt 0xa1 +#define opc_if_icmpge 0xa2 +#define opc_if_icmpgt 0xa3 +#define opc_if_icmple 0xa4 +#define opc_if_acmpeq 0xa5 +#define opc_if_acmpne 0xa6 +#define opc_goto 0xa7 +#define opc_jsr 0xa8 +#define opc_ret 0xa9 +#define opc_tableswitch 0xaa +#define opc_lookupswitch 0xab +#define opc_ireturn 0xac +#define opc_lreturn 0xad +#define opc_freturn 0xae +#define opc_dreturn 0xaf +#define opc_areturn 0xb0 +#define opc_return 0xb1 +#define opc_getstatic 0xb2 +#define opc_putstatic 0xb3 +#define opc_getfield 0xb4 +#define opc_putfield 0xb5 +#define opc_invokevirtual 0xb6 +#define opc_invokespecial 0xb7 +#define opc_invokestatic 0xb8 +#define opc_invokeinterface 0xb9 +#define opc_new 0xbb +#define opc_newarray 0xbc +#define opc_anewarray 0xbd +#define opc_arraylength 0xbe +#define opc_athrow 0xbf +#define opc_checkcast 0xc0 +#define opc_instanceof 0xc1 +#define opc_monitorenter 0xc2 +#define opc_monitorexit 0xc3 +#define opc_wide 0xc4 +#define opc_multianewarray 0xc5 +#define opc_ifnull 0xc6 +#define opc_ifnonnull 0xc7 +#define opc_goto_w 0xc8 +#define opc_jsr_w 0xc9 +#define opc_breakpoint 0xca + +#define OPC_LAST_JAVA_OP 0xca + +#define opc_bgetfield 0xcc +#define opc_cgetfield 0xcd +#define opc_igetfield 0xd0 +#define opc_lgetfield 0xd1 +#define opc_sgetfield 0xd2 +#define opc_aputfield 0xd3 +#define opc_bputfield 0xd4 +#define opc_cputfield 0xd5 +#define opc_iputfield 0xd8 +#define opc_lputfield 0xd9 +#define opc_iaccess_0 0xdb +#define opc_iaccess_1 0xdc +#define opc_iaccess_2 0xdd +#define opc_iaccess_3 0xde +#define opc_invokeresolved 0xdf +#define opc_invokespecialresolved 0xe0 +#define opc_invokestaticresolved 0xe1 +#define opc_invokevfinal 0xe2 +#define opc_iload_iload 0xe3 +#define opc_iload_iload_N 0xe4 +#define opc_return_register_finalizer 0xe5 +#define opc_dmac 0xe6 +#define opc_iload_0_iconst_N 0xe7 +#define opc_iload_1_iconst_N 0xe8 +#define opc_iload_2_iconst_N 0xe9 +#define opc_iload_3_iconst_N 0xea +#define opc_iload_iconst_N 0xeb +#define opc_iadd_istore_N 0xec +#define opc_isub_istore_N 0xed +#define opc_iand_istore_N 0xee +#define opc_ior_istore_N 0xef +#define opc_ixor_istore_N 0xf0 +#define opc_iadd_u4store 0xf1 +#define opc_isub_u4store 0xf2 +#define opc_iand_u4store 0xf3 +#define opc_ior_u4store 0xf4 +#define opc_ixor_u4store 0xf5 +#define opc_iload_0_iload 0xf6 +#define opc_iload_1_iload 0xf7 +#define opc_iload_2_iload 0xf8 +#define opc_iload_3_iload 0xf9 +#define opc_iload_0_iload_N 0xfa +#define opc_iload_1_iload_N 0xfb +#define opc_iload_2_iload_N 0xfc +#define opc_iload_3_iload_N 0xfd + +#define H_IREM 0 +#define H_IDIV 1 +#define H_LDIV 2 +#define H_LREM 3 +#define H_FREM 4 +#define H_DREM 5 +#define H_LDC 6 +#define H_NEW 8 +#define H_I2F 9 +#define H_I2D 10 +#define H_L2F 11 +#define H_L2D 12 +#define H_F2I 13 +#define H_F2L 14 +#define H_F2D 15 +#define H_D2I 16 +#define H_D2L 17 +#define H_D2F 18 +#define H_NEWARRAY 19 +#define H_ANEWARRAY 20 +#define H_MULTIANEWARRAY 21 +#define H_INSTANCEOF 22 +#define H_CHECKCAST 23 +#define H_AASTORE 24 +#define H_APUTFIELD 25 +#define H_SYNCHRONIZED_ENTER 26 +#define H_SYNCHRONIZED_EXIT 27 + +#define H_EXIT_TO_INTERPRETER 28 + +#define H_GETSTATIC H_EXIT_TO_INTERPRETER +#define H_PUTSTATIC H_EXIT_TO_INTERPRETER +#define H_JSR H_EXIT_TO_INTERPRETER +#define H_RET H_EXIT_TO_INTERPRETER +#define H_ZOMBIE H_EXIT_TO_INTERPRETER +#define H_MONITOR H_EXIT_TO_INTERPRETER +#define H_ATHROW H_EXIT_TO_INTERPRETER + +#define H_HANDLE_EXCEPTION 29 +#define H_ARRAYBOUND 30 +#define H_UNKNOWN 31 + +#define H_DEBUG_METHODENTRY 32 +#define H_DEBUG_METHODEXIT 33 +#define H_DEBUG_METHODCALL 34 + +#define H_INVOKEINTERFACE 35 +#define H_INVOKEVIRTUAL 36 +#define H_INVOKESTATIC 37 +#define H_INVOKESPECIAL 38 + +#define H_GETFIELD_WORD 39 +#define H_GETFIELD_SH 40 +#define H_GETFIELD_H 41 +#define H_GETFIELD_SB 42 +#define H_GETFIELD_DW 43 + +#define H_PUTFIELD_WORD 44 +#define H_PUTFIELD_H 45 +#define H_PUTFIELD_B 46 +#define H_PUTFIELD_A 47 +#define H_PUTFIELD_DW 48 + +#define H_GETSTATIC_WORD 49 +#define H_GETSTATIC_SH 50 +#define H_GETSTATIC_H 51 +#define H_GETSTATIC_SB 52 +#define H_GETSTATIC_DW 53 + +#define H_PUTSTATIC_WORD 54 +#define H_PUTSTATIC_H 55 +#define H_PUTSTATIC_B 56 +#define H_PUTSTATIC_A 57 +#define H_PUTSTATIC_DW 58 + +unsigned handlers[59]; + +#define JASSERT(cond, msg) do { if (!(cond)) fatal(msg); } while (0) +#define J_Unimplemented() { report_unimplemented(__FILE__, __LINE__); BREAKPOINT; } + +#define GET_NATIVE_U2(p) (*(unsigned short *)(p)) + +#define GET_JAVA_S1(p) (((signed char *)(p))[0]) +#define GET_JAVA_S2(p) ((((signed char *)(p))[0] << 8) + (p)[1]) +#define GET_JAVA_U2(p) (((p)[0] << 8) + (p)[1]) +#define GET_JAVA_U4(p) (((p)[0] << 24) + ((p)[1] << 16) + ((p)[2] << 8) + (p)[3]) + +#define BYTESEX_REVERSE(v) (((v)<<24) | (((v)<<8) & 0xff0000) | (((v)>>8) & 0xff00) | ((v)>>24)) +#define BYTESEX_REVERSE_U2(v) (((v)<<8) | ((v)>>8)) + +typedef struct Thumb2_CodeBuf { + unsigned size; + char *sp; + char *hp; +} Thumb2_CodeBuf; + +Thumb2_CodeBuf *thumb2_codebuf; + +unsigned bc_stackinfo[8000]; +unsigned locals_info[1000]; +unsigned stack[1000]; +unsigned r_local[1000]; + +#ifdef T2EE_PRINT_DISASS +short start_bci[65000]; +short end_bci[65000]; +#endif + +// XXX hardwired constants! +#define ENTRY_FRAME 1 +#define INTERPRETER_FRAME 2 +#define SHARK_FRAME 3 +#define FAKE_STUB_FRAME 4 + +#include "offsets_arm.s" + +#define BC_FLAGS_MASK 0xfc000000 +#define BC_VISITED_P1 0x80000000 +#define BC_BRANCH_TARGET 0x40000000 +#define BC_COMPILED 0x20000000 +#define BC_VISITED_P2 0x10000000 +#define BC_ZOMBIE 0x08000000 +#define BC_BACK_TARGET 0x04000000 + +#define IS_DEAD(x) (((x) & BC_VISITED_P1) == 0) +#define IS_ZOMBIE(x) (((x) & BC_ZOMBIE) || ((x) & BC_VISITED_P2) == 0) + +#define LOCAL_MODIFIED 31 +#define LOCAL_REF 30 +#define LOCAL_DOUBLE 29 +#define LOCAL_FLOAT 28 +#define LOCAL_LONG 27 +#define LOCAL_INT 26 +#define LOCAL_ALLOCATED 25 + +#define LOCAL_COUNT_BITS 10 +#define LOCAL_READ_POS 0 +#define LOCAL_WRITE_POS LOCAL_COUNT_BITS + +#define LOCAL_READS(x) (((x) >> LOCAL_READ_POS) & ((1<> LOCAL_WRITE_POS) & ((1<>= 16; + if ((n & 0xff) == 0) r += 8, n >>= 8; + if ((n & 0xf) == 0) r += 4, n >>= 4; + if ((n & 3) == 0) r += 2, n >>= 2; + if ((n & 1) == 0) r += 1; + return r; +} + +typedef struct CodeBuf { + unsigned short *codebuf; + unsigned idx; +} CodeBuf; + +typedef struct Thumb2_Stack { + unsigned *stack; + unsigned depth; +} Thumb2_Stack; + +#define IS_SREG(r) ((r) < STACK_REGS) + +typedef struct Thumb2_Registers { + unsigned *r_local; +} Thumb2_Registers; + +typedef struct Thumb2_Info { + JavaThread *thread; + methodOop method; + unsigned *bc_stackinfo; + unsigned *locals_info; + jubyte *code_base; + unsigned code_size; + CodeBuf *codebuf; + Thumb2_Stack *jstack; + Thumb2_Registers *jregs; + unsigned compiled_return; + unsigned zombie_bytes; +} Thumb2_Info; + +#define IS_INT_SIZE_BASE_TYPE(c) (c=='B' || c=='C' || c=='F' || c=='I' || c=='S' || c=='Z') +#define IS_INT_SIZE_TYPE(c) (IS_INT_SIZE_BASE_TYPE(c) || c == 'L' || c == '[') + +static int method_stackchange(jbyte *base) +{ + jbyte c; + int stackchange = 0; + + c = *base++; + JASSERT(c == '(', "Invalid signature, missing '('"); + while ((c = *base++) != ')') { + stackchange -= 1; + if (c == 'J' || c == 'D') { + stackchange -= 1; + } else if (c == '[') { + do { c = *base++; } while (c == '['); + if (c == 'L') + do { c = *base++; } while (c != ';'); + } else if (c == 'L') { + do { c = *base++; } while (c != ';'); + } else { + JASSERT(IS_INT_SIZE_BASE_TYPE(c), "Invalid signature, bad arg type"); + } + } + JASSERT(c == ')', "Invalid signature, missing ')'"); + c = *base++; + if (c == 'J' || c == 'D') stackchange += 2; + else if (c != 'V') { + stackchange += 1; + JASSERT(IS_INT_SIZE_TYPE(c), "Invalid signature, bad ret type"); + } + return stackchange; +} + +static void Thumb2_local_info_from_sig(Thumb2_Info *jinfo, methodOop method, jbyte *base) +{ + jbyte c; + unsigned arg = 0; + unsigned *locals_info = jinfo->locals_info; + unsigned local_info; + + if (!method->is_static()) locals_info[arg++] = 1 << LOCAL_REF; + c = *base++; + JASSERT(c == '(', "Invalid signature, missing '('"); + while ((c = *base++) != ')') { + local_info = 1 << LOCAL_INT; + if (c == 'J') local_info = 1 << LOCAL_LONG; + else if (c == 'D') local_info = 1 << LOCAL_DOUBLE; + else if (c == '[') { + local_info = 1 << LOCAL_REF; + do { c = *base++; } while (c == '['); + if (c == 'L') + do { c = *base++; } while (c != ';'); + } else if (c == 'L') { + local_info = 1 << LOCAL_REF; + do { c = *base++; } while (c != ';'); + } else { + JASSERT(IS_INT_SIZE_BASE_TYPE(c), "Invalid signature, bad arg type"); + } + locals_info[arg++] = local_info; + } +} + +#define T_UNDEFINED_32 0xf7f0a000 +#define T_UNDEFINED_16 0xde00 + +static const char *local_types[] = { "int", "long", "float", "double", "ref" }; + +#ifdef T2EE_PRINT_DISASS +void Thumb2_disass(Thumb2_Info *jinfo) +{ + unsigned code_size = jinfo->code_size; + jubyte *code_base = jinfo->code_base; + unsigned *bc_stackinfo = jinfo->bc_stackinfo; + unsigned *locals_info = jinfo->locals_info; + unsigned nlocals = jinfo->method->max_locals(); + int bci = 0; + int last_bci = -1; + int start_b, end_b; + unsigned nodisass; + + struct disassemble_info info; + unsigned short *codebuf = jinfo->codebuf->codebuf; + unsigned idx, compiled_len; + +#if 0 + printf("Local Variable Usage\n"); + printf("====================\n"); + for (idx = 0; idx < nlocals; idx++) { + unsigned linfo = locals_info[idx]; + unsigned typ = (linfo >> LOCAL_INT) & 0x1f; + + printf("Local %d, type = %s (%x)", idx, typ ? local_types[LOG2(typ)] : "!!!unknown!!!", typ); + if (linfo & (1 << LOCAL_MODIFIED)) printf(", modified"); + if (idx < (unsigned)jinfo->method->size_of_parameters()) printf(", parameter"); + putchar('\n'); + } +#endif + + init_disassemble_info(&info, stdout, (fprintf_ftype)fprintf); + info.arch = bfd_arch_arm; + disassemble_init_for_target(&info); + info.endian = BFD_ENDIAN_LITTLE; + info.endian_code = BFD_ENDIAN_LITTLE; + info.buffer = (bfd_byte *)codebuf; + info.buffer_vma = (bfd_vma)codebuf; + info.buffer_length = jinfo->codebuf->idx * sizeof(short); + info.disassembler_options = (char *)"force-thumb"; + + compiled_len = jinfo->codebuf->idx * 2; + for (idx = 0; idx < compiled_len; ) { + nodisass = 0; + start_b = start_bci[idx/2]; + end_b = end_bci[idx/2]; + if (start_b != -1) { + last_bci != -1; + for (bci = start_b; bci < end_b; ) { + unsigned stackinfo = bc_stackinfo[bci]; + unsigned opcode; + int len; + + if (stackinfo & BC_BRANCH_TARGET) + printf("----- Basic Block -----\n"); + JASSERT(bci > last_bci, "disass not advancing"); + last_bci = bci; + printf("%c%4d : ", (stackinfo & BC_VISITED_P1) ? ' ' : '?', bci); + opcode = code_base[bci]; + if (opcode > OPC_LAST_JAVA_OP) { + if (Bytecodes::is_defined((Bytecodes::Code)opcode)) + opcode = (unsigned)Bytecodes::java_code((Bytecodes::Code)opcode); + } + len = Bytecodes::length_for((Bytecodes::Code)opcode); + if (len <= 0) len = Bytecodes::special_length_at((address)(code_base+bci), (address)(code_base+code_size)); + switch (opcode) { + case opc_tableswitch: { + int nbci = (bci & ~3) + 4; + int low, high; + unsigned w; + unsigned *table; + int def; + unsigned n, i; + + printf("%02x ", opcode); + for (int i = 1; i < 5; i++) + printf(" "); + printf("%s\n", Bytecodes::name((Bytecodes::Code)opcode)); + printf("\t%d bytes padding\n", nbci - (bci+1)); + w = *(unsigned int *)(code_base + nbci + 4); + low = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 8); + high = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 0); + def = (int)BYTESEX_REVERSE(w); + table = (unsigned int *)(code_base + nbci + 12); + printf("\tdefault:\t0x%08x\n", def); + printf("\tlow:\t\t0x%08x\n", low); + printf("\thigh:\t\t0x%08x\n", high); + n = high - low + 1; + while (low <= high) { + int off; + + w = *table++; + off = (int)BYTESEX_REVERSE(w); + printf("\toffset %d:\t0x%08x\n", low, off); + low++; + } + bci += len; + for (i = 0; i < 4; i++) { + printf("0x%08x:\t", (int)codebuf+idx); + { + int len = print_insn_little_arm((bfd_vma)codebuf+idx, &info); + if (len == -1) len = 2; + idx += len; + putchar('\n'); + } + } + for (i = 0; i < n; i++) { + printf("0x%08x:\t.short\t0x%04x\n", (int)codebuf+idx, *(short *)((int)codebuf + idx)); + idx += 2; + } + nodisass = 1; + break; + } + case opc_lookupswitch: { + unsigned w; + unsigned nbci = (bci & ~3) + 4;; + int def; + int npairs; // The Java spec says signed but must be >= 0?? + unsigned *table; + + printf("%02x ", opcode); + for (int i = 1; i < 5; i++) + printf(" "); + printf("%s\n", Bytecodes::name((Bytecodes::Code)opcode)); + printf("\t%d bytes padding\n", nbci - (bci+1)); + + w = *(unsigned int *)(code_base + nbci + 0); + def = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 4); + npairs = (int)BYTESEX_REVERSE(w); + table = (unsigned int *)(code_base + nbci + 8); + printf("\tdefault:\t0x%08x\n", def); + printf("\tnpairs:\t\t0x%08x\n", npairs); + for (int i = 0; i < npairs; i++) { + unsigned match, off; + w = table[0]; + match = BYTESEX_REVERSE(w); + w = table[1]; + table += 2; + off = BYTESEX_REVERSE(w); + printf("\t match: 0x%08x, offset: 0x%08x\n", match, off); + } + break; + } + + default: + for (int i = 0; i < 5; i++) { + if (i < len) + printf("%02x ", code_base[bci+i]); + else + printf(" "); + } + printf("%s\n", Bytecodes::name((Bytecodes::Code)code_base[bci])); + break; + } + bci += len; + } + } + if (!nodisass) { + printf("0x%08x:\t", (int)codebuf+idx); + { + int len; + unsigned s1, s2; + + s1 = *(unsigned short *)((int)codebuf + idx); + s2 = *(unsigned short *)((int)codebuf + idx + 2); + if (s1 == T_UNDEFINED_16 || ((s1 << 16) + s2) == T_UNDEFINED_32) { + if (s1 == T_UNDEFINED_16) { + printf("undefined (0xde00) - UNPATCHED BRANCH???"); + len = 2; + } else { + printf("undefined (0xf7f0a000) - UNPATCHED BRANCH???"); + len = 4; + } + } else { + len = print_insn_little_arm((bfd_vma)codebuf+idx, &info); + if (len == -1) len = 2; + idx += len; + } + putchar('\n'); + } + } + } +} +#endif + +#define BCI(len, pop, push, special, islocal, islocal_n, isstore, local_n, local_type) \ + ((len) | ((pop)<<3) | ((push)<<6) | (unsigned)((special) << 31) | ((islocal) << 30) | ((islocal_n) << 29) | ((isstore) << 28) | ((local_n) << 9) | ((local_type) << 11)) + +#define BCI_LEN(x) ((x) & 7) +#define BCI_POP(x) (((x)>>3) & 7) +#define BCI_PUSH(x) (((x)>>6) & 7) +#define BCI_LOCAL_N(x) (((x)>>9) & 3) +#define BCI_LOCAL_TYPE(x) (((x) >> 11) & 7) + +#define BCI_TYPE_INT 0 +#define BCI_TYPE_LONG 1 +#define BCI_TYPE_FLOAT 2 +#define BCI_TYPE_DOUBLE 3 +#define BCI_TYPE_REF 4 + +#define BCI_SPECIAL(x) ((x) & 0x80000000) +#define BCI_ISLOCAL(x) ((x) & 0x40000000) +#define BCI_ISLOCAL_N(x) ((x) & 0x20000000) +#define BCI_ISSTORE(x) ((x) & 0x10000000) + +static const unsigned bcinfo[256] = { + BCI(1, 0, 0, 0, 0, 0, 0, 0, 0), // nop + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // aconst_null + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // iconst_m1 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // iconst_0 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // iconst_1 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // iconst_2 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // iconst_3 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // iconst_4 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // iconst_5 + BCI(1, 0, 2, 0, 0, 0, 0, 0, 0), // lconst_0 + BCI(1, 0, 2, 0, 0, 0, 0, 0, 0), // lconst_1 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // fconst_0 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // fconst_1 + BCI(1, 0, 1, 0, 0, 0, 0, 0, 0), // fconst_2 + BCI(1, 0, 2, 0, 0, 0, 0, 0, 0), // dconst_0 + BCI(1, 0, 2, 0, 0, 0, 0, 0, 0), // dconst_1 + BCI(2, 0, 1, 0, 0, 0, 0, 0, 0), // bipush + BCI(3, 0, 1, 0, 0, 0, 0, 0, 0), // bipush + BCI(2, 0, 1, 0, 0, 0, 0, 0, 0), // ldc + BCI(3, 0, 1, 0, 0, 0, 0, 0, 0), // ldc_w + BCI(3, 0, 2, 0, 0, 0, 0, 0, 0), // ldc2_w + BCI(2, 0, 1, 0, 1, 0, 0, 0, BCI_TYPE_INT), // iload + BCI(2, 0, 2, 0, 1, 0, 0, 0, BCI_TYPE_LONG), // lload + BCI(2, 0, 1, 0, 1, 0, 0, 0, BCI_TYPE_FLOAT), // fload + BCI(2, 0, 2, 0, 1, 0, 0, 0, BCI_TYPE_DOUBLE), // dload + BCI(2, 0, 1, 0, 1, 0, 0, 0, BCI_TYPE_REF), // aload + BCI(1, 0, 1, 0, 1, 1, 0, 0, BCI_TYPE_INT), // iload_0 + BCI(1, 0, 1, 0, 1, 1, 0, 1, BCI_TYPE_INT), // iload_1 + BCI(1, 0, 1, 0, 1, 1, 0, 2, BCI_TYPE_INT), // iload_2 + BCI(1, 0, 1, 0, 1, 1, 0, 3, BCI_TYPE_INT), // iload_3 + BCI(1, 0, 2, 0, 1, 1, 0, 0, BCI_TYPE_LONG), // lload_0 + BCI(1, 0, 2, 0, 1, 1, 0, 1, BCI_TYPE_LONG), // lload_1 + BCI(1, 0, 2, 0, 1, 1, 0, 2, BCI_TYPE_LONG), // lload_2 + BCI(1, 0, 2, 0, 1, 1, 0, 3, BCI_TYPE_LONG), // lload_3 + BCI(1, 0, 1, 0, 1, 1, 0, 0, BCI_TYPE_FLOAT), // fload_0 + BCI(1, 0, 1, 0, 1, 1, 0, 1, BCI_TYPE_FLOAT), // fload_1 + BCI(1, 0, 1, 0, 1, 1, 0, 2, BCI_TYPE_FLOAT), // fload_2 + BCI(1, 0, 1, 0, 1, 1, 0, 3, BCI_TYPE_FLOAT), // fload_3 + BCI(1, 0, 2, 0, 1, 1, 0, 0, BCI_TYPE_DOUBLE), // dload_0 + BCI(1, 0, 2, 0, 1, 1, 0, 1, BCI_TYPE_DOUBLE), // dload_1 + BCI(1, 0, 2, 0, 1, 1, 0, 2, BCI_TYPE_DOUBLE), // dload_2 + BCI(1, 0, 2, 0, 1, 1, 0, 3, BCI_TYPE_DOUBLE), // dload_3 + BCI(1, 0, 1, 0, 1, 1, 0, 0, BCI_TYPE_REF), // aload_0 + BCI(1, 0, 1, 0, 1, 1, 0, 1, BCI_TYPE_REF), // aload_1 + BCI(1, 0, 1, 0, 1, 1, 0, 2, BCI_TYPE_REF), // aload_2 + BCI(1, 0, 1, 0, 1, 1, 0, 3, BCI_TYPE_REF), // aload_3 + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iaload + BCI(1, 2, 2, 0, 0, 0, 0, 0, 0), // laload + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // faload + BCI(1, 2, 2, 0, 0, 0, 0, 0, 0), // daload + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // aaload + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // baload + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // caload + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // saload + BCI(2, 1, 0, 0, 1, 0, 1, 0, BCI_TYPE_INT), // istore + BCI(2, 2, 0, 0, 1, 0, 1, 0, BCI_TYPE_LONG), // lstore + BCI(2, 1, 0, 0, 1, 0, 1, 0, BCI_TYPE_FLOAT), // fstore + BCI(2, 2, 0, 0, 1, 0, 1, 0, BCI_TYPE_DOUBLE), // dstore + BCI(2, 1, 0, 0, 1, 0, 1, 0, BCI_TYPE_REF), // astore + BCI(1, 1, 0, 0, 1, 1, 1, 0, BCI_TYPE_INT), // istore_0 + BCI(1, 1, 0, 0, 1, 1, 1, 1, BCI_TYPE_INT), // istore_1 + BCI(1, 1, 0, 0, 1, 1, 1, 2, BCI_TYPE_INT), // istore_2 + BCI(1, 1, 0, 0, 1, 1, 1, 3, BCI_TYPE_INT), // istore_3 + BCI(1, 2, 0, 0, 1, 1, 1, 0, BCI_TYPE_LONG), // lstore_0 + BCI(1, 2, 0, 0, 1, 1, 1, 1, BCI_TYPE_LONG), // lstore_1 + BCI(1, 2, 0, 0, 1, 1, 1, 2, BCI_TYPE_LONG), // lstore_2 + BCI(1, 2, 0, 0, 1, 1, 1, 3, BCI_TYPE_LONG), // lstore_3 + BCI(1, 1, 0, 0, 1, 1, 1, 0, BCI_TYPE_FLOAT), // fstore_0 + BCI(1, 1, 0, 0, 1, 1, 1, 1, BCI_TYPE_FLOAT), // fstore_1 + BCI(1, 1, 0, 0, 1, 1, 1, 2, BCI_TYPE_FLOAT), // fstore_2 + BCI(1, 1, 0, 0, 1, 1, 1, 3, BCI_TYPE_FLOAT), // fstore_3 + BCI(1, 2, 0, 0, 1, 1, 1, 0, BCI_TYPE_DOUBLE), // dstore_0 + BCI(1, 2, 0, 0, 1, 1, 1, 1, BCI_TYPE_DOUBLE), // dstore_1 + BCI(1, 2, 0, 0, 1, 1, 1, 2, BCI_TYPE_DOUBLE), // dstore_2 + BCI(1, 2, 0, 0, 1, 1, 1, 3, BCI_TYPE_DOUBLE), // dstore_3 + BCI(1, 1, 0, 0, 1, 1, 1, 0, BCI_TYPE_REF), // astore_0 + BCI(1, 1, 0, 0, 1, 1, 1, 1, BCI_TYPE_REF), // astore_1 + BCI(1, 1, 0, 0, 1, 1, 1, 2, BCI_TYPE_REF), // astore_2 + BCI(1, 1, 0, 0, 1, 1, 1, 3, BCI_TYPE_REF), // astore_3 + BCI(1, 3, 0, 0, 0, 0, 0, 0, 0), // iastore + BCI(1, 4, 0, 0, 0, 0, 0, 0, 0), // dastore + BCI(1, 3, 0, 0, 0, 0, 0, 0, 0), // fastore + BCI(1, 4, 0, 0, 0, 0, 0, 0, 0), // lastore + BCI(1, 3, 0, 0, 0, 0, 0, 0, 0), // aastore + BCI(1, 3, 0, 0, 0, 0, 0, 0, 0), // bastore + BCI(1, 3, 0, 0, 0, 0, 0, 0, 0), // castore + BCI(1, 3, 0, 0, 0, 0, 0, 0, 0), // sastore + BCI(1, 1, 0, 0, 0, 0, 0, 0, 0), // pop + BCI(1, 2, 0, 0, 0, 0, 0, 0, 0), // pop2 + BCI(1, 1, 2, 0, 0, 0, 0, 0, 0), // dup + BCI(1, 2, 3, 0, 0, 0, 0, 0, 0), // dup_x1 + BCI(1, 3, 4, 0, 0, 0, 0, 0, 0), // dup_x2 + BCI(1, 2, 4, 0, 0, 0, 0, 0, 0), // dup2 + BCI(1, 3, 5, 0, 0, 0, 0, 0, 0), // dup2_x1 + BCI(1, 4, 6, 0, 0, 0, 0, 0, 0), // dup2_x2 + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // swap + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iadd + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // ladd + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // fadd + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // dadd + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // isub + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // lsub + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // fsub + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // dsub + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // imul + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // lmul + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // fmul + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // dmul + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // idiv + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // ldiv + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // fdiv + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // ddiv + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // irem + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // lrem + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // frem + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // drem + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // ineg + BCI(1, 2, 2, 0, 0, 0, 0, 0, 0), // lneg + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // fneg + BCI(1, 2, 2, 0, 0, 0, 0, 0, 0), // dneg + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ishl + BCI(1, 3, 2, 0, 0, 0, 0, 0, 0), // lshl + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ishr + BCI(1, 3, 2, 0, 0, 0, 0, 0, 0), // lshr + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iushr + BCI(1, 3, 2, 0, 0, 0, 0, 0, 0), // lushr + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iand + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // land + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ior + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // lor + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ixor + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // lxor + BCI(3, 0, 0, 0, 1, 0, 1, 0, BCI_TYPE_INT), // iinc + BCI(1, 1, 2, 0, 0, 0, 0, 0, 0), // i2l + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // i2f + BCI(1, 1, 2, 0, 0, 0, 0, 0, 0), // i2d + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // l2i + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // l2f + BCI(1, 2, 2, 0, 0, 0, 0, 0, 0), // l2d + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // f2i + BCI(1, 1, 2, 0, 0, 0, 0, 0, 0), // f2l + BCI(1, 1, 2, 0, 0, 0, 0, 0, 0), // f2d + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // d2i + BCI(1, 2, 2, 0, 0, 0, 0, 0, 0), // d2l + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // d2f + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // i2b + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // i2c + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // i2s + BCI(1, 4, 1, 0, 0, 0, 0, 0, 0), // lcmp + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // fcmpl + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // fcmpg + BCI(1, 4, 1, 0, 0, 0, 0, 0, 0), // dcmpl + BCI(1, 4, 1, 0, 0, 0, 0, 0, 0), // dcmpg + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // ifeq + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // ifne + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // iflt + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // ifge + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // ifgt + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // ifle + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_icmpeq + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_icmpne + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_icmplt + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_icmpge + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_icmpgt + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_icmple + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_acmpeq + BCI(3, 2, 0, 1, 0, 0, 0, 0, 0), // if_acmpne + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // goto + BCI(3, 0, 1, 1, 0, 0, 0, 0, 0), // jsr + BCI(2, 0, 0, 1, 0, 0, 0, 0, 0), // ret + BCI(0, 1, 0, 1, 0, 0, 0, 0, 0), // tableswitch + BCI(0, 1, 0, 1, 0, 0, 0, 0, 0), // lookupswitch + BCI(1, 1, 0, 1, 0, 0, 0, 0, 0), // ireturn + BCI(1, 2, 0, 1, 0, 0, 0, 0, 0), // lreturn + BCI(1, 1, 0, 1, 0, 0, 0, 0, 0), // freturn + BCI(1, 2, 0, 1, 0, 0, 0, 0, 0), // dreturn + BCI(1, 1, 0, 1, 0, 0, 0, 0, 0), // areturn + BCI(1, 0, 0, 1, 0, 0, 0, 0, 0), // return + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // getstatic + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // putstatic + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // getfield + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // putfield + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokevirtual + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokespecial + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokestatic + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokeinterface + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // xxxunusedxxx + BCI(3, 0, 1, 0, 0, 0, 0, 0, 0), // new + BCI(2, 1, 1, 0, 0, 0, 0, 0, 0), // newarray + BCI(3, 1, 1, 0, 0, 0, 0, 0, 0), // anewarray + BCI(1, 1, 1, 0, 0, 0, 0, 0, 0), // arraylength + BCI(1, 1, 1, 1, 0, 0, 0, 0, 0), // athrow + BCI(3, 1, 1, 0, 0, 0, 0, 0, 0), // checkcast + BCI(3, 1, 1, 0, 0, 0, 0, 0, 0), // instanceof + BCI(1, 1, 0, 0, 0, 0, 0, 0, 0), // monitorenter + BCI(1, 1, 0, 0, 0, 0, 0, 0, 0), // monitorexit + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // wide + BCI(4, 0, 0, 1, 0, 0, 0, 0, 0), // multianewarray + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // ifnull + BCI(3, 1, 0, 1, 0, 0, 0, 0, 0), // ifnonnull + BCI(5, 0, 0, 1, 0, 0, 0, 0, 0), // goto_w + BCI(5, 0, 0, 1, 0, 0, 0, 0, 0), // jsr_w + BCI(1, 0, 0, 1, 0, 0, 0, 0, 0), // breakpoint + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // unused 0xcb + BCI(3, 1, 1, 0, 0, 0, 0, 0, 0), // bgetfield + BCI(3, 1, 1, 0, 0, 0, 0, 0, 0), // cgetfield + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // unused 0xce + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // unused 0xcf + BCI(3, 1, 1, 0, 0, 0, 0, 0, 0), // igetfield + BCI(3, 1, 2, 0, 0, 0, 0, 0, 0), // lgetfield + BCI(3, 1, 1, 0, 0, 0, 0, 0, 0), // sgetfield + BCI(3, 2, 0, 0, 0, 0, 0, 0, 0), // aputfield + BCI(3, 2, 0, 0, 0, 0, 0, 0, 0), // bputfield + BCI(3, 2, 0, 0, 0, 0, 0, 0, 0), // cputfield + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // unused 0xd6 + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // unused 0xd7 + BCI(3, 2, 0, 0, 0, 0, 0, 0, 0), // iputfield + BCI(3, 3, 0, 0, 0, 0, 0, 0, 0), // lputfield + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // unused 0xda + BCI(1, 0, 1, 0, 1, 1, 0, 0, BCI_TYPE_REF), // iaccess_0 + BCI(1, 0, 1, 0, 1, 1, 0, 1, BCI_TYPE_REF), // iaccess_1 + BCI(1, 0, 1, 0, 1, 1, 0, 2, BCI_TYPE_REF), // iaccess_2 + BCI(1, 0, 1, 0, 1, 1, 0, 3, BCI_TYPE_REF), // iaccess_3 + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokeresolved + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokespecialresolved + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokestaticresolved + BCI(3, 0, 0, 1, 0, 0, 0, 0, 0), // invokevfinal + BCI(2, 0, 1, 0, 1, 0, 0, 0, BCI_TYPE_INT), // iload_iload + BCI(2, 0, 1, 0, 1, 0, 0, 0, BCI_TYPE_INT), // iload_iload_N + BCI(1, 0, 0, 1, 0, 0, 0, 0, 0), // return_register_finalizer + BCI(1, 4, 2, 0, 0, 0, 0, 0, 0), // dmac + BCI(1, 0, 1, 0, 1, 1, 0, 0, BCI_TYPE_INT), // iload_0_iconst_N + BCI(1, 0, 1, 0, 1, 1, 0, 1, BCI_TYPE_INT), // iload_1_iconst_N + BCI(1, 0, 1, 0, 1, 1, 0, 2, BCI_TYPE_INT), // iload_2_iconst_N + BCI(1, 0, 1, 0, 1, 1, 0, 3, BCI_TYPE_INT), // iload_3_iconst_N + BCI(2, 0, 1, 0, 1, 0, 0, 0, BCI_TYPE_INT), // iload_iconst_N + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iadd_istore_N + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // isub_istore_N + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iand_istore_N + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ior_istore_N + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ixor_istore_N + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iadd_u4store + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // isub_u4store + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // iand_u4store + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ior_u4store + BCI(1, 2, 1, 0, 0, 0, 0, 0, 0), // ixor_u4store + BCI(1, 0, 1, 0, 1, 1, 0, 0, BCI_TYPE_INT), // iload_0_iload + BCI(1, 0, 1, 0, 1, 1, 0, 1, BCI_TYPE_INT), // iload_1_iload + BCI(1, 0, 1, 0, 1, 1, 0, 2, BCI_TYPE_INT), // iload_2_iload + BCI(1, 0, 1, 0, 1, 1, 0, 3, BCI_TYPE_INT), // iload_3_iload + BCI(1, 0, 1, 0, 1, 1, 0, 0, BCI_TYPE_INT), // iload_0_iload_N + BCI(1, 0, 1, 0, 1, 1, 0, 1, BCI_TYPE_INT), // iload_1_iload_N + BCI(1, 0, 1, 0, 1, 1, 0, 2, BCI_TYPE_INT), // iload_2_iload_N + BCI(1, 0, 1, 0, 1, 1, 0, 3, BCI_TYPE_INT), // iload_3_iload_N + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // impdep1 + BCI(0, 0, 0, 1, 0, 0, 0, 0, 0), // impdep2 +}; + +void Thumb2_pass1(Thumb2_Info *jinfo, unsigned bci) +{ + unsigned code_size = jinfo->code_size; + jubyte *code_base = jinfo->code_base; + unsigned *bc_stackinfo = jinfo->bc_stackinfo; + unsigned *locals_info = jinfo->locals_info; + //constantPoolCacheOop cp = jinfo->method->constants()->cache(); + + bc_stackinfo[bci] |= BC_BRANCH_TARGET; + while (bci < code_size) { + unsigned stackinfo = bc_stackinfo[bci]; + unsigned bytecodeinfo; + unsigned opcode; + + if (stackinfo & BC_VISITED_P1) break; + bc_stackinfo[bci] = (stackinfo & BC_FLAGS_MASK) | BC_VISITED_P1; + opcode = code_base[bci]; +// printf("bci = 0x%04x, opcode = 0x%02x (%s)", bci, opcode, Bytecodes::name((Bytecodes::Code)opcode)); + bytecodeinfo = bcinfo[opcode]; + if (!BCI_SPECIAL(bytecodeinfo)) { + bci += BCI_LEN(bytecodeinfo); + continue; + } + + switch (opcode) { + + case opc_goto: { + int off = GET_JAVA_S2(code_base+bci+1); + bci += off; + bc_stackinfo[bci] |= BC_BRANCH_TARGET; + if (off < 0) bc_stackinfo[bci] |= BC_BACK_TARGET; + break; + } + case opc_goto_w: { + int off = GET_JAVA_U4(code_base+bci+1); + bci += off; + bc_stackinfo[bci] |= BC_BRANCH_TARGET; + if (off < 0) bc_stackinfo[bci] |= BC_BACK_TARGET; + break; + } + + case opc_if_icmpeq: + case opc_if_icmpne: + case opc_if_icmplt: + case opc_if_icmpge: + case opc_if_icmpgt: + case opc_if_icmple: + case opc_if_acmpeq: + case opc_if_acmpne: + case opc_ifeq: + case opc_ifne: + case opc_iflt: + case opc_ifge: + case opc_ifgt: + case opc_ifle: + case opc_ifnull: + case opc_ifnonnull: { + int off = GET_JAVA_S2(code_base+bci+1); + if (off < 0) bc_stackinfo[bci+off] |= BC_BACK_TARGET; + Thumb2_pass1(jinfo, bci + off); + bci += 3; + break; + } + + case opc_jsr: { + int off = GET_JAVA_S2(code_base+bci+1); + if (off < 0) bc_stackinfo[bci+off] |= BC_BACK_TARGET; + Thumb2_pass1(jinfo, bci + off); + bci += 3; + break; + } + case opc_jsr_w: { + int off = GET_JAVA_U4(code_base+bci+1); + if (off < 0) bc_stackinfo[bci+off] |= BC_BACK_TARGET; + Thumb2_pass1(jinfo, bci + off); + bci += 5; + break; + } + + case opc_ireturn: + case opc_lreturn: + case opc_freturn: + case opc_dreturn: + case opc_areturn: + case opc_return: + case opc_return_register_finalizer: + case opc_ret: + case opc_athrow: + // The test for BC_VISITED_P1 above will break out of the loop!!! + break; + + case opc_tableswitch: { + int low, high; + unsigned w; + unsigned *table; + unsigned nbci; + int def; + + nbci = bci & ~3; + w = *(unsigned int *)(code_base + nbci + 8); + low = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 12); + high = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 4); + def = (int)BYTESEX_REVERSE(w); + table = (unsigned int *)(code_base + nbci + 16); + + while (low <= high) { + int off; + w = *table++; + off = (int)BYTESEX_REVERSE(w); + if (off < 0) bc_stackinfo[bci+off] |= BC_BACK_TARGET; + Thumb2_pass1(jinfo, bci + off); + low++; + } + + bci += def; + bc_stackinfo[bci] |= BC_BRANCH_TARGET; + if (def < 0) bc_stackinfo[bci] |= BC_BACK_TARGET; + break; + } + + case opc_lookupswitch: { + unsigned w; + unsigned nbci; + int def; + int npairs; // The Java spec says signed but must be >= 0?? + unsigned *table; + + nbci = bci & ~3; + w = *(unsigned int *)(code_base + nbci + 4); + def = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 8); + npairs = (int)BYTESEX_REVERSE(w); + table = (unsigned int *)(code_base + nbci + 16); + + for (int i = 0; i < npairs; i++) { + int off; + w = *table; + table += 2; + off = (int)BYTESEX_REVERSE(w); + if (off < 0) bc_stackinfo[bci+off] |= BC_BACK_TARGET; + Thumb2_pass1(jinfo, bci + off); + } + + bci += def; + bc_stackinfo[bci] |= BC_BRANCH_TARGET; + if (def < 0) bc_stackinfo[bci] |= BC_BACK_TARGET; + break; + } + + case opc_getstatic: + case opc_putstatic: + case opc_getfield: + case opc_putfield: { + bci += 3; + break; + } + + case opc_invokeresolved: + case opc_invokespecialresolved: + case opc_invokestaticresolved: + case opc_invokevfinal: + case opc_invokevirtual: + case opc_invokespecial: + case opc_invokestatic: + bci += 3; + break; + + case opc_invokeinterface: + bci += 5; + break; + + case opc_multianewarray: + bci += 4; + break; + + case opc_wide: + opcode = code_base[bci+1]; + if (opcode == opc_iinc) { + bci += 6; + } else { + bci += 4; + } + break; + + default: + opcode = code_base[bci]; + fatal1("Undefined opcode %d\n", opcode); + break; + } + } +} + +#ifdef ZOMBIE_DETECTION +int Thumb2_is_zombie(Thumb2_Info *jinfo, unsigned bci) +{ + unsigned code_size = jinfo->code_size; + jubyte *code_base = jinfo->code_base; + unsigned bytecodeinfo; + unsigned opcode; + unsigned *bc_stackinfo = jinfo->bc_stackinfo; + + do { + opcode = code_base[bci]; + // Short circuit exit - commented out because even if it has been executed + // we treat throw, jsr, and ret as zombies because they will call out to the + // interpreter. + // if (opcode > OPC_LAST_JAVA_OP) return 0; + bytecodeinfo = bcinfo[opcode]; + if (!BCI_SPECIAL(bytecodeinfo)) { + bci += BCI_LEN(bytecodeinfo); +#if 0 + if (opcode >= opc_iload_iload) { + opcode = code_base[bci]; + bci += BCI_LEN(bcinfo[opcode]); + } else if (BCI_ISLOCAL(bytecodeinfo)) { + if (opcode == opc_iload || (opcode >= opc_iload_0 && opcode <= opc_iload_3)) { + opcode = code_base[bci]; + if (opcode == opc_iload || (opcode >= opc_iload_0 && opcode <= opc_iload_3) || + (opcode >= opc_iconst_m1 && opcode <= opc_iconst_5)) { + printf("found new zombie at %d\n", bci); + return 1; + } + } + } else if (opcode == opc_iadd || opcode == opc_isub || + opcode == opc_iand || opcode == opc_ior || opcode == opc_ixor) { + opcode = code_base[bci]; + if (opcode == opc_istore || (opcode >= opc_istore_0 && opcode <= opc_istore_3)) { + printf("found new zombie at %d\n", bci); + return 1; + } + } +#endif + } else { + switch (opcode) { + case opc_goto: + case opc_goto_w: + case opc_ifeq: + case opc_ifne: + case opc_iflt: + case opc_ifge: + case opc_ifgt: + case opc_ifle: + case opc_ifnull: + case opc_ifnonnull: + case opc_if_icmpeq: + case opc_if_icmpne: + case opc_if_icmplt: + case opc_if_icmpge: + case opc_if_icmpgt: + case opc_if_icmple: + case opc_if_acmpeq: + case opc_if_acmpne: + case opc_tableswitch: + case opc_lookupswitch: + return 0; + case opc_ireturn: + case opc_lreturn: + case opc_freturn: + case opc_dreturn: + case opc_areturn: + case opc_return: + case opc_return_register_finalizer: + return 0; + case opc_jsr: + case opc_jsr_w: + case opc_ret: + case opc_athrow: + return 1; + case opc_invokeinterface: + case opc_invokevirtual: + case opc_invokespecial: + case opc_invokestatic: + case opc_putfield: + case opc_getfield: + case opc_putstatic: + case opc_getstatic: { + constantPoolCacheOop cp = jinfo->method->constants()->cache(); + ConstantPoolCacheEntry* cache; + int index = GET_NATIVE_U2(code_base+bci+1); + + cache = cp->entry_at(index); + if (!cache->is_resolved((Bytecodes::Code)opcode)) return 1; + bci += 3; + if (opcode == opc_invokeinterface) bci += 2; + break; + + } + case opc_invokeresolved: + case opc_invokespecialresolved: + case opc_invokestaticresolved: + case opc_invokevfinal: + bci += 3; + break; + + case opc_multianewarray: + bci += 4; + break; + + case opc_wide: + opcode = code_base[bci+1]; + if (opcode == opc_iinc) { + bci += 6; + } else { + bci += 4; + } + break; + + default: + opcode = code_base[bci]; + fatal1("Undefined opcode %d\n", opcode); + break; + } + } + if (bci >= code_size) break; + } while (!(bc_stackinfo[bci] & BC_BRANCH_TARGET)); + return 0; +} +#endif // ZOMBIT_DETECTION + +void Thumb2_RegAlloc(Thumb2_Info *jinfo, unsigned *pregs, unsigned npregs) +{ + unsigned *locals_info = jinfo->locals_info; + unsigned i, j; + unsigned linfo; + unsigned score, max_score; + unsigned local; + unsigned nlocals = jinfo->method->max_locals(); + + for (i = 0; i < npregs; i++) { + max_score = 0; + for (j = 0; j < nlocals; j++) { + linfo = locals_info[j]; + + if (linfo & ((1<> 2; + if (linfo & (1<> 2); + if (linfo & (1<> 2; + if (score > max_score) max_score = score, local = j; + } + if (max_score < 2) break; + locals_info[local] |= 1<jregs->r_local[local] = pregs[i]; + } +#ifdef T2EE_PRINT_REGUSAGE + if (t2ee_print_regusage) { + printf("Regalloc: %d physical registers allocated as follows\n", npregs); + for (j = 0; j < nlocals; j++) { + unsigned r = jinfo->jregs->r_local[j]; + if (r) { + unsigned typ = (locals_info[j] >> LOCAL_INT) & 0x1f; + printf(" ARM Reg R%d -> local %d (type = %s)\n", r, j, local_types[LOG2(typ)]); + } + } + } +#endif +} + +void Thumb2_pass2(Thumb2_Info *jinfo, unsigned stackdepth, unsigned bci) +{ + unsigned code_size = jinfo->code_size; + jubyte *code_base = jinfo->code_base; + unsigned *bc_stackinfo = jinfo->bc_stackinfo; + unsigned *locals_info = jinfo->locals_info; + unsigned check_zombie = 0; + //constantPoolCacheOop cp = jinfo->method->constants()->cache(); + + while (bci < code_size) { + unsigned stackinfo = bc_stackinfo[bci]; + unsigned bytecodeinfo; + unsigned opcode; + + if (stackinfo & BC_VISITED_P2) break; + JASSERT((int)stackdepth >= 0, "stackdepth < 0!!"); + bc_stackinfo[bci] = (stackinfo & BC_FLAGS_MASK) | stackdepth | BC_VISITED_P2; +#ifdef ZOMBIE_DETECTION + if (check_zombie || (stackinfo & BC_BRANCH_TARGET)) { + if (Thumb2_is_zombie(jinfo, bci)) { + printf("zombie code at %d\n", bci); + bc_stackinfo[bci] |= BC_ZOMBIE; + return; + } + check_zombie = 0; + } +#endif + opcode = code_base[bci]; +// printf("bci = 0x%04x, opcode = 0x%02x (%s), stackdepth = %d\n", bci, opcode, Bytecodes::name((Bytecodes::Code)opcode), stackdepth); + bytecodeinfo = bcinfo[opcode]; + if (!BCI_SPECIAL(bytecodeinfo)) { + if (BCI_ISLOCAL(bytecodeinfo)) { + unsigned local = BCI_LOCAL_N(bytecodeinfo); + unsigned local_type = BCI_LOCAL_TYPE(bytecodeinfo) + LOCAL_INT; + unsigned local_modified = 0; + unsigned linfo; + unsigned read_count, write_count; + + if (!BCI_ISLOCAL_N(bytecodeinfo)) local = code_base[bci+1]; + if (BCI_ISSTORE(bytecodeinfo)) local_modified = 1U << LOCAL_MODIFIED; + linfo = locals_info[local]; + read_count = LOCAL_READS(linfo); + write_count = LOCAL_WRITES(linfo); + if (local_modified) + write_count = LOCAL_INC_COUNT(write_count); + else + read_count = LOCAL_INC_COUNT(read_count); + + locals_info[local] |= (1 << local_type) | LOCAL_SET_COUNTS(read_count, write_count) | local_modified; + if (local_type == LOCAL_LONG || local_type == LOCAL_DOUBLE) { + locals_info[local+1] |= (1 << local_type) | LOCAL_SET_COUNTS(read_count, write_count) | local_modified; + } + } + bci += BCI_LEN(bytecodeinfo); + stackdepth += BCI_PUSH(bytecodeinfo) - BCI_POP(bytecodeinfo); + JASSERT(stackdepth <= (unsigned)jinfo->method->max_stack(), "stack over/under flow?"); + continue; + } + + switch (opcode) { + + case opc_goto: + bci += GET_JAVA_S2(code_base+bci+1); + break; + case opc_goto_w: + bci += GET_JAVA_U4(code_base+bci+1); + break; + + case opc_ifeq: + case opc_ifne: + case opc_iflt: + case opc_ifge: + case opc_ifgt: + case opc_ifle: + case opc_ifnull: + case opc_ifnonnull: + stackdepth -= 1; + Thumb2_pass2(jinfo, stackdepth, bci + GET_JAVA_S2(code_base+bci+1)); + check_zombie = 1; + bci += 3; + break; + + case opc_if_icmpeq: + case opc_if_icmpne: + case opc_if_icmplt: + case opc_if_icmpge: + case opc_if_icmpgt: + case opc_if_icmple: + case opc_if_acmpeq: + case opc_if_acmpne: + stackdepth -= 2; + Thumb2_pass2(jinfo, stackdepth, bci + GET_JAVA_S2(code_base+bci+1)); + check_zombie = 1; + bci += 3; + break; + + case opc_jsr: + Thumb2_pass2(jinfo, stackdepth+1, bci + GET_JAVA_S2(code_base+bci+1)); + bci += 3; + stackdepth = 0; + break; + case opc_jsr_w: + Thumb2_pass2(jinfo, stackdepth+1, bci + GET_JAVA_U4(code_base+bci+1)); + bci += 5; + break; + + case opc_ireturn: + case opc_lreturn: + case opc_freturn: + case opc_dreturn: + case opc_areturn: + case opc_return: + case opc_return_register_finalizer: + case opc_ret: + case opc_athrow: + // The test for BC_VISITED_P2 above will break out of the loop!!! + break; + + case opc_tableswitch: { + int low, high; + unsigned w; + unsigned *table; + unsigned nbci; + int def; + + stackdepth -= 1; + nbci = bci & ~3; + w = *(unsigned int *)(code_base + nbci + 8); + low = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 12); + high = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 4); + def = (int)BYTESEX_REVERSE(w); + table = (unsigned int *)(code_base + nbci + 16); + + while (low <= high) { + int off; + w = *table++; + off = (int)BYTESEX_REVERSE(w); + Thumb2_pass2(jinfo, stackdepth, bci + off); + low++; + } + + check_zombie = 1; + bci += def; + break; + } + + case opc_lookupswitch: { + unsigned w; + unsigned nbci; + int def; + int npairs; // The Java spec says signed but must be >= 0?? + unsigned *table; + + stackdepth -= 1; + nbci = bci & ~3; + w = *(unsigned int *)(code_base + nbci + 4); + def = (int)BYTESEX_REVERSE(w); + w = *(unsigned int *)(code_base + nbci + 8); + npairs = (int)BYTESEX_REVERSE(w); + table = (unsigned int *)(code_base + nbci + 16); + + for (int i = 0; i < npairs; i++) { + int off; + w = *table; + table += 2; + off = (int)BYTESEX_REVERSE(w); + Thumb2_pass2(jinfo, stackdepth, bci + off); + } + + check_zombie = 1; + bci += def; + break; + } + + case opc_getstatic: + case opc_putstatic: + case opc_getfield: + case opc_putfield: { + int index = GET_JAVA_U2(code_base+bci+1); + constantPoolOop pool = jinfo->method->constants(); + symbolOop sig = pool->signature_ref_at(index); + jbyte *base = sig->base(); + jbyte c = *base; + int stackchange; + + opcode = code_base[bci]; + if (opcode == opc_getfield || opcode == opc_putfield) + stackdepth -= 1; + stackchange = 1; + if (c == 'J' || c == 'D') stackchange = 2; + if (opcode == opc_getfield || opcode == opc_getstatic) + stackdepth += stackchange; + else + stackdepth -= stackchange; + bci += 3; + break; + } + + case opc_invokeresolved: + case opc_invokespecialresolved: + case opc_invokestaticresolved: + case opc_invokevfinal: + case opc_invokeinterface: + case opc_invokevirtual: + case opc_invokespecial: + case opc_invokestatic: { + int index = GET_JAVA_U2(code_base+bci+1); + constantPoolOop pool = jinfo->method->constants(); + //symbolOop name = pool->name_ref_at(index); + symbolOop sig = pool->signature_ref_at(index); + jbyte *base = sig->base(); + + //tty->print("%d: %s: %s\n", opcode, name->as_C_string(), sig->as_C_string()); + stackdepth += method_stackchange(base); + opcode = code_base[bci]; + bci += 3; + if (opcode == opc_invokeinterface) bci += 2; + if (opcode != opc_invokestatic && opcode != opc_invokestaticresolved) + stackdepth -= 1; + break; + } + + case opc_multianewarray: + stackdepth = (stackdepth - code_base[bci+3]) + 1; + bci += 4; + break; + + case opc_wide: + opcode = code_base[bci+1]; + if (opcode == opc_iinc) { + bci += 6; + } else { + bci += 4; + if (opcode == opc_iload || + opcode == opc_fload || opcode == opc_aload) + stackdepth += 1; + else if (opcode == opc_lload || opcode == opc_dload) + stackdepth += 2; + else if (opcode == opc_istore || + opcode == opc_fstore || opcode == opc_astore) + stackdepth -= 1; + else if (opcode == opc_lstore || opcode == opc_dstore) + stackdepth -= 2; + else if (opcode != opc_ret) + fatal1("Undefined wide opcode %d\n", opcode); + } + break; + + default: + opcode = code_base[bci]; + fatal1("Undefined opcode %d\n", opcode); + break; + } + } +} + +//------------------------------------------------------------------------------------- + +#define Thumb2 1 +#define ThumbEE 0 + +#define DA 0 +#define IA 1 +#define DB 2 +#define IB 3 + +#define PUSH_ED 0 +#define PUSH_EA 1 +#define PUSH_FD 2 +#define PUSH_FA 3 + +#define POP_FA 0 +#define POP_FD 1 +#define POP_EA 2 +#define POP_ED 3 + +#define ROR(imm, sh) (((imm) >> (sh)) | ((imm) << (32 - (sh)))) +#define ROL(imm, sh) (((imm) << (sh)) | ((imm) >> (32 - (sh)))) + +#define abs(i) ((i) < 0 ? -(i) : (i)) +#define U(i) ((i) < 0 ? 0 : 1) + +#define LS_STR 0 +#define LS_STRB 1 +#define LS_STRH 2 +#define LS_LDRSB 3 +#define LS_LDR 4 +#define LS_LDRB 5 +#define LS_LDRH 6 +#define LS_LDRSH 7 + +#define LS_IS_LDR(op) ((op) >= LS_LDRSB) +#define LS_IS_WORD(op) (((op) & 3) == LS_STR) +#define LS_IS_BYTE(op) (((op) & 3) == LS_STRB || (op) == LS_LDRSB) +#define LS_IS_HW(op) (((op) & 3) == LS_STRH || (op) == LS_LDRSH) + +static const unsigned t_ls_ops[16] = { + 0x5000, 0xf8400000, + 0x5400, 0xf8000000, + 0x5200, 0xf8200000, + 0x5600, 0xf9100000, + 0x5800, 0xf8500000, + 0x5c00, 0xf8100000, + 0x5a00, 0xf8300000, + 0x5e00, 0xf9300000, +}; + +#define DP_ADC 0 +#define DP_ADD 1 +#define DP_AND 2 +#define DP_ASR 3 +#define DP_BIC 4 +#define DP_CMN 5 +#define DP_CMP 6 +#define DP_EOR 7 +#define DP_LSL 8 +#define DP_LSR 9 +#define DP_MOV 10 +#define DP_MVN 11 +#define DP_ORN 12 +#define DP_ORR 13 +#define DP_ROR 14 +#define DP_RSB 15 +#define DP_SBC 16 +#define DP_SUB 17 +#define DP_TEQ 18 +#define DP_TST 19 +#define DP_MUL 20 + +static const unsigned n_ops[] = { + DP_SBC, // ADC x, y == SBC x, ~y + DP_SUB, // ADD x, y == SUB x, -y + DP_BIC, // AND x, y == BIX x, ~y + (unsigned)-1, // ASR + DP_AND, // BIC x, y == AND x, ~y + DP_CMP, // CMN x, y == CMP x, -y + DP_CMN, // CMP x, y == CMN x, -y + (unsigned)-1, // EOR + (unsigned)-1, // LSL + (unsigned)-1, // LSR + DP_MVN, // MOV x, y == MVN x, ~y + DP_MOV, // MVN x, y == MOV x, ~y + DP_ORR, // ORN x, y == ORR x, ~y + DP_ORN, // ORR x, y == ORN x, ~y + (unsigned)-1, // ROR + (unsigned)-1, // RSB + DP_ADC, // SBC x, y == ADC x, ~y + DP_ADD, // ADD x, y == SUB x, -y + (unsigned)-1, // TEQ + (unsigned)-1, // TST + (unsigned)-1, // MUL +}; + +#define N_OP(op) n_ops[(op)] + +static const unsigned t_dop_ops[] = { +// Rd, Rm, #N Rd, Rn, Rm + 0xf1400000, 0xeb400000, // ADC + 0xf1000000, 0xeb000000, // ADD + 0xf0000000, 0xea000000, // AND + 0xea4f0020, 0xfa40f000, // ASR + 0xf0200000, 0xea200000, // BIC + 0xf1100f00, 0xeb100f00, // CMN + 0xf1b00f00, 0xebb00f00, // CMP + 0xf0800000, 0xea800000, // EOR + 0xea4f0000, 0xfa00f000, // LSL + 0xea4f0010, 0xfa20f000, // LSR + 0xf04f0000, 0xea4f0000, // MOV + 0xf06f0000, 0xea6f0000, // MVN + 0xf0600000, 0xea600000, // ORN + 0xf0400000, 0xea400000, // ORR + 0xea4f0030, 0xfa6f0000, // ROR + 0xf1c00000, 0xebc00000, // RSB + 0xf1600000, 0xeb600000, // SBC + 0xf1a00000, 0xeba00000, // SUB + 0xf0900f00, 0xea900f00, // TEQ + 0xf0100f00, 0xea100f00, // TST + (unsigned)-1, 0xfb00f000, // MUL +}; + +#define DP_IMM(op) t_dop_ops[(op)*2] +#define DP_REG(op) t_dop_ops[(op)*2+1] + +#define VP_ADD 0 +#define VP_SUB 1 +#define VP_MUL 2 +#define VP_DIV 3 + +static const unsigned t_vop_ops[] = { + 0xee300a00, // VADD + 0xee300a40, // VSUB + 0xee200a00, // VMUL + 0xee800a00, // VDIV +}; + +#define VP_REG(op) t_vop_ops[op] + +#define T1_LS_OP(op) t_ls_ops[(op)*2] +#define T2_LS_OP(op) t_ls_ops[(op)*2+1] + +#define SHIFT_LSL 0 +#define SHIFT_LSR 1 +#define SHIFT_ASR 2 +#define SHIFT_ROR 3 +#define SHIFT_RRX 3 + +//------------------------------------------------------------------------------------ + +#define E_STR_IMM6(src, imm6) (0xce00 | ((imm6)<<3) | (src)) +#define E_LDR_IMM6(dst, imm6) (0xcc00 | ((imm6)<<3) | (dst)) +#define E_LDR_IMM5(dst, imm5) (0xcb00 | ((imm5)<<3) | (dst)) +#define E_LDR_IMM3(dst, base, imm3) (0xc800 | ((imm3)<<6) | ((base) << 3) | (dst)) + +#define T_MOV_IMM8(r, imm8) (0x2000 | ((r)<<8) | (imm8)) +#define T_MOV_BYTELANE(r, typ, b) (0xf04f0000 | ((typ) << 12) | ((r) << 8) | (b)) +#define T_MOV_ROT_IMM(r, ror, imm) \ + (0xf04f0000 | (((ror) & 0x10) << (26-4)) | (((ror) & 0xe) << (12-1)) | \ + (((ror) & 1) << 7) | ((r) << 8) | ((imm) & 0x7f)) +#define T_MOVW_IMM16(r, imm) \ + (0xf2400000 | (((imm) & 0xf000) << (16-12)) | (((imm) & 0x800) << (26-11)) | \ + (((imm) & 0x700) << (12-8)) | ((imm) & 0xff) | ((r) << 8)) +#define T_MOVT_IMM16(r, imm) \ + (0xf2c00000 | (((imm) & 0xf000) << (16-12)) | (((imm) & 0x800) << (26-11)) | \ + (((imm) & 0x700) << (12-8)) | ((imm) & 0xff) | ((r) << 8)) +#define T_MVN_BYTELANE(r, typ, b) (0xf06f0000 | ((typ) << 12) | ((r) << 8) | (b)) +#define T_MVN_ROT_IMM(r, ror, imm) (0xf06f0000 | (((ror) & 0x10) << (26-4)) | \ + (((ror) & 0xe) << (12-1)) | (((ror) & 1) << 7) | ((r) << 8) | ((imm) & 0x7f)) + +#define T_ORR_ROT_IMM(dst, src, ror, imm) (0xf0400000 | (((ror) & 0x10) << (26-4)) | \ + (((ror) & 0xe) << (12-1)) | (((ror) & 1) << 7) | ((src) << 16) | \ + ((dst) << 8) | ((imm) & 0x7f)) +#define T_ORN_ROT_IMM(dst, src, ror, imm) (0xf0600000 | (((ror) & 0x10) << (26-4)) | \ + (((ror) & 0xe) << (12-1)) | (((ror) & 1) << 7) | ((src) << 16) | \ + ((dst) << 8) | ((imm) & 0x7f)) + +#define T_STR_IMM5(src, base, imm5) (0x6000 | ((imm5) << 6) | ((base) << 3) | (src)) +#define T_STR_SP_IMM8(src, imm8) (0x9000 | ((src) << 8) | (imm8)) +#define T_STR_IMM12(src, base, imm12) (0xf8c00000 | ((src)<<12) | ((base)<<16) | (imm12)) +#define T_STR_IMM8(src, base, imm8, pre, wb) (0xf8400800 | ((src)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_LDR_IMM5(dst, base, imm5) (0x6800 | ((imm5) << 6) | ((base) << 3) | (dst)) +#define T_LDR_SP_IMM8(src, imm8) (0x9800 | ((dst) << 8) | (imm8)) +#define T_LDR_IMM12(dst, base, imm12) (0xf8d00000 | ((dst)<<12) | ((base)<<16) | (imm12)) +#define T_LDR_IMM8(src, base, imm8, pre, wb) (0xf8500800 | ((dst)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_STRB_IMM5(src, base, imm5) (0x7000 | ((imm5) << 6) | ((base) << 3) | (src)) +#define T_STRB_IMM12(src, base, imm12) (0xf8800000 | ((src)<<12) | ((base)<<16) | (imm12)) +#define T_STRB_IMM8(src, base, imm8, pre, wb) (0xf8000800 | ((src)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_LDRB_IMM5(dst, base, imm5) (0x7800 | ((imm5) << 6) | ((base) << 3) | (dst)) +#define T_LDRB_IMM12(dst, base, imm12) (0xf8900000 | ((dst)<<12) | ((base)<<16) | (imm12)) +#define T_LDRB_IMM8(dst, base, imm8, pre, wb) (0xf8100800 | ((dst)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_STRH_IMM5(dst, base, imm5) (0x8000 | ((imm5) << 6) | ((base) << 3) | (dst)) +#define T_STRH_IMM12(dst, base, imm12) (0xf8a00000 | ((dst)<<12) | ((base)<<16) | (imm12)) +#define T_STRH_IMM8(dst, base, imm8, pre, wb) (0xf8200800 | ((dst)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_LDRH_IMM5(dst, base, imm5) (0x8800 | ((imm5) << 6) | ((base) << 3) | (dst)) +#define T_LDRH_IMM12(dst, base, imm12) (0xf8b00000 | ((dst)<<12) | ((base)<<16) | (imm12)) +#define T_LDRH_IMM8(dst, base, imm8, pre, wb) (0xf8300800 | ((dst)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_LDRSH_IMM12(dst, base, imm12) (0xf9b00000 | ((dst)<<12) | ((base)<<16) | (imm12)) +#define T_LDRSH_IMM8(dst, base, imm8, pre, wb) (0xf9300800 | ((dst)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_LDRSB_IMM12(dst, base, imm12) (0xf9900000 | ((dst)<<12) | ((base)<<16) | (imm12)) +#define T_LDRSB_IMM8(dst, base, imm8, pre, wb) (0xf9100800 | ((dst)<<12) | \ + ((base)<<16) | ((pre)<<10) | (U(imm8)<<9) | ((wb)<<8) | abs(imm8)) + +#define T_LDRD_IMM(lo, hi, base, imm8, pre, wb) (0xe8500000 | ((base)<<16) | \ + ((lo) << 12) | ((hi)<<8) | ((pre)<<24) | (U(imm8)<<23) | ((wb)<<21) | abs(imm8)) +#define T_STRD_IMM(lo, hi, base, imm8, pre, wb) (0xe8400000 | ((base)<<16) | \ + ((lo) << 12) | ((hi)<<8) | ((pre)<<24) | (U(imm8)<<23) | ((wb)<<21) | abs(imm8)) + +#define T_LDREX(dst, base, off) (0xe8500f00 | ((base) << 16) | ((dst) << 12) | ((off) >> 2)) +#define T_STREX(dst, src, base, off) (0xe8400000 | ((base) << 16) | \ + ((src) << 12) | ((dst) << 8) | ((off >> 2))) + +#define T_STM8(base, regset) (0xc000 | ((base) << 8) | (regset)) +#define T_STM16(base, regset, st, wb) (0xe8000000 | ((st) << 23) | ((wb) << 21) | \ + ((base) << 16) | (regset)) + +#define T_LDM8(base, regset) (0xc800 | ((base) << 8) | (regset)) +#define T_LDM16(base, regset, st, wb) (0xe8100000 | ((st) << 23) | ((wb) << 21) | \ + ((base) << 16) | (regset)) +#define T_POP(regset) (0xbc00 | (((regset & (1<> ARM_PC) << 8) | (regset & 0xff)) +#define T_PUSH(regset) (0xb400 | (((regset & (1<> ARM_LR) << 8) | (regset & 0xff)) + +#define T1_LDR_STR_REG(op, xfer, base, off) ((op) | ((off) << 6) | ((base) << 3) | (xfer)) +#define T2_LDR_STR_REG(op, xfer, base, off, sh) ((op) | ((base) << 16) | ((xfer) << 12) | \ + ((sh)<<4) | (off)) + +#define T_CHKA(size, idx) (0xca00 | (((size) & 8) << (7-3)) | ((idx) << 3) | ((size) & 7)) +#define T_HBL(handler) (0xc300 | (handler)) +#define T_ENTER_LEAVE(enter) (0xf3bf8f0f | ((enter)<<4)) + +#define T1_ADD_IMM(dst, src, imm3) (0x1c00 | ((imm3) << 6) | ((src) << 3) | (dst)) +#define T2_ADD_IMM(r, imm8) (0x3000 | ((r) << 8) | (imm8)) +#define T3_ADD_BYTELANE(dst, src, typ, b) (0xf1000000 | ((src) << 16) | ((typ) << 12) | \ + ((dst) << 8) | (b)) +#define T3_ADD_ROT_IMM(dst, src, ror, imm) (0xf1000000 | ((src) << 16) | ((dst) << 8) | \ + (((ror) & 0x10) << (26-4)) | (((ror) & 0x0e) << (12-1)) | (((ror) & 1) << 7) | \ + ((imm) & 0x7f)) +#define T4_ADD_IMM(dst, src, imm) (0xf2000000 | ((src) << 16) | ((dst) << 8) | \ + (((imm) & 0x800) << (26-11)) | (((imm) & 0x700) << (12-8)) | ((imm) & 0xff)) + +#define T1_SUB_IMM(dst, src, imm3) (0x1e00 | ((imm3) << 6) | ((src) << 3) | (dst)) +#define T2_SUB_IMM(r, imm8) (0x3800 | ((r) << 8) | (imm8)) +#define T3_SUB_BYTELANE(dst, src, typ, b) (0xf1a00000 | ((src) << 16) | ((typ) << 12) | \ + ((dst) << 8) | (b)) +#define T3_SUB_ROT_IMM(dst, src, ror, imm) (0xf1a00000 | ((src) << 16) | ((dst) << 8) | \ + (((ror) & 0x10) << (26-4)) | (((ror) & 0x0e) << (12-1)) | (((ror) & 1) << 7) | \ + ((imm) & 0x7f)) +#define T4_SUB_IMM(dst, src, imm) (0xf2a00000 | ((src) << 16) | ((dst) << 8) | \ + (((imm) & 0x800) << (26-11)) | (((imm) & 0x700) << (12-8)) | ((imm) & 0xff)) + +#define T_DOP_BYTELANE(op, dst, src, typ, b) ((op) | ((dst) << 8) | ((src) << 16) | \ + ((typ) << 12) | (b)) +#define T_DOP_ROT_IMM(op, dst, src, ror, imm) ((op) | ((dst) << 8) | ((src) << 16) | \ + (((ror) & 0x10) << (26-4)) | (((ror) & 0x0e) << (12-1)) | (((ror) & 1) << 7) | \ + ((imm) & 0x7f)) +#define T_SHIFT_IMM(op, dst, src, imm) ((op) | ((dst) << 8) | (src) | \ + (((imm) & 3) << 6) | (((imm) & 0x1c) << (12-2))) +#define T_DOP_REG(op, dst, lho, rho, st, sh) ((op) | ((dst) << 8) | ((lho) << 16) | (rho) | \ + ((st) << 4) | (((sh) & 0x1c) << (12-2)) | (((sh) & 3) << 6)) +#define T3_ADD_BYTELANE(dst, src, typ, b) (0xf1000000 | ((src) << 16) | ((typ) << 12) | \ + ((dst) << 8) | (b)) + +#define T_CMP_IMM(src, imm) (0x2800 | ((src) << 8) | (imm)) +#define T_CMP_REG(lho, rho) (0x4280 | ((rho) << 3) | (lho)) + +#define T_NEG(dst, src) (0x4240 | (dst) | ((src) << 3)) +#define T_MVN(dst, src) (0x43c0 | (dst) | ((src) << 3)) +#define T_MOV(dst, src) (0x4600 | (((dst) & 8) << (7-3)) | ((src) << 3) | ((dst) & 7)) + +#define T_VMOVS_TOARM(dst, src) \ + (0xee100a10 | ((dst) << 12) | (((src) & 1) << 7) | (((src) & 0x1e)<<(16-1))) +#define T_VMOVS_TOVFP(dst, src) \ + (0xee000a10 | ((src) << 12) | (((dst) & 1) << 7) | (((dst) & 0x1e)<<(16-1))) + +#define T_VMOVD_TOARM(dst_lo, dst_hi, src) \ + (0xec500b10 | ((dst_lo) << 12) | ((dst_hi) << 16) | (((src) & 0x10)<<(5-4)) | ((src) & 0x0f)) +#define T_VMOVD_TOVFP(dst, src_lo, src_hi) \ + (0xec400b10 | ((src_lo) << 12) | ((src_hi) << 16) | (((dst) & 0x10)<<(5-4)) | ((dst) & 0x0f)) + +#define T_VOP_REG_S(op, dst, lho, rho) ((op) | \ + (((dst) & 1) << 22) | (((dst) & 0x1e) << (12-1)) | \ + (((lho) & 1) << 7) | (((lho) & 0x1e) << (16-1)) | \ + (((rho) & 1) << 5) | (((rho) & 0x1e) >> 1)) +#define T_VOP_REG_D(op, dst, lho, rho) ((op) | (1 << 8) | \ + (((dst) & 0x10) << (22-4)) | (((dst) & 0xf) << 12) | \ + (((lho) & 0x10) << (7-4)) | (((lho) & 0xf) << 16) | \ + (((rho) & 0x10) << (5-4)) | ((rho) & 0xf)) + +#define T_VCMP_S(lho, rho, e) (0xeeb40a40 | ((e) << 7) | \ + (((lho) & 1) << 22) | (((lho) & 0x1e) << (12-1)) | \ + (((rho) & 1) << 5) | (((rho) & 0x1e) >>1)) +#define T_VCMP_D(lho, rho, e) (0xeeb40b40 | ((e) << 7) | \ + (((lho) & 0x10) << (22-4)) | (((lho) & 0x0f) << 12) | \ + (((rho) & 0x10) << (5-4)) | ((rho) & 0x0f)) +#define T_VMRS(dst) (0xeef10a10 | ((dst) << 12)) + +#define T_MLA(res, lho, rho, a) \ + (0xfb000000 | ((res) << 8) | ((lho) << 16) | (rho) | ((a) << 12)) +#define T_UMULL(res_lo, res_hi, lho, rho) \ + (0xfba00000 | ((res_lo) << 12) | ((res_hi) << 8) | ((lho) << 16) | (rho)) + +#define T_BX(src) (0x4700 | ((src) << 3)) +#define T_TBH(base, idx) (0xe8d0f010 | ((base) << 16) | (idx)) + +#define T_SXTB(dst, src) (0xb240 | ((src) << 3) | (dst)) +#define T_SXTH(dst, src) (0xb200 | ((src) << 3) | (dst)) +#define T2_SXTB(dst, src) (0xfa4ff080 | ((dst) << 8) | (src)) +#define T2_SXTH(dst, src) (0xfa0ff080 | ((dst) << 8) | (src)) +#define T_UXTH(dst, src) (0xb280 | ((src) << 3) | (dst)) +#define T2_UXTH(dst, src) (0xfa1ff080 | ((dst) << 8) | (src)) + +int out_16(CodeBuf *codebuf, u32 s) +{ + codebuf->codebuf[codebuf->idx++] = s; + return 0; +} + +int out_16x2(CodeBuf *codebuf, u32 sx2) +{ + unsigned s1 = sx2 >> 16; + unsigned s2 = sx2 & 0xffff; + + out_16(codebuf, s1); + return out_16(codebuf, s2); +} + +int out_32(CodeBuf *codebuf, u32 w) +{ + *(u32 *)&(codebuf->codebuf[codebuf->idx]) = w; + codebuf->idx += 2; + return 0; +} + +u32 out_pos(CodeBuf *codebuf) +{ + return (u32)&(codebuf->codebuf[codebuf->idx]); +} + +u32 out_loc(CodeBuf *codebuf) +{ + return codebuf->idx * 2; +} + +#define CODE_ALIGN 64 +#define CODE_ALIGN_SIZE 64 + +u32 out_align(CodeBuf *codebuf, unsigned align) +{ + codebuf->idx += (((out_pos(codebuf) + (align-1)) & ~(align-1)) - out_pos(codebuf)) / sizeof(short); + return out_pos(codebuf); +} + +int thumb_single_shift(unsigned imm) +{ + unsigned lsl; + + if (!imm) return -1; + lsl = 0; + while (!(imm & 0x80000000)) { + imm <<= 1; + lsl++; + } + if (lsl >= 24) return -1; + if ((imm & 0xff000000) == imm) return lsl+8; + return -1; +} + +int thumb_bytelane(u32 imm) +{ + unsigned b1 = imm & 0xff; + unsigned b2 = (imm >> 8) & 0xff; + unsigned b3 = (imm >> 16) & 0xff; + unsigned b4 = imm >> 24; + int mov_type = -1; + + if (b1 == b3 && b2 == 0 && b4 == 0) mov_type = 1; + if (b1 == b2 && b1 == b3 && b1 == b4) mov_type = 3; + if (b2 == b4 && b1 == 0 && b3 == 0) mov_type = 2; + if (imm < 256) mov_type = 0; + return mov_type; +} + +int mov_imm(CodeBuf *codebuf, Reg r, u32 imm) +{ + int mov_type, rol; + + if (Thumb2) { + if (r < ARM_R8 && imm < 256) + return out_16(codebuf, T_MOV_IMM8(r, imm)); + mov_type = thumb_bytelane(imm); + if (mov_type >= 0) { + if (mov_type == 2) imm >>= 8; + return out_16x2(codebuf, T_MOV_BYTELANE(r, mov_type, (imm & 0xff))); + } + mov_type = thumb_bytelane(~imm); + if (mov_type >= 0) { + imm = ~imm; + if (mov_type == 2) imm >>= 8; + return out_16x2(codebuf, T_MVN_BYTELANE(r, mov_type, (imm & 0xff))); + } + rol = thumb_single_shift(imm); + if (rol >= 0) + return out_16x2(codebuf, T_MOV_ROT_IMM(r, rol, ROL(imm, rol))); + rol = thumb_single_shift(~imm); + if (rol >= 0) + return out_16x2(codebuf, T_MVN_ROT_IMM(r, rol, ROL(~imm, rol))); + if ((imm & ~0xffff) == 0) + return out_16x2(codebuf, T_MOVW_IMM16(r, imm & 0xffff)); + if (r < ARM_R8) { + rol = thumb_single_shift(imm & ~0xff); + if (rol >= 0) { + out_16(codebuf, T_MOV_IMM8(r, imm & 0xff)); + return out_16x2(codebuf, T_ORR_ROT_IMM(r, r, rol, ROL(imm & ~0xff, rol))); + } + } + out_16x2(codebuf, T_MOVW_IMM16(r, imm & 0xffff)); + return out_16x2(codebuf, T_MOVT_IMM16(r, imm >> 16)); + } + J_Unimplemented(); +} + +int load_store_reg_no_wb(CodeBuf *codebuf, u32 op, Reg xfer, Reg base, Reg offset, + u32 shift, int pre) +{ + if (pre) { + if (xfer < ARM_R8 && base < ARM_R8 && offset < ARM_R8) { + if (ThumbEE) { + if ((shift == 0 && LS_IS_BYTE(op)) || (shift == 1 && LS_IS_HW(op)) || + (shift == 2 && LS_IS_WORD(op))) + return out_16(codebuf, T1_LDR_STR_REG(T1_LS_OP(op), xfer, base, offset)); + } else if (shift == 0) + return out_16(codebuf, T1_LDR_STR_REG(T1_LS_OP(op), xfer, base, offset)); + } + if (shift < 4) + return out_16x2(codebuf, T2_LDR_STR_REG(T2_LS_OP(op), xfer, base, offset, shift)); + } + J_Unimplemented(); +} + +static int add_reg(CodeBuf *codebuf, u32 dst, u32 lho, u32 rho); + +int load_store_reg(CodeBuf *codebuf, u32 op, Reg xfer, Reg base, Reg offset, + u32 shift, int pre, int wb) +{ + int rc = load_store_reg_no_wb(codebuf, op, xfer, base, offset, shift, pre); + if (wb) { + return add_reg(codebuf, base, base, offset); + } + return rc; +} + +int str_reg(CodeBuf *codebuf, Reg src, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_STR, src, base, offset, shift, pre, wb); +} + +int ldr_reg(CodeBuf *codebuf, Reg dst, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_LDR, dst, base, offset, shift, pre, wb); +} + +int strb_reg(CodeBuf *codebuf, Reg src, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_STRB, src, base, offset, shift, pre, wb); +} + +int ldrb_reg(CodeBuf *codebuf, Reg dst, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_LDRB, dst, base, offset, shift, pre, wb); +} + +int strh_reg(CodeBuf *codebuf, Reg src, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_STRH, src, base, offset, shift, pre, wb); +} + +int ldrh_reg(CodeBuf *codebuf, Reg dst, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_LDRH, dst, base, offset, shift, pre, wb); +} + +int ldrsh_reg(CodeBuf *codebuf, Reg dst, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_LDRSH, dst, base, offset, shift, pre, wb); +} + +int ldrsb_reg(CodeBuf *codebuf, Reg dst, Reg base, Reg offset, u32 shift, int pre, int wb) +{ + return load_store_reg(codebuf, LS_LDRSB, dst, base, offset, shift, pre, wb); +} + +int ldrex_imm(CodeBuf *codebuf, Reg dst, Reg base, unsigned offset) +{ + if (Thumb2) { + if ((offset & 3) == 0 && offset < 256 * 4) { + return out_16x2(codebuf, T_LDREX(dst, base, offset)); + } + } + J_Unimplemented(); +} + +int strex_imm(CodeBuf *codebuf, Reg dst, Reg src, Reg base, unsigned offset) +{ + if (Thumb2) { + if ((offset & 3) == 0 && offset < 256 * 4) { + return out_16x2(codebuf, T_STREX(dst, src, base, offset)); + } + } + J_Unimplemented(); +} + +int str_imm(CodeBuf *codebuf, Reg src, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (base < ARM_R8 && src < ARM_R8 && uoff < 128 && (uoff & 3) == 0) + return out_16(codebuf, T_STR_IMM5(src, base, uoff>>2)); + if (base == ARM_SP && src < ARM_R8 && uoff < 1024 && (uoff &3) ==0) + return out_16(codebuf, T_STR_SP_IMM8(src, uoff>>2)); + if (ThumbEE && base == ARM_R9 && src < ARM_R8 && uoff < 256 && (uoff & 3) == 0) + return out_16(codebuf, E_STR_IMM6(src, uoff>>2)); + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_STR_IMM12(src, base, uoff)); + } else if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_STR_IMM8(src, base, offset, pre, wb)); + JASSERT(base != ARM_IP && src != ARM_IP, "src or base == IP in str_imm"); + mov_imm(codebuf, ARM_IP, offset); + return str_reg(codebuf, src, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int ldr_imm(CodeBuf *codebuf, Reg dst, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (base < ARM_R8 && dst < ARM_R8 && uoff < 128 && (uoff & 3) ==0) + return out_16(codebuf, T_LDR_IMM5(dst, base, uoff>>2)); + if (base == ARM_SP && dst < ARM_R8 && uoff < 1024 & (uoff & 3) == 0) + return out_16(codebuf, T_LDR_SP_IMM8(dst, uoff>>2)); + if (ThumbEE && base == ARM_R9 && dst < ARM_R8 && uoff < 256 && (uoff & 3) == 0) + return out_16(codebuf, E_LDR_IMM6(dst, uoff>>2)); + if (ThumbEE && base == ARM_R10 && dst < ARM_R8 && uoff < 128 && (uoff & 3) == 0) + return out_16(codebuf, E_LDR_IMM5(dst, uoff>>2)); + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_LDR_IMM12(dst, base, uoff)); + } else { + if (ThumbEE && pre && !wb && offset <= 0 && offset > -32 && (uoff & 3) == 0 && + base < ARM_R8 && dst < ARM_R8) + return out_16(codebuf, E_LDR_IMM3(dst, base, -offset >> 2)); + if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_LDR_IMM8(dst, base, offset, pre, wb)); + } + JASSERT(base != ARM_IP, "base == IP in ldr_imm"); + mov_imm(codebuf, ARM_IP, offset); + return ldr_reg(codebuf, dst, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int strb_imm(CodeBuf *codebuf, Reg src, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (base < ARM_R8 && src < ARM_R8 && uoff < 32) + return out_16(codebuf, T_STRB_IMM5(src, base, uoff)); + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_STRB_IMM12(src, base, uoff)); + } else if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_STRB_IMM8(src, base, offset, pre, wb)); + JASSERT(base != ARM_IP && src != ARM_IP, "src or base == IP in str_imm"); + mov_imm(codebuf, ARM_IP, offset); + return strb_reg(codebuf, src, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int ldrb_imm(CodeBuf *codebuf, Reg dst, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (base < ARM_R8 && dst < ARM_R8 && uoff < 32) + return out_16(codebuf, T_LDRB_IMM5(dst, base, uoff)); + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_LDRB_IMM12(dst, base, uoff)); + } else if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_LDRB_IMM8(dst, base, offset, pre, wb)); + JASSERT(base != ARM_IP, "base == IP in ldr_imm"); + mov_imm(codebuf, ARM_IP, offset); + return ldrb_reg(codebuf, dst, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int strh_imm(CodeBuf *codebuf, Reg src, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (base < ARM_R8 && src < ARM_R8 && uoff < 64 && (uoff & 1) == 0) + return out_16(codebuf, T_STRH_IMM5(src, base, uoff>>1)); + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_STRH_IMM12(src, base, uoff)); + } else if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_STRH_IMM8(src, base, offset, pre, wb)); + JASSERT(base != ARM_IP && src != ARM_IP, "src or base == IP in str_imm"); + mov_imm(codebuf, ARM_IP, offset); + return strh_reg(codebuf, src, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int ldrh_imm(CodeBuf *codebuf, Reg dst, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (base < ARM_R8 && dst < ARM_R8 && uoff < 64 && (uoff & 1) == 0) + return out_16(codebuf, T_LDRH_IMM5(dst, base, uoff>>1)); + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_LDRH_IMM12(dst, base, uoff)); + } else if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_LDRH_IMM8(dst, base, offset, pre, wb)); + JASSERT(base != ARM_IP, "base == IP in ldr_imm"); + mov_imm(codebuf, ARM_IP, offset); + return ldrh_reg(codebuf, dst, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int ldrsh_imm(CodeBuf *codebuf, Reg dst, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_LDRSH_IMM12(dst, base, uoff)); + } else if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_LDRSH_IMM8(dst, base, offset, pre, wb)); + JASSERT(base != ARM_IP, "base == IP in ldr_imm"); + mov_imm(codebuf, ARM_IP, offset); + return ldrsh_reg(codebuf, dst, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int ldrsb_imm(CodeBuf *codebuf, Reg dst, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (pre && !wb && offset >= 0) { + if (uoff < (1 << 12)) + return out_16x2(codebuf, T_LDRSB_IMM12(dst, base, uoff)); + } else if (offset < 256 && offset > -256) + return out_16x2(codebuf, T_LDRSB_IMM8(dst, base, offset, pre, wb)); + JASSERT(base != ARM_IP, "base == IP in ldr_imm"); + mov_imm(codebuf, ARM_IP, offset); + return ldrsb_reg(codebuf, dst, base, ARM_IP, 0, pre, wb); + } + J_Unimplemented(); +} + +int add_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm); + +int ldrd_imm(CodeBuf *codebuf, Reg dst_lo, Reg dst_hi, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (offset < 256 * 4 && offset > -256 * 4 && (offset & 3) == 0) + return out_16x2(codebuf, T_LDRD_IMM(dst_lo, dst_hi, base, offset>>2, pre, wb)); + if (pre && !wb) { + add_imm(codebuf, ARM_IP, base, offset); + return out_16x2(codebuf, T_LDRD_IMM(dst_lo, dst_hi, ARM_IP, 0, 1, 0)); + } + } + J_Unimplemented(); +} + +int strd_imm(CodeBuf *codebuf, Reg src_lo, Reg src_hi, Reg base, int offset, int pre, int wb) +{ + unsigned uoff; + + if (!pre && !wb) pre = 1, offset = 0; + uoff = (unsigned)offset; + if (Thumb2) { + if (offset < 256 * 4 && offset > -256 * 4 && (offset & 3) == 0) + return out_16x2(codebuf, T_STRD_IMM(src_lo, src_hi, base, offset>>2, pre, wb)); + if (pre && !wb) { + add_imm(codebuf, ARM_IP, base, offset); + return out_16x2(codebuf, T_STRD_IMM(src_lo, src_hi, ARM_IP, 0, 1, 0)); + } + } + J_Unimplemented(); +} + +int stm(CodeBuf *codebuf, u32 regset, u32 base, u32 st, u32 wb) +{ + JASSERT(regset != 0, "regset != 0 in stm"); + if (Thumb2) { + if (!ThumbEE && base < ARM_R8 && (regset & ~0xff) == 0 && st == IA && wb) + return out_16(codebuf, T_STM8(base, regset)); + if (base == ARM_SP) { + if ((regset & ~0x40ff) == 0 && st == DB && wb) + return out_16(codebuf, T_PUSH(regset)); + } + if ((regset & -regset) == regset) + return str_imm(codebuf, LOG2(regset), base, (st & 1) ? 4 : -4, (st & 2) >> 1, wb); + if (st == PUSH_EA || st == PUSH_FD) + return out_16x2(codebuf, T_STM16(base, regset, st, wb)); + return out_16x2(codebuf, T_STM16(base, regset, st, wb)); + } + J_Unimplemented(); +} + +int ldm(CodeBuf *codebuf, u32 regset, u32 base, u32 st, u32 wb) +{ + JASSERT(regset != 0, "regset != 0 in stm"); + if (Thumb2) { + if (!ThumbEE && base < ARM_R8 && (regset & ~0xff) == 0 && st == IA && wb) + return out_16(codebuf, T_LDM8(base, regset)); + if (base == ARM_SP) { + if ((regset & ~0x80ff) == 0 && st == IA && wb) + return out_16(codebuf, T_POP(regset)); + } + if ((regset & -regset) == regset) + return ldr_imm(codebuf, LOG2(regset), base, (st & 1) ? 4 : -4, (st & 2) >> 1, wb); + if (st == POP_EA || st == POP_FD) + return out_16x2(codebuf, T_LDM16(base, regset, st, wb)); + } + J_Unimplemented(); +} + +int dop_reg(CodeBuf *codebuf, u32 op, u32 dst, u32 lho, u32 rho, u32 sh_typ, u32 shift) +{ + unsigned s = 0; + if (op != DP_MUL) s = 1 << 20; +// JASSERT(dst != ARM_PC, "Terrible things happen if dst == PC && S bit set"); + return out_16x2(codebuf, T_DOP_REG(DP_REG(op)|s, dst, lho, rho, sh_typ, shift)); +} + +int dop_reg_preserve(CodeBuf *codebuf, u32 op, u32 dst, u32 lho, u32 rho, u32 sh_typ, u32 shift) +{ + return out_16x2(codebuf, T_DOP_REG(DP_REG(op), dst, lho, rho, sh_typ, shift)); +} + +int sxtb(CodeBuf *codebuf, u32 dst, u32 src) +{ + if (dst < ARM_R8 && src < ARM_R8) + return out_16(codebuf, T_SXTB(dst, src)); + return out_16x2(codebuf, T2_SXTB(dst, src)); +} + +int sxth(CodeBuf *codebuf, u32 dst, u32 src) +{ + if (dst < ARM_R8 && src < ARM_R8) + return out_16(codebuf, T_SXTH(dst, src)); + return out_16x2(codebuf, T2_SXTH(dst, src)); +} + +int uxth(CodeBuf *codebuf, u32 dst, u32 src) +{ + if (dst < ARM_R8 && src < ARM_R8) + return out_16(codebuf, T_UXTH(dst, src)); + return out_16x2(codebuf, T2_UXTH(dst, src)); +} + +int mov_reg(CodeBuf *codebuf, u32 dst, u32 src) +{ + if (dst == src) return 0; + if (dst == ARM_PC) return out_16(codebuf, T_BX(src)); + return out_16(codebuf, T_MOV(dst, src)); +// return dop_reg(codebuf, DP_MOV, dst, 0, src, SHIFT_LSL, 0); +} + +int mvn_reg(CodeBuf *codebuf, u32 dst, u32 src) +{ + if (dst < ARM_R8 && src < ARM_R8) + return out_16(codebuf, T_MVN(dst, src)); + return dop_reg(codebuf, DP_MVN, dst, 0, src, SHIFT_LSL, 0); +} + +int vmov_reg_s_toVFP(CodeBuf *codebuf, u32 dst, u32 src) +{ + return out_16x2(codebuf, T_VMOVS_TOVFP(dst, src)); +} + +int vmov_reg_s_toARM(CodeBuf *codebuf, u32 dst, u32 src) +{ + return out_16x2(codebuf, T_VMOVS_TOARM(dst, src)); +} + +int vmov_reg_d_toVFP(CodeBuf *codebuf, u32 dst, u32 src_lo, u32 src_hi) +{ + return out_16x2(codebuf, T_VMOVD_TOVFP(dst, src_lo, src_hi)); +} + +int vmov_reg_d_toARM(CodeBuf *codebuf, u32 dst_lo, u32 dst_hi, u32 src) +{ + return out_16x2(codebuf, T_VMOVD_TOARM(dst_lo, dst_hi, src)); +} + +int vop_reg_s(CodeBuf *codebuf, u32 op, u32 dst, u32 lho, u32 rho) +{ + return out_16x2(codebuf, T_VOP_REG_S(VP_REG(op), dst, lho, rho)); +} + +int vop_reg_d(CodeBuf *codebuf, u32 op, u32 dst, u32 lho, u32 rho) +{ + return out_16x2(codebuf, T_VOP_REG_D(VP_REG(op), dst, lho, rho)); +} + +int vcmp_reg_s(CodeBuf *codebuf, u32 lho, u32 rho, unsigned e) +{ + return out_16x2(codebuf, T_VCMP_S(lho, rho, e)); +} + +int vcmp_reg_d(CodeBuf *codebuf, u32 lho, u32 rho, unsigned e) +{ + return out_16x2(codebuf, T_VCMP_D(lho, rho, e)); +} + +int vmrs(CodeBuf *codebuf, u32 dst) +{ + return out_16x2(codebuf, T_VMRS(dst)); +} + +int add_reg(CodeBuf *codebuf, u32 dst, u32 lho, u32 rho) +{ + return dop_reg(codebuf, DP_ADD, dst, lho, rho, SHIFT_LSL, 0); +} + +int cmp_reg(CodeBuf *codebuf, Reg lho, Reg rho) +{ + if (lho < ARM_R8 && rho < ARM_R8) + return out_16(codebuf, T_CMP_REG(lho, rho)); + return dop_reg(codebuf, DP_CMP, 0x0f, lho, rho, SHIFT_LSL, 0); +} + +int add_reg_shift(CodeBuf *codebuf, u32 dst, u32 lho, u32 rho, u2 sh_typ, u32 shift) +{ + return dop_reg(codebuf, DP_ADD, dst, lho, rho, sh_typ, shift); +} + +int add_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + int imm_type, rol; + + if (imm == 0) return mov_reg(codebuf, dst, src); + if (Thumb2) { + if (dst < ARM_R8 && src < ARM_R8) { + if (imm < 8) + return out_16(codebuf, T1_ADD_IMM(dst, src, imm)); + if (-imm < 8) + return out_16(codebuf, T1_SUB_IMM(dst, src, -imm)); + if (src == dst) { + if (imm < 256) + return out_16(codebuf, T2_ADD_IMM(src, imm)); + if (-imm < 256) + return out_16(codebuf, T2_SUB_IMM(src, -imm)); + } + } + imm_type = thumb_bytelane(imm); + if (imm_type >= 0) { + if (imm_type == 2) imm >>= 8; + return out_16x2(codebuf, T3_ADD_BYTELANE(dst, src, imm_type, (imm & 0xff))); + } + imm_type = thumb_bytelane(-imm); + if (imm_type >= 0) { + imm = -imm; + if (imm_type == 2) imm >>= 8; + return out_16x2(codebuf, T3_SUB_BYTELANE(dst, src, imm_type, (imm & 0xff))); + } + rol = thumb_single_shift(imm); + if (rol >= 0) + return out_16x2(codebuf, T3_ADD_ROT_IMM(dst, src, rol, ROL(imm, rol))); + rol = thumb_single_shift(-imm); + if (rol >= 0) + return out_16x2(codebuf, T3_SUB_ROT_IMM(dst, src, rol, ROL(-imm, rol))); + if (imm < (1 << 12)) + return out_16x2(codebuf, T4_ADD_IMM(dst, src, imm)); + if (-imm < (1 << 12)) + return out_16x2(codebuf, T4_SUB_IMM(dst, src, -imm)); + mov_imm(codebuf, ARM_IP, imm); + return add_reg(codebuf, dst, src, ARM_IP); + } + J_Unimplemented(); +} + +int sub_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + return add_imm(codebuf, dst, src, -imm); +} + +int dop_imm_s(CodeBuf *codebuf, u32 op, u32 dst, u32 src, u32 imm, unsigned s) +{ + int imm_type, rol; + unsigned n_op, n_imm; + + JASSERT(op == DP_ADC || op == DP_ADD || op == DP_AND || op == DP_BIC || op == DP_CMN || + op == DP_CMP || op == DP_EOR || op == DP_MOV || op == DP_MVN || + op == DP_ORN || op == DP_ORR || op == DP_RSB || op == DP_SBC || + op == DP_SUB || op == DP_TEQ || op == DP_TST, "bad op"); + if (op == DP_CMP || op == DP_CMN || op == DP_TEQ || op == DP_TST) dst = 0x0f; + if (op == DP_MOV || op == DP_MVN) src = 0x0f; + imm_type = thumb_bytelane(imm); + if (imm_type >= 0) { + if (imm_type == 2) imm >>= 8; + return out_16x2(codebuf, T_DOP_BYTELANE(DP_IMM(op)|s, dst, src, imm_type, (imm & 0xff))); + } + rol = thumb_single_shift(imm); + if (rol >= 0) + return out_16x2(codebuf, T_DOP_ROT_IMM(DP_IMM(op)|s, dst, src, rol, ROL(imm, rol))); + n_op = N_OP(op); + if (n_op != (unsigned)-1) { + n_imm = ~imm; + if (op == DP_ADD || op == DP_SUB || op == DP_CMP || op == DP_CMN) n_imm = -imm; + imm_type = thumb_bytelane(n_imm); + if (imm_type >= 0) { + if (imm_type == 2) n_imm >>= 8; + return out_16x2(codebuf, T_DOP_BYTELANE(DP_IMM(n_op)|s, dst, src, imm_type, (n_imm & 0xff))); + } + rol = thumb_single_shift(n_imm); + if (rol >= 0) + return out_16x2(codebuf, T_DOP_ROT_IMM(DP_IMM(n_op)|s, dst, src, rol, ROL(n_imm, rol))); + } + mov_imm(codebuf, ARM_IP, imm); + return out_16x2(codebuf, T_DOP_REG(DP_REG(op)|s, dst, src, ARM_IP, SHIFT_LSL, 0)); +} + +int dop_imm(CodeBuf *codebuf, u32 op, u32 dst, u32 src, u32 imm) +{ + return dop_imm_s(codebuf, op, dst, src, imm, 1<<20); +} + +int dop_imm_preserve(CodeBuf *codebuf, u32 op, u32 dst, u32 src, u32 imm) +{ + return dop_imm_s(codebuf, op, dst, src, imm, 0); +} + +int shift_imm(CodeBuf *codebuf, u32 op, u32 dst, u32 src, u32 imm) +{ + imm &= 31; + if (imm == 0) + return mov_reg(codebuf, dst, src); + else + return out_16x2(codebuf, T_SHIFT_IMM(DP_IMM(op), dst, src, imm)); +} + +int rsb_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + if (dst < ARM_R8 && src < ARM_R8 && imm == 0) + return out_16(codebuf, T_NEG(dst, src)); + return dop_imm(codebuf, DP_RSB, dst, src, imm); +} + +int adc_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + return dop_imm(codebuf, DP_ADC, dst, src, imm); +} + +int asr_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + return shift_imm(codebuf, DP_ASR, dst, src, imm); +} + +int eor_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + return dop_imm(codebuf, DP_EOR, dst, src, imm); +} + +int and_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + return dop_imm(codebuf, DP_AND, dst, src, imm); +} + +int orr_imm(CodeBuf *codebuf, u32 dst, u32 src, u32 imm) +{ + return dop_imm(codebuf, DP_ORR, dst, src, imm); +} + +int cmp_imm(CodeBuf *codebuf, Reg src, u32 imm) +{ + if (src <= ARM_R8 && imm < 256) return out_16(codebuf, T_CMP_IMM(src, imm)); + return dop_imm(codebuf, DP_CMP, 0x0f, src, imm); +} + +int tst_imm(CodeBuf *codebuf, Reg src, u32 imm) +{ + return dop_imm(codebuf, DP_TST, 0x0f, src, imm); +} + +int hbl(CodeBuf *codebuf, unsigned handler) +{ + mov_imm(codebuf, ARM_IP, 0); + str_imm(codebuf, ARM_IP, ARM_IP, 0, 1, 0); +#if 0 + if ((Thumb2 && ThumbEE)) + return out_16(codebuf, T_HBL(handler)); + if (TESTING) + return mov_imm(codebuf, ARM_R8, handler); + J_Unimplemented(); +#endif +} + +#if 0 +int enter_leave(CodeBuf *codebuf, unsigned enter) +{ + if ((Thumb2 && ThumbEE)) + return out_16x2(codebuf, T_ENTER_LEAVE(enter)); + J_Unimplemented(); +} +#endif + +int tbh(CodeBuf *codebuf, Reg base, Reg idx) +{ + out_16x2(codebuf, T_TBH(base, idx)); +} + +int umull(CodeBuf *codebuf, u32 res_lo, u32 res_hi, u32 lho, u32 rho) +{ + return out_16x2(codebuf, T_UMULL(res_lo, res_hi, lho, rho)); +} + +int mla(CodeBuf *codebuf, u32 res, u32 lho, u32 rho, u32 a) +{ + return out_16x2(codebuf, T_MLA(res, lho, rho, a)); +} + +#define COND_EQ 0 +#define COND_NE 1 +#define COND_LT 2 +#define COND_GE 3 +#define COND_GT 4 +#define COND_LE 5 +#define COND_CS 6 +#define COND_CC 7 +#define COND_MI 8 +#define COND_PL 9 + +static unsigned conds[] = { + 0x0, + 0x1, + 0xb, + 0xa, + 0xc, + 0xd, + 0x2, + 0x3, + 0x4, + 0x5, +}; + +#define NEG_COND(cond) ((cond) ^ 1) + +#define T_B(uoff) (0xe000 | ((uoff) & 0x7ff)) +#define T_BW(uoff) (0xf0009000 | \ + (((uoff) & (1<<23)) << (26-23)) | \ + (((~(uoff) & (1<<22)) >> 22) ^ (((uoff) & (1<<23)) >> 23)) << 13 | \ + (((~(uoff) & (1<<21)) >> 21) ^ (((uoff) & (1<<23)) >> 23)) << 11 | \ + (((uoff) & 0x1ff800) << (16-11)) | \ + ((uoff) & 0x7ff)) +#define T_BL(uoff) (0xf000d000 | \ + (((uoff) & (1<<23)) << (26-23)) | \ + (((~(uoff) & (1<<22)) >> 22) ^ (((uoff) & (1<<23)) >> 23)) << 13 | \ + (((~(uoff) & (1<<21)) >> 21) ^ (((uoff) & (1<<23)) >> 23)) << 11 | \ + (((uoff) & 0x1ff800) << (16-11)) | \ + ((uoff) & 0x7ff)) +#define T_BLX(uoff) (0xf000c000 | \ + (((uoff) & (1<<23)) << (26-23)) | \ + (((~(uoff) & (1<<22)) >> 22) ^ (((uoff) & (1<<23)) >> 23)) << 13 | \ + (((~(uoff) & (1<<21)) >> 21) ^ (((uoff) & (1<<23)) >> 23)) << 11 | \ + (((uoff) & 0x1ff800) << (16-11)) | \ + ((uoff) & 0x7ff)) +#define T_BCC(cond, uoff) (0xd000 | (conds[cond] << 8) | ((uoff) & 0xff)) +#define T_BCCW(cond, uoff) (0xf0008000 | \ + (conds[cond] << 22) | \ + (((uoff) & (1<<19)) << (26-19)) | \ + (((uoff) & (1<<18)) >> (18-11)) | \ + (((uoff) & (1<<17)) >> (17-13)) | \ + (((uoff) & 0x1f800) << (16-11)) | \ + ((uoff) & 0x7ff)) +#define T_BLX_REG(r) (0x4780 | ((r) << 3)) +#define T_CBZ(r, uoff) (0xb100 | (((uoff) & 0x1f) << 3) | (((uoff) & 0x20) << (8-5)) | ((r) & 7)) +#define T_CBNZ(r, uoff) (0xb900 | (((uoff) & 0x1f) << 3) | (((uoff) & 0x20) << (8-5)) | ((r) & 7)) + +#define T_IT(cond, mask) (0xbf00 | (conds[cond] << 4) | (mask)) + +#define IT_MASK_T 8 + +#define PATCH(loc) do { \ + unsigned oldidx = codebuf->idx; \ + codebuf->idx = (loc) >> 1; \ + +#define HCTAP \ + codebuf->idx = oldidx; \ + } while (0) + +int forward_16(CodeBuf *codebuf) +{ + int loc = out_loc(codebuf); + out_16(codebuf, T_UNDEFINED_16); + return loc; +} + +int forward_32(CodeBuf *codebuf) +{ + int loc = out_loc(codebuf); + out_32(codebuf, T_UNDEFINED_32); + return loc; +} + +int it(CodeBuf *codebuf, unsigned cond, unsigned mask) +{ + return out_16(codebuf, T_IT(cond, mask)); +} + +void t2_bug_align(CodeBuf *codebuf) +{ + unsigned pc = (unsigned)&codebuf->codebuf[codebuf->idx]; + if ((pc & 0xffe) != 0xffe) return; + mov_reg(codebuf, ARM_R0, ARM_R0); +} + +void t2_bug_fix(CodeBuf *codebuf, int offset) +{ + unsigned pc = (unsigned)&codebuf->codebuf[codebuf->idx]; + if ((pc & 0xffe) != 0xffe) return; + if (offset >= 0 || offset < -(4096+4)) return; + mov_reg(codebuf, ARM_R0, ARM_R0); +} + +int branch_uncond(CodeBuf *codebuf, unsigned dest) +{ + unsigned loc = (codebuf->idx * 2) + 4; + int offset; + unsigned uoff; + + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest - loc; + if (offset >= -(1<<10) && offset < (1<<10)) { + uoff = offset; + return out_16(codebuf, T_B(uoff)); + } + t2_bug_fix(codebuf, offset); + if (offset >= -(1<<23) && offset < (1<<23)) { + uoff = offset; + return out_16x2(codebuf, T_BW(uoff)); + } + J_Unimplemented(); +} + +int branch_uncond_patch(CodeBuf *codebuf, unsigned loc, unsigned dest) +{ + int offset; + unsigned uoff; + unsigned oldidx; + int rc; + + oldidx = codebuf->idx; + codebuf->idx = loc >> 1; + loc += 4; + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest - loc; + t2_bug_fix(codebuf, offset); + if (offset >= -(1<<23) && offset < (1<<23)) { + uoff = offset & ((1<<24)-1); + rc = out_16x2(codebuf, T_BW(uoff)); + codebuf->idx = oldidx; + return rc; + } + J_Unimplemented(); +} + +int branch_narrow_patch(CodeBuf *codebuf, unsigned loc) +{ + int offset; + unsigned uoff; + unsigned oldidx; + unsigned dest; + int rc; + + dest = codebuf->idx * 2; + oldidx = codebuf->idx; + codebuf->idx = loc >> 1; + loc += 4; + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest - loc; + if (offset >= -(1<<10) && offset < (1<<10)) { + uoff = offset & ((1<<11)-1); + rc = out_16(codebuf, T_B(uoff)); + codebuf->idx = oldidx; + return rc; + } + J_Unimplemented(); +} + +int branch(CodeBuf *codebuf, unsigned cond, unsigned dest) +{ + unsigned loc = (codebuf->idx * 2) + 4; + int offset; + unsigned uoff; + + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest - loc; + if (offset >= -(1<<7) && offset < (1<<7)) { + uoff = offset; + return out_16(codebuf, T_BCC(cond, uoff)); + } + t2_bug_fix(codebuf, offset); + if (offset >= -(1<<19) && offset < (1<<19)) { + uoff = offset; + return out_16x2(codebuf, T_BCCW(cond, uoff)); + } + J_Unimplemented(); +} + +int bcc_patch(CodeBuf *codebuf, unsigned cond, unsigned loc) +{ + int offset; + unsigned uoff; + unsigned oldidx; + unsigned dest; + int rc; + + dest = codebuf->idx * 2; + oldidx = codebuf->idx; + codebuf->idx = loc >> 1; + loc += 4; + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest-loc; + if (offset >= -(1<<7) && offset < (1<<7)) { + uoff = offset; + rc = out_16(codebuf, T_BCC(cond, uoff)); + codebuf->idx = oldidx; + return rc; + } + J_Unimplemented(); +} + +int bl(CodeBuf *codebuf, unsigned dest) +{ + unsigned loc = (unsigned)&codebuf->codebuf[codebuf->idx] + 4; + int offset; + unsigned uoff; + + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest - loc; + t2_bug_fix(codebuf, offset); + if (offset >= -(1<<23) && offset < (1<<23)) { + uoff = offset; + return out_16x2(codebuf, T_BL(uoff)); + } + J_Unimplemented(); +} + +int blx(CodeBuf *codebuf, unsigned dest) +{ + unsigned loc = (unsigned)&codebuf->codebuf[codebuf->idx] + 4; + int offset; + unsigned uoff; + + JASSERT((dest & 3) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + loc &= ~1; + offset = dest - loc; + t2_bug_fix(codebuf, offset); + if (offset >= -(1<<23) && offset < (1<<23)) { + uoff = offset; + return out_16x2(codebuf, T_BLX(uoff)); + } + J_Unimplemented(); +} + +int branch_patch(CodeBuf *codebuf, unsigned cond, unsigned loc, unsigned dest) +{ + int offset; + unsigned uoff; + unsigned oldidx; + int rc; + + oldidx = codebuf->idx; + codebuf->idx = loc >> 1; + loc += 4; + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest - loc; + t2_bug_fix(codebuf, offset); + if (offset >= -(1<<19) && offset < (1<<19)) { + uoff = offset & ((1<<20)-1); + rc = out_16x2(codebuf, T_BCCW(cond, uoff)); + codebuf->idx = oldidx; + return rc; + } + J_Unimplemented(); +} + +int blx_reg(CodeBuf *codebuf, Reg r) +{ + return out_16(codebuf, T_BLX_REG(r)); +} + +int cbz_patch(CodeBuf *codebuf, Reg r, unsigned loc) +{ + unsigned offset; + unsigned oldidx; + unsigned dest; + int rc; + + dest = codebuf->idx * 2; + oldidx = codebuf->idx; + codebuf->idx = loc >> 1; + loc += 4; + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest-loc; + if (r < ARM_R8 && offset < 64) { + rc = out_16(codebuf, T_CBZ(r, offset)); + codebuf->idx = oldidx; + return rc; + } + J_Unimplemented(); +} + +int cbnz_patch(CodeBuf *codebuf, Reg r, unsigned loc) +{ + unsigned offset; + unsigned oldidx; + unsigned dest; + int rc; + + dest = codebuf->idx * 2; + oldidx = codebuf->idx; + codebuf->idx = loc >> 1; + loc += 4; + JASSERT((dest & 1) == 0 && (loc & 1) == 0, "unaligned code"); + dest >>= 1; + loc >>= 1; + offset = dest-loc; + if (r < ARM_R8 && offset < 64) { + rc = out_16(codebuf, T_CBNZ(r, offset)); + codebuf->idx = oldidx; + return rc; + } + J_Unimplemented(); +} + +int chka(CodeBuf *codebuf, u32 size, u32 idx) +{ + cmp_reg(codebuf, idx, size); + it(codebuf, COND_CS, IT_MASK_T); + bl(codebuf, handlers[H_ARRAYBOUND]); +} + +//----------------------------------------------------------------------------------- + +void Thumb2_Push_Multiple(CodeBuf *codebuf, Reg *regs, unsigned nregs) +{ + unsigned regset = 0; + unsigned regmask; + unsigned i; + Reg r; + + JASSERT(nregs > 0, "nregs must be > 0"); + if (nregs == 1) { + str_imm(codebuf, regs[0], Rstack, -4, 1, 1); + return; + } + for (i = 0; i < nregs; i++) { + r = regs[i]; + if (!IS_ARM_INT_REG(r)) J_Unimplemented(); + regmask = 1<= (regset & -regset)) { + stm(codebuf, regset, Rstack, PUSH_FD, 1); + regset = 0; + } + regset |= regmask; + } + stm(codebuf, regset, Rstack, PUSH_FD, 1); +} + +void Thumb2_Pop_Multiple(CodeBuf *codebuf, Reg *regs, unsigned nregs) +{ + unsigned regset = 0; + unsigned regmask; + unsigned i; + Reg r; + + JASSERT(nregs > 0, "nregs must be > 0"); + if (nregs == 1) { + ldr_imm(codebuf, regs[0], Rstack, 4, 0, 1); + return; + } + i = nregs; + do { + i--; + r = regs[i]; + if (!IS_ARM_INT_REG(r)) J_Unimplemented(); + regmask = 1< 0); + ldm(codebuf, regset, Rstack, POP_FD, 1); +} + +#if 0 +int load_multiple(CodeBuf *codebuf, Reg base, Reg *regs, u32 nregs, u32 st, u32 wb) +{ + unsigned regset = 0; + unsigned regmask; + unsigned pre = 0; + int dir = 1; + unsigned u; + Reg r; + + if (st == IB || st == DB) pre = 4; + if (st == DA || st == DB) dir = -4; + JASSERT(nregs > 0, "nregs must be > 0"); + if (nregs == 1) + return ldr_imm(codebuf, regs[0], base, dir, pre, wb); + if (dir > 0) { + u = 0; + do { + r = regs[u]; + regmask = 1<= regset) { + if (!wb && base != ARM_IP) { + mov_reg(codebuf, ARM_IP, base); + base = ARM_IP; + } + ldm(codebuf, regset, base, st, 1); + regset = 0; + } + regset |= regmask; + } while (++u < nregs); + ldm(codebuf, regset, base, st, wb); + } else { + u = nregs; + do { + u--; + r = regs[u]; + regmask = 1< 0); + ldm(codebuf, regset, base, st, wb); + } +} +#endif + +int mov_multiple(CodeBuf *codebuf, Reg *dst, Reg *src, unsigned nregs) +{ + unsigned u, n, p; + unsigned smask = 0; + unsigned dmask = 0; + unsigned free_mask, free_reg; + + for (u = 0, n = 0; u < nregs; u++) { + JASSERT(dst[u] != ARM_IP, "mov_multiple cannot be used for ARM_IP"); + JASSERT(src[u] != ARM_IP, "mov_multiple cannot be used for ARM_IP"); + if (dst[u] != src[u]) { + dst[n] = dst[u]; + src[n++] = src[u]; + } + } + while (n) { + // Find a reg which is in the dst reg set but not the src reg set + smask = 0; + dmask = 0; + for (u = 0; u < n; u++) { + smask |= (1 << src[u]); + dmask |= (1 << dst[u]); + } + free_mask = dmask & ~smask; + if (!free_mask) { + // No such reg => must use IP + Reg r = dst[0]; + mov_reg(codebuf, ARM_IP, r); + for (u = 0; u < n; u++) { + if (src[u] == r) src[u] = ARM_IP; + } + smask ^= (1<stack[(jstack)->depth-1]) +#define TOSM1(jstack) ((jstack)->stack[(jstack)->depth-2]) +#define TOSM2(jstack) ((jstack)->stack[(jstack)->depth-3]) +#define TOSM3(jstack) ((jstack)->stack[(jstack)->depth-4]) + +#define POP(jstack) ((jstack)->stack[--(jstack)->depth]) +#define PUSH(jstack, r) ((jstack)->stack[(jstack)->depth++] = (r)) +#define SWAP(jstack) do { \ + Reg r = (jstack)->stack[(jstack)->depth-1]; \ + (jstack)->stack[(jstack)->depth-1] = (jstack)->stack[(jstack)->depth-2]; \ + (jstack)->stack[(jstack)->depth-2] = r; \ + } while (0) + +#define JSTACK_REG(jstack) jstack_reg(jstack) +#define JSTACK_PREFER(jstack, prefer) jstack_prefer(jstack, prefer) + +static const unsigned last_clear_bit[] = { + 3, // 0000 + 3, // 0001 + 3, // 0010 + 3, // 0011 + 3, // 0100 + 3, // 0101 + 3, // 0110 + 3, // 0111 + 2, // 1000 + 2, // 1001 + 2, // 1010 + 2, // 1011 + 1, // 1100 + 1, // 1101 + 0, // 1110 + 0, // 1111 +}; + +#define LAST_CLEAR_BIT(mask) last_clear_bit[mask] + +unsigned jstack_reg(Thumb2_Stack *jstack) +{ + unsigned *stack = jstack->stack; + unsigned depth = jstack->depth; + unsigned mask = 0; + unsigned r; + unsigned i; + + for (i = 0; i < depth; i++) mask |= 1 << stack[i]; + mask &= (1 << STACK_REGS) - 1; + JASSERT(mask != (1 << STACK_REGS) - 1, "No free reg in push"); + r = LAST_CLEAR_BIT(mask); + return r; +} + +unsigned jstack_prefer(Thumb2_Stack *jstack, Reg prefer) +{ + unsigned *stack = jstack->stack; + unsigned depth = jstack->depth; + unsigned mask = 0; + unsigned r; + unsigned i; + + for (i = 0; i < depth; i++) mask |= 1 << stack[i]; + mask &= (1 << STACK_REGS) - 1; + if ((prefer & ~mask) & 0x0f) mask |= (~prefer & ((1 << STACK_REGS) - 1)); + JASSERT(mask != (1 << STACK_REGS) - 1, "No free reg in push"); + r = LAST_CLEAR_BIT(mask); + return r; +} + +void Thumb2_Fill(Thumb2_Info *jinfo, unsigned required) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned *stack = jstack->stack; + unsigned depth = jstack->depth; + unsigned mask = 0; + unsigned tofill; + unsigned r, i; + + if (depth >= required) return; + tofill = required - depth; + for (i = depth; i > 0;) { + i--; + mask |= 1 << stack[i]; + stack[i+tofill] = stack[i]; + } + mask &= (1 << STACK_REGS) - 1; + for (i = 0; i < tofill; i++) { + JASSERT(mask != (1 << STACK_REGS) - 1, "Fill failed!!!"); + r = LAST_CLEAR_BIT(mask); + mask |= (1 << r); + stack[i] = r; + } + jstack->depth = depth + tofill; + Thumb2_Pop_Multiple(jinfo->codebuf, stack, tofill); +} + +static const unsigned bitcount[] = { + 0, // 0000 + 1, // 0001 + 1, // 0010 + 2, // 0011 + 1, // 0100 + 2, // 0101 + 2, // 0110 + 3, // 0111 + 1, // 1000 + 2, // 1001 + 2, // 1010 + 3, // 1011 + 2, // 1100 + 3, // 1101 + 3, // 1110 + 4, // 1111 +}; + +#define BITCOUNT(mask) bitcount[mask] + +// Thumb2_Spill:- +// required - ensure that at least this many registers are available +// exclude - bitmask, do not count these registers as available +// +// The no. of available regs (STACK_REGS) less the no. of registers in +// exclude must be >= the number required, otherwise this function loops! +// +// Typical usage is +// +// Thumb2_Spill(jinfo, 2, 0); // get 2 free regs +// r_res_lo = PUSH(jinfo->jstack, JSTACK_REG(jinfo->jstack)); +// r_res_hi = PUSH(jinfo->jstack, JSTACK_REG(jinfo->jstack)); +// +// Use the exclude mask when you do not want a subsequent call to +// JSTACK_REG to return a particular register or registers. This can +// be useful, for example, with long (64) bit operations. Eg. In the +// following we use it to ensure that the hi inputs are not clobbered +// by the lo result as part of the intermediate calculation. +// +// Thumb2_Fill(jinfo, 4); +// exclude = (1<codebuf, DP_ADD, res_lo, lho_lo, rho_lo, SHIFT_LSL, 0); +// dop_reg(jinfo->codebuf, DP_ADC, res_hi, lho_hi, rho_hi, SHIFT_LSL, 0); +// +void Thumb2_Spill(Thumb2_Info *jinfo, unsigned required, unsigned exclude) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned *stack = jstack->stack; + unsigned depth = jstack->depth; + unsigned mask; + unsigned i; + unsigned tospill = 0; + + exclude &= (1 << STACK_REGS) - 1; + if (depth <= (STACK_REGS - required) && exclude == 0) return; + while (1) { + mask = 0; + for (i = tospill; i < depth; i++) mask |= 1 << stack[i]; + mask &= ((1 << STACK_REGS) - 1); + mask |= exclude; + if (STACK_REGS - BITCOUNT(mask) >= required) break; + tospill++; + } + if (tospill == 0) return; + Thumb2_Push_Multiple(jinfo->codebuf, stack, tospill); + for (i = tospill; i < depth; i++) + stack[i-tospill] = stack[i]; + jstack->depth = depth - tospill; + JASSERT((int)jstack->depth >= 0, "Stack underflow"); +} + +// Thumb2_Tmp:- +// Allocate a temp reg for use in local code generation. +// exclude is a bit mask of regs not to use. +// A max of 2 regs can be guaranteed (ARM_IP & ARM_LR) +// If allocating 2 regs you must include the reg you got the +// first time in the exclude list. Otherwise you just get +// the same reg again. +Reg Thumb2_Tmp(Thumb2_Info *jinfo, unsigned exclude) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned *stack = jstack->stack; + unsigned depth = jstack->depth; + unsigned mask; + unsigned i; + + mask = 0; + for (i = 0; i < depth; i++) mask |= 1 << stack[i]; + mask |= exclude; + for (i = 0; i < STACK_REGS; i++) + if ((mask & (1<jstack; + + if (jstack->depth > 0) + Thumb2_Push_Multiple(jinfo->codebuf, jstack->stack, jstack->depth); + jstack->depth = 0; +} + +// Call this when we are about to corrupt a local +// The local may already be on the stack +// For example +// iload 0 +// iconst 2 +// istore 0 +// istore 1 +// Without this check the code generated would be (r4 is local 0, r5 is local 1) +// mov r4, #2 +// mov r5, r4 +// With this check the code should be +// mov r3, r4 +// mov r4, #2 +// mov r5, r3 +// This is not ideal, but is better than the previous:-) +// +void Thumb2_Corrupt(Thumb2_Info *jinfo, unsigned r, unsigned ignore) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned *stack = jstack->stack; + unsigned depth = jstack->depth; + unsigned r_new, mask; + unsigned i; + + if (ignore >= depth) return; +// JASSERT(depth >= ignore, "Cant ignore more than the whole stack!!"); + if (IS_SREG(r)) return; + depth -= ignore; + for (i = 0; i < depth; i++) { + if (r == stack[i]) { + Thumb2_Spill(jinfo, 1, 0); + depth = jstack->depth - ignore; + r_new = JSTACK_REG(jstack); + mov_reg(jinfo->codebuf, r_new, r); + for (i = 0; i < depth; i++) if (r == stack[i]) stack[i] = r_new; + break; + } + } +} + +unsigned Thumb2_ResultLocal(Thumb2_Info *jinfo, unsigned bci) +{ + unsigned opc = jinfo->code_base[bci]; + if (jinfo->bc_stackinfo[bci] & BC_BRANCH_TARGET) return 0; + if (opc < opc_istore || opc > opc_astore_3) return 0; + if (opc == opc_istore || opc == opc_fstore || opc == opc_astore) + return jinfo->jregs->r_local[jinfo->code_base[bci+1]]; + if ((opc >= opc_istore_0 && opc <= opc_istore_3) || + (opc >= opc_fstore_0 && opc <= opc_fstore_3) || + (opc >= opc_astore_0 && opc <= opc_astore_3)) + return jinfo->jregs->r_local[(opc-opc_istore_0)&3]; + return 0; +} + +static const unsigned char dOps[] = { + DP_ADD, DP_ADC, VP_ADD, VP_ADD, + DP_SUB, DP_SBC, VP_SUB, VP_SUB, + DP_MUL, 0, VP_MUL, VP_MUL, + 0, 0, VP_DIV, VP_DIV, + 0, 0, 0, 0, + 0, 0, 0, 0, + DP_LSL, 0, + DP_ASR, 0, + DP_LSR, 0, + DP_AND, DP_AND, DP_ORR, DP_ORR, DP_EOR, DP_EOR, +}; + +unsigned Thumb2_Imm(Thumb2_Info *jinfo, unsigned imm, unsigned next_bci) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r; + unsigned next_op; + + if (!(jinfo->bc_stackinfo[next_bci] & BC_BRANCH_TARGET)) { + next_op = jinfo->code_base[next_bci]; + if (next_op > OPC_LAST_JAVA_OP) { + if (Bytecodes::is_defined((Bytecodes::Code)next_op)) + next_op = (unsigned)Bytecodes::java_code((Bytecodes::Code)next_op); + } + switch (next_op) { + case opc_istore: + case opc_fstore: + case opc_astore: { + unsigned local = jinfo->code_base[next_bci+1]; + r = jinfo->jregs->r_local[local]; + if (r) { + Thumb2_Corrupt(jinfo, r, 0); + mov_imm(jinfo->codebuf, r, imm); + return 2; + } + break; + } + case opc_istore_0: + case opc_istore_1: + case opc_istore_2: + case opc_istore_3: + case opc_fstore_0: + case opc_fstore_1: + case opc_fstore_2: + case opc_fstore_3: + case opc_astore_0: + case opc_astore_1: + case opc_astore_2: + case opc_astore_3: { + unsigned local = (jinfo->code_base[next_bci]-opc_istore_0) & 3; + r = jinfo->jregs->r_local[local]; + if (r) { + Thumb2_Corrupt(jinfo, r, 0); + mov_imm(jinfo->codebuf, r, imm); + return 1; + } + break; + } + case opc_iadd: + case opc_isub: + case opc_ishl: + case opc_ishr: + case opc_iushr: + case opc_iand: + case opc_ior: + case opc_ixor: { + unsigned len = 0; + unsigned r_lho; + + Thumb2_Fill(jinfo, 1); + r_lho = POP(jstack); + + r = Thumb2_ResultLocal(jinfo, next_bci+1); + if (r) { + Thumb2_Corrupt(jinfo, r, 0); + len = Bytecodes::length_for((Bytecodes::Code)jinfo->code_base[next_bci+1]); + } else { + Thumb2_Spill(jinfo, 1, 0); + r = JSTACK_REG(jstack); + PUSH(jstack, r); + } + if (next_op == opc_ishl || next_op == opc_ishr || next_op == opc_iushr) + shift_imm(jinfo->codebuf, dOps[next_op-opc_iadd], r, r_lho, imm); + else + dop_imm(jinfo->codebuf, dOps[next_op-opc_iadd], r, r_lho, imm); + return 1+len; + } + + case opc_idiv: { + unsigned len = 0; + unsigned r_lho; + unsigned abs_imm = abs((int)imm); + + if ((imm & -imm) == abs_imm) { + unsigned l2_imm = LOG2(abs_imm); + unsigned r_lho; + + if (imm == 0) break; + if (imm == 1) return 1; + + Thumb2_Fill(jinfo, 1); + r_lho = POP(jstack); + + r = Thumb2_ResultLocal(jinfo, next_bci+1); + if (r) { + Thumb2_Corrupt(jinfo, r, 0); + len = Bytecodes::length_for((Bytecodes::Code)jinfo->code_base[next_bci+1]); + } else { + Thumb2_Spill(jinfo, 1, 0); + r = JSTACK_REG(jstack); + PUSH(jstack, r); + } + + if (abs_imm != 1) { + unsigned r_tmp = r_lho; + if (abs_imm != 2) { + r_tmp = Thumb2_Tmp(jinfo, (1<codebuf, r_tmp, r_lho, 31); + } + add_reg_shift(jinfo->codebuf, r, r_lho, r_tmp, SHIFT_LSR, 32-l2_imm); + asr_imm(jinfo->codebuf, r, r, l2_imm); + } + if ((int)imm < 0) + rsb_imm(jinfo->codebuf, r, r, 0); + return 1+len; + } + break; + } + } + } + Thumb2_Spill(jinfo, 1, 0); + r = JSTACK_REG(jstack); + PUSH(jstack, r); + mov_imm(jinfo->codebuf, r, imm); + return 0; +} + +void Thumb2_ImmX2(Thumb2_Info *jinfo, unsigned lo, unsigned hi) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_lo, r_hi; + + Thumb2_Spill(jinfo, 2, 0); + r_hi = PUSH(jstack, JSTACK_REG(jstack)); + r_lo = PUSH(jstack, JSTACK_REG(jstack)); + mov_imm(jinfo->codebuf, r_lo, lo); + mov_imm(jinfo->codebuf, r_hi, hi); +} + +#define LOCAL_OFFSET(local, stackdepth, nlocals) ((stackdepth)*4 + FRAME_SIZE + ((nlocals)-1-(local))*4) + +void load_local(Thumb2_Info *jinfo, Reg r, unsigned local, unsigned stackdepth) +{ +#ifdef USE_RLOCAL + ldr_imm(jinfo->codebuf, r, Rlocals, -local * 4, 1, 0); +#else + int nlocals = jinfo->method->max_locals(); + ldr_imm(jinfo->codebuf, r, Rstack, LOCAL_OFFSET(local, stackdepth, nlocals), 1, 0); +#endif +} + +void store_local(Thumb2_Info *jinfo, Reg r, unsigned local, unsigned stackdepth) +{ +#ifdef USE_RLOCAL + str_imm(jinfo->codebuf, r, Rlocals, -local << 2, 1, 0); +#else + int nlocals = jinfo->method->max_locals(); + str_imm(jinfo->codebuf, r, Rstack, LOCAL_OFFSET(local, stackdepth, nlocals), 1, 0); +#endif +} + +void Thumb2_Load(Thumb2_Info *jinfo, int local, unsigned stackdepth) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r; + + r = jinfo->jregs->r_local[local]; + if (r) { + PUSH(jstack, r); + } else { + int nlocals = jinfo->method->max_locals(); + + Thumb2_Spill(jinfo, 1, 0); + JASSERT(stackdepth >= jstack->depth, "negative stack offset?"); + stackdepth -= jstack->depth; + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + r = JSTACK_REG(jstack); + PUSH(jstack, r); + load_local(jinfo, r, local, stackdepth); + } +} + +void Thumb2_LoadX2(Thumb2_Info *jinfo, int local, unsigned stackdepth) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_lo, r_hi; + int nlocals = jinfo->method->max_locals(); + + r_hi = jinfo->jregs->r_local[local]; + if (r_hi) { + r_lo = jinfo->jregs->r_local[local+1]; + if (r_lo) { + PUSH(jstack, r_hi); + PUSH(jstack, r_lo); + } else { + Thumb2_Spill(jinfo, 1, 0); + stackdepth -= jstack->depth; + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + PUSH(jstack, r_hi); + r_lo = PUSH(jstack, JSTACK_REG(jstack)); + load_local(jinfo, r_lo, local+1, stackdepth); + } + } else { + r_lo = jinfo->jregs->r_local[local+1]; + if (r_lo) { + Thumb2_Spill(jinfo, 1, 0); + stackdepth -= jstack->depth; + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + r_hi = PUSH(jstack, JSTACK_REG(jstack)); + load_local(jinfo, r_hi, local, stackdepth); + PUSH(jstack, r_lo); + } else { + Thumb2_Spill(jinfo, 2, 0); + stackdepth -= jstack->depth; + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + r_hi = PUSH(jstack, JSTACK_REG(jstack)); + r_lo = PUSH(jstack, JSTACK_REG(jstack)); + load_local(jinfo, r_hi, local, stackdepth); + load_local(jinfo, r_lo, local+1, stackdepth); + } + } +} + +void Thumb2_Store(Thumb2_Info *jinfo, int local, unsigned stackdepth) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r, r_local; + int nlocals = jinfo->method->max_locals(); + + Thumb2_Fill(jinfo, 1); + stackdepth -= jstack->depth; + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + r = POP(jstack); + r_local = jinfo->jregs->r_local[local]; + if (r_local) { + Thumb2_Corrupt(jinfo, r_local, 0); + mov_reg(jinfo->codebuf, r_local, r); + } else { + store_local(jinfo, r, local, stackdepth); + } +} + +void Thumb2_StoreX2(Thumb2_Info *jinfo, int local, unsigned stackdepth) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_lo, r_hi; + unsigned r_local_lo, r_local_hi; + int nlocals = jinfo->method->max_locals(); + + Thumb2_Fill(jinfo, 2); + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + r_lo = POP(jstack); + r_hi = POP(jstack); + stackdepth -= 2; + + r_local_hi = jinfo->jregs->r_local[local]; + if (r_local_hi) { + Thumb2_Corrupt(jinfo, r_local_hi, 0); + mov_reg(jinfo->codebuf, r_local_hi, r_hi); + } else { + store_local(jinfo, r_hi, local, stackdepth-jstack->depth); + } + + r_local_lo = jinfo->jregs->r_local[local+1]; + if (r_local_lo) { + Thumb2_Corrupt(jinfo, r_local_lo, 0); + mov_reg(jinfo->codebuf, r_local_lo, r_lo); + } else { + store_local(jinfo, r_lo, local+1, stackdepth-jstack->depth); + } +} + +void Thumb2_Xaload(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_index, r_array, r_value; + unsigned op = opc - (unsigned)opc_iaload; + unsigned r_tmp; + + Thumb2_Fill(jinfo, 2); + r_index = POP(jstack); + r_array = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + r_tmp = Thumb2_Tmp(jinfo, (1<codebuf, r_tmp, r_array, 8, 1, 0); + chka(jinfo->codebuf, r_tmp, r_index); + if (opc == opc_baload) { + add_reg(jinfo->codebuf, r_tmp, r_array, r_index); + ldrsb_imm(jinfo->codebuf, r_value, r_tmp, 12, 1, 0); + } else if (opc == opc_caload) { + add_reg_shift(jinfo->codebuf, r_tmp, r_array, r_index, SHIFT_LSL, 1); + ldrh_imm(jinfo->codebuf, r_value, r_tmp, 12, 1, 0); + } else if (opc == opc_saload) { + add_reg_shift(jinfo->codebuf, r_tmp, r_array, r_index, SHIFT_LSL, 1); + ldrsh_imm(jinfo->codebuf, r_value, r_tmp, 12, 1, 0); + } else { + add_reg_shift(jinfo->codebuf, r_tmp, r_array, r_index, SHIFT_LSL, 2); + ldr_imm(jinfo->codebuf, r_value, r_tmp, 12, 1, 0); + } +} + +void Thumb2_X2aload(Thumb2_Info *jinfo) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_index, r_array, r_lo, r_hi; + unsigned r_tmp; + + Thumb2_Fill(jinfo, 2); + r_index = POP(jstack); + r_array = POP(jstack); + Thumb2_Spill(jinfo, 2, 0); + r_tmp = Thumb2_Tmp(jinfo, (1<codebuf, r_tmp, r_array, 8, 1, 0); + chka(jinfo->codebuf, r_tmp, r_index); + add_reg_shift(jinfo->codebuf, r_tmp, r_array, r_index, SHIFT_LSL, 3); + ldrd_imm(jinfo->codebuf, r_lo, r_hi, r_tmp, 16, 1, 0); +} + +void Thumb2_Xastore(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_value, r_index, r_array; + unsigned op = opc - (unsigned)opc_iastore; + unsigned r_tmp; + + Thumb2_Fill(jinfo, 3); + r_value = POP(jstack); + r_index = POP(jstack); + r_array = POP(jstack); + r_tmp = Thumb2_Tmp(jinfo, (1<codebuf, r_tmp, r_array, 8, 1, 0); + chka(jinfo->codebuf, r_tmp, r_index); + if (opc == opc_bastore) { + add_reg(jinfo->codebuf, r_tmp, r_array, r_index); + strb_imm(jinfo->codebuf, r_value, r_tmp, 12, 1, 0); + } else if (opc == opc_castore || opc == opc_sastore) { + add_reg_shift(jinfo->codebuf, r_tmp, r_array, r_index, SHIFT_LSL, 1); + strh_imm(jinfo->codebuf, r_value, r_tmp, 12, 1, 0); + } else { + add_reg_shift(jinfo->codebuf, r_tmp, r_array, r_index, SHIFT_LSL, 2); + str_imm(jinfo->codebuf, r_value, r_tmp, 12, 1, 0); + } +} + +void Thumb2_X2astore(Thumb2_Info *jinfo) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_lo, r_hi, r_index, r_array; + unsigned r_tmp; + + Thumb2_Fill(jinfo, 4); + r_lo = POP(jstack); + r_hi = POP(jstack); + r_index = POP(jstack); + r_array = POP(jstack); + r_tmp = Thumb2_Tmp(jinfo, (1<codebuf, r_tmp, r_array, 8, 1, 0); + chka(jinfo->codebuf, r_tmp, r_index); + add_reg_shift(jinfo->codebuf, r_tmp, r_array, r_index, SHIFT_LSL, 3); + strd_imm(jinfo->codebuf, r_lo, r_hi, r_tmp, 16, 1, 0); +} + +void Thumb2_Pop(Thumb2_Info *jinfo, unsigned n) +{ + Thumb2_Stack *jstack = jinfo->jstack; + + while (n > 0 && jstack->depth > 0) { + POP(jstack); + n--; + } + if (n > 0) add_imm(jinfo->codebuf, Rstack, Rstack, n * 4); +} + +void Thumb2_Dup(Thumb2_Info *jinfo, unsigned n) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned *stack = jstack->stack; + unsigned depth; + unsigned i; + + Thumb2_Fill(jinfo, n+1); + depth = jstack->depth; + for (i = 0; i <= n; i++) + stack[depth-i] = stack[depth-i-1]; + stack[depth-n-1] = stack[depth]; + jstack->depth = depth + 1; +} + +void Thumb2_Dup2(Thumb2_Info *jinfo, unsigned n) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned *stack = jstack->stack; + unsigned depth; + unsigned i; + + Thumb2_Fill(jinfo, n+2); + depth = jstack->depth; + for (i = 0; i <= n+1; i++) + stack[depth-i+1] = stack[depth-i-1]; + stack[depth-n-1] = stack[depth+1]; + stack[depth-n-2] = stack[depth]; + jstack->depth = depth + 2; +} + +void Thumb2_Swap(Thumb2_Info *jinfo) +{ + Thumb2_Stack *jstack = jinfo->jstack; + + Thumb2_Fill(jinfo, 2); + SWAP(jstack); +} + +void Thumb2_iOp(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_lho, r_rho, r; + + Thumb2_Fill(jinfo, 2); + r_rho = POP(jstack); + r_lho = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + r = JSTACK_REG(jstack); + PUSH(jstack, r); + dop_reg(jinfo->codebuf, dOps[opc-opc_iadd], r, r_lho, r_rho, 0, 0); +} + +void Thumb2_iNeg(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_src, r; + + Thumb2_Fill(jinfo, 1); + r_src = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + r = JSTACK_REG(jstack); + PUSH(jstack, r); + rsb_imm(jinfo->codebuf, r, r_src, 0); +} + +void Thumb2_lNeg(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_lo, r_hi, r_res_lo, r_res_hi; + unsigned r_tmp; + + Thumb2_Fill(jinfo, 2); + r_lo = POP(jstack); + r_hi = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + r_res_hi = PUSH(jstack, JSTACK_REG(jstack)); + Thumb2_Spill(jinfo, 1, (1<codebuf, r_res_lo, r_lo, 0); + r_tmp = Thumb2_Tmp(jinfo, (1<codebuf, r_tmp, 0); + dop_reg(jinfo->codebuf, DP_SBC, r_res_hi, r_tmp, r_hi, SHIFT_LSL, 0); +} + +void Thumb2_fNeg(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r, r_result; + + Thumb2_Fill(jinfo, 1); + r = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + r_result = PUSH(jstack, JSTACK_REG(jstack)); + eor_imm(jinfo->codebuf, r_result, r, 0x80000000); +} + +void Thumb2_dNeg(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned r_lo, r_hi, r_res_lo, r_res_hi; + + Thumb2_Fill(jinfo, 2); + r_lo = POP(jstack); + r_hi = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + r_res_hi = PUSH(jstack, JSTACK_REG(jstack)); + Thumb2_Spill(jinfo, 1, (1<codebuf, r_res_lo, r_lo); + eor_imm(jinfo->codebuf, r_res_hi, r_hi, 0x80000000); +} + +void Thumb2_lOp(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned res_lo, res_hi; + unsigned lho_lo, lho_hi; + unsigned rho_lo, rho_hi; + + Thumb2_Fill(jinfo, 4); + rho_lo = POP(jstack); + rho_hi = POP(jstack); + lho_lo = POP(jstack); + lho_hi = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + res_hi = PUSH(jstack, JSTACK_REG(jstack)); + Thumb2_Spill(jinfo, 1, (1<codebuf, dOps[opc-opc_ladd], res_lo, lho_lo, rho_lo, SHIFT_LSL, 0); + dop_reg(jinfo->codebuf, dOps[opc-opc_ladd+1], res_hi, lho_hi, rho_hi, SHIFT_LSL, 0); +} + +void Thumb2_lmul(Thumb2_Info *jinfo) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned res_lo, res_hi; + unsigned lho_lo, lho_hi; + unsigned rho_lo, rho_hi; + unsigned r_tmp_lo, r_tmp_hi; + unsigned op_mask; + + Thumb2_Fill(jinfo, 4); + rho_lo = POP(jstack); + rho_hi = POP(jstack); + lho_lo = POP(jstack); + lho_hi = POP(jstack); + op_mask = (1<codebuf, r_tmp_lo, r_tmp_hi, rho_lo, lho_lo); + mla(jinfo->codebuf, r_tmp_hi, rho_lo, lho_hi, r_tmp_hi); + mla(jinfo->codebuf, res_hi, rho_hi, lho_lo, r_tmp_hi); + mov_reg(jinfo->codebuf, res_lo, r_tmp_lo); +} + +void Thumb2_fOp(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned rho, lho, res; + + Thumb2_Fill(jinfo, 2); + rho = POP(jstack); + lho = POP(jstack); + Thumb2_Spill(jinfo, 1, 0); + res = PUSH(jstack, JSTACK_REG(jstack)); + vmov_reg_s_toVFP(jinfo->codebuf, VFP_S0, lho); + vmov_reg_s_toVFP(jinfo->codebuf, VFP_S1, rho); + vop_reg_s(jinfo->codebuf, dOps[opc-opc_iadd], VFP_S0, VFP_S0, VFP_S1); + vmov_reg_s_toARM(jinfo->codebuf, res, VFP_S0); +} + +void Thumb2_dOp(Thumb2_Info *jinfo, u32 opc) +{ + Thumb2_Stack *jstack = jinfo->jstack; + unsigned rho_lo, rho_hi, lho_lo, lho_hi, res_lo, res_hi; + + Thumb2_Fill(jinfo, 4); + rho_lo = POP(jstack); + rho_hi = POP(jstack); + lho_lo = POP(jstack); + lho_hi = POP(jstack); + Thumb2_Spill(jinfo, 2, 0); + res_hi = PUSH(jstack, JSTACK_REG(jstack)); + res_lo = PUSH(jstack, JSTACK_REG(jstack)); + vmov_reg_d_toVFP(jinfo->codebuf, VFP_D0, lho_lo, lho_hi); + vmov_reg_d_toVFP(jinfo->codebuf, VFP_D1, rho_lo, rho_hi); + vop_reg_d(jinfo->codebuf, dOps[opc-opc_iadd], VFP_D0, VFP_D0, VFP_D1); + vmov_reg_d_toARM(jinfo->codebuf, res_lo, res_hi, VFP_D0); +} + +void Thumb2_Handler(Thumb2_Info *jinfo, unsigned handler, unsigned opcode, unsigned bci) +{ + mov_imm(jinfo->codebuf, ARM_R0, opcode); + mov_imm(jinfo->codebuf, ARM_R1, bci); + mov_imm(jinfo->codebuf, ARM_IP, 0); + str_imm(jinfo->codebuf, ARM_IP, ARM_IP, 0, 1, 0); +// hbl(jinfo->codebuf, handler); +} + +void Thumb2_Debug(Thumb2_Info *jinfo, unsigned handler) +{ +#if 0 + Thumb2_Flush(jinfo); + bl(jinfo->codebuf, handlers[handler]); +#endif +} + +void Thumb2_codegen(Thumb2_Info *jinfo, unsigned start); + +int Thumb2_Branch(Thumb2_Info *jinfo, unsigned bci, unsigned cond) +{ + int offset = GET_JAVA_S2(jinfo->code_base + bci + 1); + unsigned dest_taken = bci + offset; + unsigned dest_not_taken = bci + 3; + unsigned loc; + + if (jinfo->bc_stackinfo[dest_taken] & BC_COMPILED) { + branch(jinfo->codebuf, cond, jinfo->bc_stackinfo[dest_taken] & ~BC_FLAGS_MASK); + return dest_not_taken; + } + loc = forward_32(jinfo->codebuf); + Thumb2_codegen(jinfo, dest_not_taken); + JASSERT(jinfo->bc_stackinfo[dest_taken] & BC_COMPILED, "dest in branch not compiled!!!"); + branch_patch(jinfo->codebuf, cond, loc, jinfo->bc_stackinfo[dest_taken] & ~BC_FLAGS_MASK); + return -1; +} + +int Thumb2_Goto(Thumb2_Info *jinfo, unsigned bci, int offset, int len) +{ + unsigned dest_taken = bci + offset; + unsigned dest_not_taken = bci + len; + unsigned loc; + + if (jinfo->bc_stackinfo[dest_taken] & BC_COMPILED) { + branch_uncond(jinfo->codebuf, jinfo->bc_stackinfo[dest_taken] & ~BC_FLAGS_MASK); + return dest_not_taken; + } + loc = forward_32(jinfo->codebuf); + Thumb2_codegen(jinfo, dest_not_taken); + JASSERT(jinfo->bc_stackinfo[dest_taken] & BC_COMPILED, "dest in goto not compiled!!!"); + branch_uncond_patch(jinfo->codebuf, loc, jinfo->bc_stackinfo[dest_taken] & ~BC_FLAGS_MASK); + return -1; +} + +void Thumb2_Return(Thumb2_Info *jinfo, unsigned opcode) +{ + Reg r_lo, r; + Thumb2_Stack *jstack = jinfo->jstack; + + if (0 /*jinfo->compiled_return*/) { + unsigned bci = jinfo->compiled_return; + + JASSERT(jinfo->bc_stackinfo[bci] & BC_COMPILED, "return not compiled"); + JASSERT(jinfo->code_base[bci] == opcode, "type of return changed"); + branch_uncond(jinfo->codebuf, jinfo->bc_stackinfo[bci] & ~BC_FLAGS_MASK); + return; + } + + if (jinfo->method->is_synchronized()) { + unsigned loc_success1, loc_success2, loc_failed, loc_retry, loc_exception; + unsigned loc_illegal_monitor_state; + Thumb2_Flush(jinfo); +// Thumb2_save_locals(jinfo); + // Free the monitor + // + // sub r1, Ristate, #8 + // ldr r2, [r1, #4] + // cbz r2, throw_illegal_monitor_state + // ldr r0, [r1, #0] + // mov r3, #0 + // str r3, [r1, #4] + // cbz r0, success + // retry: + // ldrex r3, [r2, #0] + // cmp r1, r3 + // bne failed + // strex r3, r0, [r2, #0] + // cbz r3, success + // b retry + // failed: + // str r2, [r1, #4] + // ... + // success: + // + // JAZ_V1 == tmp2 + // JAZ_V2 == tmp1 + sub_imm(jinfo->codebuf, ARM_R1, Ristate, frame::interpreter_frame_monitor_size()*wordSize); + ldr_imm(jinfo->codebuf, ARM_R2, ARM_R1, 4, 1, 0); + loc_illegal_monitor_state = forward_16(jinfo->codebuf); + ldr_imm(jinfo->codebuf, ARM_R0, ARM_R1, 0, 1, 0); + mov_imm(jinfo->codebuf, ARM_R3, 0); + str_imm(jinfo->codebuf, ARM_R3, ARM_R1, 4, 1, 0); + loc_success1 = forward_16(jinfo->codebuf); + loc_retry = out_loc(jinfo->codebuf); + ldrex_imm(jinfo->codebuf, ARM_R3, ARM_R2, 0); + cmp_reg(jinfo->codebuf, ARM_R1, ARM_R3); + loc_failed = forward_16(jinfo->codebuf); + strex_imm(jinfo->codebuf, ARM_R3, ARM_R0, ARM_R2, 0); + loc_success2 = forward_16(jinfo->codebuf); + branch_uncond(jinfo->codebuf, loc_retry); + bcc_patch(jinfo->codebuf, COND_NE, loc_failed); + cbz_patch(jinfo->codebuf, ARM_R2, loc_illegal_monitor_state); + str_imm(jinfo->codebuf, ARM_R2, ARM_R1, 4, 1, 0); + mov_imm(jinfo->codebuf, ARM_R0, 0+CONSTMETHOD_CODEOFFSET); + bl(jinfo->codebuf, handlers[H_SYNCHRONIZED_EXIT]); + loc_exception = forward_16(jinfo->codebuf); + bl(jinfo->codebuf, handlers[H_HANDLE_EXCEPTION]); + cbz_patch(jinfo->codebuf, ARM_R0, loc_exception); + cbz_patch(jinfo->codebuf, ARM_R0, loc_success1); + cbz_patch(jinfo->codebuf, ARM_R3, loc_success2); + } + + if (opcode != opc_return) { + if (opcode == opc_lreturn || opcode == opc_dreturn) { + Thumb2_Fill(jinfo, 2); + r_lo = POP(jstack); + r = POP(jstack); + } else { + Thumb2_Fill(jinfo, 1); + r = POP(jstack); + } + } + + mov_imm(jinfo->codebuf, ARM_LR, 0); + str_imm(jinfo->codebuf, ARM_LR, Rthread, THREAD_LAST_JAVA_SP, 1, 0); + ldr_imm(jinfo->codebuf, Rstack, Rthread, THREAD_TOP_ZERO_FRAME, 1, 0); + ldr_imm(jinfo->codebuf, ARM_LR, Rstack, 0, 1, 0); + + if (opcode == opc_return) { + add_imm(jinfo->codebuf, Rstack, Rstack, jinfo->method->max_locals() * sizeof(int) + 4); + } else { + if (opcode == opc_lreturn || opcode == opc_dreturn) { + str_imm(jinfo->codebuf, r, Rstack, jinfo->method->max_locals() * sizeof(int), 1, 0); + str_imm(jinfo->codebuf, r_lo, Rstack, jinfo->method->max_locals() * sizeof(int)-4, 1, 1); + } else + str_imm(jinfo->codebuf, r, Rstack, jinfo->method->max_locals() * sizeof(int), 1, 1); + } + +// sub_imm(jinfo->codebuf, Ristate, ARM_LR, ISTATE_NEXT_FRAME); + str_imm(jinfo->codebuf, ARM_LR, Rthread, THREAD_TOP_ZERO_FRAME, 1, 0); + str_imm(jinfo->codebuf, Rstack, Rthread, THREAD_JAVA_SP, 1, 0); + Thumb2_Debug(jinfo, H_DEBUG_METHODEXIT); +// enter_leave(jinfo->codebuf, 0); + ldm(jinfo->codebuf, C_REGSET + (1<method->max_locals(); + int i; + + JASSERT(jinfo->jstack->depth == 0, "stack not empty"); + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + for (i = 0; i < nlocals; i++) { + Reg r = jinfo->jregs->r_local[i]; + if (r) { + store_local(jinfo, r, i, stackdepth); + } + } +} +#endif + +void Thumb2_save_locals(Thumb2_Info *jinfo, unsigned stackdepth) +{ + int nlocals = jinfo->method->max_locals(); + unsigned *locals_info = jinfo->locals_info; + int i; + + JASSERT(jinfo->jstack->depth == 0, "stack not empty"); + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + for (i = 0; i < nlocals; i++) { + Reg r = jinfo->jregs->r_local[i]; + if (r) { + if ((locals_info[i] & (1 << LOCAL_REF)) && (locals_info[i] & (1 << LOCAL_MODIFIED))) { + store_local(jinfo, r, i, stackdepth); + } + } + } +} + +void Thumb2_restore_locals(Thumb2_Info *jinfo, unsigned stackdepth) +{ + int nlocals = jinfo->method->max_locals(); + unsigned *locals_info = jinfo->locals_info; + int i; + + JASSERT(jinfo->jstack->depth == 0, "stack not empty"); + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + for (i = 0; i < nlocals; i++) { + Reg r = jinfo->jregs->r_local[i]; + if (r) { + if (locals_info[i] & (1<method->max_locals(); + unsigned *locals_info = jinfo->locals_info; + int i; + + JASSERT(jinfo->jstack->depth == 0, "stack not empty"); + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + for (i = 0; i < nlocals; i++) { + Reg r = jinfo->jregs->r_local[i]; + if (r) { + if (locals_info[i] & (1 << LOCAL_MODIFIED)) { + store_local(jinfo, r, i, stackdepth); + } + } + } +} + +void Thumb2_invoke_restore(Thumb2_Info *jinfo, unsigned stackdepth) +{ + int nlocals = jinfo->method->max_locals(); + unsigned *locals_info = jinfo->locals_info; + int i; + + JASSERT(jinfo->jstack->depth == 0, "stack not empty"); + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + for (i = 0; i < nlocals; i++) { + Reg r = jinfo->jregs->r_local[i]; + if (r) { + load_local(jinfo, r, i, stackdepth); + } + } +} + +void Thumb2_Exit(Thumb2_Info *jinfo, unsigned handler, unsigned bci, unsigned stackdepth) +{ + Thumb2_Flush(jinfo); + Thumb2_invoke_save(jinfo, stackdepth); + mov_imm(jinfo->codebuf, ARM_R0, bci+CONSTMETHOD_CODEOFFSET); + bl(jinfo->codebuf, handlers[handler]); +} + +void Thumb2_Jsr(Thumb2_Info *jinfo, unsigned bci, unsigned stackdepth) +{ + Thumb2_Exit(jinfo, H_JSR, bci, stackdepth); +} + +int Thumb2_Accessor(Thumb2_Info *jinfo) +{ + jubyte *code_base = jinfo->code_base; + constantPoolCacheOop cp = jinfo->method->constants()->cache(); + ConstantPoolCacheEntry* cache; + int index = GET_NATIVE_U2(code_base+2); + unsigned loc; + unsigned *bc_stackinfo = jinfo->bc_stackinfo; + + JASSERT(code_base[0] == opc_aload_0 || code_base[0] == opc_iaccess_0, "not an aload_0 in accessor"); + JASSERT(code_base[4] == opc_ireturn || code_base[4] == opc_areturn, "not an ireturn in accessor"); + cache = cp->entry_at(index); + if (!cache->is_resolved((Bytecodes::Code)opc_getfield)) return 0; + + TosState tos_type = cache->flag_state(); + int field_offset = cache->f2(); + + // Slow entry point + loc = forward_32(jinfo->codebuf); + out_32(jinfo->codebuf, 0); + out_32(jinfo->codebuf, 0); + out_32(jinfo->codebuf, 0); + + // OSR entry point + mov_reg(jinfo->codebuf, ARM_PC, ARM_R0); + + out_align(jinfo->codebuf, CODE_ALIGN); + + // fast entry point + bc_stackinfo[0] = (bc_stackinfo[0] & BC_FLAGS_MASK) | (jinfo->codebuf->idx * 2) | BC_COMPILED; + branch_uncond_patch(jinfo->codebuf, loc, jinfo->codebuf->idx * 2); + ldr_imm(jinfo->codebuf, ARM_R1, ARM_R2, THREAD_JAVA_SP, 1, 0); + ldr_imm(jinfo->codebuf, ARM_R0, ARM_R1, 0, 1, 0); + if (tos_type == btos) + ldrb_imm(jinfo->codebuf, ARM_R0, ARM_R0, field_offset, 1, 0); + else if (tos_type == ctos) + ldrh_imm(jinfo->codebuf, ARM_R0, ARM_R0, field_offset, 1, 0); + else if (tos_type == stos) + ldrsh_imm(jinfo->codebuf, ARM_R0, ARM_R0, field_offset, 1, 0); + else + ldr_imm(jinfo->codebuf, ARM_R0, ARM_R0, field_offset, 1, 0); + str_imm(jinfo->codebuf, ARM_R0, ARM_R1, 0, 1, 0); + mov_reg(jinfo->codebuf, ARM_PC, ARM_LR); + + return 1; +} + +void Thumb2_Enter(Thumb2_Info *jinfo) +{ + int parms = jinfo->method->size_of_parameters(); + int extra_locals = jinfo->method->max_locals() - parms; + unsigned *locals_info = jinfo->locals_info; + int i; + + // Slow entry point - callee save + // R0 = method + // R2 = thread + stm(jinfo->codebuf, I_REGSET + (1<codebuf, out_pos(jinfo->codebuf) + CODE_ALIGN - 4); + ldm(jinfo->codebuf, I_REGSET + (1<codebuf, 0); + + // OSR entry point == Slow entry + 16 - caller save + // R0 = entry point within compiled method + // R1 = locals + // R2 = thread + { + int nlocals = jinfo->method->max_locals(); + + for (i = 0; i < nlocals; i++) { + Reg r = jinfo->jregs->r_local[i]; + if (r) { + ldr_imm(jinfo->codebuf, r, ARM_R1, -i * 4, 1, 0); + } + } + mov_reg(jinfo->codebuf, Rthread, ARM_R2); + mov_reg(jinfo->codebuf, ARM_PC, ARM_R0); + } + + out_align(jinfo->codebuf, CODE_ALIGN); + + // Fast entry point == Slow entry + 64 - caller save + // R0 = method + // R2 = thread + stm(jinfo->codebuf, C_REGSET + (1<codebuf, 1); + ldr_imm(jinfo->codebuf, Rstack, ARM_R2, THREAD_JAVA_SP, 1, 0); + Thumb2_Debug(jinfo, H_DEBUG_METHODENTRY); + mov_imm(jinfo->codebuf, ARM_R1, 0); + + if (extra_locals > 0) { + sub_imm(jinfo->codebuf, Rstack, Rstack, extra_locals * 4); + + for (i = 0; i < extra_locals; i++) { + unsigned linfo = locals_info[parms+i]; + if (linfo & (1<< LOCAL_REF)) + str_imm(jinfo->codebuf, ARM_R1, Rstack, (extra_locals-1 - i) * 4, 1, 0); + } + } + + ldr_imm(jinfo->codebuf, ARM_IP, ARM_R0, METHOD_CONSTANTS, 1, 0); + + sub_imm(jinfo->codebuf, Ristate, Rstack, FRAME_SIZE); + + add_imm(jinfo->codebuf, Rlocals, Rstack, (jinfo->method->max_locals()-1) * sizeof(int)); + str_imm(jinfo->codebuf, Rlocals, Ristate, ISTATE_LOCALS, 1, 0); + + if (jinfo->method->is_synchronized()) { + sub_imm(jinfo->codebuf, Rstack, Ristate, frame::interpreter_frame_monitor_size()*wordSize); + if (jinfo->method->is_static()) { + ldr_imm(jinfo->codebuf, ARM_R3, ARM_IP, CONSTANTPOOL_POOL_HOLDER, 1, 0); + ldr_imm(jinfo->codebuf, JAZ_V1, ARM_R3, KLASS_PART+KLASS_JAVA_MIRROR, 1, 0); + } else { + ldr_imm(jinfo->codebuf, JAZ_V1, Rlocals, 0, 1, 0); + } + str_imm(jinfo->codebuf, JAZ_V1, Rstack, 4, 1, 0); + } else + mov_reg(jinfo->codebuf, Rstack, Ristate); + + str_imm(jinfo->codebuf, ARM_R1, Ristate, ISTATE_MSG, 1, 0); + str_imm(jinfo->codebuf, ARM_R1, Ristate, ISTATE_OOP_TEMP, 1, 0); + + sub_imm(jinfo->codebuf, ARM_R3, Rstack, jinfo->method->max_stack() * sizeof(int)); + str_imm(jinfo->codebuf, ARM_R3, ARM_R2, THREAD_JAVA_SP, 1, 0); + + str_imm(jinfo->codebuf, Rstack, Ristate, ISTATE_STACK_BASE, 1, 0); + + sub_imm(jinfo->codebuf, ARM_R3, ARM_R3, 4); + str_imm(jinfo->codebuf, ARM_R3, Ristate, ISTATE_STACK_LIMIT, 1, 0); + + ldr_imm(jinfo->codebuf, ARM_R3, ARM_R2, THREAD_TOP_ZERO_FRAME, 1, 0); + str_imm(jinfo->codebuf, ARM_R3, Ristate, ISTATE_NEXT_FRAME, 1, 0); + + mov_imm(jinfo->codebuf, ARM_R3, INTERPRETER_FRAME); + str_imm(jinfo->codebuf, ARM_R3, Ristate, ISTATE_FRAME_TYPE, 1, 0); + + str_imm(jinfo->codebuf, Ristate, Ristate, ISTATE_MONITOR_BASE, 1, 0); + + add_imm(jinfo->codebuf, ARM_R3, Ristate, ISTATE_NEXT_FRAME); + str_imm(jinfo->codebuf, ARM_R3, ARM_R2, THREAD_TOP_ZERO_FRAME, 1, 0); + str_imm(jinfo->codebuf, ARM_R3, ARM_R2, THREAD_LAST_JAVA_SP, 1, 0); + + ldr_imm(jinfo->codebuf, ARM_R3, ARM_IP, CONSTANTPOOL_CACHE, 1, 0); + str_imm(jinfo->codebuf, ARM_R3, Ristate, ISTATE_CONSTANTS, 1, 0); + + str_imm(jinfo->codebuf, ARM_R2, Ristate, ISTATE_THREAD, 1, 0); + str_imm(jinfo->codebuf, ARM_R0, Ristate, ISTATE_METHOD, 1, 0); + + mov_reg(jinfo->codebuf, Rthread, ARM_R2); + + if (jinfo->method->is_synchronized()) { + unsigned loc_retry, loc_failed, loc_success, loc_exception; + + // JAZ_V1 == monitor object + // + // Try to acquire the monitor. Seems very sub-optimal + // ldr r3, [JAZ_V1, #0] + // sub r1, Ristate, #8 + // orr r3, r3, #1 + // str r3, [r1, #0] + // retry: + // ldrex r0, [JAZ_V1, #0] + // cmp r3, r0 + // bne failed + // strex r0, r1, [JAZ_V1, #0] + // cbz r0, success + // b retry + // failed: + // + // success: + // + // + ldr_imm(jinfo->codebuf, ARM_R3, JAZ_V1, 0, 1, 0); + sub_imm(jinfo->codebuf, ARM_R1, Ristate, frame::interpreter_frame_monitor_size()*wordSize); + orr_imm(jinfo->codebuf, ARM_R3, ARM_R3, 1); + str_imm(jinfo->codebuf, ARM_R3, ARM_R1, 0, 1, 0); + loc_retry = out_loc(jinfo->codebuf); +// retry: + ldrex_imm(jinfo->codebuf, ARM_R0, JAZ_V1, 0); + cmp_reg(jinfo->codebuf, ARM_R3, ARM_R0); + loc_failed = forward_16(jinfo->codebuf); + strex_imm(jinfo->codebuf, ARM_R0, ARM_R1, JAZ_V1, 0); + loc_success = forward_16(jinfo->codebuf); + branch_uncond(jinfo->codebuf, loc_retry); + bcc_patch(jinfo->codebuf, COND_NE, loc_failed); +// failed: + mov_imm(jinfo->codebuf, ARM_R0, 0+CONSTMETHOD_CODEOFFSET); + bl(jinfo->codebuf, handlers[H_SYNCHRONIZED_ENTER]); + loc_exception = forward_16(jinfo->codebuf); + bl(jinfo->codebuf, handlers[H_HANDLE_EXCEPTION]); + cbz_patch(jinfo->codebuf, ARM_R0, loc_exception); + cbz_patch(jinfo->codebuf, ARM_R0, loc_success); +// mov_imm(jinfo->codebuf, ARM_R0, 0+CONSTMETHOD_CODEOFFSET); +// bl(jinfo->codebuf, handlers[H_MONITOR]); +// success: + + } + + { + int nlocals = jinfo->method->max_locals(); + + for (i = 0; i < nlocals; i++) { + Reg r = jinfo->jregs->r_local[i]; + if (r) { + unsigned stackdepth = 0; + if (jinfo->method->is_synchronized()) stackdepth += frame::interpreter_frame_monitor_size(); + if (i < parms || (locals_info[i] & (1<code_size; + jubyte *code_base = jinfo->code_base; + unsigned *bc_stackinfo = jinfo->bc_stackinfo; + CodeBuf *codebuf = jinfo->codebuf; + Thumb2_Stack *jstack = jinfo->jstack; + unsigned bci; + unsigned opcode; + unsigned stackinfo; + int len; + unsigned stackdepth; + + for (bci = start; bci < code_size; ) { +#ifdef T2EE_PRINT_DISASS + unsigned start_idx = jinfo->codebuf->idx; + if (start_bci[start_idx] == -1) start_bci[start_idx] = bci; +#endif + opcode = code_base[bci]; + stackinfo = bc_stackinfo[bci]; + + if (stackinfo & BC_BRANCH_TARGET) Thumb2_Flush(jinfo); + JASSERT(!(stackinfo & BC_COMPILED), "code already compiled for this b