From bugzilla-daemon at icedtea.classpath.org Sat Aug 1 11:28:15 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 01 Aug 2009 18:28:15 +0000 Subject: [Bug 374] New: SIGSEGV while visiting a website on Firefox 3.5, Archlinux 64bit Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=374 Summary: SIGSEGV while visiting a website on Firefox 3.5,Archlinux 64bit Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: major Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: gary4gar at gmail.com crash I try to visit(http://www.rechargeitnow.com/needRecharge.jsp) with msg "Applet Started" in Status bar on Firefox 3.5. The crash only happens on my system, the site loads normally as it should on my Friend's PC running Windows XP. hs_err_pid5135.log ---------------------------------------------------------------------------- # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f602d101c71, pid=5135, tid=140050025949456 # # JRE version: 6.0-b16 # Java VM: OpenJDK 64-Bit Server VM (14.0-b15 mixed mode linux-amd64 ) # Distribution: Custom build (Thu Jul 2 04:39:46 UTC 2009) # Problematic frame: # C [ld-linux-x86-64.so.2+0x12c71] # # If you would like to submit a bug report, please include # instructions how to reproduce the bug and 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 (0x0000000000d79000): JavaThread "Image Fetcher 0" daemon [_thread_in_native, id=5162, stack(0x00007f5feffc2000,0x00007f5ff00c3000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x00000000000003d4 Registers: RAX=0x00007f602d30bba0, RBX=0x0000000000000000, RCX=0x00007f602c8b7fb0, RDX=0x00007f5ff00c2908 RSP=0x00007f5ff00c0f00, RBP=0x00007f602c8b7fb0, RSI=0x0000000000000000, RDI=0x0000000000000000 R8 =0x0000000000000000, R9 =0x00007f602c8b8090, R10=0x0000000000000000, R11=0x00007f602d101c70 R12=0x0000000000000000, R13=0x00007f5ff00c1108, R14=0x0000000000000000, R15=0x0000000000d79000 RIP=0x00007f602d101c71, EFL=0x0000000000010246, CSGSFS=0x0000000000000033, ERR=0x0000000000000004 TRAPNO=0x000000000000000e Top of Stack: (sp=0x00007f5ff00c0f00) 0x00007f5ff00c0f00: 0000000000000000 00007f602d0fbf66 0x00007f5ff00c0f10: 00007f5ff00c2908 0000000000fda220 0x00007f5ff00c0f20: 0000000000fda228 0000000000fda218 0x00007f5ff00c0f30: 00007f602c8b7fb0 0000000000000000 0x00007f5ff00c0f40: 00007f5ff00c1108 0000000000000000 0x00007f5ff00c0f50: 0000000000d79000 0000000000fda210 0x00007f5ff00c0f60: 792c58364a6e7d8d 0000000000000000 0x00007f5ff00c0f70: 00007f5ff00c1108 0000000000000000 0x00007f5ff00c0f80: 0000000000d79000 7953e138ab2e7d8d 0x00007f5ff00c0f90: 792c5b3fcb987d8d 00000000ffffffff 0x00007f5ff00c0fa0: 00007f5ff00c1150 00007f5feec6a000 0x00007f5ff00c0fb0: 00007f5ff00c10f8 00007f5ff00c1108 0x00007f5ff00c0fc0: 0000000000000000 0000000000d79000 0x00007f5ff00c0fd0: 0000000000208930 00007f602d0fbdac 0x00007f5ff00c0fe0: 00007f5f00000005 0000000000000000 0x00007f5ff00c0ff0: 0000000000d79000 0000000000f281b0 0x00007f5ff00c1000: 00007f602c8b7fb0 0000000000000000 0x00007f5ff00c1010: 00007f5ff00c1108 0000000000000000 0x00007f5ff00c1020: 0000000000d79000 0000000000000000 0x00007f5ff00c1030: 0000000000fda210 00007f602c8b82cc 0x00007f5ff00c1040: 0000000000d791b8 00007f5ff00c1090 0x00007f5ff00c1050: 00007f5ff00c10f8 00007f602c8b7fef 0x00007f5ff00c1060: 0000000000000006 00007f5feec705d8 0x00007f5ff00c1070: 00007f601e242bb0 0000000000d79000 0x00007f5ff00c1080: 00007f601e242bb0 00007f5ff00c1108 0x00007f5ff00c1090: 00007f5ff00c10e8 00007f60279fdf30 0x00007f5ff00c10a0: 0000000000d79000 00007f5ff00c10a8 0x00007f5ff00c10b0: 00007f601e242bb0 00007f5ff00c1108 0x00007f5ff00c10c0: 00007f601e243928 0000000000000000 0x00007f5ff00c10d0: 00007f601e242bb0 0000000000000000 0x00007f5ff00c10e0: 00007f5ff00c1108 00007f5ff00c1150 0x00007f5ff00c10f0: 00007f60279f27fa 00007f601e243870 Instructions: (pc=0x00007f602d101c71) 0x00007f602d101c61: ff ff 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 53 0x00007f602d101c71: f6 87 d4 03 00 00 08 48 89 fb 75 33 44 8b 8f 10 Stack: [0x00007f5feffc2000,0x00007f5ff00c3000], sp=0x00007f5ff00c0f00, free space=1019k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [ld-linux-x86-64.so.2+0x12c71] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j sun.awt.image.JPEGImageDecoder.initIDs(Ljava/lang/Class;)V+0 j sun.awt.image.JPEGImageDecoder.()V+22 v ~StubRoutines::call_stub j sun.awt.image.InputStreamImageSource.getDecoder(Ljava/io/InputStream;)Lsun/awt/image/ImageDecoder;+135 j sun.awt.image.ByteArrayImageSource.getDecoder()Lsun/awt/image/ImageDecoder;+29 j sun.awt.image.InputStreamImageSource.doFetch()V+30 j sun.awt.image.ImageFetcher.fetchloop()V+33 j sun.awt.image.ImageFetcher.run()V+5 v ~StubRoutines::call_stub --------------- P R O C E S S --------------- Java Threads: ( => current thread ) =>0x0000000000d79000 JavaThread "Image Fetcher 0" daemon [_thread_in_native, id=5162, stack(0x00007f5feffc2000,0x00007f5ff00c3000)] 0x0000000000fd9800 JavaThread "Thread-8" [_thread_in_vm, id=5161, stack(0x00007f5fef9af000,0x00007f5fefab0000)] 0x0000000000fac800 JavaThread "TimerQueue" daemon [_thread_blocked, id=5160, stack(0x00007f5fef07b000,0x00007f5fef17c000)] 0x0000000001033000 JavaThread "TimerQueue" daemon [_thread_blocked, id=5159, stack(0x00007f5fef7ad000,0x00007f5fef8ae000)] 0x000000000100a800 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=5155, stack(0x00007f5fefb8d000,0x00007f5fefc8e000)] 0x0000000001003800 JavaThread "Thread-5" [_thread_blocked, id=5154, stack(0x00007f5fefc8e000,0x00007f5fefd8f000)] 0x0000000000f91000 JavaThread "AWT-Shutdown" [_thread_blocked, id=5153, stack(0x00007f5fefd8f000,0x00007f5fefe90000)] 0x00000000009bd000 JavaThread "DestroyJavaVM" [_thread_blocked, id=5136, stack(0x00007f602d1d9000,0x00007f602d2da000)] 0x0000000000f85800 JavaThread "Thread-4" [_thread_in_native, id=5152, stack(0x00007f5fefe90000,0x00007f5feff91000)] 0x0000000000d00000 JavaThread "Thread-3" [_thread_blocked, id=5150, stack(0x00007f5ff00c3000,0x00007f5ff01c4000)] 0x0000000000cfe000 JavaThread "Thread-2" [_thread_blocked, id=5149, stack(0x00007f5ff01c4000,0x00007f5ff02c5000)] 0x0000000000ced000 JavaThread "Thread-1" [_thread_blocked, id=5148, stack(0x00007f5ff02c5000,0x00007f5ff03c6000)] 0x0000000000cc2000 JavaThread "AWT-XAWT" daemon [_thread_in_native, id=5147, stack(0x00007f5ff06c7000,0x00007f5ff07c8000)] 0x0000000000b34800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=5146, stack(0x00007f5ff0af2000,0x00007f5ff0bf3000)] 0x0000000000a52800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=5144, stack(0x00007f5ff2ad3000,0x00007f5ff2bd4000)] 0x0000000000a50000 JavaThread "CompilerThread1" daemon [_thread_blocked, id=5143, stack(0x00007f5ff2bd4000,0x00007f5ff2cd5000)] 0x0000000000a4c000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=5142, stack(0x00007f5ff2cd5000,0x00007f5ff2dd6000)] 0x0000000000a49800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=5141, stack(0x00007f5ff2dd6000,0x00007f5ff2ed7000)] 0x0000000000a29800 JavaThread "Finalizer" daemon [_thread_blocked, id=5140, stack(0x00007f5ff301c000,0x00007f5ff311d000)] 0x0000000000a22800 JavaThread "Reference Handler" daemon [_thread_blocked, id=5139, stack(0x00007f5ff311d000,0x00007f5ff321e000)] Other Threads: 0x0000000000a1d000 VMThread [stack: 0x00007f5ff321e000,0x00007f5ff331f000] [id=5138] 0x0000000000a55800 WatcherThread [stack: 0x00007f5ff29d2000,0x00007f5ff2ad3000] [id=5145] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap def new generation total 2368K, used 1689K [0x00007f5ff37e0000, 0x00007f5ff3a70000, 0x00007f60015e0000) eden space 2112K, 67% used [0x00007f5ff37e0000, 0x00007f5ff39466a8, 0x00007f5ff39f0000) from space 256K, 99% used [0x00007f5ff3a30000, 0x00007f5ff3a6fff8, 0x00007f5ff3a70000) to space 256K, 0% used [0x00007f5ff39f0000, 0x00007f5ff39f0000, 0x00007f5ff3a30000) tenured generation total 5312K, used 4015K [0x00007f60015e0000, 0x00007f6001b10000, 0x00007f601d1e0000) the space 5312K, 75% used [0x00007f60015e0000, 0x00007f60019cbe58, 0x00007f60019cc000, 0x00007f6001b10000) compacting perm gen total 21248K, used 16783K [0x00007f601d1e0000, 0x00007f601e6a0000, 0x00007f60279e0000) the space 21248K, 78% used [0x00007f601d1e0000, 0x00007f601e243cf0, 0x00007f601e243e00, 0x00007f601e6a0000) No shared spaces configured. Dynamic libraries: 00400000-00409000 r-xp 00000000 08:02 581665 /usr/lib/jvm/java-1.6.0-openjdk/jre/bin/java 00608000-00609000 rw-p 00008000 08:02 581665 /usr/lib/jvm/java-1.6.0-openjdk/jre/bin/java 009b5000-01068000 rw-p 00000000 00:00 0 [heap] 7f5feec6a000-7f5feec73000 r-xp 00000000 08:02 730131 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libjpeg.so 7f5feec73000-7f5feee72000 ---p 00009000 08:02 730131 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libjpeg.so 7f5feee72000-7f5feee73000 rw-p 00008000 08:02 730131 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libjpeg.so 7f5feee73000-7f5feee7b000 r-xp 00000000 08:02 730143 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libnio.so 7f5feee7b000-7f5fef07a000 ---p 00008000 08:02 730143 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libnio.so 7f5fef07a000-7f5fef07b000 rw-p 00007000 08:02 730143 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libnio.so 7f5fef07b000-7f5fef07e000 ---p 00000000 00:00 0 7f5fef07e000-7f5fef17c000 rwxp 00000000 00:00 0 7f5fef17c000-7f5fef18f000 r-xp 00000000 08:02 704544 /lib/libresolv-2.10.1.so 7f5fef18f000-7f5fef38e000 ---p 00013000 08:02 704544 /lib/libresolv-2.10.1.so 7f5fef38e000-7f5fef38f000 r--p 00012000 08:02 704544 /lib/libresolv-2.10.1.so 7f5fef38f000-7f5fef390000 rw-p 00013000 08:02 704544 /lib/libresolv-2.10.1.so 7f5fef390000-7f5fef392000 rw-p 00000000 00:00 0 7f5fef392000-7f5fef397000 r-xp 00000000 08:02 704547 /lib/libnss_dns-2.10.1.so 7f5fef397000-7f5fef596000 ---p 00005000 08:02 704547 /lib/libnss_dns-2.10.1.so 7f5fef596000-7f5fef597000 r--p 00004000 08:02 704547 /lib/libnss_dns-2.10.1.so 7f5fef597000-7f5fef598000 rw-p 00005000 08:02 704547 /lib/libnss_dns-2.10.1.so 7f5fef598000-7f5fef5ad000 r-xp 00000000 08:02 730144 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libnet.so 7f5fef5ad000-7f5fef7ac000 ---p 00015000 08:02 730144 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libnet.so 7f5fef7ac000-7f5fef7ad000 rw-p 00014000 08:02 730144 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libnet.so 7f5fef7ad000-7f5fef7b0000 ---p 00000000 00:00 0 7f5fef7b0000-7f5fef8ae000 rwxp 00000000 00:00 0 7f5fef8ae000-7f5fef8b1000 rwxp 00000000 00:00 0 7f5fef8b1000-7f5fef9af000 rwxp 00000000 00:00 0 7f5fef9af000-7f5fef9b2000 ---p 00000000 00:00 0 7f5fef9b2000-7f5fefab0000 rwxp 00000000 00:00 0 7f5fefab0000-7f5fefb0c000 r--s 00000000 08:02 1196036 /var/cache/fontconfig/17090aa38d5c6f09fb8c5c354938f1d7-x86-64.cache-2 7f5fefb0c000-7f5fefb68000 r--s 00000000 08:02 1531923 /var/cache/fontconfig/df311e82a1a24c41a75c2c930223552e-x86-64.cache-2 7f5fefb8d000-7f5fefb90000 ---p 00000000 00:00 0 7f5fefb90000-7f5fefc8e000 rwxp 00000000 00:00 0 7f5fefc8e000-7f5fefc91000 ---p 00000000 00:00 0 7f5fefc91000-7f5fefd8f000 rwxp 00000000 00:00 0 7f5fefd8f000-7f5fefd92000 ---p 00000000 00:00 0 7f5fefd92000-7f5fefe90000 rwxp 00000000 00:00 0 7f5fefe90000-7f5fefe93000 ---p 00000000 00:00 0 7f5fefe93000-7f5feff91000 rwxp 00000000 00:00 0 7f5feffc2000-7f5feffc5000 ---p 00000000 00:00 0 7f5feffc5000-7f5ff00c3000 rwxp 00000000 00:00 0 7f5ff00c3000-7f5ff00c6000 ---p 00000000 00:00 0 7f5ff00c6000-7f5ff01c4000 rwxp 00000000 00:00 0 7f5ff01c4000-7f5ff01c7000 ---p 00000000 00:00 0 7f5ff01c7000-7f5ff02c5000 rwxp 00000000 00:00 0 7f5ff02c5000-7f5ff02c8000 ---p 00000000 00:00 0 7f5ff02c8000-7f5ff03c6000 rwxp 00000000 00:00 0 7f5ff03c6000-7f5ff03cb000 r-xp 00000000 08:02 453133 /usr/lib/libXfixes.so.3.1.0 7f5ff03cb000-7f5ff05ca000 ---p 00005000 08:02 453133 /usr/lib/libXfixes.so.3.1.0 7f5ff05ca000-7f5ff05cb000 rw-p 00004000 08:02 453133 /usr/lib/libXfixes.so.3.1.0 7f5ff05cb000-7f5ff05e0000 r--s 00000000 08:02 1531915 /var/cache/fontconfig/8d4af663993b81a124ee82e610bb31f9-x86-64.cache-2 7f5ff05e0000-7f5ff063c000 r--s 00000000 08:02 1196036 /var/cache/fontconfig/17090aa38d5c6f09fb8c5c354938f1d7-x86-64.cache-2 7f5ff063c000-7f5ff0698000 r--s 00000000 08:02 1531923 /var/cache/fontconfig/df311e82a1a24c41a75c2c930223552e-x86-64.cache-2 7f5ff06b2000-7f5ff06c7000 r--s 00000000 08:02 1531915 /var/cache/fontconfig/8d4af663993b81a124ee82e610bb31f9-x86-64.cache-2 7f5ff06c7000-7f5ff06ca000 ---p 00000000 00:00 0 7f5ff06ca000-7f5ff07c8000 rwxp 00000000 00:00 0 7f5ff07c8000-7f5ff07dd000 r--s 00000000 08:02 1531915 /var/cache/fontconfig/8d4af663993b81a124ee82e610bb31f9-x86-64.cache-2 7f5ff07dd000-7f5ff0839000 r--s 00000000 08:02 1196036 /var/cache/fontconfig/17090aa38d5c6f09fb8c5c354938f1d7-x86-64.cache-2 7f5ff0839000-7f5ff0895000 r--s 00000000 08:02 1531923 /var/cache/fontconfig/df311e82a1a24c41a75c2c930223552e-x86-64.cache-2 7f5ff089a000-7f5ff08a3000 r-xp 00000000 08:02 453700 /usr/lib/libXcursor.so.1.0.2 7f5ff08a3000-7f5ff0aa3000 ---p 00009000 08:02 453700 /usr/lib/libXcursor.so.1.0.2 7f5ff0aa3000-7f5ff0aa4000 rw-p 00009000 08:02 453700 /usr/lib/libXcursor.so.1.0.2 7f5ff0aa6000-7f5ff0aae000 r--s 00000000 08:02 1531944 /var/cache/fontconfig/d62e99ef547d1d24cdb1bd22ec1a2976-x86-64.cache-2 7f5ff0aae000-7f5ff0ad0000 r--s 00000000 08:02 1531943 /var/cache/fontconfig/f6b893a7224233d96cb72fd88691c0b4-x86-64.cache-2 7f5ff0ad0000-7f5ff0af2000 r--s 00000000 08:02 1531943 /var/cache/fontconfig/f6b893a7224233d96cb72fd88691c0b4-x86-64.cache-2 7f5ff0af2000-7f5ff0af5000 ---p 00000000 00:00 0 7f5ff0af5000-7f5ff0bf3000 rwxp 00000000 00:00 0 7f5ff0bf3000-7f5ff0c09000 r-xp 00000000 08:02 450637 /usr/lib/libgcc_s.so.1 7f5ff0c09000-7f5ff0e08000 ---p 00016000 08:02 450637 /usr/lib/libgcc_s.so.1 7f5ff0e08000-7f5ff0e09000 rw-p 00015000 08:02 450637 /usr/lib/libgcc_s.so.1 7f5ff0e09000-7f5ff0e9a000 r-xp 00000000 08:02 450973 /usr/lib/libfreetype.so.6.3.20 7f5ff0e9a000-7f5ff109a000 ---p 00091000 08:02 450973 /usr/lib/libfreetype.so.6.3.20 7f5ff109a000-7f5ff10a0000 rw-p 00091000 08:02 450973 /usr/lib/libfreetype.so.6.3.20 7f5ff10a0000-7f5ff10e6000 r-xp 00000000 08:02 730132 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libfontmanager.so 7f5ff10e6000-7f5ff12e6000 ---p 00046000 08:02 730132 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libfontmanager.so 7f5ff12e6000-7f5ff12e9000 rw-p 00046000 08:02 730132 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libfontmanager.so 7f5ff12e9000-7f5ff12fc000 rw-p 00000000 00:00 0 7f5ff12fc000-7f5ff1301000 r-xp 00000000 08:02 453263 /usr/lib/libXdmcp.so.6.0.0 7f5ff1301000-7f5ff1500000 ---p 00005000 08:02 453263 /usr/lib/libXdmcp.so.6.0.0 7f5ff1500000-7f5ff1501000 rw-p 00004000 08:02 453263 /usr/lib/libXdmcp.so.6.0.0 7f5ff1501000-7f5ff151c000 r-xp 00000000 08:02 452676 /usr/lib/libxcb.so.1.1.0 7f5ff151c000-7f5ff171c000 ---p 0001b000 08:02 452676 /usr/lib/libxcb.so.1.1.0 7f5ff171c000-7f5ff171d000 rw-p 0001b000 08:02 452676 /usr/lib/libxcb.so.1.1.0 7f5ff171d000-7f5ff171f000 r-xp 00000000 08:02 452658 /usr/lib/libXau.so.6.0.0 7f5ff171f000-7f5ff191e000 ---p 00002000 08:02 452658 /usr/lib/libXau.so.6.0.0 7f5ff191e000-7f5ff191f000 rw-p 00001000 08:02 452658 /usr/lib/libXau.so.6.0.0 7f5ff191f000-7f5ff1928000 r-xp 00000000 08:02 452701 /usr/lib/libXi.so.6.0.0 7f5ff1928000-7f5ff1b28000 ---p 00009000 08:02 452701 /usr/lib/libXi.so.6.0.0 7f5ff1b28000-7f5ff1b29000 rw-p 00009000 08:02 452701 /usr/lib/libXi.so.6.0.0 7f5ff1b29000-7f5ff1b2e000 r-xp 00000000 08:02 453277 /usr/lib/libXtst.so.6.1.0 7f5ff1b2e000-7f5ff1d2e000 ---p 00005000 08:02 453277 /usr/lib/libXtst.so.6.1.0 7f5ff1d2e000-7f5ff1d2f000 rw-p 00005000 08:02 453277 /usr/lib/libXtst.so.6.1.0 7f5ff1d2f000-7f5ff1d38000 r-xp 00000000 08:02 453697 /usr/lib/libXrender.so.1.3.0 7f5ff1d38000-7f5ff1f37000 ---p 00009000 08:02 453697 /usr/lib/libXrender.so.1.3.0 7f5ff1f37000-7f5ff1f38000 rw-p 00008000 08:02 453697 /usr/lib/libXrender.so.1.3.0 7f5ff1f38000-7f5ff206d000 r-xp 00000000 08:02 451435 /usr/lib/libX11.so.6.2.0 7f5ff206d000-7f5ff226d000 ---p 00135000 08:02 451435 /usr/lib/libX11.so.6.2.0 7f5ff226d000-7f5ff2273000 rw-p 00135000 08:02 451435 /usr/lib/libX11.so.6.2.0 7f5ff2273000-7f5ff2284000 r-xp 00000000 08:02 452698 /usr/lib/libXext.so.6.4.0 7f5ff2284000-7f5ff2484000 ---p 00011000 08:02 452698 /usr/lib/libXext.so.6.4.0 7f5ff2484000-7f5ff2485000 rw-p 00011000 08:02 452698 /usr/lib/libXext.so.6.4.0 7f5ff248f000-7f5ff24b1000 r--s 00000000 08:02 1531943 /var/cache/fontconfig/f6b893a7224233d96cb72fd88691c0b4-x86-64.cache-2 7f5ff24b1000-7f5ff24fd000 r-xp 00000000 08:02 730160 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/xawt/libmawt.so 7f5ff24fd000-7f5ff26fc000 ---p 0004c000 08:02 730160 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/xawt/libmawt.so 7f5ff26fc000-7f5ff2700000 rw-p 0004b000 08:02 730160 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/xawt/libmawt.so 7f5ff2700000-7f5ff2701000 rw-p 00000000 00:00 0 7f5ff2701000-7f5ff27a3000 r-xp 00000000 08:02 730134 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libawt.so 7f5ff27a3000-7f5ff29a2000 ---p 000a2000 08:02 730134 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libawt.so 7f5ff29a2000-7f5ff29ae000 rw-p 000a1000 08:02 730134 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libawt.so 7f5ff29ae000-7f5ff29d2000 rw-p 00000000 00:00 0 7f5ff29d2000-7f5ff29d3000 ---p 00000000 00:00 0 7f5ff29d3000-7f5ff2ad3000 rwxp 00000000 00:00 0 7f5ff2ad3000-7f5ff2ad6000 ---p 00000000 00:00 0 7f5ff2ad6000-7f5ff2bd4000 rwxp 00000000 00:00 0 7f5ff2bd4000-7f5ff2bd7000 ---p 00000000 00:00 0 7f5ff2bd7000-7f5ff2cd5000 rwxp 00000000 00:00 0 7f5ff2cd5000-7f5ff2cd8000 ---p 00000000 00:00 0 7f5ff2cd8000-7f5ff2dd6000 rwxp 00000000 00:00 0 7f5ff2dd6000-7f5ff2dd9000 ---p 00000000 00:00 0 7f5ff2dd9000-7f5ff2ed7000 rwxp 00000000 00:00 0 7f5ff2ed7000-7f5ff301c000 r--p 00000000 08:02 543857 /usr/lib/locale/locale-archive 7f5ff301c000-7f5ff301f000 ---p 00000000 00:00 0 7f5ff301f000-7f5ff311d000 rwxp 00000000 00:00 0 7f5ff311d000-7f5ff3120000 ---p 00000000 00:00 0 7f5ff3120000-7f5ff321e000 rwxp 00000000 00:00 0 7f5ff321e000-7f5ff321f000 ---p 00000000 00:00 0 7f5ff321f000-7f5ff331f000 rwxp 00000000 00:00 0 7f5ff331f000-7f5ff3352000 rw-p 00000000 00:00 0 7f5ff3352000-7f5ff34e2000 r--s 03852000 08:02 581673 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/rt.jar 7f5ff34e2000-7f5ff350a000 rw-p 00000000 00:00 0 7f5ff350a000-7f5ff3515000 rwxp 00000000 00:00 0 7f5ff3515000-7f5ff355f000 rwxp 00000000 00:00 0 7f5ff355f000-7f5ff3562000 rwxp 00000000 00:00 0 7f5ff3562000-7f5ff363e000 rwxp 00000000 00:00 0 7f5ff363e000-7f5ff3640000 rwxp 00000000 00:00 0 7f5ff3640000-7f5ff36ad000 rwxp 00000000 00:00 0 7f5ff36ad000-7f5ff36b0000 rwxp 00000000 00:00 0 7f5ff36b0000-7f5ff378b000 rwxp 00000000 00:00 0 7f5ff378b000-7f5ff3796000 rwxp 00000000 00:00 0 7f5ff3796000-7f5ff37df000 rwxp 00000000 00:00 0 7f5ff37df000-7f5ff3a70000 rwxp 00000000 00:00 0 7f5ff3a70000-7f60015e0000 rwxp 00000000 00:00 0 7f60015e0000-7f6001b10000 rwxp 00000000 00:00 0 7f6001b10000-7f601d1e0000 rwxp 00000000 00:00 0 7f601d1e0000-7f601e6a0000 rwxp 00000000 00:00 0 7f601e6a0000-7f60279e0000 rwxp 00000000 00:00 0 7f60279e6000-7f60279ed000 r--s 00000000 08:02 1531925 /var/cache/fontconfig/a98d8961fa319a64d3cfd8640c79e62d-x86-64.cache-2 7f60279ed000-7f6027c5d000 rwxp 00000000 00:00 0 7f6027c5d000-7f602a9ed000 rwxp 00000000 00:00 0 7f602a9ed000-7f602a9f4000 r-xp 00000000 08:02 730148 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libzip.so 7f602a9f4000-7f602abf3000 ---p 00007000 08:02 730148 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libzip.so 7f602abf3000-7f602abf4000 rw-p 00006000 08:02 730148 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libzip.so 7f602abf4000-7f602abff000 r-xp 00000000 08:02 704549 /lib/libnss_files-2.10.1.so 7f602abff000-7f602adfe000 ---p 0000b000 08:02 704549 /lib/libnss_files-2.10.1.so 7f602adfe000-7f602adff000 r--p 0000a000 08:02 704549 /lib/libnss_files-2.10.1.so 7f602adff000-7f602ae00000 rw-p 0000b000 08:02 704549 /lib/libnss_files-2.10.1.so 7f602ae00000-7f602ae08000 r-xp 00000000 08:02 730165 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/native_threads/libhpi.so 7f602ae08000-7f602b007000 ---p 00008000 08:02 730165 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/native_threads/libhpi.so 7f602b007000-7f602b009000 rw-p 00007000 08:02 730165 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/native_threads/libhpi.so 7f602b009000-7f602b01e000 r-xp 00000000 08:02 704560 /lib/libnsl-2.10.1.so 7f602b01e000-7f602b21d000 ---p 00015000 08:02 704560 /lib/libnsl-2.10.1.so 7f602b21d000-7f602b21e000 r--p 00014000 08:02 704560 /lib/libnsl-2.10.1.so 7f602b21e000-7f602b21f000 rw-p 00015000 08:02 704560 /lib/libnsl-2.10.1.so 7f602b21f000-7f602b221000 rw-p 00000000 00:00 0 7f602b221000-7f602b24d000 r-xp 00000000 08:02 730149 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libjava.so 7f602b24d000-7f602b44d000 ---p 0002c000 08:02 730149 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libjava.so 7f602b44d000-7f602b451000 rw-p 0002c000 08:02 730149 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libjava.so 7f602b451000-7f602b45f000 r-xp 00000000 08:02 730150 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libverify.so 7f602b45f000-7f602b65f000 ---p 0000e000 08:02 730150 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libverify.so 7f602b65f000-7f602b661000 rw-p 0000e000 08:02 730150 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/libverify.so 7f602b661000-7f602b668000 r-xp 00000000 08:02 704550 /lib/librt-2.10.1.so 7f602b668000-7f602b867000 ---p 00007000 08:02 704550 /lib/librt-2.10.1.so 7f602b867000-7f602b868000 r--p 00006000 08:02 704550 /lib/librt-2.10.1.so 7f602b868000-7f602b869000 rw-p 00007000 08:02 704550 /lib/librt-2.10.1.so 7f602b869000-7f602b8ea000 r-xp 00000000 08:02 704528 /lib/libm-2.10.1.so 7f602b8ea000-7f602bae9000 ---p 00081000 08:02 704528 /lib/libm-2.10.1.so 7f602bae9000-7f602baea000 r--p 00080000 08:02 704528 /lib/libm-2.10.1.so 7f602baea000-7f602baeb000 rw-p 00081000 08:02 704528 /lib/libm-2.10.1.so 7f602baeb000-7f602c2a2000 r-xp 00000000 08:02 730162 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/server/libjvm.so 7f602c2a2000-7f602c4a2000 ---p 007b7000 08:02 730162 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/server/libjvm.so 7f602c4a2000-7f602c528000 rw-p 007b7000 08:02 730162 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/server/libjvm.so 7f602c528000-7f602c564000 rw-p 00000000 00:00 0 7f602c564000-7f602c6ad000 r-xp 00000000 08:02 704573 /lib/libc-2.10.1.so 7f602c6ad000-7f602c8ad000 ---p 00149000 08:02 704573 /lib/libc-2.10.1.so 7f602c8ad000-7f602c8b1000 r--p 00149000 08:02 704573 /lib/libc-2.10.1.so 7f602c8b1000-7f602c8b2000 rw-p 0014d000 08:02 704573 /lib/libc-2.10.1.so 7f602c8b2000-7f602c8b7000 rw-p 00000000 00:00 0 7f602c8b7000-7f602c8b9000 r-xp 00000000 08:02 704530 /lib/libdl-2.10.1.so 7f602c8b9000-7f602cab9000 ---p 00002000 08:02 704530 /lib/libdl-2.10.1.so 7f602cab9000-7f602caba000 r--p 00002000 08:02 704530 /lib/libdl-2.10.1.so 7f602caba000-7f602cabb000 rw-p 00003000 08:02 704530 /lib/libdl-2.10.1.so 7f602cabb000-7f602cabf000 r-xp 00000000 08:02 730161 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/jli/libjli.so 7f602cabf000-7f602ccbe000 ---p 00004000 08:02 730161 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/jli/libjli.so 7f602ccbe000-7f602ccbf000 rw-p 00003000 08:02 730161 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/jli/libjli.so 7f602ccbf000-7f602ccd5000 r-xp 00000000 08:02 704539 /lib/libpthread-2.10.1.so 7f602ccd5000-7f602ced4000 ---p 00016000 08:02 704539 /lib/libpthread-2.10.1.so 7f602ced4000-7f602ced5000 r--p 00015000 08:02 704539 /lib/libpthread-2.10.1.so 7f602ced5000-7f602ced6000 rw-p 00016000 08:02 704539 /lib/libpthread-2.10.1.so 7f602ced6000-7f602ceda000 rw-p 00000000 00:00 0 7f602ceda000-7f602ceef000 r-xp 00000000 08:02 451303 /usr/lib/libz.so.1.2.3.3 7f602ceef000-7f602d0ee000 ---p 00015000 08:02 451303 /usr/lib/libz.so.1.2.3.3 7f602d0ee000-7f602d0ef000 rw-p 00014000 08:02 451303 /usr/lib/libz.so.1.2.3.3 7f602d0ef000-7f602d10c000 r-xp 00000000 08:02 704568 /lib/ld-2.10.1.so 7f602d10c000-7f602d10e000 r--s 00008000 08:02 403518 /home/gaurish/.icedteaplugin/cache/http/jdc-cam1.joesdatacenter.com/java/ama/ama.jar 7f602d10e000-7f602d112000 r--s 00079000 08:02 581671 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/jsse.jar 7f602d112000-7f602d119000 r--s 00000000 08:02 1531925 /var/cache/fontconfig/a98d8961fa319a64d3cfd8640c79e62d-x86-64.cache-2 7f602d119000-7f602d123000 rwxp 00000000 00:00 0 7f602d123000-7f602d1d9000 rwxp 00000000 00:00 0 7f602d1d9000-7f602d1dc000 ---p 00000000 00:00 0 7f602d1dc000-7f602d2da000 rwxp 00000000 00:00 0 7f602d2da000-7f602d2dd000 rw-p 00000000 00:00 0 7f602d2de000-7f602d2df000 r--s 00000000 08:02 1531920 /var/cache/fontconfig/cc95ca9c1a5b584cbe1206592da775ec-x86-64.cache-2 7f602d2df000-7f602d2e0000 r--s 00000000 08:02 1531920 /var/cache/fontconfig/cc95ca9c1a5b584cbe1206592da775ec-x86-64.cache-2 7f602d2e0000-7f602d2e8000 r--s 00000000 08:02 1531944 /var/cache/fontconfig/d62e99ef547d1d24cdb1bd22ec1a2976-x86-64.cache-2 7f602d2e8000-7f602d2e9000 r--s 00000000 08:02 1531920 /var/cache/fontconfig/cc95ca9c1a5b584cbe1206592da775ec-x86-64.cache-2 7f602d2e9000-7f602d2f0000 r--s 00000000 08:02 1531925 /var/cache/fontconfig/a98d8961fa319a64d3cfd8640c79e62d-x86-64.cache-2 7f602d2f0000-7f602d2f8000 r--s 00000000 08:02 1531944 /var/cache/fontconfig/d62e99ef547d1d24cdb1bd22ec1a2976-x86-64.cache-2 7f602d2f8000-7f602d2ff000 r--s 000fd000 08:02 581672 /usr/lib/jvm/java-1.6.0-openjdk/jre/lib/resources.jar 7f602d2ff000-7f602d307000 rw-s 00000000 08:02 581757 /tmp/hsperfdata_gaurish/5135 7f602d307000-7f602d308000 rw-p 00000000 00:00 0 7f602d308000-7f602d309000 r--p 00000000 00:00 0 7f602d309000-7f602d30b000 rw-p 00000000 00:00 0 7f602d30b000-7f602d30c000 r--p 0001c000 08:02 704568 /lib/ld-2.10.1.so 7f602d30c000-7f602d30d000 rw-p 0001d000 08:02 704568 /lib/ld-2.10.1.so 7fff72939000-7fff7294c000 rwxp 00000000 00:00 0 [stack] 7fff7294c000-7fff7294e000 rw-p 00000000 00:00 0 7fff72976000-7fff72977000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] VM Arguments: java_command: sun.applet.PluginMain Launcher Type: SUN_STANDARD Environment Variables: JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/kde/bin:/usr/bin/perlbin/site:/usr/bin/perlbin/vendor:/usr/bin/perlbin/core:/opt/qt/bin LD_LIBRARY_PATH=/usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk/jre/../lib/amd64 SHELL=/bin/bash DISPLAY=:0.0 Signal Handlers: SIGSEGV: [libjvm.so+0x66b290], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x66b290], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x542960], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x542960], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x542960], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x542960], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x542100], sa_mask[0]=0x00000000, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x5444c0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: [libjvm.so+0x5444c0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGTERM: [libjvm.so+0x5444c0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x5444c0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:Linux uname:Linux 2.6.30-ARCH #1 SMP PREEMPT Sat Jul 4 02:24:43 CEST 2009 x86_64 libc:glibc 2.10.1 NPTL 2.10.1 rlimit: STACK 8192k, CORE 0k, NPROC 8191, NOFILE 1024, AS infinity load average:0.66 0.38 0.33 CPU:total 1 (1 cores per cpu, 1 threads per core) family 15 model 12 stepping 0, cmov, cx8, fxsr, mmx, sse, sse2, mmxext, 3dnow, 3dnowext Memory: 4k page, physical 1026132k(225624k free), swap 1574360k(1574360k free) vm_info: OpenJDK 64-Bit Server VM (14.0-b15) for linux-amd64 JRE (1.6.0_0-b16), built on Jul 2 2009 04:46:40 by "andyrtr" with gcc 4.4.0 20090526 (prerelease) time: Sun Jul 19 17:00:04 2009 elapsed time: 7 seconds ------------------------------------------------------------------------------- Steps to Reproduce: 1) Try to Open (http://www.rechargeitnow.com/needRecharge.jsp) 2) It would crash and not load 3) Find the cash log in your Home Dir Please tell me a workaround -- 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 Joe.Darcy at Sun.COM Sat Aug 1 21:38:57 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Sat, 01 Aug 2009 21:38:57 -0700 Subject: [FOR REVIEW] hs14 merge for OpenJDK6 In-Reply-To: <4A73E58F.9020502@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> Message-ID: <4A751861.2090901@sun.com> Erik Trimble wrote: > Andrew John Hughes wrote: >> Here it is, the mother of all webrevs: >> >> http://cr.openjdk.java.net/~andrew/jdk6-hs14-merge/webrev.01/ >> >> with the patch itself being ~13mb. >> >> This takes OpenJDK6 up to HotSpot 14 build 16 (see >> http://hg.openjdk.java.net/hsx/hsx14/master/), incorporating 553 >> changesets from the hs14 repo. and one merge changeset. >> I'll shortly push this to http://fuseyism.com/hg/hotspot too. >> >> Ok to push? >> > I approve. > I've taken a look too and don't see anything amiss; approved! Thanks, -Joe From bugzilla-daemon at icedtea.classpath.org Mon Aug 3 01:41:23 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 03 Aug 2009 08:41:23 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 ------- Comment #10 from ankostis at gmail.com 2009-08-03 08:41 ------- (In reply to comment #9) > A couple of questions come to mind about the possibility of generating a NSS > config file (depending on detection of nss library). > First: how would we know whether the local library is built > with ECC support? > It is not afaik a default build option, > Fedora may not be the only distro not building with that option. As listed in #3, i had verified that: * gentoo[1] and * debian/ubuntu[2] build NSS with ECC by default. Also linked this bug to fedora's relevant bug[3] as suggested. [1] http://bugs.gentoo.org/247221 [2] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=490826 [3] https://bugzilla.redhat.com/show_bug.cgi?id=492124 -- 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 Mon Aug 3 03:02:18 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 3 Aug 2009 11:02:18 +0100 Subject: [FOR REVIEW] hs14 merge for OpenJDK6 In-Reply-To: <4A751861.2090901@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> Message-ID: <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> 2009/8/2 Joseph D. Darcy : > Erik Trimble wrote: >> >> Andrew John Hughes wrote: >>> >>> Here it is, the mother of all webrevs: >>> >>> http://cr.openjdk.java.net/~andrew/jdk6-hs14-merge/webrev.01/ >>> >>> with the patch itself being ~13mb. >>> >>> This takes OpenJDK6 up to HotSpot 14 build 16 (see >>> http://hg.openjdk.java.net/hsx/hsx14/master/), incorporating 553 >>> changesets from the hs14 repo. and one merge changeset. >>> I'll shortly push this to http://fuseyism.com/hg/hotspot too. >>> >>> Ok to push? >>> >> >> I approve. >> > > I've taken a look too and don't see anything amiss; approved! > > Thanks, > > -Joe > Thanks Erik and Joe for the (very quick) approval! Wasn't expecting that over a weekend :) It looks like pushing isn't working too well though: pushing to ssh://andrew at hg.openjdk.java.net/jdk6/jdk6-gate/hotspot searching for changes remote: adding changesets remote: abort: Permission denied: /hg/jdk6/jdk6-gate/hotspot/.hg/store/00changelog.i abort: unexpected response: empty string I've pushed to various trees before (tl, awt, build, icedtea, cvmi) so I'm guessing this might be related to some permission issues following the replacement of hotspot? Any ideas? CCing Mark Reinhold as well as he manages hg. 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 gnu_andrew at member.fsf.org Mon Aug 3 04:06:34 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 3 Aug 2009 12:06:34 +0100 Subject: [PATCH FOR APPROVAL]: Bump HotSpot to hs14b16 Message-ID: <17c6771e0908030406ob11cc89p1a1bb12e767ce790@mail.gmail.com> A simple patch to let us use the latest revision of HotSpot 14 for the release; this moves IcedTea6 from hs14b15 to hs14b16. This is the same version as will be available in the OpenJDK6 repositories as soon as I can push it: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-August/000656.html Ok to push? ChangeLog: 2009-08-03 Andrew John Hughes * hotspot.map: Bump to hs14b16. -- 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 -------------- next part -------------- diff -r 4041898deb5a hotspot.map --- a/hotspot.map Thu Jul 30 22:47:00 2009 +0100 +++ b/hotspot.map Mon Aug 03 12:03:28 2009 +0100 @@ -1,3 +1,2 @@ # version changeset md5sum -default 25a020f13592 dbd7aca5544d1aeebf0eadd45d29d08e - +default 09f7962b8b44 600284e870609a7531163bf2972c573b From mark at klomp.org Mon Aug 3 05:04:59 2009 From: mark at klomp.org (Mark Wielaard) Date: Mon, 03 Aug 2009 14:04:59 +0200 Subject: [PATCH FOR APPROVAL]: Bump HotSpot to hs14b16 In-Reply-To: <17c6771e0908030406ob11cc89p1a1bb12e767ce790@mail.gmail.com> References: <17c6771e0908030406ob11cc89p1a1bb12e767ce790@mail.gmail.com> Message-ID: <1249301099.3344.5.camel@springer.wildebeest.org> Hi Andrew, On Mon, 2009-08-03 at 12:06 +0100, Andrew John Hughes wrote: > Ok to push? > > ChangeLog: > > 2009-08-03 Andrew John Hughes > > * hotspot.map: > Bump to hs14b16. Nice. Please do push. Thanks for all your hard work, and persistence, pushing hotspot for 6 forward. Cheers, Mark From ahughes at redhat.com Mon Aug 3 05:16:12 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Mon, 03 Aug 2009 12:16:12 +0000 Subject: changeset in /hg/icedtea6: Bump HotSpot to revision 16. Message-ID: changeset 18f23e1e3c37 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=18f23e1e3c37 description: Bump HotSpot to revision 16. 2009-08-03 Andrew John Hughes * hotspot.map: Bump to hs14b16. diffstat: 2 files changed, 6 insertions(+), 2 deletions(-) ChangeLog | 5 +++++ hotspot.map | 3 +-- diffs (20 lines): diff -r 4041898deb5a -r 18f23e1e3c37 ChangeLog --- a/ChangeLog Thu Jul 30 22:47:00 2009 +0100 +++ b/ChangeLog Mon Aug 03 13:18:16 2009 +0100 @@ -1,3 +1,8 @@ 2009-07-30 Andrew John Hughes + + * hotspot.map: + Bump to hs14b16. + 2009-07-30 Andrew John Hughes * Makefile.am: diff -r 4041898deb5a -r 18f23e1e3c37 hotspot.map --- a/hotspot.map Thu Jul 30 22:47:00 2009 +0100 +++ b/hotspot.map Mon Aug 03 13:18:16 2009 +0100 @@ -1,3 +1,2 @@ # version changeset md5sum -default 25a020f13592 dbd7aca5544d1aeebf0eadd45d29d08e - +default 09f7962b8b44 600284e870609a7531163bf2972c573b From gnu_andrew at member.fsf.org Mon Aug 3 05:37:01 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 3 Aug 2009 13:37:01 +0100 Subject: [PATCH FOR APPROVAL]: Bump HotSpot to hs14b16 In-Reply-To: <1249301099.3344.5.camel@springer.wildebeest.org> References: <17c6771e0908030406ob11cc89p1a1bb12e767ce790@mail.gmail.com> <1249301099.3344.5.camel@springer.wildebeest.org> Message-ID: <17c6771e0908030537l4a2fab9chf47f68978cb289ea@mail.gmail.com> 2009/8/3 Mark Wielaard : > Hi Andrew, > > On Mon, 2009-08-03 at 12:06 +0100, Andrew John Hughes wrote: >> Ok to push? >> >> ChangeLog: >> >> 2009-08-03 ?Andrew John Hughes ? >> >> ? ? ? ? * hotspot.map: >> ? ? ? ? Bump to hs14b16. > > Nice. Please do push. Thanks for all your hard work, and persistence, > pushing hotspot for 6 forward. > > Cheers, > > Mark > > Thanks. Committed. -- 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 Aug 3 07:23:09 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 3 Aug 2009 15:23:09 +0100 Subject: New API in JDK7 Message-ID: <17c6771e0908030723t7481b949we4218265f0157d08@mail.gmail.com> I thought this might be of interest to those who want a quick overview of actual API changes in JDK7 so far. With Classpath, we use the japitools developed by Stuart Ballard (http://sab39.netreach.com/Software/Japitools/42/) to compare how well Classpath implements the APIs provided by various versions of the JDK. The same can be done to see 'how well OpenJDK6 implements OpenJDK7' or rather what's changed since JDK6: http://builder.classpath.org/japi/openjdk7-openjdk6.html There's also the inverse: http://builder.classpath.org/japi/openjdk6-openjdk7.html which shows anything missing in OpenJDK7 that was in OpenJDK6 (some xml methods and one Swing method it seems). Currently the results are based on IcedTea builds of b16 of OpenJDK6 and b66 (Milestone 4) of OpenJDK7, and will be updated to new builds as they are released and supported by IcedTea. -- 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 Kelly.Ohair at Sun.COM Mon Aug 3 08:39:40 2009 From: Kelly.Ohair at Sun.COM (Kelly O'Hair) Date: Mon, 03 Aug 2009 08:39:40 -0700 Subject: New API in JDK7 In-Reply-To: <17c6771e0908030723t7481b949we4218265f0157d08@mail.gmail.com> References: <17c6771e0908030723t7481b949we4218265f0157d08@mail.gmail.com> Message-ID: <4A7704BC.8080403@sun.com> Very interesting, thanks for sharing this. -kto Andrew John Hughes wrote: > I thought this might be of interest to those who want a quick overview > of actual API changes in JDK7 so far. With Classpath, we use the > japitools developed by Stuart Ballard > (http://sab39.netreach.com/Software/Japitools/42/) to compare how well > Classpath implements the APIs provided by various versions of the JDK. > The same can be done to see 'how well OpenJDK6 implements OpenJDK7' > or rather what's changed since JDK6: > > http://builder.classpath.org/japi/openjdk7-openjdk6.html > > There's also the inverse: > > http://builder.classpath.org/japi/openjdk6-openjdk7.html > > which shows anything missing in OpenJDK7 that was in OpenJDK6 (some > xml methods and one Swing method it seems). > > Currently the results are based on IcedTea builds of b16 of OpenJDK6 > and b66 (Milestone 4) of OpenJDK7, and will be updated to new builds > as they are released and supported by IcedTea. From martinrb at google.com Mon Aug 3 09:05:21 2009 From: martinrb at google.com (Martin Buchholz) Date: Mon, 3 Aug 2009 09:05:21 -0700 Subject: New API in JDK7 In-Reply-To: <17c6771e0908030723t7481b949we4218265f0157d08@mail.gmail.com> References: <17c6771e0908030723t7481b949we4218265f0157d08@mail.gmail.com> Message-ID: <1ccfd1c10908030905u39588276p851d643677b1bcdc@mail.gmail.com> Interesting. There is a bunch of warnings about java.util.concurrent http://builder.classpath.org/japi/openjdk6-openjdk7.html#err_bad_java_util_concurrent but I don't understand them. There is not supposed to be any difference between jdk6 and jdk7 with these methods. Martin On Mon, Aug 3, 2009 at 07:23, Andrew John Hughes wrote: > I thought this might be of interest to those who want a quick overview > of actual API changes in JDK7 so far. ?With Classpath, we use the > japitools developed by Stuart Ballard > (http://sab39.netreach.com/Software/Japitools/42/) to compare how well > Classpath implements the APIs provided by various versions of the JDK. > ?The same can be done to see 'how well OpenJDK6 implements OpenJDK7' > or rather what's changed since JDK6: > > http://builder.classpath.org/japi/openjdk7-openjdk6.html > > There's also the inverse: > > http://builder.classpath.org/japi/openjdk6-openjdk7.html > > which shows anything missing in OpenJDK7 that was in OpenJDK6 (some > xml methods and one Swing method it seems). > > Currently the results are based on IcedTea builds of b16 of OpenJDK6 > and b66 (Milestone 4) of OpenJDK7, and will be updated to new builds > as they are released and supported by IcedTea. > -- > 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 Aug 3 09:10:20 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 3 Aug 2009 17:10:20 +0100 Subject: New API in JDK7 In-Reply-To: <1ccfd1c10908030905u39588276p851d643677b1bcdc@mail.gmail.com> References: <17c6771e0908030723t7481b949we4218265f0157d08@mail.gmail.com> <1ccfd1c10908030905u39588276p851d643677b1bcdc@mail.gmail.com> Message-ID: <17c6771e0908030910g29ce1a79se7458964aa032954@mail.gmail.com> 2009/8/3 Martin Buchholz : > Interesting. > > There is a bunch of warnings about java.util.concurrent > > http://builder.classpath.org/japi/openjdk6-openjdk7.html#err_bad_java_util_concurrent > > but I don't understand them. > There is not supposed to be any difference between jdk6 and jdk7 > with these methods. > Funnily enough, I was just looking at exactly the same thing! I think those are red herrings; the japi tool seems to be getting confused over the generics in those classes. We get the same errors for GNU Classpath too, yet this is one situation where we all share the same public domain code from Doug. You can safely ignore them. Everything else seems sane and I found it interesting spotting a few minor changes I'd missed such as some of the new constructors, etc. > Martin > > On Mon, Aug 3, 2009 at 07:23, Andrew John > Hughes wrote: >> I thought this might be of interest to those who want a quick overview >> of actual API changes in JDK7 so far. ?With Classpath, we use the >> japitools developed by Stuart Ballard >> (http://sab39.netreach.com/Software/Japitools/42/) to compare how well >> Classpath implements the APIs provided by various versions of the JDK. >> ?The same can be done to see 'how well OpenJDK6 implements OpenJDK7' >> or rather what's changed since JDK6: >> >> http://builder.classpath.org/japi/openjdk7-openjdk6.html >> >> There's also the inverse: >> >> http://builder.classpath.org/japi/openjdk6-openjdk7.html >> >> which shows anything missing in OpenJDK7 that was in OpenJDK6 (some >> xml methods and one Swing method it seems). >> >> Currently the results are based on IcedTea builds of b16 of OpenJDK6 >> and b66 (Milestone 4) of OpenJDK7, and will be updated to new builds >> as they are released and supported by IcedTea. >> -- >> 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 bugzilla-daemon at icedtea.classpath.org Mon Aug 3 09:33:19 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 03 Aug 2009 16:33:19 +0000 Subject: [Bug 375] New: IcedTea fails to build using ecj-3.5 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=375 Summary: IcedTea fails to build using ecj-3.5 Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: doko at ubuntu.com forwarded to eclipse: https://bugs.eclipse.org/bugs/show_bug.cgi?id=285466 IcedTea fails to build using ecj-3.5: $ sh call_ecj.sh + ecj -version Eclipse Java Compiler 0.967_R35x, 3.5.1 release, Copyright IBM Corp 2000, 2009. All rights reserved. + ecj -nowarn -g -d lib/hotspot-tools -source 1.5 -sourcepath hotspot-tools:openjdk/jdk/src/share/classes:openjdk/jdk/src/solaris/classes:openjdk/langtools/src/share/classes:openjdk/jaxp/src/share/classes:openjdk/corba/src/share/classes:openjdk/jaxws/src/share/classes:generated:rt -bootclasspath @hotspot-tools-source-files.txt ---------- 1. ERROR in hotspot-tools/com/sun/codemodel/internal/package-info.java (at line 1) /* ^ The type package-info is already defined ---------- ---------- 2. ERROR in hotspot-tools/com/sun/source/tree/package-info.java (at line 1) /* ^ The type package-info is already defined ---------- ---------- 3. ERROR in hotspot-tools/com/sun/source/util/package-info.java (at line 1) /* ^ The type package-info is already defined ---------- ---------- 4. ERROR in hotspot-tools/com/sun/tools/internal/xjc/model/package-info.java (at line 1) /* ^ The type package-info is already defined ---------- ---------- 5. ERROR in hotspot-tools/com/sun/tools/internal/xjc/package-info.java (at line 1) /* ^ The type package-info is already defined ---------- ---------- 6. ERROR in hotspot-tools/com/sun/tools/internal/xjc/reader/xmlschema/bindinfo/package-info.java (at line 1) /* ^ The type package-info is already defined ---------- 6 problems (6 errors) -- 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 Mon Aug 3 10:31:20 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Mon, 03 Aug 2009 17:31:20 +0000 Subject: changeset in /hg/icedtea: Fix llvm header location Message-ID: changeset 9ef90ed6dac9 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=9ef90ed6dac9 description: Fix llvm header location 2009-06-23 Matthias Klose * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp: Fix header location. diffstat: 2 files changed, 5 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ ports/hotspot/src/share/vm/shark/llvmHeaders.hpp | 2 +- diffs (23 lines): diff -r b1923df0d722 -r 9ef90ed6dac9 ChangeLog --- a/ChangeLog Tue Jun 23 12:40:50 2009 +0200 +++ b/ChangeLog Tue Jun 23 16:31:22 2009 +0200 @@ -1,3 +1,7 @@ 2009-06-23 Xerxes R??nby + + * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp: Fix header location. + 2009-06-23 Xerxes R??nby PR icedtea/353 diff -r b1923df0d722 -r 9ef90ed6dac9 ports/hotspot/src/share/vm/shark/llvmHeaders.hpp --- a/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Tue Jun 23 12:40:50 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Tue Jun 23 16:31:22 2009 +0200 @@ -36,7 +36,7 @@ #include #include #if SHARK_LLVM_VERSION >= 26 -#include +#include #include #endif #include From gbenson at redhat.com Mon Aug 3 10:31:17 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:17 +0000 Subject: changeset in /hg/icedtea: 2009-06-18 Gary Benson changeset 21f0340f7c98 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=21f0340f7c98 description: 2009-06-18 Gary Benson * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp (SharkTopLevelBlock::improve_virtual_call): Only print cast warnings when run with -XX:+SharkPerformanceWarnings. diffstat: 2 files changed, 15 insertions(+), 9 deletions(-) ChangeLog | 6 +++++ ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 18 +++++++-------- diffs (41 lines): diff -r 8caa172d8bbc -r 21f0340f7c98 ChangeLog --- a/ChangeLog Thu Jun 18 12:00:59 2009 -0400 +++ b/ChangeLog Thu Jun 18 12:14:25 2009 -0400 @@ -1,3 +1,9 @@ 2009-06-18 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp + (SharkTopLevelBlock::improve_virtual_call): Only print cast + warnings when run with -XX:+SharkPerformanceWarnings. + 2009-06-18 Gary Benson * ports/hotspot/src/share/vm/shark/sharkInvariants.hpp: New file. diff -r 8caa172d8bbc -r 21f0340f7c98 ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Thu Jun 18 12:00:59 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Thu Jun 18 12:14:25 2009 -0400 @@ -902,15 +902,15 @@ ciMethod* SharkTopLevelBlock::improve_vi // types, but I can't even tell which direction it // doesn't like. For now I'm going to block *any* cast. if (monomorphic_target != dest_method) { -#ifndef PRODUCT - tty->print_cr("found monomorphic target, but inhibited cast:"); - tty->print(" dest_method = "); - dest_method->print_short_name(tty); - tty->cr(); - tty->print(" monomorphic_target = "); - monomorphic_target->print_short_name(tty); - tty->cr(); -#endif // !PRODUCT + if (SharkPerformanceWarnings) { + warning("found monomorphic target, but inhibited cast:"); + tty->print(" dest_method = "); + dest_method->print_short_name(tty); + tty->cr(); + tty->print(" monomorphic_target = "); + monomorphic_target->print_short_name(tty); + tty->cr(); + } monomorphic_target = NULL; } } From gbenson at redhat.com Mon Aug 3 10:31:17 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:17 +0000 Subject: changeset in /hg/icedtea: 2009-06-18 Gary Benson changeset 8caa172d8bbc in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=8caa172d8bbc description: 2009-06-18 Gary Benson * ports/hotspot/src/share/vm/shark/sharkInvariants.hpp: New file. * ports/hotspot/src/share/vm/shark/sharkInvariants.cpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkFunction.hpp (SharkFunction): Made a subclass of SharkTargetInvariants. (SharkFunction::SharkFunction): Updated constructor. (SharkFunction::_compiler): Removed. (SharkFunction::_flow): Likewise. (SharkFunction::_iter): Likewise. (SharkFunction::_thread): Likewise. (SharkFunction::_max_monitors): Likewise. (SharkFunction::compiler): Likewise. (SharkFunction::flow): Likewise. (SharkFunction::iter): Likewise. (SharkFunction::thread): Likewise. (SharkFunction::max_monitors): Likewise. (SharkFunction::builder): Likewise. (SharkFunction::arg_size): Likewise. (SharkFunction::debug_info): Likewise. (SharkFunction::env): Likewise. (SharkFunction::max_locals): Likewise. (SharkFunction::max_stack): Likewise. (SharkFunction::target): Likewise. * ports/hotspot/src/share/vm/shark/sharkFunction.hpp (SharkFunction::initialize): Updated. * ports/hotspot/src/share/vm/shark/sharkBlock.hpp (SharkBlock): Made a subclass of SharkTargetInvariants. (SharkBlock::SharkBlock): Updated constructors. (SharkBlock::_builder): Removed. (SharkBlock::_target): Likewise. (SharkBlock::_thread): Likewise. (SharkBlock::builder): Likewise. (SharkBlock::target): Likewise. (SharkBlock::thread): Likewise. (SharkBlock::max_locals): Likewise. (SharkBlock::max_stack): Likewise. * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::initial_current_state): Use SharkState::copy. * ports/hotspot/src/share/vm/shark/sharkState.hpp (SharkState): Made a subclass of SharkTargetInvariants. (SharkState::SharkState): Updated constructors. (SharkState::_block): Removed. (SharkState::_function): Likewise. (SharkState::block): Likewise. (SharkState::function): Likewise. (SharkState::builder): Likewise. (SharkState::max_locals): Likewise. (SharkState::max_stack): Likewise. (SharkState::max_monitors): Likewise. (SharkState::pop): Likewise. (SharkState::copy): Updated. (SharkState::decache_for_Java_call): Moved to SharkTopLevelBlock. (SharkState::cache_after_Java_call): Likewise. (SharkState::decache_for_VM_call): Likewise. (SharkState::cache_after_VM_call): Likewise. (SharkState::decache_for_trap): Likewise. (SharkPHIState::_block): New field. (SharkPHIState::block): New method. * ports/hotspot/src/share/vm/shark/sharkState.inline.hpp: Removed. * ports/hotspot/src/share/vm/shark/sharkState.cpp (SharkState::equal_to): Updated. (SharkState::decache_for_Java_call): Moved to SharkTopLevelBlock. (SharkState::cache_after_Java_call): Likewise. (SharkState::decache_for_VM_call): Likewise. (SharkState::cache_after_VM_call): Likewise. (SharkState::decache_for_trap): Likewise. (SharkEntryState::SharkEntryState): Updated. (SharkPHIState::SharkPHIState): Likewise. (SharkPHIState::add_incoming): Likewise. * ports/hotspot/src/share/vm/shark/sharkStateScanner.hpp (SharkStateScanner): Made a subclass of SharkTargetInvariants. (SharkStateScanner::SharkStateScanner): Updated constructor. (SharkStateScanner::start_stack): Updated arguments. (SharkStateScanner::start_locals): Likewise. (SharkStateScanner::stack_integrity_checks): Made non-static. (SharkStateScanner::locals_integrity_checks): Likewise. * ports/hotspot/src/share/vm/shark/sharkStateScanner.cpp (SharkStateScanner::scan): Updated. (SharkStateScanner::locals_integrity_checks): Likewise. * ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp (SharkCacherDecacher::builder): Removed. (SharkDecacher::debug_info): Likewise. (SharkDecacher::start_stack): Updated arguments. (SharkDecacher::start_locals): Likewise. * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp (SharkDecacher::start_frame): Updated. (SharkDecacher::start_stack): Likewise.. (SharkDecacher::start_locals): Likewise. (SharkDecacher::end_frame): Likewise. * ports/hotspot/src/share/vm/shark/sharkInliner.hpp (SharkInliner::attempt_inline): Removed thread argument. * ports/hotspot/src/share/vm/shark/sharkInliner.cpp (SharkInlineBlock): Made a subclass of SharkTargetInvariants. (SharkInlineBlock::SharkInlineBlock): Updated constructor. (SharkInlinerHelper::SharkInlinerHelper): Likewise. (SharkInlinerHelper::_thread): Removed. (SharkInlinerHelper::thread): Likewise. (SharkInlinerHelper::do_inline): Updated. (SharkInliner::attempt_inline): Updated. * ports/hotspot/src/share/vm/shark/sharkIntrinsics.hpp (SharkIntrinsics): Made a subclass of SharkTargetInvariants. (SharkIntrinsics::inline_intrinsic): Updated arguments. (SharkIntrinsics::SharkIntrinsics): New method. (SharkIntrinsics::_state): New field. (SharkIntrinsics::state): New method. (SharkIntrinsics::do_intrinsic): Likewise. (SharkIntrinsics::do_Math_minmax): Updated arguments. (SharkIntrinsics::do_Math_1to1): Likewise. (SharkIntrinsics::do_Math_2to1): Likewise. (SharkIntrinsics::do_Object_getClass): Likewise. (SharkIntrinsics::do_System_currentTimeMillis): Likewise. (SharkIntrinsics::do_Thread_currentThread): Likewise. (SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise. * ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp (SharkIntrinsics::inline_intrinsic): Updated. (SharkIntrinsics::do_intrinsic): New method. (SharkIntrinsics::do_Math_minmax): Updated. (SharkIntrinsics::do_Math_1to1): Likewise. (SharkIntrinsics::do_Math_2to1): Likewise. (SharkIntrinsics::do_Object_getClass): Likewise. (SharkIntrinsics::do_System_currentTimeMillis): Likewise. (SharkIntrinsics::do_Thread_currentThread): Likewise. (SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise. * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp (SharkTopLevelBlock::SharkTopLevelBlock): Updated constructor. (SharkTopLevelBlock::decache_for_Java_call): Moved from SharkState. (SharkTopLevelBlock::cache_after_Java_call): Likewise. (SharkTopLevelBlock::decache_for_VM_call): Likewise. (SharkTopLevelBlock::cache_after_VM_call): Likewise. (SharkTopLevelBlock::decache_for_trap): Likewise. (SharkTopLevelBlock::call_vm): Updated. * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp (SharkTopLevelBlock::decache_for_Java_call): Moved from SharkState. (SharkTopLevelBlock::cache_after_Java_call): Likewise. (SharkTopLevelBlock::decache_for_VM_call): Likewise. (SharkTopLevelBlock::cache_after_VM_call): Likewise. (SharkTopLevelBlock::decache_for_trap): Likewise. (SharkTopLevelBlock::do_trap): Updated. (SharkTopLevelBlock::improve_virtual_call): Likewise. (SharkTopLevelBlock::do_call): Likewise. (SharkTopLevelBlock::acquire_lock): Likewise. * ports/hotspot/src/share/vm/includeDB_shark: Updated. diffstat: 22 files changed, 717 insertions(+), 522 deletions(-) ChangeLog | 153 ++++++++++ ports/hotspot/src/share/vm/includeDB_shark | 47 ++- ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 2 ports/hotspot/src/share/vm/shark/sharkBlock.hpp | 73 +---- ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp | 14 ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp | 16 - ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 3 ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 28 - ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 87 ------ ports/hotspot/src/share/vm/shark/sharkInliner.cpp | 28 - ports/hotspot/src/share/vm/shark/sharkInliner.hpp | 4 ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp | 214 +++++++-------- ports/hotspot/src/share/vm/shark/sharkIntrinsics.hpp | 36 +- ports/hotspot/src/share/vm/shark/sharkInvariants.cpp | 38 ++ ports/hotspot/src/share/vm/shark/sharkInvariants.hpp | 186 +++++++++++++ ports/hotspot/src/share/vm/shark/sharkState.cpp | 87 ------ ports/hotspot/src/share/vm/shark/sharkState.hpp | 77 ++--- ports/hotspot/src/share/vm/shark/sharkState.inline.hpp | 44 --- ports/hotspot/src/share/vm/shark/sharkStateScanner.cpp | 12 ports/hotspot/src/share/vm/shark/sharkStateScanner.hpp | 12 ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 61 +++- ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp | 17 - diffs (truncated from 1991 to 500 lines): diff -r 9c4c94b5f4a2 -r 8caa172d8bbc ChangeLog --- a/ChangeLog Wed Jun 17 14:37:31 2009 +0100 +++ b/ChangeLog Thu Jun 18 12:00:59 2009 -0400 @@ -1,3 +1,156 @@ 2009-06-17 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkInvariants.hpp: New file. + * ports/hotspot/src/share/vm/shark/sharkInvariants.cpp: Likewise. + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction): Made a subclass of SharkTargetInvariants. + (SharkFunction::SharkFunction): Updated constructor. + (SharkFunction::_compiler): Removed. + (SharkFunction::_flow): Likewise. + (SharkFunction::_iter): Likewise. + (SharkFunction::_thread): Likewise. + (SharkFunction::_max_monitors): Likewise. + (SharkFunction::compiler): Likewise. + (SharkFunction::flow): Likewise. + (SharkFunction::iter): Likewise. + (SharkFunction::thread): Likewise. + (SharkFunction::max_monitors): Likewise. + (SharkFunction::builder): Likewise. + (SharkFunction::arg_size): Likewise. + (SharkFunction::debug_info): Likewise. + (SharkFunction::env): Likewise. + (SharkFunction::max_locals): Likewise. + (SharkFunction::max_stack): Likewise. + (SharkFunction::target): Likewise. + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::initialize): Updated. + + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock): Made a subclass of SharkTargetInvariants. + (SharkBlock::SharkBlock): Updated constructors. + (SharkBlock::_builder): Removed. + (SharkBlock::_target): Likewise. + (SharkBlock::_thread): Likewise. + (SharkBlock::builder): Likewise. + (SharkBlock::target): Likewise. + (SharkBlock::thread): Likewise. + (SharkBlock::max_locals): Likewise. + (SharkBlock::max_stack): Likewise. + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::initial_current_state): Use SharkState::copy. + + * ports/hotspot/src/share/vm/shark/sharkState.hpp + (SharkState): Made a subclass of SharkTargetInvariants. + (SharkState::SharkState): Updated constructors. + (SharkState::_block): Removed. + (SharkState::_function): Likewise. + (SharkState::block): Likewise. + (SharkState::function): Likewise. + (SharkState::builder): Likewise. + (SharkState::max_locals): Likewise. + (SharkState::max_stack): Likewise. + (SharkState::max_monitors): Likewise. + (SharkState::pop): Likewise. + (SharkState::copy): Updated. + (SharkState::decache_for_Java_call): Moved to SharkTopLevelBlock. + (SharkState::cache_after_Java_call): Likewise. + (SharkState::decache_for_VM_call): Likewise. + (SharkState::cache_after_VM_call): Likewise. + (SharkState::decache_for_trap): Likewise. + (SharkPHIState::_block): New field. + (SharkPHIState::block): New method. + * ports/hotspot/src/share/vm/shark/sharkState.inline.hpp: Removed. + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkState::equal_to): Updated. + (SharkState::decache_for_Java_call): Moved to SharkTopLevelBlock. + (SharkState::cache_after_Java_call): Likewise. + (SharkState::decache_for_VM_call): Likewise. + (SharkState::cache_after_VM_call): Likewise. + (SharkState::decache_for_trap): Likewise. + (SharkEntryState::SharkEntryState): Updated. + (SharkPHIState::SharkPHIState): Likewise. + (SharkPHIState::add_incoming): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkStateScanner.hpp + (SharkStateScanner): Made a subclass of SharkTargetInvariants. + (SharkStateScanner::SharkStateScanner): Updated constructor. + (SharkStateScanner::start_stack): Updated arguments. + (SharkStateScanner::start_locals): Likewise. + (SharkStateScanner::stack_integrity_checks): Made non-static. + (SharkStateScanner::locals_integrity_checks): Likewise. + * ports/hotspot/src/share/vm/shark/sharkStateScanner.cpp + (SharkStateScanner::scan): Updated. + (SharkStateScanner::locals_integrity_checks): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp + (SharkCacherDecacher::builder): Removed. + (SharkDecacher::debug_info): Likewise. + (SharkDecacher::start_stack): Updated arguments. + (SharkDecacher::start_locals): Likewise. + * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp + (SharkDecacher::start_frame): Updated. + (SharkDecacher::start_stack): Likewise.. + (SharkDecacher::start_locals): Likewise. + (SharkDecacher::end_frame): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkInliner.hpp + (SharkInliner::attempt_inline): Removed thread argument. + * ports/hotspot/src/share/vm/shark/sharkInliner.cpp + (SharkInlineBlock): Made a subclass of SharkTargetInvariants. + (SharkInlineBlock::SharkInlineBlock): Updated constructor. + (SharkInlinerHelper::SharkInlinerHelper): Likewise. + (SharkInlinerHelper::_thread): Removed. + (SharkInlinerHelper::thread): Likewise. + (SharkInlinerHelper::do_inline): Updated. + (SharkInliner::attempt_inline): Updated. + + * ports/hotspot/src/share/vm/shark/sharkIntrinsics.hpp + (SharkIntrinsics): Made a subclass of SharkTargetInvariants. + (SharkIntrinsics::inline_intrinsic): Updated arguments. + (SharkIntrinsics::SharkIntrinsics): New method. + (SharkIntrinsics::_state): New field. + (SharkIntrinsics::state): New method. + (SharkIntrinsics::do_intrinsic): Likewise. + (SharkIntrinsics::do_Math_minmax): Updated arguments. + (SharkIntrinsics::do_Math_1to1): Likewise. + (SharkIntrinsics::do_Math_2to1): Likewise. + (SharkIntrinsics::do_Object_getClass): Likewise. + (SharkIntrinsics::do_System_currentTimeMillis): Likewise. + (SharkIntrinsics::do_Thread_currentThread): Likewise. + (SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise. + * ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp + (SharkIntrinsics::inline_intrinsic): Updated. + (SharkIntrinsics::do_intrinsic): New method. + (SharkIntrinsics::do_Math_minmax): Updated. + (SharkIntrinsics::do_Math_1to1): Likewise. + (SharkIntrinsics::do_Math_2to1): Likewise. + (SharkIntrinsics::do_Object_getClass): Likewise. + (SharkIntrinsics::do_System_currentTimeMillis): Likewise. + (SharkIntrinsics::do_Thread_currentThread): Likewise. + (SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp + (SharkTopLevelBlock::SharkTopLevelBlock): Updated constructor. + (SharkTopLevelBlock::decache_for_Java_call): Moved from SharkState. + (SharkTopLevelBlock::cache_after_Java_call): Likewise. + (SharkTopLevelBlock::decache_for_VM_call): Likewise. + (SharkTopLevelBlock::cache_after_VM_call): Likewise. + (SharkTopLevelBlock::decache_for_trap): Likewise. + (SharkTopLevelBlock::call_vm): Updated. + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp + (SharkTopLevelBlock::decache_for_Java_call): Moved from SharkState. + (SharkTopLevelBlock::cache_after_Java_call): Likewise. + (SharkTopLevelBlock::decache_for_VM_call): Likewise. + (SharkTopLevelBlock::cache_after_VM_call): Likewise. + (SharkTopLevelBlock::decache_for_trap): Likewise. + (SharkTopLevelBlock::do_trap): Updated. + (SharkTopLevelBlock::improve_virtual_call): Likewise. + (SharkTopLevelBlock::do_call): Likewise. + (SharkTopLevelBlock::acquire_lock): Likewise. + + * ports/hotspot/src/share/vm/includeDB_shark: Updated. + 2009-06-17 Gary Benson * ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp diff -r 9c4c94b5f4a2 -r 8caa172d8bbc ports/hotspot/src/share/vm/includeDB_shark --- a/ports/hotspot/src/share/vm/includeDB_shark Wed Jun 17 14:37:31 2009 +0100 +++ b/ports/hotspot/src/share/vm/includeDB_shark Thu Jun 18 12:00:59 2009 -0400 @@ -50,8 +50,6 @@ ciTypeFlow.hpp compileBroker.cpp sharkCompiler.hpp -disassembler_.cpp sharkEntry.hpp - globals.hpp shark_globals_.hpp globals.cpp shark_globals.hpp @@ -75,7 +73,7 @@ sharkBlock.cpp sharkBlock.cpp sharkBuilder.hpp sharkBlock.cpp sharkConstant.hpp sharkBlock.cpp sharkRuntime.hpp -sharkBlock.cpp sharkState.inline.hpp +sharkBlock.cpp sharkState.hpp sharkBlock.cpp sharkValue.hpp sharkBlock.hpp allocation.hpp @@ -85,6 +83,7 @@ sharkBlock.hpp sharkBlock.hpp llvmHeaders.hpp sharkBlock.hpp sharkBuilder.hpp sharkBlock.hpp sharkConstant.hpp +sharkBlock.hpp sharkInvariants.hpp sharkBlock.hpp sharkState.hpp sharkBlock.hpp sharkValue.hpp @@ -121,7 +120,7 @@ sharkCacheDecache.cpp sharkCacheDecache.cpp sharkBuilder.hpp sharkCacheDecache.cpp sharkCacheDecache.hpp sharkCacheDecache.cpp sharkFunction.hpp -sharkCacheDecache.cpp sharkState.inline.hpp +sharkCacheDecache.cpp sharkState.hpp sharkCacheDecache.hpp ciMethod.hpp sharkCacheDecache.hpp debugInfoRec.hpp @@ -181,7 +180,7 @@ sharkFunction.cpp sharkFunction.cpp sharkBuilder.hpp sharkFunction.cpp sharkEntry.hpp sharkFunction.cpp sharkFunction.hpp -sharkFunction.cpp sharkState.inline.hpp +sharkFunction.cpp sharkState.hpp sharkFunction.cpp sharkTopLevelBlock.hpp sharkFunction.hpp allocation.hpp @@ -191,6 +190,7 @@ sharkFunction.hpp sharkFunction.hpp llvmHeaders.hpp sharkFunction.hpp llvmValue.hpp sharkFunction.hpp sharkBuilder.hpp +sharkFunction.hpp sharkInvariants.hpp sharkInliner.cpp allocation.hpp sharkInliner.cpp bytecodes.hpp @@ -198,29 +198,44 @@ sharkInliner.cpp sharkInliner.cpp ciMethod.hpp sharkInliner.cpp ciStreams.hpp sharkInliner.cpp shark_globals.hpp +sharkInliner.cpp sharkBlock.hpp sharkInliner.cpp sharkConstant.hpp sharkInliner.cpp sharkInliner.hpp sharkInliner.cpp sharkIntrinsics.hpp -sharkInliner.cpp sharkState.inline.hpp +sharkInliner.cpp sharkState.hpp sharkInliner.cpp sharkValue.hpp sharkInliner.hpp allocation.hpp sharkInliner.hpp ciMethod.hpp sharkInliner.hpp llvmHeaders.hpp -sharkInliner.hpp sharkState.inline.hpp +sharkInliner.hpp sharkState.hpp sharkIntrinsics.cpp ciMethod.hpp sharkIntrinsics.cpp llvmHeaders.hpp sharkIntrinsics.cpp shark_globals.hpp sharkIntrinsics.cpp sharkIntrinsics.hpp sharkIntrinsics.cpp sharkRuntime.hpp -sharkIntrinsics.cpp sharkState.inline.hpp +sharkIntrinsics.cpp sharkState.hpp sharkIntrinsics.cpp sharkValue.hpp sharkIntrinsics.hpp allocation.hpp sharkIntrinsics.hpp ciMethod.hpp sharkIntrinsics.hpp llvmHeaders.hpp sharkIntrinsics.hpp sharkState.hpp + +sharkInvariants.cpp sharkInvariants.hpp + +sharkInvariants.hpp allocation.hpp +sharkInvariants.hpp ciEnv.hpp +sharkInvariants.hpp ciMethod.hpp +sharkInvariants.hpp ciInstanceKlass.hpp +sharkInvariants.hpp ciTypeFlow.hpp +sharkInvariants.hpp debugInfoRec.hpp +sharkInvariants.hpp dependencies.hpp +sharkInvariants.hpp llvmHeaders.hpp +sharkInvariants.hpp sharkBuilder.hpp +sharkInvariants.hpp sharkCompiler.hpp +sharkInvariants.hpp sharkMemoryManager.hpp sharkMemoryManager.hpp llvmHeaders.hpp sharkMemoryManager.hpp sharkEntry.hpp @@ -249,7 +264,7 @@ sharkState.cpp sharkState.cpp ciTypeFlow.hpp sharkState.cpp sharkBuilder.hpp sharkState.cpp sharkCacheDecache.hpp -sharkState.cpp sharkState.inline.hpp +sharkState.cpp sharkState.hpp sharkState.cpp sharkTopLevelBlock.hpp sharkState.cpp sharkType.hpp sharkState.cpp sharkValue.hpp @@ -258,19 +273,16 @@ sharkState.hpp sharkState.hpp ciMethod.hpp sharkState.hpp llvmHeaders.hpp sharkState.hpp sharkBuilder.hpp +sharkState.hpp sharkInvariants.hpp sharkState.hpp sharkValue.hpp -sharkState.inline.hpp sharkBlock.hpp -sharkState.inline.hpp sharkBuilder.hpp -sharkState.inline.hpp sharkFunction.hpp -sharkState.inline.hpp sharkState.hpp - -sharkStateScanner.cpp sharkState.inline.hpp +sharkStateScanner.cpp sharkState.hpp sharkStateScanner.cpp sharkStateScanner.hpp sharkStateScanner.hpp allocation.hpp sharkStateScanner.hpp llvmHeaders.hpp sharkStateScanner.hpp sharkFunction.hpp +sharkStateScanner.hpp sharkInvariants.hpp sharkTopLevelBlock.cpp allocation.hpp sharkTopLevelBlock.cpp bytecodes.hpp @@ -283,12 +295,13 @@ sharkTopLevelBlock.cpp sharkTopLevelBlock.cpp llvmHeaders.hpp sharkTopLevelBlock.cpp llvmValue.hpp sharkTopLevelBlock.cpp shark_globals.hpp +sharkTopLevelBlock.cpp sharkCacheDecache.hpp sharkTopLevelBlock.cpp sharkTopLevelBlock.hpp sharkTopLevelBlock.cpp sharkBuilder.hpp sharkTopLevelBlock.cpp sharkConstant.hpp sharkTopLevelBlock.cpp sharkInliner.hpp sharkTopLevelBlock.cpp sharkRuntime.hpp -sharkTopLevelBlock.cpp sharkState.inline.hpp +sharkTopLevelBlock.cpp sharkState.hpp sharkTopLevelBlock.cpp sharkValue.hpp sharkTopLevelBlock.hpp allocation.hpp @@ -300,7 +313,7 @@ sharkTopLevelBlock.hpp sharkTopLevelBlock.hpp sharkBlock.hpp sharkTopLevelBlock.hpp sharkBuilder.hpp sharkTopLevelBlock.hpp sharkFunction.hpp -sharkTopLevelBlock.hpp sharkState.inline.hpp +sharkTopLevelBlock.hpp sharkState.hpp sharkTopLevelBlock.hpp sharkValue.hpp sharkType.cpp arrayOop.hpp diff -r 9c4c94b5f4a2 -r 8caa172d8bbc ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Wed Jun 17 14:37:31 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Jun 18 12:00:59 2009 -0400 @@ -888,7 +888,7 @@ void SharkBlock::parse_bytecode(int star SharkState* SharkBlock::initial_current_state() { - return new SharkState(this, entry_state()); + return entry_state()->copy(); } int SharkBlock::switch_default_dest() diff -r 9c4c94b5f4a2 -r 8caa172d8bbc ports/hotspot/src/share/vm/shark/sharkBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Wed Jun 17 14:37:31 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Jun 18 12:00:59 2009 -0400 @@ -25,61 +25,32 @@ class SharkState; -class SharkBlock : public ResourceObj { +class SharkBlock : public SharkTargetInvariants { + protected: + SharkBlock(const SharkTargetInvariants* parent) + : SharkTargetInvariants(parent), + _iter(target()), + _current_state(NULL) {} + + SharkBlock(const SharkCompileInvariants* parent, ciMethod* target) + : SharkTargetInvariants(parent, target), + _iter(target), + _current_state(NULL) {} + + private: + ciBytecodeStream _iter; + SharkState* _current_state; + public: - SharkBlock(SharkBuilder* builder, - ciMethod* target, - ciBytecodeStream* iter, - llvm::Value* thread) - : _builder(builder), - _target(target), - _iter(iter), - _current_state(NULL), - _thread(thread) {} - - private: - SharkBuilder* _builder; - ciMethod* _target; - ciBytecodeStream* _iter; - SharkState* _current_state; - llvm::Value* _thread; - - public: - SharkBuilder* builder() const - { - return _builder; - } - ciMethod* target() const - { - return _target; - } - ciBytecodeStream* iter() const - { - return _iter; - } - llvm::Value* thread() const - { - return _thread; - } - - // Target properties - public: - int max_locals() const - { - return target()->max_locals(); - } - int max_stack() const - { - return target()->max_stack(); - } - - // Bytecode stream - public: - Bytecodes::Code bc() const + ciBytecodeStream* iter() + { + return &_iter; + } + Bytecodes::Code bc() { return iter()->cur_bc(); } - int bci() const + int bci() { return iter()->cur_bci(); } diff -r 9c4c94b5f4a2 -r 8caa172d8bbc ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp Wed Jun 17 14:37:31 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp Thu Jun 18 12:00:59 2009 -0400 @@ -34,20 +34,20 @@ void SharkDecacher::start_frame() _pc_offset = builder()->code_buffer()->create_unique_offset(); _oopmap = new OopMap( oopmap_slot_munge(function()->oopmap_frame_size()), - oopmap_slot_munge(function()->arg_size())); + oopmap_slot_munge(arg_size())); debug_info()->add_safepoint(pc_offset(), oopmap()); } -void SharkDecacher::start_stack(int num_slots, int max_slots) +void SharkDecacher::start_stack(int stack_depth) { // Create the array we'll record our stack slots in - _exparray = new GrowableArray(num_slots); + _exparray = new GrowableArray(stack_depth); // Set the stack pointer function()->CreateStoreZeroStackPointer( builder()->CreatePtrToInt( function()->CreateAddressOfFrameEntry( - function()->stack_slots_offset() + max_slots - num_slots), + function()->stack_slots_offset() + max_stack() - stack_depth), SharkType::intptr_type())); } @@ -123,10 +123,10 @@ void SharkDecacher::process_pc_slot(int function()->CreateAddressOfFrameEntry(offset)); } -void SharkDecacher::start_locals(int num_locals) +void SharkDecacher::start_locals() { // Create the array we'll record our local variables in - _locarray = new GrowableArray(num_locals);} + _locarray = new GrowableArray(max_locals());} void SharkDecacher::process_local_slot(int index, SharkValue** addr, @@ -158,7 +158,7 @@ void SharkDecacher::end_frame() // Record the scope debug_info()->describe_scope( pc_offset(), - function()->target(), + target(), bci(), debug_info()->create_scope_values(locarray()), debug_info()->create_scope_values(exparray()), diff -r 9c4c94b5f4a2 -r 8caa172d8bbc ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp --- a/ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp Wed Jun 17 14:37:31 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp Thu Jun 18 12:00:59 2009 -0400 @@ -40,12 +40,6 @@ class SharkCacherDecacher : public Shark SharkCacherDecacher(SharkFunction* function) : SharkStateScanner(function) {} - protected: - SharkBuilder* builder() const - { - return function()->builder(); - } - // Helper protected: static int adjusted_offset(SharkValue* value, int offset) @@ -68,12 +62,6 @@ class SharkDecacher : public SharkCacher int bci() const { return _bci; - } - - private: - DebugInformationRecorder* debug_info() const - { - return function()->debug_info(); } private: @@ -109,7 +97,7 @@ class SharkDecacher : public SharkCacher protected: void start_frame(); From xerxes at zafena.se Mon Aug 3 10:31:19 2009 From: xerxes at zafena.se (Xerxes R?nby) Date: Mon, 03 Aug 2009 17:31:19 +0000 Subject: changeset in /hg/icedtea: PR icedtea/353 Message-ID: changeset b1923df0d722 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=b1923df0d722 description: PR icedtea/353 * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Include llvm/Support/Threading.h and llvm/Target/TargetSelect.h used by llvm_start_multithreaded() and InitializeNativeTarget() when llvm version are 2.6 or later. * ports/hotspot/src/share/vm/shark/llvmValue.hpp (jfloat_constant): Return llvm::Constant* when llvm version are 2.6 or later to handle llvm r73431 API change. (jdouble_constant): Likewise. * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::parse_bytecode): Updated to use CreateFAdd CreateFSub, CreateFMul and CreateFNeg for jfloat and jdouble when llvm version are 2.6 or later. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::SharkCompiler): Call InitializeNativeTarget() to link in native target when llvm version are 2.6 or later. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Call llvm_start_multithreaded() to initialize llvm mutex guards when llvm version are 2.6 or later. diffstat: 6 files changed, 78 insertions(+) ChangeLog | 22 +++++++++++++ ports/hotspot/src/share/vm/shark/llvmHeaders.hpp | 4 ++ ports/hotspot/src/share/vm/shark/llvmValue.hpp | 8 +++++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 32 ++++++++++++++++++++ ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 6 +++ ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 6 +++ diffs (188 lines): diff -r d8dac70fb1fa -r b1923df0d722 ChangeLog --- a/ChangeLog Fri Jun 19 08:48:56 2009 -0400 +++ b/ChangeLog Tue Jun 23 12:40:50 2009 +0200 @@ -1,3 +1,25 @@ 2009-06-19 Gary Benson + + PR icedtea/353 + * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp + Include llvm/Support/Threading.h and llvm/Target/TargetSelect.h + used by llvm_start_multithreaded() and InitializeNativeTarget() + when llvm version are 2.6 or later. + * ports/hotspot/src/share/vm/shark/llvmValue.hpp + (jfloat_constant): Return llvm::Constant* when llvm + version are 2.6 or later to handle llvm r73431 API change. + (jdouble_constant): Likewise. + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::parse_bytecode): Updated to use CreateFAdd + CreateFSub, CreateFMul and CreateFNeg for jfloat and jdouble + when llvm version are 2.6 or later. + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::SharkCompiler): Call InitializeNativeTarget() to + link in native target when llvm version are 2.6 or later. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Call llvm_start_multithreaded() to + initialize llvm mutex guards when llvm version are 2.6 or later. + 2009-06-19 Gary Benson * ports/hotspot/src/share/vm/shark/sharkConstant.cpp diff -r d8dac70fb1fa -r b1923df0d722 ports/hotspot/src/share/vm/shark/llvmHeaders.hpp --- a/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Fri Jun 19 08:48:56 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Tue Jun 23 12:40:50 2009 +0200 @@ -35,6 +35,10 @@ #include #include #include +#if SHARK_LLVM_VERSION >= 26 +#include +#include +#endif #include #include #include diff -r d8dac70fb1fa -r b1923df0d722 ports/hotspot/src/share/vm/shark/llvmValue.hpp --- a/ports/hotspot/src/share/vm/shark/llvmValue.hpp Fri Jun 19 08:48:56 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/llvmValue.hpp Tue Jun 23 12:40:50 2009 +0200 @@ -37,11 +37,19 @@ class LLVMValue : public AllStatic { { return llvm::ConstantInt::get(SharkType::jlong_type(), value, true); } +#if SHARK_LLVM_VERSION >= 26 + static llvm::Constant* jfloat_constant(jfloat value) +#else static llvm::ConstantFP* jfloat_constant(jfloat value) +#endif { return llvm::ConstantFP::get(SharkType::jfloat_type(), value); } +#if SHARK_LLVM_VERSION >= 26 + static llvm::Constant* jdouble_constant(jdouble value) +#else static llvm::ConstantFP* jdouble_constant(jdouble value) +#endif { return llvm::ConstantFP::get(SharkType::jdouble_type(), value); } diff -r d8dac70fb1fa -r b1923df0d722 ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Fri Jun 19 08:48:56 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Tue Jun 23 12:40:50 2009 +0200 @@ -532,19 +532,31 @@ void SharkBlock::parse_bytecode(int star b = pop(); a = pop(); push(SharkValue::create_jfloat( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFAdd(a->jfloat_value(), b->jfloat_value()))); +#else builder()->CreateAdd(a->jfloat_value(), b->jfloat_value()))); +#endif break; case Bytecodes::_fsub: b = pop(); a = pop(); push(SharkValue::create_jfloat( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFSub(a->jfloat_value(), b->jfloat_value()))); +#else builder()->CreateSub(a->jfloat_value(), b->jfloat_value()))); +#endif break; case Bytecodes::_fmul: b = pop(); a = pop(); push(SharkValue::create_jfloat( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFMul(a->jfloat_value(), b->jfloat_value()))); +#else builder()->CreateMul(a->jfloat_value(), b->jfloat_value()))); +#endif break; case Bytecodes::_fdiv: b = pop(); @@ -561,26 +573,42 @@ void SharkBlock::parse_bytecode(int star case Bytecodes::_fneg: a = pop(); push(SharkValue::create_jfloat( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFNeg(a->jfloat_value()))); +#else builder()->CreateNeg(a->jfloat_value()))); +#endif break; case Bytecodes::_dadd: b = pop(); a = pop(); push(SharkValue::create_jdouble( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFAdd(a->jdouble_value(), b->jdouble_value()))); +#else builder()->CreateAdd(a->jdouble_value(), b->jdouble_value()))); +#endif break; case Bytecodes::_dsub: b = pop(); a = pop(); push(SharkValue::create_jdouble( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFSub(a->jdouble_value(), b->jdouble_value()))); +#else builder()->CreateSub(a->jdouble_value(), b->jdouble_value()))); +#endif break; case Bytecodes::_dmul: b = pop(); a = pop(); push(SharkValue::create_jdouble( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFMul(a->jdouble_value(), b->jdouble_value()))); +#else builder()->CreateMul(a->jdouble_value(), b->jdouble_value()))); +#endif break; case Bytecodes::_ddiv: b = pop(); @@ -597,7 +625,11 @@ void SharkBlock::parse_bytecode(int star case Bytecodes::_dneg: a = pop(); push(SharkValue::create_jdouble( +#if SHARK_LLVM_VERSION >= 26 + builder()->CreateFNeg(a->jdouble_value()))); +#else builder()->CreateNeg(a->jdouble_value()))); +#endif break; case Bytecodes::_iinc: diff -r d8dac70fb1fa -r b1923df0d722 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Jun 19 08:48:56 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Tue Jun 23 12:40:50 2009 +0200 @@ -38,6 +38,12 @@ SharkCompiler::SharkCompiler() // Create the builder to build our functions _builder = new SharkBuilder(this); + +#if SHARK_LLVM_VERSION >= 26 + // If we have a native target, initialize it to ensure it is linked in and + // usable by the JIT. + InitializeNativeTarget(); +#endif // Create the JIT ModuleProvider *module_provider = new ExistingModuleProvider(module()); diff -r d8dac70fb1fa -r b1923df0d722 ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Fri Jun 19 08:48:56 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Tue Jun 23 12:40:50 2009 +0200 @@ -30,6 +30,12 @@ using namespace llvm; void SharkFunction::initialize(const char *name) { + +#if SHARK_LLVM_VERSION >= 26 + // Initialize llvm mutex guards + llvm_start_multithreaded(); +#endif + // Create the function _function = Function::Create( SharkType::entry_point_type(), From gbenson at redhat.com Mon Aug 3 10:31:19 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:19 +0000 Subject: changeset in /hg/icedtea: 2009-06-19 Gary Benson changeset d8dac70fb1fa in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=d8dac70fb1fa description: 2009-06-19 Gary Benson * ports/hotspot/src/share/vm/shark/sharkConstant.cpp (SharkConstant::for_ldc): Set type for object constants. (SharkConstant::SharkConstant): Updated. diffstat: 2 files changed, 18 insertions(+), 2 deletions(-) ChangeLog | 6 ++++++ ports/hotspot/src/share/vm/shark/sharkConstant.cpp | 14 ++++++++++++-- diffs (51 lines): diff -r 3d97a22bbdab -r d8dac70fb1fa ChangeLog --- a/ChangeLog Fri Jun 19 06:03:31 2009 -0400 +++ b/ChangeLog Fri Jun 19 08:48:56 2009 -0400 @@ -1,3 +1,9 @@ 2009-06-19 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkConstant.cpp + (SharkConstant::for_ldc): Set type for object constants. + (SharkConstant::SharkConstant): Updated. + 2009-06-19 Gary Benson * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp diff -r 3d97a22bbdab -r d8dac70fb1fa ports/hotspot/src/share/vm/shark/sharkConstant.cpp --- a/ports/hotspot/src/share/vm/shark/sharkConstant.cpp Fri Jun 19 06:03:31 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkConstant.cpp Fri Jun 19 08:48:56 2009 -0400 @@ -30,7 +30,16 @@ using namespace llvm; SharkConstant* SharkConstant::for_ldc(ciBytecodeStream *iter) { - return new SharkConstant(iter->get_constant(), NULL); + ciConstant constant = iter->get_constant(); + ciType *type = NULL; + if (constant.basic_type() == T_OBJECT) { + ciEnv *env = ciEnv::current(); + if (constant.as_object()->is_klass()) + type = env->Class_klass(); + else + type = env->String_klass(); + } + return new SharkConstant(constant, type); } SharkConstant* SharkConstant::for_field(ciBytecodeStream *iter) @@ -97,6 +106,7 @@ SharkConstant::SharkConstant(ciConstant // have yet to be created. We need to spot the unloaded // objects (which differ between ldc* and get*, thanks!) ciObject *object = constant.as_object(); + assert(type != NULL, "shouldn't be"); if (object->is_klass()) { // The constant returned for a klass is the ciKlass // for the entry, but we want the java_mirror. @@ -114,7 +124,7 @@ SharkConstant::SharkConstant(ciConstant _value = NULL; _object = object; - _type = type ? type : ciType::make(T_OBJECT); + _type = type; _is_loaded = true; _is_nonzero = true; _is_two_word = false; From gbenson at redhat.com Mon Aug 3 10:31:16 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:16 +0000 Subject: changeset in /hg/icedtea: 2009-06-17 Gary Benson changeset 9c4c94b5f4a2 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=9c4c94b5f4a2 description: 2009-06-17 Gary Benson * ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp (SharkCacherDecacher::SharkCacherDecacher): Remove frame cache code. (SharkCacherDecacher::_frame_cache): Removed. (SharkCacherDecacher::frame_cache): Likewise. (SharkDecacher::SharkDecacher): Removed frame cache code. (SharkJavaCallDecacher::SharkJavaCallDecacher): Likewise. (SharkVMCallDecacher::SharkVMCallDecacher): Likewise. (SharkTrapDecacher::SharkTrapDecacher): Likewise. (SharkCacher::SharkCacher): Likewise. (SharkJavaCallCacher::SharkJavaCallCcacher): Likewise. (SharkVMCallCacher::SharkVMCallCacher): Likewise. (SharkFunctionEntryCacher::SharkFunctionEntryCacher): Likewise. * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp (SharkDecacher::write_value_to_frame): Remove frame cache code. (SharkDecacher::read_value_from_frame): Likewise. * ports/hotspot/src/share/vm/shark/sharkState.hpp (SharkState::_frame_cache): Removed. (SharkState::frame_cache): Likewise. * ports/hotspot/src/share/vm/shark/sharkState.cpp (SharkState::SharkState): Remove frame cache code. (SharkState::initialize): Likewise. (SharkState::equal_to): Likewise. (SharkState::merge): Likewise. (SharkState::decache_for_Java_call): Likewise. (SharkState::cache_after_Java_call): Likewise. (SharkState::decache_for_VM_call): Likewise. (SharkState::cache_after_VM_call): Likewise. (SharkState::decache_for_trap): Likewise. (SharkEntryState::SharkEntryState): Likewise. * ports/hotspot/src/share/vm/shark/sharkFrameCache.hpp: Removed. * ports/hotspot/src/share/vm/shark/sharkFrameCache.cpp: Likewise. * ports/hotspot/src/share/vm/includeDB_shark: Updated. diffstat: 8 files changed, 67 insertions(+), 228 deletions(-) ChangeLog | 38 +++++++++ ports/hotspot/src/share/vm/includeDB_shark | 14 --- ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp | 13 --- ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp | 56 ++++--------- ports/hotspot/src/share/vm/shark/sharkFrameCache.cpp | 66 ---------------- ports/hotspot/src/share/vm/shark/sharkFrameCache.hpp | 66 ---------------- ports/hotspot/src/share/vm/shark/sharkState.cpp | 37 +------- ports/hotspot/src/share/vm/shark/sharkState.hpp | 5 - diffs (truncated from 521 to 500 lines): diff -r 0baf35fada62 -r 9c4c94b5f4a2 ChangeLog --- a/ChangeLog Sun Jul 26 20:25:37 2009 +0100 +++ b/ChangeLog Wed Jun 17 14:37:31 2009 +0100 @@ -1,3 +1,41 @@ 2009-07-26 Andrew John Hughes + + * ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp + (SharkCacherDecacher::SharkCacherDecacher): Remove frame cache code. + (SharkCacherDecacher::_frame_cache): Removed. + (SharkCacherDecacher::frame_cache): Likewise. + (SharkDecacher::SharkDecacher): Removed frame cache code. + (SharkJavaCallDecacher::SharkJavaCallDecacher): Likewise. + (SharkVMCallDecacher::SharkVMCallDecacher): Likewise. + (SharkTrapDecacher::SharkTrapDecacher): Likewise. + (SharkCacher::SharkCacher): Likewise. + (SharkJavaCallCacher::SharkJavaCallCcacher): Likewise. + (SharkVMCallCacher::SharkVMCallCacher): Likewise. + (SharkFunctionEntryCacher::SharkFunctionEntryCacher): Likewise. + * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp + (SharkDecacher::write_value_to_frame): Remove frame cache code. + (SharkDecacher::read_value_from_frame): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkState.hpp + (SharkState::_frame_cache): Removed. + (SharkState::frame_cache): Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkState::SharkState): Remove frame cache code. + (SharkState::initialize): Likewise. + (SharkState::equal_to): Likewise. + (SharkState::merge): Likewise. + (SharkState::decache_for_Java_call): Likewise. + (SharkState::cache_after_Java_call): Likewise. + (SharkState::decache_for_VM_call): Likewise. + (SharkState::cache_after_VM_call): Likewise. + (SharkState::decache_for_trap): Likewise. + (SharkEntryState::SharkEntryState): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkFrameCache.hpp: Removed. + * ports/hotspot/src/share/vm/shark/sharkFrameCache.cpp: Likewise. + + * ports/hotspot/src/share/vm/includeDB_shark: Updated. + 2009-07-26 Andrew John Hughes * Makefile.am: diff -r 0baf35fada62 -r 9c4c94b5f4a2 ports/hotspot/src/share/vm/includeDB_shark --- a/ports/hotspot/src/share/vm/includeDB_shark Sun Jul 26 20:25:37 2009 +0100 +++ b/ports/hotspot/src/share/vm/includeDB_shark Wed Jun 17 14:37:31 2009 +0100 @@ -120,14 +120,12 @@ sharkCacheDecache.cpp sharkCacheDecache.cpp llvmValue.hpp sharkCacheDecache.cpp sharkBuilder.hpp sharkCacheDecache.cpp sharkCacheDecache.hpp -sharkCacheDecache.cpp sharkFrameCache.hpp sharkCacheDecache.cpp sharkFunction.hpp sharkCacheDecache.cpp sharkState.inline.hpp sharkCacheDecache.hpp ciMethod.hpp sharkCacheDecache.hpp debugInfoRec.hpp sharkCacheDecache.hpp sharkBuilder.hpp -sharkCacheDecache.hpp sharkFrameCache.hpp sharkCacheDecache.hpp sharkFunction.hpp sharkCacheDecache.hpp sharkStateScanner.hpp @@ -174,15 +172,6 @@ sharkEntry.cpp sharkEntry.hpp llvmHeaders.hpp -sharkFrameCache.cpp allocation.hpp -sharkFrameCache.cpp llvmHeaders.hpp -sharkFrameCache.cpp sharkFrameCache.hpp -sharkFrameCache.cpp sharkFunction.hpp - -sharkFrameCache.hpp allocation.hpp -sharkFrameCache.hpp llvmHeaders.hpp -sharkFrameCache.hpp sharkFunction.hpp - sharkFunction.cpp allocation.hpp sharkFunction.cpp ciTypeFlow.hpp sharkFunction.cpp debug.hpp @@ -260,7 +249,6 @@ sharkState.cpp sharkState.cpp ciTypeFlow.hpp sharkState.cpp sharkBuilder.hpp sharkState.cpp sharkCacheDecache.hpp -sharkState.cpp sharkFrameCache.hpp sharkState.cpp sharkState.inline.hpp sharkState.cpp sharkTopLevelBlock.hpp sharkState.cpp sharkType.hpp @@ -270,11 +258,11 @@ sharkState.hpp sharkState.hpp ciMethod.hpp sharkState.hpp llvmHeaders.hpp sharkState.hpp sharkBuilder.hpp -sharkState.hpp sharkFrameCache.hpp sharkState.hpp sharkValue.hpp sharkState.inline.hpp sharkBlock.hpp sharkState.inline.hpp sharkBuilder.hpp +sharkState.inline.hpp sharkFunction.hpp sharkState.inline.hpp sharkState.hpp sharkStateScanner.cpp sharkState.inline.hpp diff -r 0baf35fada62 -r 9c4c94b5f4a2 ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp Sun Jul 26 20:25:37 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp Wed Jun 17 14:37:31 2009 +0100 @@ -225,17 +225,12 @@ void SharkDecacher::write_value_to_frame Value* value, int offset) { - if (frame_cache()->value(offset) != value) { - builder()->CreateStore( - value, - function()->CreateAddressOfFrameEntry(offset, type)); - } + builder()->CreateStore( + value, function()->CreateAddressOfFrameEntry(offset, type)); } Value* SharkCacher::read_value_from_frame(const Type* type, int offset) { - Value *result = builder()->CreateLoad( + return builder()->CreateLoad( function()->CreateAddressOfFrameEntry(offset, type)); - frame_cache()->set_value(offset, result); - return result; -} +} diff -r 0baf35fada62 -r 9c4c94b5f4a2 ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp --- a/ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp Sun Jul 26 20:25:37 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp Wed Jun 17 14:37:31 2009 +0100 @@ -37,17 +37,8 @@ class SharkCacherDecacher : public SharkStateScanner { protected: - SharkCacherDecacher(SharkFunction* function, SharkFrameCache* frame_cache) - : SharkStateScanner(function), _frame_cache(frame_cache) {} - - private: - SharkFrameCache* _frame_cache; - - protected: - SharkFrameCache* frame_cache() const - { - return _frame_cache; - } + SharkCacherDecacher(SharkFunction* function) + : SharkStateScanner(function) {} protected: SharkBuilder* builder() const @@ -67,8 +58,8 @@ class SharkCacherDecacher : public Shark class SharkDecacher : public SharkCacherDecacher { protected: - SharkDecacher(SharkFunction* function, SharkFrameCache* frame_cache, int bci) - : SharkCacherDecacher(function, frame_cache), _bci(bci) {} + SharkDecacher(SharkFunction* function, int bci) + : SharkCacherDecacher(function), _bci(bci) {} private: int _bci; @@ -223,11 +214,8 @@ class SharkDecacher : public SharkCacher class SharkJavaCallDecacher : public SharkDecacher { public: - SharkJavaCallDecacher(SharkFunction* function, - SharkFrameCache* frame_cache, - int bci, - ciMethod* callee) - : SharkDecacher(function, frame_cache, bci), _callee(callee) {} + SharkJavaCallDecacher(SharkFunction* function, int bci, ciMethod* callee) + : SharkDecacher(function, bci), _callee(callee) {} private: ciMethod* _callee; @@ -271,10 +259,8 @@ class SharkJavaCallDecacher : public Sha class SharkVMCallDecacher : public SharkDecacher { public: - SharkVMCallDecacher(SharkFunction* function, - SharkFrameCache* frame_cache, - int bci) - : SharkDecacher(function, frame_cache, bci) {} + SharkVMCallDecacher(SharkFunction* function, int bci) + : SharkDecacher(function, bci) {} // Stack slot helpers protected: @@ -309,10 +295,8 @@ class SharkVMCallDecacher : public Shark class SharkTrapDecacher : public SharkDecacher { public: - SharkTrapDecacher(SharkFunction* function, - SharkFrameCache* frame_cache, - int bci) - : SharkDecacher(function, frame_cache, bci) {} + SharkTrapDecacher(SharkFunction* function, int bci) + : SharkDecacher(function, bci) {} // Stack slot helpers protected: @@ -347,8 +331,8 @@ class SharkTrapDecacher : public SharkDe class SharkCacher : public SharkCacherDecacher { protected: - SharkCacher(SharkFunction* function, SharkFrameCache* frame_cache) - : SharkCacherDecacher(function, frame_cache) {} + SharkCacher(SharkFunction* function) + : SharkCacherDecacher(function) {} // Callbacks protected: @@ -377,10 +361,8 @@ class SharkCacher : public SharkCacherDe class SharkJavaCallCacher : public SharkCacher { public: - SharkJavaCallCacher(SharkFunction* function, - SharkFrameCache* frame_cache, - ciMethod* callee) - : SharkCacher(function, frame_cache), _callee(callee) {} + SharkJavaCallCacher(SharkFunction* function, ciMethod* callee) + : SharkCacher(function), _callee(callee) {} private: ciMethod* _callee; @@ -402,8 +384,8 @@ class SharkJavaCallCacher : public Shark class SharkVMCallCacher : public SharkCacher { public: - SharkVMCallCacher(SharkFunction* function, SharkFrameCache* frame_cache) - : SharkCacher(function, frame_cache) {} + SharkVMCallCacher(SharkFunction* function) + : SharkCacher(function) {} // Stack slot helper protected: @@ -415,10 +397,8 @@ class SharkVMCallCacher : public SharkCa class SharkFunctionEntryCacher : public SharkCacher { public: - SharkFunctionEntryCacher(SharkFunction* function, - SharkFrameCache* frame_cache, - llvm::Value* method) - : SharkCacher(function, frame_cache), _method(method) {} + SharkFunctionEntryCacher(SharkFunction* function, llvm::Value* method) + : SharkCacher(function), _method(method) {} private: llvm::Value* _method; diff -r 0baf35fada62 -r 9c4c94b5f4a2 ports/hotspot/src/share/vm/shark/sharkFrameCache.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFrameCache.cpp Sun Jul 26 20:25:37 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* - * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2009 Red Hat, Inc. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - * - */ - -#include "incls/_precompiled.incl" -#include "incls/_sharkFrameCache.cpp.incl" - -using namespace llvm; - -SharkFrameCache::SharkFrameCache(SharkFunction *function) - : _frame_size(function->extended_frame_size()) -{ - _values = NEW_RESOURCE_ARRAY(Value*, frame_size()); - memset(_values, 0, frame_size() * sizeof(Value *)); -} - -SharkFrameCache::SharkFrameCache(const SharkFrameCache* cache) - : _frame_size(cache->frame_size()) -{ - _values = NEW_RESOURCE_ARRAY(Value*, frame_size()); - memcpy(_values, cache->_values, frame_size() * sizeof(Value *)); -} - -bool SharkFrameCache::equal_to(SharkFrameCache* other) -{ - if (frame_size() != other->frame_size()) - return false; - - for (int i = 0; i < frame_size(); i++) { - if (value(i) != other->value(i)) - return false; - } - - return true; -} - -void SharkFrameCache::merge(SharkFrameCache* other) -{ - assert(frame_size() == other->frame_size(), "should be"); - - for (int i = 0; i < frame_size(); i++) { - if (value(i) != other->value(i)) - set_value(i, NULL); - } -} diff -r 0baf35fada62 -r 9c4c94b5f4a2 ports/hotspot/src/share/vm/shark/sharkFrameCache.hpp --- a/ports/hotspot/src/share/vm/shark/sharkFrameCache.hpp Sun Jul 26 20:25:37 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* - * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2009 Red Hat, Inc. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - * - */ - -class SharkFrameCache : public ResourceObj { - public: - SharkFrameCache(SharkFunction* function); - - protected: - SharkFrameCache(const SharkFrameCache* cache); - - private: - int _frame_size; - llvm::Value** _values; - - private: - int frame_size() const - { - return _frame_size; - } - - public: - llvm::Value* value(int slot) - { - assert(slot >= 0 && slot < frame_size(), "bad index"); - return _values[slot]; - } - void set_value(int slot, llvm::Value* value) - { - assert(slot >= 0 && slot < frame_size(), "bad index"); - _values[slot] = value; - } - - // Comparison - public: - bool equal_to(SharkFrameCache* other); - - // Copy and merge - public: - SharkFrameCache *copy() const - { - return new SharkFrameCache(this); - } - void merge(SharkFrameCache* other); -}; diff -r 0baf35fada62 -r 9c4c94b5f4a2 ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Sun Jul 26 20:25:37 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Wed Jun 17 14:37:31 2009 +0100 @@ -33,7 +33,6 @@ SharkState::SharkState(SharkBlock* block _function(function), _method(NULL), _oop_tmp(NULL), - _frame_cache(NULL), _has_safepointed(false) { initialize(NULL); @@ -44,7 +43,6 @@ SharkState::SharkState(SharkBlock* block _function(state->function()), _method(state->method()), _oop_tmp(state->oop_tmp()), - _frame_cache(NULL), _has_safepointed(state->has_safepointed()) { initialize(state); @@ -73,13 +71,7 @@ void SharkState::initialize(const SharkS value = value->clone(); push(value); } - - if (state->frame_cache()) - _frame_cache = state->frame_cache()->copy(); } - else if (function()) { - _frame_cache = new SharkFrameCache(function()); - } set_num_monitors(state ? state->num_monitors() : 0); } @@ -144,19 +136,6 @@ bool SharkState::equal_to(SharkState *ot if (!value->equal_to(other_value)) return false; } - } - - // Frame cache - if (frame_cache() == NULL) { - if (other->frame_cache() != NULL) - return false; - } - else { - if (other->frame_cache() == NULL) - return false; - - if (!frame_cache()->equal_to(other->frame_cache())) - return false; } return true; @@ -218,9 +197,6 @@ void SharkState::merge(SharkState* other } } - // Frame cache - frame_cache()->merge(other->frame_cache()); - // Safepointed status set_has_safepointed(this->has_safepointed() && other->has_safepointed()); } @@ -243,8 +219,7 @@ void SharkState::decache_for_Java_call(c void SharkState::decache_for_Java_call(ciMethod* callee) { assert(function() && method(), "you cannot decache here"); - SharkJavaCallDecacher( - function(), frame_cache(), block()->bci(), callee).scan(this); + SharkJavaCallDecacher(function(), block()->bci(), callee).scan(this); pop(callee->arg_size()); } @@ -269,25 +244,25 @@ void SharkState::cache_after_Java_call(c if (type->is_two_word()) push(NULL); } - SharkJavaCallCacher(function(), frame_cache(), callee).scan(this); + SharkJavaCallCacher(function(), callee).scan(this); } void SharkState::decache_for_VM_call() { assert(function() && method(), "you cannot decache here"); - SharkVMCallDecacher(function(), frame_cache(), block()->bci()).scan(this); + SharkVMCallDecacher(function(), block()->bci()).scan(this); } void SharkState::cache_after_VM_call() { assert(function() && method(), "you cannot cache here"); - SharkVMCallCacher(function(), frame_cache()).scan(this); + SharkVMCallCacher(function()).scan(this); } void SharkState::decache_for_trap() { assert(function() && method(), "you cannot decache here"); - SharkTrapDecacher(function(), frame_cache(), block()->bci()).scan(this); + SharkTrapDecacher(function(), block()->bci()).scan(this); } SharkEntryState::SharkEntryState(SharkTopLevelBlock* block, Value* method) @@ -326,7 +301,7 @@ SharkEntryState::SharkEntryState(SharkTo } set_local(i, value); } - SharkFunctionEntryCacher(function(), frame_cache(), method).scan(this); + SharkFunctionEntryCacher(function(), method).scan(this); } SharkPHIState::SharkPHIState(SharkTopLevelBlock* block) diff -r 0baf35fada62 -r 9c4c94b5f4a2 ports/hotspot/src/share/vm/shark/sharkState.hpp From gbenson at redhat.com Mon Aug 3 10:31:21 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:21 +0000 Subject: changeset in /hg/icedtea: 2009-06-26 Gary Benson changeset 97798e89d452 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=97798e89d452 description: 2009-06-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::SharkCompiler): Moved LLVM multithreading initialization from SharkFunction::initialize. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Moved LLVM multithreading initialization to SharkCompiler::SharkCompiler. diffstat: 3 files changed, 18 insertions(+), 6 deletions(-) ChangeLog | 9 +++++++++ ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 9 +++++++++ ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 6 ------ diffs (51 lines): diff -r b26e1c8bfc51 -r 97798e89d452 ChangeLog --- a/ChangeLog Thu Jun 25 11:40:43 2009 +0100 +++ b/ChangeLog Fri Jun 26 04:51:17 2009 -0400 @@ -1,3 +1,12 @@ 2009-06-25 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::SharkCompiler): Moved LLVM multithreading + initialization from SharkFunction::initialize. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Moved LLVM multithreading + initialization to SharkCompiler::SharkCompiler. + 2009-06-25 Gary Benson * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp diff -r b26e1c8bfc51 -r 97798e89d452 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Thu Jun 25 11:40:43 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Jun 26 04:51:17 2009 -0400 @@ -33,6 +33,15 @@ SharkCompiler::SharkCompiler() SharkCompiler::SharkCompiler() : AbstractCompiler() { +#if SHARK_LLVM_VERSION >= 26 + // Make LLVM safe for multithreading. We only make LLVM calls from + // the compiler thread, but if LLVM leaves stubs to be rewritten on + // execution then it's possible for Java threads to be making LLVM + // calls at the same time we are. + if (!llvm_start_multithreaded()) + warning("llvm_start_multithreaded() failed"); +#endif + // Create a module to build our functions into _module = new Module("shark"); diff -r b26e1c8bfc51 -r 97798e89d452 ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Thu Jun 25 11:40:43 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Fri Jun 26 04:51:17 2009 -0400 @@ -30,12 +30,6 @@ using namespace llvm; void SharkFunction::initialize(const char *name) { - -#if SHARK_LLVM_VERSION >= 26 - // Initialize llvm mutex guards - llvm_start_multithreaded(); -#endif - // Create the function _function = Function::Create( SharkType::entry_point_type(), From gbenson at redhat.com Mon Aug 3 10:31:21 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:21 +0000 Subject: changeset in /hg/icedtea: 2009-07-03 Gary Benson changeset 93d755a6148a in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=93d755a6148a description: 2009-07-03 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (SharkEntry::print_statistics): Removed. * ports/hotspot/src/share/vm/shark/sharkEntry.cpp: Removed. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::compile_method): Save location of native code across the call to ciEnv::register_method (which frees the buffer blob it's in), and inline what was SharkEntry::print_statistics. * ports/hotspot/src/share/vm/includeDB_shark: Updated. diffstat: 5 files changed, 22 insertions(+), 49 deletions(-) ChangeLog | 13 ++++++ ports/hotspot/src/share/vm/includeDB_shark | 2 - ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 15 ++++--- ports/hotspot/src/share/vm/shark/sharkEntry.cpp | 38 -------------------- ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 3 - diffs (119 lines): diff -r 97798e89d452 -r 93d755a6148a ChangeLog --- a/ChangeLog Fri Jun 26 04:51:17 2009 -0400 +++ b/ChangeLog Fri Jul 03 11:52:45 2009 +0100 @@ -1,3 +1,16 @@ 2009-06-26 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::print_statistics): Removed. + * ports/hotspot/src/share/vm/shark/sharkEntry.cpp: Removed. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::compile_method): Save location of native code + across the call to ciEnv::register_method (which frees the buffer + blob it's in), and inline what was SharkEntry::print_statistics. + + * ports/hotspot/src/share/vm/includeDB_shark: Updated. + 2009-06-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp diff -r 97798e89d452 -r 93d755a6148a ports/hotspot/src/share/vm/includeDB_shark --- a/ports/hotspot/src/share/vm/includeDB_shark Fri Jun 26 04:51:17 2009 -0400 +++ b/ports/hotspot/src/share/vm/includeDB_shark Fri Jul 03 11:52:45 2009 +0100 @@ -166,8 +166,6 @@ sharkConstant.hpp sharkConstant.hpp ciStreams.hpp sharkConstant.hpp sharkBuilder.hpp sharkConstant.hpp sharkValue.hpp - -sharkEntry.cpp sharkEntry.hpp sharkEntry.hpp llvmHeaders.hpp diff -r 97798e89d452 -r 93d755a6148a ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Jun 26 04:51:17 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Jul 03 11:52:45 2009 +0100 @@ -166,12 +166,12 @@ void SharkCompiler::compile_method(ciEnv entry->set_entry_point( (ZeroEntry::method_entry_t) execution_engine()->getPointerToFunction(function)); + address code_start = entry->code_start(); + address code_limit = entry->code_limit(); // Register generated code for profiling, etc - if (JvmtiExport::should_post_dynamic_code_generated()) { - JvmtiExport::post_dynamic_code_generated( - name, entry->code_start(), entry->code_limit()); - } + if (JvmtiExport::should_post_dynamic_code_generated()) + JvmtiExport::post_dynamic_code_generated(name, code_start, code_limit); // Install the method into the VM CodeOffsets offsets; @@ -198,8 +198,11 @@ void SharkCompiler::compile_method(ciEnv false); // Print statistics, if requested - if (SharkTraceInstalls) - entry->print_statistics(name); + if (SharkTraceInstalls) { + tty->print_cr( + " [%p-%p): %s (%d bytes code)", + code_start, code_limit, name, code_limit - code_start); + } } const char* SharkCompiler::methodname(const ciMethod* target) diff -r 97798e89d452 -r 93d755a6148a ports/hotspot/src/share/vm/shark/sharkEntry.cpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.cpp Fri Jun 26 04:51:17 2009 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* - * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008, 2009 Red Hat, Inc. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - * - */ - -#include "incls/_precompiled.incl" -#include "incls/_sharkEntry.cpp.incl" - -#ifndef PRODUCT -void SharkEntry::print_statistics(const char* name) const -{ - address start = code_start(); - address limit = code_limit(); - - tty->print_cr( - " [%p-%p): %s (%d bytes code)", start, limit, name, limit - start); -} -#endif // !PRODUCT diff -r 97798e89d452 -r 93d755a6148a ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Jun 26 04:51:17 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Jul 03 11:52:45 2009 +0100 @@ -43,7 +43,4 @@ class SharkEntry : public ZeroEntry { { _code_limit = code_limit; } - - public: - void print_statistics(const char* name) const PRODUCT_RETURN; }; From gbenson at redhat.com Mon Aug 3 10:31:20 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:20 +0000 Subject: changeset in /hg/icedtea: 2009-06-25 Gary Benson changeset b26e1c8bfc51 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=b26e1c8bfc51 description: 2009-06-25 Gary Benson * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp (SharkRuntime::monitorexit_C): Remove unnecessary lock clear. diffstat: 2 files changed, 5 insertions(+), 5 deletions(-) ChangeLog | 5 +++++ ports/hotspot/src/share/vm/shark/sharkRuntime.cpp | 5 ----- diffs (27 lines): diff -r 9ef90ed6dac9 -r b26e1c8bfc51 ChangeLog --- a/ChangeLog Tue Jun 23 16:31:22 2009 +0200 +++ b/ChangeLog Thu Jun 25 11:40:43 2009 +0100 @@ -1,3 +1,8 @@ 2009-06-23 Matthias Klose + + * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp + (SharkRuntime::monitorexit_C): Remove unnecessary lock clear. + 2009-06-23 Matthias Klose * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp: Fix header location. diff -r 9ef90ed6dac9 -r b26e1c8bfc51 ports/hotspot/src/share/vm/shark/sharkRuntime.cpp --- a/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Tue Jun 23 16:31:22 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Thu Jun 25 11:40:43 2009 +0100 @@ -290,11 +290,6 @@ JRT_ENTRY(void, SharkRuntime::monitorexi THROW(vmSymbols::java_lang_IllegalMonitorStateException()); } ObjectSynchronizer::slow_exit(object(), lock->lock(), thread); - - // Free entry. This must be done here, since a pending exception - // might be installed on exit. If it is not cleared, the exception - // handling code will try to unlock the monitor again. - lock->set_obj(NULL); } JRT_END From xerxes at zafena.se Mon Aug 3 10:31:23 2009 From: xerxes at zafena.se (Xerxes R?nby) Date: Mon, 03 Aug 2009 17:31:23 +0000 Subject: changeset in /hg/icedtea: 2009-07-14 Xerxes R?nby changeset 022c97ae92d2 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=022c97ae92d2 description: 2009-07-14 Xerxes R?nby * ports/hotspot/src/share/vm/shark/llvmValue.hpp (jfloat_constant): Handle LLVM 2.6 svn r75546 API change. llvm::ConstantFP::get have been moved to llvm::LLVMContext::getConstantFP. (jdouble_constant): Likewise. diffstat: 2 files changed, 16 insertions(+), 2 deletions(-) ChangeLog | 8 ++++++++ ports/hotspot/src/share/vm/shark/llvmValue.hpp | 10 ++++++++-- diffs (47 lines): diff -r 2a3a4c5b35e0 -r 022c97ae92d2 ChangeLog --- a/ChangeLog Thu Jul 09 12:49:11 2009 +0200 +++ b/ChangeLog Tue Jul 14 12:55:48 2009 +0200 @@ -1,3 +1,11 @@ 2009-07-09 Xerxes R??nby + + * ports/hotspot/src/share/vm/shark/llvmValue.hpp + (jfloat_constant): Handle LLVM 2.6 svn r75546 API change. + llvm::ConstantFP::get have been moved to + llvm::LLVMContext::getConstantFP. + (jdouble_constant): Likewise. + 2009-07-09 Xerxes R??nby * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp diff -r 2a3a4c5b35e0 -r 022c97ae92d2 ports/hotspot/src/share/vm/shark/llvmValue.hpp --- a/ports/hotspot/src/share/vm/shark/llvmValue.hpp Thu Jul 09 12:49:11 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/llvmValue.hpp Tue Jul 14 12:55:48 2009 +0200 @@ -39,20 +39,26 @@ class LLVMValue : public AllStatic { } #if SHARK_LLVM_VERSION >= 26 static llvm::Constant* jfloat_constant(jfloat value) + { + return llvm::getGlobalContext().getConstantFP(SharkType::jfloat_type(), value); + } #else static llvm::ConstantFP* jfloat_constant(jfloat value) -#endif { return llvm::ConstantFP::get(SharkType::jfloat_type(), value); } +#endif #if SHARK_LLVM_VERSION >= 26 static llvm::Constant* jdouble_constant(jdouble value) + { + return llvm::getGlobalContext().getConstantFP(SharkType::jdouble_type(), value); + } #else static llvm::ConstantFP* jdouble_constant(jdouble value) -#endif { return llvm::ConstantFP::get(SharkType::jdouble_type(), value); } +#endif static llvm::ConstantPointerNull* null() { return llvm::ConstantPointerNull::get(SharkType::jobject_type()); From xerxes at zafena.se Mon Aug 3 10:31:22 2009 From: xerxes at zafena.se (Xerxes R?nby) Date: Mon, 03 Aug 2009 17:31:22 +0000 Subject: changeset in /hg/icedtea: 2009-07-08 Xerxes R?nby changeset d29fab296cd2 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=d29fab296cd2 description: 2009-07-08 Xerxes R?nby * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp (SharkBuilder::pointer_constant): Pass the LLVMContext returned from getGlobalContext() to the new GlobalVariable constructor when llvm version are 2.6 or later to handle LLVM API change. * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::CreateDump): Likewise. diffstat: 3 files changed, 23 insertions(+), 1 deletion(-) ChangeLog | 9 +++++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 6 ++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 9 ++++++++- diffs (51 lines): diff -r 225f4d8d7962 -r d29fab296cd2 ChangeLog --- a/ChangeLog Tue Jul 07 10:58:02 2009 +0200 +++ b/ChangeLog Wed Jul 08 11:28:08 2009 +0200 @@ -1,3 +1,12 @@ 2009-07-07 Xerxes R??nby + + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp + (SharkBuilder::pointer_constant): Pass the LLVMContext returned + from getGlobalContext() to the new GlobalVariable constructor + when llvm version are 2.6 or later to handle LLVM API change. + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::CreateDump): Likewise. + 2009-07-07 Xerxes R??nby * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp diff -r 225f4d8d7962 -r d29fab296cd2 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Tue Jul 07 10:58:02 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Wed Jul 08 11:28:08 2009 +0200 @@ -187,6 +187,12 @@ CallInst* SharkBuilder::CreateDump(llvm: Value *name = CreatePtrToInt( CreateStructGEP( new GlobalVariable( +#if SHARK_LLVM_VERSION >= 26 + // LLVM 2.6 requires a LLVMContext during GlobalVariable construction. + // getGlobalConext() returns one that can be used as long as the shark + // compiler are single-threaded. + getGlobalContext(), +#endif const_name->getType(), true, GlobalValue::InternalLinkage, const_name, "dump", module()), diff -r 225f4d8d7962 -r d29fab296cd2 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Tue Jul 07 10:58:02 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Wed Jul 08 11:28:08 2009 +0200 @@ -174,7 +174,14 @@ class SharkBuilder : public llvm::IRBuil char name[128]; snprintf(name, sizeof name - 1, "pointer_constant_%p", ptr); - GlobalVariable *value = new GlobalVariable(SharkType::intptr_type(), + GlobalVariable *value = new GlobalVariable( +#if SHARK_LLVM_VERSION >= 26 + // LLVM 2.6 requires a LLVMContext during GlobalVariable construction. + // getGlobalConext() returns one that can be used as long as the shark + // compiler are single-threaded. + getGlobalContext(), +#endif + SharkType::intptr_type(), false, GlobalValue::ExternalLinkage, NULL, name, module()); execution_engine()->addGlobalMapping(value, const_cast(ptr)); From xerxes at zafena.se Mon Aug 3 10:31:22 2009 From: xerxes at zafena.se (Xerxes R?nby) Date: Mon, 03 Aug 2009 17:31:22 +0000 Subject: changeset in /hg/icedtea: 2009-07-07 Xerxes R?nby changeset 225f4d8d7962 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=225f4d8d7962 description: 2009-07-07 Xerxes R?nby * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Include llvm/LLVMContext.h used by getGlobalContext() when llvm version are 2.6 or later. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::SharkCompiler): Pass the LLVMContext returned from getGlobalContext() to the new Module constructor when llvm version are 2.6 or later to handle LLVM API change. diffstat: 3 files changed, 21 insertions(+) ChangeLog | 10 ++++++++++ ports/hotspot/src/share/vm/shark/llvmHeaders.hpp | 3 +++ ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 8 ++++++++ diffs (49 lines): diff -r 93d755a6148a -r 225f4d8d7962 ChangeLog --- a/ChangeLog Fri Jul 03 11:52:45 2009 +0100 +++ b/ChangeLog Tue Jul 07 10:58:02 2009 +0200 @@ -1,3 +1,13 @@ 2009-07-03 Gary Benson + + * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp + Include llvm/LLVMContext.h used by getGlobalContext() + when llvm version are 2.6 or later. + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::SharkCompiler): Pass the LLVMContext returned + from getGlobalContext() to the new Module constructor + when llvm version are 2.6 or later to handle LLVM API change. + 2009-07-03 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp diff -r 93d755a6148a -r 225f4d8d7962 ports/hotspot/src/share/vm/shark/llvmHeaders.hpp --- a/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Fri Jul 03 11:52:45 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Tue Jul 07 10:58:02 2009 +0200 @@ -32,6 +32,9 @@ #include #include #include +#if SHARK_LLVM_VERSION >= 26 +#include +#endif #include #include #include diff -r 93d755a6148a -r 225f4d8d7962 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Jul 03 11:52:45 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Tue Jul 07 10:58:02 2009 +0200 @@ -43,7 +43,15 @@ SharkCompiler::SharkCompiler() #endif // Create a module to build our functions into +#if SHARK_LLVM_VERSION >= 26 + // LLVM 2.6 and later requires passing a LLVMContext during module + // creation. The LLVM API getGlobalContext() returns a LLVMContext that + // can be used safely as long as the shark compiler stays single threaded + // and only uses one module. + _module = new Module("shark", getGlobalContext()); +#else _module = new Module("shark"); +#endif // Create the builder to build our functions _builder = new SharkBuilder(this); From gbenson at redhat.com Mon Aug 3 10:31:18 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:18 +0000 Subject: changeset in /hg/icedtea: 2009-06-19 Gary Benson changeset 6690b58a6c66 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=6690b58a6c66 description: 2009-06-19 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (SharkEntry::_llvm_function): Removed. (SharkEntry::llvm_function): Likewise. (SharkEntry::set_llvm_function): Likewise. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Removed call to set_llvm_function. diffstat: 3 files changed, 11 insertions(+), 13 deletions(-) ChangeLog | 10 ++++++++++ ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 13 +------------ ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 1 - diffs (51 lines): diff -r 21f0340f7c98 -r 6690b58a6c66 ChangeLog --- a/ChangeLog Thu Jun 18 12:14:25 2009 -0400 +++ b/ChangeLog Fri Jun 19 03:59:26 2009 -0400 @@ -1,3 +1,13 @@ 2009-06-18 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::_llvm_function): Removed. + (SharkEntry::llvm_function): Likewise. + (SharkEntry::set_llvm_function): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Removed call to set_llvm_function. + 2009-06-18 Gary Benson * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp diff -r 21f0340f7c98 -r 6690b58a6c66 ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Thu Jun 18 12:14:25 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Jun 19 03:59:26 2009 -0400 @@ -27,18 +27,7 @@ class SharkEntry : public ZeroEntry { friend class SharkMemoryManager; private: - llvm::Function* _llvm_function; - address _code_limit; - - public: - llvm::Function* llvm_function() const - { - return _llvm_function; - } - void set_llvm_function(llvm::Function* llvm_function) - { - _llvm_function = llvm_function; - } + address _code_limit; public: address code_start() const diff -r 21f0340f7c98 -r 6690b58a6c66 ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Thu Jun 18 12:14:25 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Fri Jun 19 03:59:26 2009 -0400 @@ -38,7 +38,6 @@ void SharkFunction::initialize() // Create the function _function = builder()->CreateFunction(name()); - entry->set_llvm_function(function()); memory_manager()->set_entry_for_function(function(), entry); // Get our arguments From gbenson at redhat.com Mon Aug 3 10:31:18 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:18 +0000 Subject: changeset in /hg/icedtea: 2009-06-19 Gary Benson changeset 3d97a22bbdab in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=3d97a22bbdab description: 2009-06-19 Gary Benson * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp (SharkCompiler::compile): Removed. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::compile_method): Moved all non-IR-emission code from SharkFunction::initialize, and the IR-to-native code from SharkCompiler::compile, here. Also changed all debug options that take a method name to use fnmatch. (SharkCompiler::compile): Removed. * ports/hotspot/src/share/vm/shark/sharkFunction.hpp (SharkFunction::_name): Removed. (SharkFunction::_name): Likewise. (SharkFunction::initialize): Receive name in argument. (SharkFunction::SharkFunction): Updated. (SharkFunction::build): New method. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Receive name in argument, and moved all code not relating to emitting the function's IR to SharkCompiler::compile_method. * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp (SharkBuilder::CreateFunction): Removed. * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::CreateFunction): Likewise. * ports/hotspot/src/share/vm/shark/sharkInvariants.hpp (SharkCompileInvariants::memory_manager): Removed. diffstat: 8 files changed, 94 insertions(+), 91 deletions(-) ChangeLog | 30 +++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 10 -- ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 4 - ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 72 ++++++++++-------- ports/hotspot/src/share/vm/shark/sharkCompiler.hpp | 3 ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 35 +------- ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 27 ++++-- ports/hotspot/src/share/vm/shark/sharkInvariants.hpp | 4 - diffs (306 lines): diff -r 6690b58a6c66 -r 3d97a22bbdab ChangeLog --- a/ChangeLog Fri Jun 19 03:59:26 2009 -0400 +++ b/ChangeLog Fri Jun 19 06:03:31 2009 -0400 @@ -1,3 +1,33 @@ 2009-06-19 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp + (SharkCompiler::compile): Removed. + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::compile_method): Moved all non-IR-emission + code from SharkFunction::initialize, and the IR-to-native + code from SharkCompiler::compile, here. Also changed all + debug options that take a method name to use fnmatch. + (SharkCompiler::compile): Removed. + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::_name): Removed. + (SharkFunction::_name): Likewise. + (SharkFunction::initialize): Receive name in argument. + (SharkFunction::SharkFunction): Updated. + (SharkFunction::build): New method. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Receive name in argument, + and moved all code not relating to emitting the function's + IR to SharkCompiler::compile_method. + + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp + (SharkBuilder::CreateFunction): Removed. + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::CreateFunction): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkInvariants.hpp + (SharkCompileInvariants::memory_manager): Removed. + 2009-06-19 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp diff -r 6690b58a6c66 -r 3d97a22bbdab ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Jun 19 03:59:26 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Jun 19 06:03:31 2009 -0400 @@ -176,16 +176,6 @@ void SharkBuilder::init_external_functio set_llvm_pow_fn(module()->getOrInsertFunction("llvm.pow.f64", type)); } -Function *SharkBuilder::CreateFunction(const char *name) -{ - Function *function = Function::Create( - SharkType::entry_point_type(), - GlobalVariable::InternalLinkage, - name); - module()->getFunctionList().push_back(function); - return function; -} - CallInst* SharkBuilder::CreateDump(llvm::Value* value) { Constant *const_name; diff -r 6690b58a6c66 -r 3d97a22bbdab ports/hotspot/src/share/vm/shark/sharkBuilder.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Fri Jun 19 03:59:26 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Fri Jun 19 06:03:31 2009 -0400 @@ -45,10 +45,6 @@ class SharkBuilder : public llvm::IRBuil { return compiler()->execution_engine(); } - - // Function creation - public: - llvm::Function *CreateFunction(const char *name = "func"); // Helpers for creating basic blocks // NB don't use unless SharkFunction::CreateBlock is unavailable diff -r 6690b58a6c66 -r 3d97a22bbdab ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Jun 19 03:59:26 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Jun 19 06:03:31 2009 -0400 @@ -91,7 +91,7 @@ void SharkCompiler::compile_method(ciEnv #endif // !PRODUCT if (SharkOnlyCompile != NULL) { - if (strcmp(SharkOnlyCompile, name)) { + if (fnmatch(SharkOnlyCompile, name, 0)) { env->record_method_not_compilable("does not match SharkOnlyCompile"); return; } @@ -102,8 +102,7 @@ void SharkCompiler::compile_method(ciEnv if (env->failing()) return; if (SharkPrintTypeflowOf != NULL) { - if (!strcmp(SharkPrintTypeflowOf, name) || - !strcmp(SharkPrintTypeflowOf, "*")) + if (!fnmatch(SharkPrintTypeflowOf, name, 0)) flow->print_on(tty); } @@ -119,12 +118,46 @@ void SharkCompiler::compile_method(ciEnv SharkCodeBuffer cb(env->oop_recorder()); builder()->set_code_buffer(&cb); - // Compile the method - SharkFunction function(this, env, flow, name); + // Emit the entry point + SharkEntry *entry = (SharkEntry *) cb.malloc(sizeof(SharkEntry)); + + // Build the LLVM IR for the method + Function *function = SharkFunction::build(this, env, flow, name); + if (SharkPrintBitcodeOf != NULL) { + if (!fnmatch(SharkPrintBitcodeOf, name, 0)) + function->dump(); + } // Unhook the code buffer builder()->set_code_buffer(NULL); + // Compile to native code +#ifndef PRODUCT +#ifdef X86 + if (SharkPrintAsmOf != NULL) { + std::vector args; + args.push_back(""); // program name + if (!fnmatch(SharkPrintAsmOf, name, 0)) + args.push_back("-debug-only=x86-emitter"); + else + args.push_back("-debug-only=none"); + args.push_back(0); // terminator + cl::ParseCommandLineOptions(args.size() - 1, (char **) &args[0]); + } +#endif // X86 +#endif // !PRODUCT + memory_manager()->set_entry_for_function(function, entry); + module()->getFunctionList().push_back(function); + entry->set_entry_point( + (ZeroEntry::method_entry_t) + execution_engine()->getPointerToFunction(function)); + + // Register generated code for profiling, etc + if (JvmtiExport::should_post_dynamic_code_generated()) { + JvmtiExport::post_dynamic_code_generated( + name, entry->code_start(), entry->code_limit()); + } + // Install the method into the VM CodeOffsets offsets; offsets.set_value(CodeOffsets::Deopt, 0); @@ -148,31 +181,10 @@ void SharkCompiler::compile_method(ciEnv env->comp_level(), false, false); -} - - -ZeroEntry::method_entry_t SharkCompiler::compile(const char* name, - Function* function) -{ - // Dump the generated code, if requested -#ifndef PRODUCT -#ifdef X86 - if (SharkPrintAsmOf != NULL) { - std::vector args; - args.push_back(""); // program name - if (!fnmatch(SharkPrintAsmOf, name, 0)) - args.push_back("-debug-only=x86-emitter"); - else - args.push_back("-debug-only=none"); - args.push_back(0); // terminator - cl::ParseCommandLineOptions(args.size() - 1, (char **) &args[0]); - } -#endif // X86 -#endif // !PRODUCT - - // Compile to native code - return (ZeroEntry::method_entry_t) - execution_engine()->getPointerToFunction(function); + + // Print statistics, if requested + if (SharkTraceInstalls) + entry->print_statistics(name); } const char* SharkCompiler::methodname(const ciMethod* target) diff -r 6690b58a6c66 -r 3d97a22bbdab ports/hotspot/src/share/vm/shark/sharkCompiler.hpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Fri Jun 19 03:59:26 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Fri Jun 19 06:03:31 2009 -0400 @@ -72,9 +72,6 @@ class SharkCompiler : public AbstractCom return _execution_engine; } - public: - ZeroEntry::method_entry_t compile(const char* name, llvm::Function* func); - // Helper private: static const char* methodname(const ciMethod* target); diff -r 6690b58a6c66 -r 3d97a22bbdab ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Fri Jun 19 03:59:26 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Fri Jun 19 06:03:31 2009 -0400 @@ -26,19 +26,15 @@ #include "incls/_precompiled.incl" #include "incls/_sharkFunction.cpp.incl" -#include - using namespace llvm; -void SharkFunction::initialize() -{ - // Emit the entry point - SharkEntry *entry = - (SharkEntry *) builder()->code_buffer()->malloc(sizeof(SharkEntry)); - +void SharkFunction::initialize(const char *name) +{ // Create the function - _function = builder()->CreateFunction(name()); - memory_manager()->set_entry_for_function(function(), entry); + _function = Function::Create( + SharkType::entry_point_type(), + GlobalVariable::InternalLinkage, + name); // Get our arguments Function::arg_iterator ai = function()->arg_begin(); @@ -118,25 +114,6 @@ void SharkFunction::initialize() block(i)->emit_IR(); } do_deferred_zero_checks(); - - // Dump the bitcode, if requested - if (SharkPrintBitcodeOf != NULL) { - if (!fnmatch(SharkPrintBitcodeOf, name(), 0)) - function()->dump(); - } - - // Compile to native code - entry->set_entry_point(compiler()->compile(name(), function())); - - // Register generated code for profiling, etc - if (JvmtiExport::should_post_dynamic_code_generated()) { - JvmtiExport::post_dynamic_code_generated( - name(), entry->code_start(), entry->code_limit()); - } - - // Print statistics, if requested - if (SharkTraceInstalls) - entry->print_statistics(name()); } void SharkFunction::CreateInitZeroStack() diff -r 6690b58a6c66 -r 3d97a22bbdab ports/hotspot/src/share/vm/shark/sharkFunction.hpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Fri Jun 19 03:59:26 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Fri Jun 19 06:03:31 2009 -0400 @@ -28,26 +28,31 @@ class DeferredZeroCheck; class SharkFunction : public SharkTargetInvariants { public: + static llvm::Function* build(SharkCompiler* compiler, + ciEnv* env, + ciTypeFlow* flow, + const char* name) + { + SharkFunction function(compiler, env, flow, name); + return function.function(); + } + + private: SharkFunction(SharkCompiler* compiler, ciEnv* env, ciTypeFlow* flow, const char* name) - : SharkTargetInvariants(compiler, env, flow), _name(name) { initialize(); } - - private: - void initialize(); - - private: - const char* _name; + : SharkTargetInvariants(compiler, env, flow) { initialize(name); } + + private: + void initialize(const char* name); + + private: llvm::Function* _function; SharkTopLevelBlock** _blocks; GrowableArray _deferred_zero_checks; public: - const char* name() const - { - return _name; - } llvm::Function* function() const { return _function; diff -r 6690b58a6c66 -r 3d97a22bbdab ports/hotspot/src/share/vm/shark/sharkInvariants.hpp --- a/ports/hotspot/src/share/vm/shark/sharkInvariants.hpp Fri Jun 19 03:59:26 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkInvariants.hpp Fri Jun 19 06:03:31 2009 -0400 @@ -93,10 +93,6 @@ class SharkCompileInvariants : public Re { return compiler()->builder(); } - SharkMemoryManager* memory_manager() const - { - return compiler()->memory_manager(); - } DebugInformationRecorder* debug_info() const { return env()->debug_info(); From xerxes at zafena.se Mon Aug 3 10:31:23 2009 From: xerxes at zafena.se (Xerxes R?nby) Date: Mon, 03 Aug 2009 17:31:23 +0000 Subject: changeset in /hg/icedtea: 2009-07-09 Xerxes R?nby changeset 2a3a4c5b35e0 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=2a3a4c5b35e0 description: 2009-07-09 Xerxes R?nby * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::SharkBuilder): Pass the LLVMContext returned from getGlobalContext() to the new IRBuilder constructor when llvm version are 2.6 or later to handle LLVM API change. * ports/hotspot/src/share/vm/shark/sharkMemoryManager.cpp: New methods allocateGlobal, setPoisonMemory, dependent on the llvm version. * ports/hotspot/src/share/vm/shark/sharkMemoryManager.hpp: Likewise. diffstat: 4 files changed, 31 insertions(+) ChangeLog | 12 ++++++++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 7 +++++++ ports/hotspot/src/share/vm/shark/sharkMemoryManager.cpp | 10 ++++++++++ ports/hotspot/src/share/vm/shark/sharkMemoryManager.hpp | 2 ++ diffs (76 lines): diff -r d29fab296cd2 -r 2a3a4c5b35e0 ChangeLog --- a/ChangeLog Wed Jul 08 11:28:08 2009 +0200 +++ b/ChangeLog Thu Jul 09 12:49:11 2009 +0200 @@ -1,3 +1,15 @@ 2009-07-08 Xerxes R??nby + + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::SharkBuilder): Pass the LLVMContext returned + from getGlobalContext() to the new IRBuilder constructor + when llvm version are 2.6 or later to handle LLVM API change. + * ports/hotspot/src/share/vm/shark/sharkMemoryManager.cpp: + New methods allocateGlobal, setPoisonMemory, dependent on the + llvm version. + * ports/hotspot/src/share/vm/shark/sharkMemoryManager.hpp: + Likewise. + 2009-07-08 Xerxes R??nby * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp diff -r d29fab296cd2 -r 2a3a4c5b35e0 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Wed Jul 08 11:28:08 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Jul 09 12:49:11 2009 +0200 @@ -61,7 +61,14 @@ extern "C" { #endif SharkBuilder::SharkBuilder(SharkCompiler* compiler) +#if SHARK_LLVM_VERSION >= 26 + // LLVM 2.6 requires a LLVMContext during IRBuilder construction. + // getGlobalConext() returns one that can be used as long as the shark + // compiler are single-threaded. + : IRBuilder<>(getGlobalContext()), +#else : IRBuilder<>(), +#endif _compiler(compiler) { init_external_functions(); diff -r d29fab296cd2 -r 2a3a4c5b35e0 ports/hotspot/src/share/vm/shark/sharkMemoryManager.cpp --- a/ports/hotspot/src/share/vm/shark/sharkMemoryManager.cpp Wed Jul 08 11:28:08 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkMemoryManager.cpp Thu Jul 09 12:49:11 2009 +0200 @@ -92,6 +92,11 @@ void SharkMemoryManager::deallocateMemFo } #if SHARK_LLVM_VERSION >= 26 +uint8_t* SharkMemoryManager::allocateGlobal(uintptr_t Size, unsigned int Alignment) +{ + return mm()->allocateGlobal(Size, Alignment); +} + void* SharkMemoryManager::getDlsymTable() const { return mm()->getDlsymTable(); @@ -100,6 +105,11 @@ void SharkMemoryManager::SetDlsymTable(v void SharkMemoryManager::SetDlsymTable(void *ptr) { mm()->SetDlsymTable(ptr); +} + +void SharkMemoryManager::setPoisonMemory(bool poison) +{ + mm()->setPoisonMemory(poison); } #endif diff -r d29fab296cd2 -r 2a3a4c5b35e0 ports/hotspot/src/share/vm/shark/sharkMemoryManager.hpp --- a/ports/hotspot/src/share/vm/shark/sharkMemoryManager.hpp Wed Jul 08 11:28:08 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkMemoryManager.hpp Thu Jul 09 12:49:11 2009 +0200 @@ -74,6 +74,8 @@ class SharkMemoryManager : public llvm:: #if SHARK_LLVM_VERSION >= 26 void* getDlsymTable() const; void SetDlsymTable(void *ptr); + void setPoisonMemory(bool); + uint8_t* allocateGlobal(uintptr_t, unsigned int); #endif void setMemoryWritable(); void setMemoryExecutable(); From gbenson at redhat.com Mon Aug 3 10:31:25 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:25 +0000 Subject: changeset in /hg/icedtea: 2009-07-30 Gary Benson changeset 9a952e506f16 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=9a952e506f16 description: 2009-07-30 Gary Benson * ports/hotspot/src/share/vm/shark/sharkRuntime.hpp: * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp: Moved everything except the actual methods called by JIT-compiled code into SharkBuilder. * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Merged code to create LLVM callable objects for runtime methods from SharkRuntime, and refactored it (and the existing code to create LLVM callable objects for LLVM intrinsics) to create such objects on the fly. * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp (SharkCompiler::_builder): Removed. (SharkCompiler::builder): Likewise. * ports/hotspot/src/share/vm/shark/sharkInvariants.hpp (SharkCompileInvariants::SharkCompileInvariants): Take a new argument, builder, and store it. (SharkCompileInvariants::builder): Updated. (SharkCompileInvariants::code_buffer): New method. (SharkTargetInvariants::SharkTargetInvariants): Take a new argument, builder, and pass it along to SharkCompileInvariants constructor. * ports/hotspot/src/share/vm/shark/sharkFunction.hpp (SharkFunction::build): Take a new argument, builder, and pass it along to SharkFunction consructor. (SharkFunction::SharkFunction): Take a new argument, builder, and pass it along to SharkTargetInvariants consructor. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::SharkCompiler): Remove builder creation and SharkRuntime initialization. (SharkCompiler::compile_method): Create builder and pass it to SharkFunction::build. * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::parse_bytecode): Updated for new style calls. * ports/hotspot/src/share/vm/shark/sharkIntrinsics.hpp (SharkIntrinsics::do_Math_1to1): Likewise. (SharkIntrinsics::do_Math_2to1): Likewise. * ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp (SharkIntrinsics::do_intrinsic): Likewise. (SharkIntrinsics::do_Math_1to1): Likewise. (SharkIntrinsics::do_Math_2to1): Likewise. (SharkIntrinsics::do_System_currentTimeMillis): Likewise. (SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise. * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp (SharkTopLevelBlock::call_vm): Likewise. * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp (SharkTopLevelBlock::zero_check_value): Likewise. (SharkTopLevelBlock::check_bounds): Likewise. (SharkTopLevelBlock::maybe_add_safepoint): Likewise. (SharkTopLevelBlock::do_trap): Likewise. (SharkTopLevelBlock::call_register_finalizer): Likewise. (SharkTopLevelBlock::get_interface_callee): Likewise. (SharkTopLevelBlock::do_new): Likewise. (SharkTopLevelBlock::do_newarray): Likewise. (SharkTopLevelBlock::do_anewarray): Likewise. (SharkTopLevelBlock::do_multianewarray): Likewise. (SharkTopLevelBlock::acquire_lock): Likewise. (SharkTopLevelBlock::release_lock): Likewise. * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp (SharkDecacher::start_frame): Updated for new style codebuffer access. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Likewise. * ports/hotspot/src/share/vm/shark/llvmValue.hpp (LLVMValue::bit_constant): New method. * ports/hotspot/src/share/vm/shark/sharkBlock.hpp (SharkBlock::call_vm_leaf): Removed. * ports/hotspot/src/share/vm/includeDB_shark: Updated. diffstat: 19 files changed, 902 insertions(+), 1060 deletions(-) ChangeLog | 76 + ports/hotspot/src/share/vm/includeDB_shark | 7 ports/hotspot/src/share/vm/shark/llvmValue.hpp | 10 ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 12 ports/hotspot/src/share/vm/shark/sharkBlock.hpp | 7 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 779 ++++++++++----- ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 426 ++------ ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp | 2 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 13 ports/hotspot/src/share/vm/shark/sharkCompiler.hpp | 7 ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 2 ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 6 ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp | 28 ports/hotspot/src/share/vm/shark/sharkIntrinsics.hpp | 4 ports/hotspot/src/share/vm/shark/sharkInvariants.hpp | 35 ports/hotspot/src/share/vm/shark/sharkRuntime.cpp | 267 ----- ports/hotspot/src/share/vm/shark/sharkRuntime.hpp | 191 --- ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 54 - ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp | 36 diffs (truncated from 2632 to 500 lines): diff -r 1791126ef6df -r 9a952e506f16 ChangeLog --- a/ChangeLog Fri Jul 17 06:04:59 2009 -0400 +++ b/ChangeLog Thu Jul 30 04:51:32 2009 -0400 @@ -1,3 +1,79 @@ 2009-07-17 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkRuntime.hpp: + * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp: + Moved everything except the actual methods called by + JIT-compiled code into SharkBuilder. + + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + Merged code to create LLVM callable objects for runtime + methods from SharkRuntime, and refactored it (and the + existing code to create LLVM callable objects for LLVM + intrinsics) to create such objects on the fly. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp + (SharkCompiler::_builder): Removed. + (SharkCompiler::builder): Likewise. + * ports/hotspot/src/share/vm/shark/sharkInvariants.hpp + (SharkCompileInvariants::SharkCompileInvariants): Take a new + argument, builder, and store it. + (SharkCompileInvariants::builder): Updated. + (SharkCompileInvariants::code_buffer): New method. + (SharkTargetInvariants::SharkTargetInvariants): Take a new + argument, builder, and pass it along to SharkCompileInvariants + constructor. + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::build): Take a new argument, builder, and pass + it along to SharkFunction consructor. + (SharkFunction::SharkFunction): Take a new argument, builder, + and pass it along to SharkTargetInvariants consructor. + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::SharkCompiler): Remove builder creation and + SharkRuntime initialization. + (SharkCompiler::compile_method): Create builder and pass it + to SharkFunction::build. + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::parse_bytecode): Updated for new style calls. + * ports/hotspot/src/share/vm/shark/sharkIntrinsics.hpp + (SharkIntrinsics::do_Math_1to1): Likewise. + (SharkIntrinsics::do_Math_2to1): Likewise. + * ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp + (SharkIntrinsics::do_intrinsic): Likewise. + (SharkIntrinsics::do_Math_1to1): Likewise. + (SharkIntrinsics::do_Math_2to1): Likewise. + (SharkIntrinsics::do_System_currentTimeMillis): Likewise. + (SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise. + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp + (SharkTopLevelBlock::call_vm): Likewise. + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp + (SharkTopLevelBlock::zero_check_value): Likewise. + (SharkTopLevelBlock::check_bounds): Likewise. + (SharkTopLevelBlock::maybe_add_safepoint): Likewise. + (SharkTopLevelBlock::do_trap): Likewise. + (SharkTopLevelBlock::call_register_finalizer): Likewise. + (SharkTopLevelBlock::get_interface_callee): Likewise. + (SharkTopLevelBlock::do_new): Likewise. + (SharkTopLevelBlock::do_newarray): Likewise. + (SharkTopLevelBlock::do_anewarray): Likewise. + (SharkTopLevelBlock::do_multianewarray): Likewise. + (SharkTopLevelBlock::acquire_lock): Likewise. + (SharkTopLevelBlock::release_lock): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp + (SharkDecacher::start_frame): Updated for new style codebuffer access. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Likewise. + + * ports/hotspot/src/share/vm/shark/llvmValue.hpp + (LLVMValue::bit_constant): New method. + + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock::call_vm_leaf): Removed. + + * ports/hotspot/src/share/vm/includeDB_shark: Updated. + 2009-07-17 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp diff -r 1791126ef6df -r 9a952e506f16 ports/hotspot/src/share/vm/includeDB_shark --- a/ports/hotspot/src/share/vm/includeDB_shark Fri Jul 17 06:04:59 2009 -0400 +++ b/ports/hotspot/src/share/vm/includeDB_shark Thu Jul 30 04:51:32 2009 -0400 @@ -72,7 +72,6 @@ sharkBlock.cpp sharkBlock.cpp sharkBlock.hpp sharkBlock.cpp sharkBuilder.hpp sharkBlock.cpp sharkConstant.hpp -sharkBlock.cpp sharkRuntime.hpp sharkBlock.cpp sharkState.hpp sharkBlock.cpp sharkValue.hpp @@ -149,7 +148,6 @@ sharkCompiler.cpp sharkCompiler.cpp sharkEntry.hpp sharkCompiler.cpp sharkFunction.hpp sharkCompiler.cpp sharkMemoryManager.hpp -sharkCompiler.cpp sharkRuntime.hpp sharkCompiler.hpp abstractCompiler.hpp sharkCompiler.hpp ciEnv.hpp @@ -212,7 +210,6 @@ sharkIntrinsics.cpp sharkIntrinsics.cpp llvmHeaders.hpp sharkIntrinsics.cpp shark_globals.hpp sharkIntrinsics.cpp sharkIntrinsics.hpp -sharkIntrinsics.cpp sharkRuntime.hpp sharkIntrinsics.cpp sharkState.hpp sharkIntrinsics.cpp sharkValue.hpp @@ -246,15 +243,12 @@ sharkRuntime.cpp sharkRuntime.cpp deoptimization.hpp sharkRuntime.cpp llvmHeaders.hpp sharkRuntime.cpp klassOop.hpp -sharkRuntime.cpp sharkBuilder.hpp sharkRuntime.cpp sharkRuntime.hpp -sharkRuntime.cpp sharkType.hpp sharkRuntime.cpp thread.hpp sharkRuntime.hpp allocation.hpp sharkRuntime.hpp llvmHeaders.hpp sharkRuntime.hpp klassOop.hpp -sharkRuntime.hpp sharkBuilder.hpp sharkRuntime.hpp thread.hpp sharkState.cpp allocation.hpp @@ -298,7 +292,6 @@ sharkTopLevelBlock.cpp sharkTopLevelBlock.cpp sharkBuilder.hpp sharkTopLevelBlock.cpp sharkConstant.hpp sharkTopLevelBlock.cpp sharkInliner.hpp -sharkTopLevelBlock.cpp sharkRuntime.hpp sharkTopLevelBlock.cpp sharkState.hpp sharkTopLevelBlock.cpp sharkValue.hpp diff -r 1791126ef6df -r 9a952e506f16 ports/hotspot/src/share/vm/shark/llvmValue.hpp --- a/ports/hotspot/src/share/vm/shark/llvmValue.hpp Fri Jul 17 06:04:59 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/llvmValue.hpp Thu Jul 30 04:51:32 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -77,6 +77,14 @@ class LLVMValue : public AllStatic { } public: + static llvm::ConstantInt* bit_constant(int value) + { +#if SHARK_LLVM_VERSION >= 26 + return llvm::getGlobalContext().getConstantInt(llvm::Type::Int1Ty, value, false); +#else + return llvm::ConstantInt::get(llvm::Type::Int1Ty, value, false); +#endif + } static llvm::ConstantInt* intptr_constant(intptr_t value) { #if SHARK_LLVM_VERSION >= 26 diff -r 1791126ef6df -r 9a952e506f16 ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Fri Jul 17 06:04:59 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Jul 30 04:51:32 2009 -0400 @@ -694,11 +694,13 @@ void SharkBlock::parse_bytecode(int star case Bytecodes::_f2i: push(SharkValue::create_jint( - call_vm_leaf(SharkRuntime::f2i(), pop()->jfloat_value()), false)); + builder()->CreateCall( + builder()->f2i(), pop()->jfloat_value()), false)); break; case Bytecodes::_f2l: push(SharkValue::create_jlong( - call_vm_leaf(SharkRuntime::f2l(), pop()->jfloat_value()), false)); + builder()->CreateCall( + builder()->f2l(), pop()->jfloat_value()), false)); break; case Bytecodes::_f2d: push(SharkValue::create_jdouble( @@ -708,11 +710,13 @@ void SharkBlock::parse_bytecode(int star case Bytecodes::_d2i: push(SharkValue::create_jint( - call_vm_leaf(SharkRuntime::d2i(), pop()->jdouble_value()), false)); + builder()->CreateCall( + builder()->d2i(), pop()->jdouble_value()), false)); break; case Bytecodes::_d2l: push(SharkValue::create_jlong( - call_vm_leaf(SharkRuntime::d2l(), pop()->jdouble_value()), false)); + builder()->CreateCall( + builder()->d2l(), pop()->jdouble_value()), false)); break; case Bytecodes::_d2f: push(SharkValue::create_jfloat( diff -r 1791126ef6df -r 9a952e506f16 ports/hotspot/src/share/vm/shark/sharkBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Fri Jul 17 06:04:59 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Jul 30 04:51:32 2009 -0400 @@ -174,13 +174,6 @@ class SharkBlock : public SharkTargetInv protected: virtual void do_zero_check(SharkValue* value); - // Leaf calls - protected: - llvm::CallInst* call_vm_leaf(llvm::Constant* callee, llvm::Value* arg1) - { - return builder()->CreateCall(callee, arg1); - } - // Zero checking protected: void check_null(SharkValue* object) diff -r 1791126ef6df -r 9a952e506f16 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Jul 17 06:04:59 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Jul 30 04:51:32 2009 -0400 @@ -28,39 +28,7 @@ using namespace llvm; -#ifdef ARM -/* - * ARM lacks atomic operation implementation in LLVM - * http://llvm.org/bugs/show_bug.cgi?id=3877 - * - * These two functions zero_cmpxchg_int_fn and zero_cmpxchg_ptr_fn - * are defined so that they can be inserted into llvm as a workaround to - * make shark reroute all atomic calls back to the implementation in zero. - * The actual insertion are done in SharkBuilder::init_external_functions(). - */ - -extern "C" { - jint zero_cmpxchg_int_fn(volatile jint *ptr, - jint *oldval, - jint *newval) - { - return Atomic::cmpxchg(*newval, - ptr, - *oldval); - } - - intptr_t* zero_cmpxchg_ptr_fn(volatile void* ptr, - intptr_t* oldval, - intptr_t* newval) - { - return (intptr_t *) Atomic::cmpxchg_ptr((void *) newval, - ptr, - (void *) oldval); - } -}; -#endif - -SharkBuilder::SharkBuilder(SharkCompiler* compiler) +SharkBuilder::SharkBuilder(Module* module, SharkCodeBuffer* code_buffer) #if SHARK_LLVM_VERSION >= 26 // LLVM 2.6 requires a LLVMContext during IRBuilder construction. // getGlobalConext() returns one that can be used as long as the shark @@ -68,149 +36,480 @@ SharkBuilder::SharkBuilder(SharkCompiler : IRBuilder<>(getGlobalContext()), #else : IRBuilder<>(), -#endif - _compiler(compiler) -{ - init_external_functions(); -} - -Constant* SharkBuilder::make_function(intptr_t addr, - const FunctionType* sig, - const char* name) -{ - Constant *func = make_pointer(addr, sig); +#endif // SHARK_LLVM_VERSION >= 26 + _module(module), + _code_buffer(code_buffer) +{ +} + +// Helpers for accessing structures +Value* SharkBuilder::CreateAddressOfStructEntry(Value* base, + ByteSize offset, + const Type* type, + const char* name) +{ + return CreateBitCast(CreateStructGEP(base, in_bytes(offset)), type, name); +} + +LoadInst* SharkBuilder::CreateValueOfStructEntry(Value* base, + ByteSize offset, + const Type* type, + const char* name) +{ + return CreateLoad( + CreateAddressOfStructEntry( + base, offset, PointerType::getUnqual(type)), + name); +} + +// Helpers for accessing arrays + +LoadInst* SharkBuilder::CreateArrayLength(Value* arrayoop) +{ + return CreateValueOfStructEntry( + arrayoop, in_ByteSize(arrayOopDesc::length_offset_in_bytes()), + SharkType::jint_type(), "length"); +} + +Value* SharkBuilder::CreateArrayAddress(Value* arrayoop, + const Type* element_type, + int element_bytes, + ByteSize base_offset, + Value* index, + const char* name) +{ + Value* offset = CreateIntCast(index, SharkType::intptr_type(), false); + if (element_bytes != 1) + offset = CreateShl( + offset, + LLVMValue::intptr_constant(exact_log2(element_bytes))); + offset = CreateAdd( + LLVMValue::intptr_constant(in_bytes(base_offset)), offset); + + return CreateIntToPtr( + CreateAdd(CreatePtrToInt(arrayoop, SharkType::intptr_type()), offset), + PointerType::getUnqual(element_type), + name); +} + +Value* SharkBuilder::CreateArrayAddress(Value* arrayoop, + BasicType basic_type, + ByteSize base_offset, + Value* index, + const char* name) +{ + return CreateArrayAddress( + arrayoop, + SharkType::to_arrayType(basic_type), + type2aelembytes(basic_type), + base_offset, index, name); +} + +Value* SharkBuilder::CreateArrayAddress(Value* arrayoop, + BasicType basic_type, + Value* index, + const char* name) +{ + return CreateArrayAddress( + arrayoop, basic_type, + in_ByteSize(arrayOopDesc::base_offset_in_bytes(basic_type)), + index, name); +} + +// Helpers for creating intrinsics and external functions. + +const Type* SharkBuilder::make_type(char type, bool void_ok) +{ + switch (type) { + // Primitive types + case 'c': + return SharkType::jbyte_type(); + case 'i': + return SharkType::jint_type(); + case 'l': + return SharkType::jlong_type(); + case 'x': + return SharkType::intptr_type(); + case 'f': + return SharkType::jfloat_type(); + case 'd': + return SharkType::jdouble_type(); + + // Pointers to primitive types + case 'C': + case 'I': + case 'L': + case 'X': + case 'F': + case 'D': + return PointerType::getUnqual(make_type(tolower(type), false)); + + // VM objects + case 'T': + return SharkType::thread_type(); + case 'M': + return PointerType::getUnqual(SharkType::monitor_type()); + case 'O': + return SharkType::oop_type(); + + // Miscellaneous + case 'v': + assert(void_ok, "should be"); + return Type::VoidTy; + case '1': + return Type::Int1Ty; + + default: + ShouldNotReachHere(); + } +} + +const FunctionType* SharkBuilder::make_ftype(const char* params, + const char* ret) +{ + std::vector param_types; + for (const char* c = params; *c; c++) + param_types.push_back(make_type(*c, false)); + + assert(strlen(ret) == 1, "should be"); + const Type *return_type = make_type(*ret, true); + + return FunctionType::get(return_type, param_types, false); +} + +// Create an object representing an intrinsic or external function by +// referencing the symbol by name. This is the LLVM-style approach, +// but it cannot be used on functions within libjvm.so its symbols +// are not exported. Note that you cannot make this work simply by +// exporting the symbols, as some symbols have the same names as +// symbols in the standard libraries (eg, atan2, fabs) and would +// obscure them were they visible. +Value* SharkBuilder::make_function(const char* name, + const char* params, + const char* ret) +{ + return module()->getOrInsertFunction(name, make_ftype(params, ret)); +} + +// Create an object representing an external function by inlining a +// function pointer in the code. This is not the LLVM way, but it's +// the only way to access functions in libjvm.so and functions like +// __kernel_dmb on ARM which is accessed via an absolute address. +Value* SharkBuilder::make_function(address func, + const char* params, + const char* ret) +{ + return CreateIntToPtr( + LLVMValue::intptr_constant((intptr_t) func), + PointerType::getUnqual(make_ftype(params, ret))); +} + +// VM calls + +Value* SharkBuilder::find_exception_handler() +{ + return make_function( + (address) SharkRuntime::find_exception_handler, "TIi", "i"); +} + +Value* SharkBuilder::monitorenter() +{ + return make_function((address) SharkRuntime::monitorenter, "TM", "v"); +} + +Value* SharkBuilder::monitorexit() +{ + return make_function((address) SharkRuntime::monitorexit, "TM", "v"); +} + +Value* SharkBuilder::new_instance() +{ + return make_function((address) SharkRuntime::new_instance, "Ti", "v"); +} + +Value* SharkBuilder::newarray() +{ + return make_function((address) SharkRuntime::newarray, "Tii", "v"); +} + +Value* SharkBuilder::anewarray() +{ + return make_function((address) SharkRuntime::anewarray, "Tii", "v"); +} + +Value* SharkBuilder::multianewarray() +{ + return make_function((address) SharkRuntime::multianewarray, "TiiI", "v"); +} + +Value* SharkBuilder::register_finalizer() +{ + return make_function((address) SharkRuntime::register_finalizer, "TO", "v"); +} + +Value* SharkBuilder::safepoint() +{ + return make_function((address) SafepointSynchronize::block, "T", "v"); +} + +Value* SharkBuilder::throw_ArrayIndexOutOfBoundsException() +{ + return make_function( + (address) SharkRuntime::throw_ArrayIndexOutOfBoundsException, "TCii", "v"); +} + +Value* SharkBuilder::throw_NullPointerException() +{ + return make_function( + (address) SharkRuntime::throw_NullPointerException, "TCi", "v"); +} + +// High-level non-VM calls From xerxes at zafena.se Mon Aug 3 10:31:23 2009 From: xerxes at zafena.se (Xerxes R?nby) Date: Mon, 03 Aug 2009 17:31:23 +0000 Subject: changeset in /hg/icedtea: 2009-07-15 Xerxes R?nby changeset 10b3039fa024 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=10b3039fa024 description: 2009-07-15 Xerxes R?nby * ports/hotspot/src/share/vm/shark/llvmValue.hpp (jbyte_constant): Handle LLVM 2.6 svn r75703 API change. llvm::ConstantInt::get have been moved to llvm::LLVMContext::getConstantInt. (jint_constant): Likewise. (jlong_constant): Likewise. (intptr_constant): Likewise. * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::CreateMemoryBarrier): Likewise. (SharkBuilder::CreateDump): llvm::ConstantArray::get have been moved to llvm::LLVMContext::getConstantArray. diffstat: 3 files changed, 44 insertions(+) ChangeLog | 14 ++++++++++++++ ports/hotspot/src/share/vm/shark/llvmValue.hpp | 16 ++++++++++++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 14 ++++++++++++++ diffs (101 lines): diff -r 022c97ae92d2 -r 10b3039fa024 ChangeLog --- a/ChangeLog Tue Jul 14 12:55:48 2009 +0200 +++ b/ChangeLog Wed Jul 15 12:56:10 2009 +0200 @@ -1,3 +1,17 @@ 2009-07-14 Xerxes R??nby + + * ports/hotspot/src/share/vm/shark/llvmValue.hpp + (jbyte_constant): Handle LLVM 2.6 svn r75703 API change. + llvm::ConstantInt::get have been moved to + llvm::LLVMContext::getConstantInt. + (jint_constant): Likewise. + (jlong_constant): Likewise. + (intptr_constant): Likewise. + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::CreateMemoryBarrier): Likewise. + (SharkBuilder::CreateDump): llvm::ConstantArray::get have been + moved to llvm::LLVMContext::getConstantArray. + 2009-07-14 Xerxes R??nby * ports/hotspot/src/share/vm/shark/llvmValue.hpp diff -r 022c97ae92d2 -r 10b3039fa024 ports/hotspot/src/share/vm/shark/llvmValue.hpp --- a/ports/hotspot/src/share/vm/shark/llvmValue.hpp Tue Jul 14 12:55:48 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/llvmValue.hpp Wed Jul 15 12:56:10 2009 +0200 @@ -27,15 +27,27 @@ class LLVMValue : public AllStatic { public: static llvm::ConstantInt* jbyte_constant(jbyte value) { +#if SHARK_LLVM_VERSION >= 26 + return llvm::getGlobalContext().getConstantInt(SharkType::jbyte_type(), value, true); +#else return llvm::ConstantInt::get(SharkType::jbyte_type(), value, true); +#endif } static llvm::ConstantInt* jint_constant(jint value) { +#if SHARK_LLVM_VERSION >= 26 + return llvm::getGlobalContext().getConstantInt(SharkType::jint_type(), value, true); +#else return llvm::ConstantInt::get(SharkType::jint_type(), value, true); +#endif } static llvm::ConstantInt* jlong_constant(jlong value) { +#if SHARK_LLVM_VERSION >= 26 + return llvm::getGlobalContext().getConstantInt(SharkType::jlong_type(), value, true); +#else return llvm::ConstantInt::get(SharkType::jlong_type(), value, true); +#endif } #if SHARK_LLVM_VERSION >= 26 static llvm::Constant* jfloat_constant(jfloat value) @@ -67,6 +79,10 @@ class LLVMValue : public AllStatic { public: static llvm::ConstantInt* intptr_constant(intptr_t value) { +#if SHARK_LLVM_VERSION >= 26 + return llvm::getGlobalContext().getConstantInt(SharkType::intptr_type(), value, false); +#else return llvm::ConstantInt::get(SharkType::intptr_type(), value, false); +#endif } }; diff -r 022c97ae92d2 -r 10b3039fa024 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Tue Jul 14 12:55:48 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Wed Jul 15 12:56:10 2009 +0200 @@ -187,9 +187,15 @@ CallInst* SharkBuilder::CreateDump(llvm: { Constant *const_name; if (value->hasName()) +#if SHARK_LLVM_VERSION >= 26 + const_name = getGlobalContext().getConstantArray(value->getName()); + else + const_name = getGlobalContext().getConstantArray("unnamed_value"); +#else const_name = ConstantArray::get(value->getName()); else const_name = ConstantArray::get("unnamed_value"); +#endif Value *name = CreatePtrToInt( CreateStructGEP( @@ -260,10 +266,18 @@ CallInst *SharkBuilder::CreateMemoryBarr CallInst *SharkBuilder::CreateMemoryBarrier(BarrierFlags flags) { Value *args[] = { +#if SHARK_LLVM_VERSION >= 26 + getGlobalContext().getConstantInt(Type::Int1Ty, (flags & BARRIER_LOADLOAD) ? 1 : 0), + getGlobalContext().getConstantInt(Type::Int1Ty, (flags & BARRIER_LOADSTORE) ? 1 : 0), + getGlobalContext().getConstantInt(Type::Int1Ty, (flags & BARRIER_STORELOAD) ? 1 : 0), + getGlobalContext().getConstantInt(Type::Int1Ty, (flags & BARRIER_STORESTORE) ? 1 : 0), + getGlobalContext().getConstantInt(Type::Int1Ty, 0)}; +#else ConstantInt::get(Type::Int1Ty, (flags & BARRIER_LOADLOAD) ? 1 : 0), ConstantInt::get(Type::Int1Ty, (flags & BARRIER_LOADSTORE) ? 1 : 0), ConstantInt::get(Type::Int1Ty, (flags & BARRIER_STORELOAD) ? 1 : 0), ConstantInt::get(Type::Int1Ty, (flags & BARRIER_STORESTORE) ? 1 : 0), ConstantInt::get(Type::Int1Ty, 0)}; +#endif return CreateCall(llvm_memory_barrier_fn(), args, args + 5); } From gbenson at redhat.com Mon Aug 3 10:31:24 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 03 Aug 2009 17:31:24 +0000 Subject: changeset in /hg/icedtea: 2009-07-17 Gary Benson changeset 1791126ef6df in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=1791126ef6df description: 2009-07-17 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp (SharkBuilder::pointer_constant): Conditionalize a hack. diffstat: 2 files changed, 9 insertions(+), 6 deletions(-) ChangeLog | 5 +++++ ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 10 ++++------ diffs (45 lines): diff -r 10b3039fa024 -r 1791126ef6df ChangeLog --- a/ChangeLog Wed Jul 15 12:56:10 2009 +0200 +++ b/ChangeLog Fri Jul 17 06:04:59 2009 -0400 @@ -1,3 +1,8 @@ 2009-07-15 Xerxes R??nby + + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp + (SharkBuilder::pointer_constant): Conditionalize a hack. + 2009-07-15 Xerxes R??nby * ports/hotspot/src/share/vm/shark/llvmValue.hpp diff -r 10b3039fa024 -r 1791126ef6df ports/hotspot/src/share/vm/shark/sharkBuilder.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Wed Jul 15 12:56:10 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Fri Jul 17 06:04:59 2009 -0400 @@ -156,6 +156,9 @@ class SharkBuilder : public llvm::IRBuil llvm::Constant* pointer_constant(const void *ptr) { +#if SHARK_LLVM_VERSION >= 25 || !defined(AMD64) + return LLVMValue::intptr_constant((intptr_t) ptr); +#else // Create a pointer constant that points at PTR. We do this by // creating a GlobalVariable mapped at PTR. This is a workaround // for http://www.llvm.org/bugs/show_bug.cgi?id=2920 @@ -175,18 +178,13 @@ class SharkBuilder : public llvm::IRBuil snprintf(name, sizeof name - 1, "pointer_constant_%p", ptr); GlobalVariable *value = new GlobalVariable( -#if SHARK_LLVM_VERSION >= 26 - // LLVM 2.6 requires a LLVMContext during GlobalVariable construction. - // getGlobalConext() returns one that can be used as long as the shark - // compiler are single-threaded. - getGlobalContext(), -#endif SharkType::intptr_type(), false, GlobalValue::ExternalLinkage, NULL, name, module()); execution_engine()->addGlobalMapping(value, const_cast(ptr)); return ConstantExpr::getPtrToInt(value, SharkType::intptr_type()); +#endif // SHARK_LLVM_VERSION >= 25 || !AMD64 } // Helper for making pointers From gnu_andrew at member.fsf.org Mon Aug 3 11:03:11 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 3 Aug 2009 19:03:11 +0100 Subject: Shark and IcedTea7 Message-ID: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> I've forwardported the latest IcedTea6 changest to Shark to 7 and pushed them. However, I haven't been able to successfully build with them. The version of LLVM with which I was building was apparently now too old. It seems the latest SVN may be too new: In file included from ../generated/incls/_sharkBuilder.cpp.incl:3, from /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/sharkBuilder.cpp:27: /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: In static member function 'static llvm::ConstantInt* LLVMValue::jbyte_constant(jbyte)': /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:31: error: 'class llvm::LLVMContext' has no member named 'getConstantInt' /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: In static member function 'static llvm::ConstantInt* LLVMValue::jint_constant(jint)': /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:39: error: 'class llvm::LLVMContext' has no member named 'getConstantInt' /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: In static member function 'static llvm::ConstantInt* LLVMValue::jlong_constant(jlong)': /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:47: error: 'class llvm::LLVMContext' has no member named 'getConstantInt' /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: In static member function 'static llvm::Constant* LLVMValue::jfloat_constant(jfloat)': /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:55: error: 'class llvm::LLVMContext' has no member named 'getConstantFP' /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: In static member function 'static llvm::Constant* LLVMValue::jdouble_constant(jdouble)': /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:66: error: 'class llvm::LLVMContext' has no member named 'getConstantFP' /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: In static member function 'static llvm::ConstantInt* LLVMValue::bit_constant(int)': /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:83: error: 'class llvm::LLVMContext' has no member named 'getConstantInt' /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: In static member function 'static llvm::ConstantInt* LLVMValue::intptr_constant(intptr_t)': /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:91: error: 'class llvm::LLVMContext' has no member named 'getConstantInt' make[7]: *** [sharkCompiler.o] Error 1 There was a change to the file containing getConstantInt last Thursday: ------------------------------------------------------------------------ r77583 | evancheng | 2009-07-30 09:44:08 +0100 (Thu, 30 Jul 2009) | 4 lines I've changed the semantics of MERGE_VALUES a bit. It's now allowed to live until scheduling. It's deleted when the scheduler translate DAG nodes to machine instructions. This is currently used by X86 to handle atomic_load_add when the output of the node is not used. I believe there is a better solution. But I find MERGE_VALUES useful for selecting multi-output node when the dead output can be selected as a IMPLICIT_DEF. but this only seems to have altered a comment. Any ideas? I've pushed because I assume that those working with Shark have been successfully building it even if I can't... :) -- 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 gbenson at redhat.com Tue Aug 4 02:48:53 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 4 Aug 2009 10:48:53 +0100 Subject: Shark and IcedTea7 In-Reply-To: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> Message-ID: <20090804094852.GA3351@redhat.com> Andrew John Hughes wrote: > I've forwardported the latest IcedTea6 changest to Shark to 7 and > pushed them. However, I haven't been able to successfully build > with them. The version of LLVM with which I was building was > apparently now too old. It seems the latest SVN may be too new: Can you build with 2.5? SVN changes too much to guarantee anything. Cheers, Gary -- http://gbenson.net/ From doko at ubuntu.com Tue Aug 4 03:05:12 2009 From: doko at ubuntu.com (Matthias Klose) Date: Tue, 04 Aug 2009 12:05:12 +0200 Subject: Shark and IcedTea7 In-Reply-To: <20090804094852.GA3351@redhat.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> <20090804094852.GA3351@redhat.com> Message-ID: <4A7807D8.9010108@ubuntu.com> On 04.08.2009 11:48, Gary Benson wrote: > Andrew John Hughes wrote: >> I've forwardported the latest IcedTea6 changest to Shark to 7 and >> pushed them. However, I haven't been able to successfully build >> with them. The version of LLVM with which I was building was >> apparently now too old. It seems the latest SVN may be too new: > > Can you build with 2.5? SVN changes too much to guarantee anything. llvm goes in API freeze in late August. Maybe it's worth to either look at recent changes just before we release IcedTea6 1.6, or allow changes for a 1.6.1 which lets build with llvm 2.6. From gnu_andrew at member.fsf.org Tue Aug 4 03:30:32 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 4 Aug 2009 11:30:32 +0100 Subject: Shark and IcedTea7 In-Reply-To: <20090804094852.GA3351@redhat.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> <20090804094852.GA3351@redhat.com> Message-ID: <17c6771e0908040330u6c46e11bi7f1281f8515093c8@mail.gmail.com> 2009/8/4 Gary Benson : > Andrew John Hughes wrote: >> I've forwardported the latest IcedTea6 changest to Shark to 7 and >> pushed them. ?However, I haven't been able to successfully build >> with them. ?The version of LLVM with which I was building was >> apparently now too old. ?It seems the latest SVN may be too new: > > Can you build with 2.5? ?SVN changes too much to guarantee anything. > > Cheers, > Gary > > -- > http://gbenson.net/ > Ok, I'll try that now. Can we document this somewhere in README and/or INSTALL? There is nothing in there about llvm at the moment AFAICS. -- 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 Tue Aug 4 04:55:09 2009 From: doko at ubuntu.com (Matthias Klose) Date: Tue, 04 Aug 2009 13:55:09 +0200 Subject: Shark and IcedTea7 In-Reply-To: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> Message-ID: <4A78219D.8000407@ubuntu.com> On 03.08.2009 20:03, Andrew John Hughes wrote: > I've forwardported the latest IcedTea6 changest to Shark to 7 and > pushed them. However, I haven't been able to successfully build with > them. The version of LLVM with which I was building was apparently > now too old. It seems the latest SVN may be too new: > > In file included from ../generated/incls/_sharkBuilder.cpp.incl:3, > from > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/sharkBuilder.cpp:27: > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: > In static member function 'static llvm::ConstantInt* > LLVMValue::jbyte_constant(jbyte)': > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:31: > error: 'class llvm::LLVMContext' has no member named 'getConstantInt' > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: > In static member function 'static llvm::ConstantInt* > LLVMValue::jint_constant(jint)': > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:39: > error: 'class llvm::LLVMContext' has no member named 'getConstantInt' > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: > In static member function 'static llvm::ConstantInt* > LLVMValue::jlong_constant(jlong)': > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:47: > error: 'class llvm::LLVMContext' has no member named 'getConstantInt' > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: > In static member function 'static llvm::Constant* > LLVMValue::jfloat_constant(jfloat)': > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:55: > error: 'class llvm::LLVMContext' has no member named 'getConstantFP' > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: > In static member function 'static llvm::Constant* > LLVMValue::jdouble_constant(jdouble)': > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:66: > error: 'class llvm::LLVMContext' has no member named 'getConstantFP' > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: > In static member function 'static llvm::ConstantInt* > LLVMValue::bit_constant(int)': > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:83: > error: 'class llvm::LLVMContext' has no member named 'getConstantInt' > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: > In static member function 'static llvm::ConstantInt* > LLVMValue::intptr_constant(intptr_t)': > /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:91: > error: 'class llvm::LLVMContext' has no member named 'getConstantInt' > make[7]: *** [sharkCompiler.o] Error 1 > > There was a change to the file containing getConstantInt last Thursday: > > ------------------------------------------------------------------------ > r77583 | evancheng | 2009-07-30 09:44:08 +0100 (Thu, 30 Jul 2009) | 4 lines > > I've changed the semantics of MERGE_VALUES a bit. It's now allowed to > live until scheduling. It's deleted when the scheduler translate DAG > nodes to machine instructions. > > This is currently used by X86 to handle atomic_load_add when the > output of the node is not used. I believe there is a better solution. > But I find MERGE_VALUES useful for selecting multi-output node when > the dead output can be selected as a IMPLICIT_DEF. > > but this only seems to have altered a comment. > > Any ideas? I've pushed because I assume that those working with Shark > have been successfully building it even if I can't... :) please check with the patch attached. It works for me building current IcedTea6. Matthias -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: llvm.diff Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090804/2e893c1a/llvm.diff From gnu_andrew at member.fsf.org Tue Aug 4 05:46:49 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 4 Aug 2009 13:46:49 +0100 Subject: Shark and IcedTea7 In-Reply-To: <4A78219D.8000407@ubuntu.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> <4A78219D.8000407@ubuntu.com> Message-ID: <17c6771e0908040546s1d37fcceofad26e6fa9a27c11@mail.gmail.com> 2009/8/4 Matthias Klose : > On 03.08.2009 20:03, Andrew John Hughes wrote: >> >> I've forwardported the latest IcedTea6 changest to Shark to 7 and >> pushed them. ?However, I haven't been able to successfully build with >> them. ?The version of LLVM with which I was building was apparently >> now too old. ?It seems the latest SVN may be too new: >> >> In file included from ../generated/incls/_sharkBuilder.cpp.incl:3, >> ? ? ? ? ? ? ? ? ?from >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/sharkBuilder.cpp:27: >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >> In static member function 'static llvm::ConstantInt* >> LLVMValue::jbyte_constant(jbyte)': >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:31: >> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >> In static member function 'static llvm::ConstantInt* >> LLVMValue::jint_constant(jint)': >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:39: >> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >> In static member function 'static llvm::ConstantInt* >> LLVMValue::jlong_constant(jlong)': >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:47: >> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >> In static member function 'static llvm::Constant* >> LLVMValue::jfloat_constant(jfloat)': >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:55: >> error: 'class llvm::LLVMContext' has no member named 'getConstantFP' >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >> In static member function 'static llvm::Constant* >> LLVMValue::jdouble_constant(jdouble)': >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:66: >> error: 'class llvm::LLVMContext' has no member named 'getConstantFP' >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >> In static member function 'static llvm::ConstantInt* >> LLVMValue::bit_constant(int)': >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:83: >> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >> In static member function 'static llvm::ConstantInt* >> LLVMValue::intptr_constant(intptr_t)': >> >> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:91: >> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >> make[7]: *** [sharkCompiler.o] Error 1 >> >> There was a change to the file containing getConstantInt last Thursday: >> >> ------------------------------------------------------------------------ >> r77583 | evancheng | 2009-07-30 09:44:08 +0100 (Thu, 30 Jul 2009) | 4 >> lines >> >> I've changed the semantics of MERGE_VALUES a bit. It's now allowed to >> live until scheduling. It's deleted when the scheduler translate DAG >> nodes to machine instructions. >> >> This is currently used by X86 to handle atomic_load_add when the >> output of the node is not used. I believe there is a better solution. >> But I find MERGE_VALUES useful for selecting multi-output node when >> the dead output can be selected as a IMPLICIT_DEF. >> >> but this only seems to have altered a comment. >> >> Any ideas? ?I've pushed because I assume that those working with Shark >> have been successfully building it even if I can't... :) > > please check with the patch attached. It works for me building current > IcedTea6. > > ?Matthias > > Managed to do a full build with 2.5. I'll try with this after I've done the plugin forwardporting. -- 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 Tue Aug 4 07:13:50 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 04 Aug 2009 14:13:50 +0000 Subject: [Bug 374] SIGSEGV while visiting a website on Firefox 3.5, Archlinux 64bit Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=374 jon.vanalten at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |DUPLICATE ------- Comment #1 from jon.vanalten at redhat.com 2009-08-04 14:13 ------- *** This bug has been marked as a duplicate of bug 367 *** -- 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 Aug 4 07:13:51 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 04 Aug 2009 14:13:51 +0000 Subject: [Bug 367] Interactive brokers fails / libjpeg7 related? Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=367 jon.vanalten at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gary4gar at gmail.com ------- Comment #5 from jon.vanalten at redhat.com 2009-08-04 14:13 ------- *** Bug 374 has been marked as a duplicate of this bug. *** -- 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 redhat.com Tue Aug 4 07:39:21 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 4 Aug 2009 10:39:21 -0400 Subject: RFC: Netx - disable desktop shortcuts In-Reply-To: <4A71BC62.9050508@redhat.com> References: <4A71BC62.9050508@redhat.com> Message-ID: <20090804143921.GA3111@redhat.com> * Omair Majid [2009-07-30 11:30]: > Hi, > > I would like to disable the desktop launcher code in Netx as it has some > issues. Thanks to Deepak who originally brought up these problems. > The two major ones are: > > 1. First of all, the desktop launcher Netx creates dont work well with > the alternatives system. They all invoke $CURRENT_JDK_HOME/bin/javaws > instead of /usr/bin/javaws. However changing to /usr/bin/javaws brings > up other problems. /usr/bin/javaws is likely to be some other JDK which > may or may not understand Netx's options that it uses in the launcher. > This could lead to desktop launchers that dont work. /usr/bin/javaws > overwite our shortcut with it's own which would then call, for example, > /usr/java/latest/bin/javaws instead of /usr/bin/javaws. Also note that > Sun's javaws creates a launcher that points to their cache. Netx wont be > able to use that cache. > > Part of this issue can be fixed by using the exact same options as Sun's > javaws to maintain compatibility. However I dont see a simple way to > make a proprietary JRE's javaws invoke /usr/bin/javaws. Or to share the > cache between multiple JDKs. > > 2. These shortcuts dont work offline, even if the application allows it. > The current launchers just point Netx to the original JNLP file, which > wont work if the machine is offline (even if everything has been cached > by Netx). > > The correct fix is to ensure that Netx supports offline mode, uses the > cache and JNLP update mechanism correctly and then make the launcher > point to the cache. This might take some time to implement correctly. > > Because of these major issues, I would like to disable desktop shortcut > support in Netx. > > ChangeLog: > 2009-07-30 Omair Majid > > * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java > (initialize): Disable creating desktop shortcuts. > > Any comments? > Looks good. Cheers, Deepak > Cheers, > Omair > diff -r 051ca564791d rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java > --- a/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Jul 30 04:51:32 2009 -0400 > +++ b/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Jul 30 10:51:57 2009 -0400 > @@ -109,7 +109,24 @@ > */ > public void initialize() { > installEnvironment(); > - addMenuAndDesktopEntries(); > + > + /* > + * FIXME: Disable creating desktop entries for now > + * > + * there are some major issues we need to work out before we can enable them > + * 1. Playing nice with the altnatives system > + * - use the system preferred jdk (/usr/bin/javaws) > + * - dont assume what jdk javaws corresponds to > + * - make sure our shortcuts work with the sun jdk and vice versa > + * (may not be possible since sun's javaws creates a launcher that > + * links to /usr/java/${ver}/bin/javaws) > + * - we should use the same options and arguments as sun's javaws > + * 2. Make shortcuts work offline > + * - make the cache updates and replacements work properly > + * - shortcuts should use the cache > + * > + * addMenuAndDesktopEntries(); > + */ > } > > /** From dbhole at redhat.com Tue Aug 4 07:41:40 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 4 Aug 2009 10:41:40 -0400 Subject: RFC: Netx - implement -Xclearcache command line option In-Reply-To: <4A720F4D.8010007@redhat.com> References: <4A720E40.7020406@redhat.com> <4A720F4D.8010007@redhat.com> Message-ID: <20090804144140.GB3111@redhat.com> * Omair Majid [2009-07-30 18:12]: > Omair Majid wrote: >> The attached patch adds the option -Xclearcache to Netx. > > What I really meant was the patch I am going to attach to the next email > I send ;) > > Cheers, > Omair Assuming you have tested this, go ahead and commit. Cheers, Deepak > diff -r 051ca564791d rt/net/sourceforge/jnlp/cache/CacheUtil.java > --- a/rt/net/sourceforge/jnlp/cache/CacheUtil.java Thu Jul 30 04:51:32 2009 -0400 > +++ b/rt/net/sourceforge/jnlp/cache/CacheUtil.java Thu Jul 30 17:01:27 2009 -0400 > @@ -26,6 +26,7 @@ > > import net.sourceforge.jnlp.*; > import net.sourceforge.jnlp.runtime.*; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * Provides static methods to interact with the cache, download > @@ -128,6 +129,25 @@ > } > > /** > + * Clears the cache by deleting all the Netx cache files > + */ > + public static void clearCache() { > + File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); > + if (!(cacheDir.isDirectory())) { > + return; > + } > + > + if (JNLPRuntime.isDebug()) { > + System.err.println("Clearing cache directory: " + cacheDir); > + } > + try { > + FileUtils.recursiveDelete(cacheDir); > + } catch (IOException e) { > + throw new RuntimeException(e); > + } > + } > + > + /** > * Returns whether there is a version of the URL contents in the > * cache and it is up to date. This method may not return > * immediately. > diff -r 051ca564791d rt/net/sourceforge/jnlp/resources/Messages.properties > --- a/rt/net/sourceforge/jnlp/resources/Messages.properties Thu Jul 30 04:51:32 2009 -0400 > +++ b/rt/net/sourceforge/jnlp/resources/Messages.properties Thu Jul 30 17:01:27 2009 -0400 > @@ -133,6 +133,7 @@ > BOViewer = Shows the trusted certificate viewer. > BOUmask = Sets the umask for files created by an application. > BXnofork = Do not create another JVM. > +BXclearcache= Clean the JNLP application cache. > BOHelp = Print this message and exit. > > # Cache > diff -r 051ca564791d rt/net/sourceforge/jnlp/runtime/Boot.java > --- a/rt/net/sourceforge/jnlp/runtime/Boot.java Thu Jul 30 04:51:32 2009 -0400 > +++ b/rt/net/sourceforge/jnlp/runtime/Boot.java Thu Jul 30 17:01:27 2009 -0400 > @@ -40,6 +40,7 @@ > import net.sourceforge.jnlp.ParseException; > import net.sourceforge.jnlp.PropertyDesc; > import net.sourceforge.jnlp.ResourcesDesc; > +import net.sourceforge.jnlp.cache.CacheUtil; > import net.sourceforge.jnlp.cache.UpdatePolicy; > import net.sourceforge.jnlp.security.VariableX509TrustManager; > import net.sourceforge.jnlp.security.viewer.CertificateViewer; > @@ -114,6 +115,7 @@ > + " -strict "+R("BOStrict")+"\n" > + " -umask=value "+R("BOUmask")+"\n" > + " -Xnofork "+R("BXnofork")+"\n" > + + " -Xclearcache "+R("BXclearcache")+"\n" > + " -help "+R("BOHelp")+"\n"; > > private static final String doubleArgs = "-basedir -jnlp -arg -param -property -update"; > @@ -202,6 +204,17 @@ > JNLPRuntime.setSecurityEnabled(null == getOption("-nosecurity")); > JNLPRuntime.initialize(true); > > + /* > + * TODO > + * This should have been done with the rest of the argument parsing > + * code. But we need to know what the cache and base directories are, > + * and baseDir is initialized here > + */ > + if (null != getOption("-Xclearcache")) { > + CacheUtil.clearCache(); > + return null; > + } > + > try { > new Launcher().launch(getFile()); > } > diff -r 051ca564791d rt/net/sourceforge/jnlp/util/FileUtils.java > --- a/rt/net/sourceforge/jnlp/util/FileUtils.java Thu Jul 30 04:51:32 2009 -0400 > +++ b/rt/net/sourceforge/jnlp/util/FileUtils.java Thu Jul 30 17:01:27 2009 -0400 > @@ -14,8 +14,12 @@ > // License along with this library; if not, write to the Free Software > // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > > +package net.sourceforge.jnlp.util; > > -package net.sourceforge.jnlp.util; > +import java.io.File; > +import java.io.IOException; > + > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > > /** > * This class contains a few file-related utility functions. > @@ -44,5 +48,36 @@ > String sanitizedName = input.replaceAll("[^a-zA-Z0-9.]", "_"); > return sanitizedName; > } > - > + > + /** > + * Recursively delete everything under a directory. Works on either files or > + * directories > + * > + * @param file the file object representing what to delete. Can be either a > + * file or a directory. Must be within Netx's basedir > + * @throws IOException on an io exception or if trying to delete something > + * outside the basedir > + */ > + public static void recursiveDelete(File file) throws IOException { > + if (JNLPRuntime.isDebug()) { > + System.err.println("Deleting: " + file); > + } > + > + if (!(file.getCanonicalPath().startsWith(JNLPRuntime.getBaseDir().getCanonicalPath()))) { > + throw new IOException("Trying to delete a file outside Netx's basedir: " > + + file.getCanonicalPath()); > + } > + > + if (file.isDirectory()) { > + File[] children = file.listFiles(); > + for (int i = 0; i < children.length; i++) { > + recursiveDelete(children[i]); > + } > + } > + if (!file.delete()) { > + throw new IOException("Unable to delete file: " + file); > + } > + > + } > + > } From omajid at redhat.com Tue Aug 4 08:33:04 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 15:33:04 +0000 Subject: changeset in /hg/icedtea6: Netx: disable destkop shortcuts Message-ID: changeset f5ed1489ddcf in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f5ed1489ddcf description: Netx: disable destkop shortcuts 2009-08-04 Omair Majid * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java (initialize): Disable creation of desktop shortcuts. diffstat: 2 files changed, 23 insertions(+), 1 deletion(-) ChangeLog | 5 +++ rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 19 +++++++++++++- diffs (41 lines): diff -r 18f23e1e3c37 -r f5ed1489ddcf ChangeLog --- a/ChangeLog Mon Aug 03 13:18:16 2009 +0100 +++ b/ChangeLog Tue Aug 04 11:34:49 2009 -0400 @@ -1,3 +1,8 @@ 2009-08-03 Andrew John Hughes + + * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java + (initialize): Disable creation of desktop shortcuts. + 2009-08-03 Andrew John Hughes * hotspot.map: diff -r 18f23e1e3c37 -r f5ed1489ddcf rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java --- a/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Mon Aug 03 13:18:16 2009 +0100 +++ b/rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java Tue Aug 04 11:34:49 2009 -0400 @@ -109,7 +109,24 @@ public class ApplicationInstance { */ public void initialize() { installEnvironment(); - addMenuAndDesktopEntries(); + + /* + * FIXME: Disable creating desktop entries for now + * + * there are some major issues we need to work out before we can enable them + * 1. Playing nice with the altnatives system + * - use the system preferred jdk (/usr/bin/javaws) + * - dont assume what jdk javaws corresponds to + * - make sure our shortcuts work with the sun jdk and vice versa + * (may not be possible since sun's javaws creates a launcher that + * links to /usr/java/${ver}/bin/javaws) + * - we should use the same options and arguments as sun's javaws + * 2. Make shortcuts work offline + * - make the cache updates and replacements work properly + * - shortcuts should use the cache + * + * addMenuAndDesktopEntries(); + */ } /** From omajid at redhat.com Tue Aug 4 08:36:37 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 11:36:37 -0400 Subject: RFC: Netx - disable desktop shortcuts In-Reply-To: <20090804143921.GA3111@redhat.com> References: <4A71BC62.9050508@redhat.com> <20090804143921.GA3111@redhat.com> Message-ID: <4A785585.7090806@redhat.com> Deepak Bhole wrote: > * Omair Majid [2009-07-30 11:30]: >> Hi, >> >> I would like to disable the desktop launcher code in Netx as it has some >> issues. Thanks to Deepak who originally brought up these problems. >> The two major ones are: >> >> 1. First of all, the desktop launcher Netx creates dont work well with >> the alternatives system. They all invoke $CURRENT_JDK_HOME/bin/javaws >> instead of /usr/bin/javaws. However changing to /usr/bin/javaws brings >> up other problems. /usr/bin/javaws is likely to be some other JDK which >> may or may not understand Netx's options that it uses in the launcher. >> This could lead to desktop launchers that dont work. /usr/bin/javaws >> overwite our shortcut with it's own which would then call, for example, >> /usr/java/latest/bin/javaws instead of /usr/bin/javaws. Also note that >> Sun's javaws creates a launcher that points to their cache. Netx wont be >> able to use that cache. >> >> Part of this issue can be fixed by using the exact same options as Sun's >> javaws to maintain compatibility. However I dont see a simple way to >> make a proprietary JRE's javaws invoke /usr/bin/javaws. Or to share the >> cache between multiple JDKs. >> >> 2. These shortcuts dont work offline, even if the application allows it. >> The current launchers just point Netx to the original JNLP file, which >> wont work if the machine is offline (even if everything has been cached >> by Netx). >> >> The correct fix is to ensure that Netx supports offline mode, uses the >> cache and JNLP update mechanism correctly and then make the launcher >> point to the cache. This might take some time to implement correctly. >> >> Because of these major issues, I would like to disable desktop shortcut >> support in Netx. >> >> ChangeLog: >> 2009-07-30 Omair Majid >> >> * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java >> (initialize): Disable creating desktop shortcuts. >> >> Any comments? >> > > Looks good. > Pushed as changeset f5ed1489ddcf. Cheers, Omair From omajid at redhat.com Tue Aug 4 09:07:28 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:28 +0000 Subject: changeset in /hg/icedtea: 2009-05-22 Omair Majid changeset 9a93570b7b06 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=9a93570b7b06 description: 2009-05-22 Omair Majid * netx/net/sourceforge/jnlp/JNLPFile.java (parse): Fix comment to reflect that the element can be either 'java' or 'j2se'. * netx/net/sourceforge/jnlp/JREDesc.java: Fix comment to reflect a 'java' element. New private variable vmArgs to keep track of 'java-vm-args'. (JREDesc): Modify to take in an additional parameter vmArgs and store it in vmArgs. (getVMArgs): New function. Return the value of 'java-vm-args' attribute. * netx/net/sourceforge/jnlp/Parser.java: Fix comments to reflect either a 'java' or 'j2se' element. (getResourceDesc): Treat 'java' element identically to 'j2se' element. (getJRE): Read in the value of the 'java-vm-args' attribute. diffstat: 4 files changed, 36 insertions(+), 8 deletions(-) ChangeLog | 14 ++++++++++++++ netx/net/sourceforge/jnlp/JNLPFile.java | 2 +- netx/net/sourceforge/jnlp/JREDesc.java | 17 +++++++++++++++-- netx/net/sourceforge/jnlp/Parser.java | 11 ++++++----- diffs (137 lines): diff -r 9a952e506f16 -r 9a93570b7b06 ChangeLog --- a/ChangeLog Thu Jul 30 04:51:32 2009 -0400 +++ b/ChangeLog Fri May 22 10:13:16 2009 -0400 @@ -1,3 +1,17 @@ 2009-07-30 Gary Benson + + * netx/net/sourceforge/jnlp/JNLPFile.java (parse): Fix comment to reflect + that the element can be either 'java' or 'j2se'. + * netx/net/sourceforge/jnlp/JREDesc.java: Fix comment to reflect a 'java' + element. New private variable vmArgs to keep track of 'java-vm-args'. + (JREDesc): Modify to take in an additional parameter vmArgs and store it in + vmArgs. + (getVMArgs): New function. Return the value of 'java-vm-args' attribute. + * netx/net/sourceforge/jnlp/Parser.java: Fix comments to reflect either a + 'java' or 'j2se' element. + (getResourceDesc): Treat 'java' element identically to 'j2se' element. + (getJRE): Read in the value of the 'java-vm-args' attribute. + 2009-07-30 Gary Benson * ports/hotspot/src/share/vm/shark/sharkRuntime.hpp: diff -r 9a952e506f16 -r 9a93570b7b06 netx/net/sourceforge/jnlp/JNLPFile.java --- a/netx/net/sourceforge/jnlp/JNLPFile.java Thu Jul 30 04:51:32 2009 -0400 +++ b/netx/net/sourceforge/jnlp/JNLPFile.java Fri May 22 10:13:16 2009 -0400 @@ -505,7 +505,7 @@ public class JNLPFile { sourceLocation = parser.getFileLocation(); info = parser.getInfo(root); - resources = parser.getResources(root, false); // false == not a j2se resources section + resources = parser.getResources(root, false); // false == not a j2se/java resources section launchType = parser.getLauncher(root); security = parser.getSecurity(root); } diff -r 9a952e506f16 -r 9a93570b7b06 netx/net/sourceforge/jnlp/JREDesc.java --- a/netx/net/sourceforge/jnlp/JREDesc.java Thu Jul 30 04:51:32 2009 -0400 +++ b/netx/net/sourceforge/jnlp/JREDesc.java Fri May 22 10:13:16 2009 -0400 @@ -22,7 +22,7 @@ import java.util.*; import java.util.*; /** - * The J2SE element. + * The J2SE/Java element. * * @author Jon A. Maxwell (JAM) - initial author * @version $Revision: 1.5 $ @@ -41,6 +41,9 @@ public class JREDesc { /** maximum head size */ private long maximumHeapSize; + /** args to pass to the vm */ + private String vmArgs; + /** list of ResourceDesc objects */ private List resources; @@ -55,9 +58,12 @@ public class JREDesc { * @param maximumHeadSize maximum head size * @param resources list of ResourceDesc objects */ - public JREDesc(Version version, URL location, String initialHeapSize, String maximumHeapSize, List resources) { + public JREDesc(Version version, URL location, + String vmArgs, String initialHeapSize, + String maximumHeapSize, List resources) { this.version = version; this.location = location; + this.vmArgs = vmArgs; this.initialHeapSize = heapToLong(initialHeapSize); this.maximumHeapSize = heapToLong(maximumHeapSize); this.resources = resources; @@ -110,6 +116,13 @@ public class JREDesc { } /** + * Returns the additional arguments to pass to the Java VM + */ + public String getVMArgs() { + return vmArgs; + } + + /** * Convert a heap size description string to a long value * indicating the heap min/max size. */ diff -r 9a952e506f16 -r 9a93570b7b06 netx/net/sourceforge/jnlp/Parser.java --- a/netx/net/sourceforge/jnlp/Parser.java Thu Jul 30 04:51:32 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Parser.java Fri May 22 10:13:16 2009 -0400 @@ -186,7 +186,7 @@ class Parser { * node (jnlp or j2se). * * @param parent the parent node (either jnlp or j2se) - * @param j2se true if the resources are located under a j2se node + * @param j2se true if the resources are located under a j2se or java node * @throws ParseException if the JNLP file is invalid */ public List getResources(Node parent, boolean j2se) throws ParseException { @@ -208,7 +208,7 @@ class Parser { * Returns the ResourcesDesc element at the specified node. * * @param node the resources node - * @param j2se true if the resources are located under a j2se node + * @param j2se true if the resources are located under a j2se or java node * @throws ParseException if the JNLP file is invalid */ public ResourcesDesc getResourcesDesc(Node node, boolean j2se) throws ParseException { @@ -231,7 +231,7 @@ class Parser { if (!isTrustedEnvironment()) throw new ParseException(R("PUntrustedNative")); - if ("j2se".equals(name)) { + if ("j2se".equals(name) || "java".equals(name)) { if (getChildNode(root, "component-desc") != null) if (strict) throw new ParseException(R("PExtensionHasJ2SE")); @@ -273,12 +273,13 @@ class Parser { /** * Returns the JRE element at the specified node. * - * @param node the j2se node + * @param node the j2se/java node * @throws ParseException if the JNLP file is invalid */ public JREDesc getJRE(Node node) throws ParseException { Version version = getVersion(node, "version", null); URL location = getURL(node, "href", base); + String vmArgs = getAttribute(node, "java-vm-args",null); String initialHeap = getAttribute(node, "initial-heap-size", null); String maxHeap = getAttribute(node, "max-heap-size", null); List resources = getResources(node, true); @@ -286,7 +287,7 @@ class Parser { // require version attribute getRequiredAttribute(node, "version", null); - return new JREDesc(version, location, initialHeap, maxHeap, resources); + return new JREDesc(version, location, vmArgs, initialHeap, maxHeap, resources); } /** From omajid at redhat.com Tue Aug 4 09:07:31 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:31 +0000 Subject: changeset in /hg/icedtea: 2009-06-10 Omair Majid changeset a5edccad3c7c in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=a5edccad3c7c description: 2009-06-10 Omair Majid * netx/net/sourceforge/jnlp/JNLPFile.java (needsNewJVM): New function. Returns true if the JNLP file requires creating a new JVM. (getNewVMArgs): New function. Returns arguments to pass to the new JVM. * netx/net/sourceforge/jnlp/JREDesc.java (getVMArgs): Fix javadoc to reflect that return value can be null. * netx/net/sourceforge/jnlp/Launcher.java (launchExternal): Modify to take in arguments to pass to the JVM and arguments to pass to Netx. Try to use the local file to launch this instance if possible. (launchExternal): Delegate to new launchExternal. (launchExternal): New method. Take in arguments to pass to the JVM and arguments to pass to Netx. Launch Netx with the with the appropriate arguments. (launchApplication): If needed, launch a new JVM and pass along the Netx arguments. * netx/net/sourceforge/jnlp/Parser.java: (getJRE): Call checkVMArgs to check 'java-vm-args' for security. If that fails, assume 'java-vm-args' is null. (checkVMArgs): New method. Check that the vmArgs variable contains safe arguments only. (getValidVMArguments): New method. (getValidStartingVMArguments): New method. * netx/net/sourceforge/jnlp/resources/Messages.properties: Add BXnofork. * netx/net/sourceforge/jnlp/runtime/Boot/java: Add -Xnofork to helpMessage (main): Check for '-Xnofork'. Set initial arguments. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Add forksAllowed to store whether creating a new JVM is allowed. Add initialArguments to store the arguments to Netx. (getForksAllowed): New function. Check if creating a new JVM is allowed. (setForksAllowed): New function. Set whether creating a JVM is allowed. (setInitialArguments): New function. Store the arguments passed to Netx. (getInitialArguments): New function. Return the arguments passed to Netx. diffstat: 8 files changed, 326 insertions(+), 41 deletions(-) ChangeLog | 37 ++++ netx/net/sourceforge/jnlp/JNLPFile.java | 63 +++++++- netx/net/sourceforge/jnlp/JREDesc.java | 1 netx/net/sourceforge/jnlp/Launcher.java | 109 ++++++++++---- netx/net/sourceforge/jnlp/Parser.java | 112 +++++++++++++++ netx/net/sourceforge/jnlp/resources/Messages.properties | 1 netx/net/sourceforge/jnlp/runtime/Boot.java | 9 + netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 35 ++++ diffs (truncated from 539 to 500 lines): diff -r 649b859ba20d -r a5edccad3c7c ChangeLog --- a/ChangeLog Wed Jun 10 10:53:03 2009 -0400 +++ b/ChangeLog Wed Jun 10 12:00:53 2009 -0400 @@ -1,3 +1,40 @@ 2009-06-10 Omair Majid + + * netx/net/sourceforge/jnlp/JNLPFile.java + (needsNewJVM): New function. Returns true if the JNLP file requires + creating a new JVM. + (getNewVMArgs): New function. Returns arguments to pass to the new JVM. + * netx/net/sourceforge/jnlp/JREDesc.java + (getVMArgs): Fix javadoc to reflect that return value can be null. + * netx/net/sourceforge/jnlp/Launcher.java + (launchExternal): Modify to take in arguments to pass to the JVM and + arguments to pass to Netx. Try to use the local file to launch this + instance if possible. + (launchExternal): Delegate to new launchExternal. + (launchExternal): New method. Take in arguments to pass to the JVM and + arguments to pass to Netx. Launch Netx with the with the appropriate + arguments. + (launchApplication): If needed, launch a new JVM and pass along the Netx + arguments. + * netx/net/sourceforge/jnlp/Parser.java: + (getJRE): Call checkVMArgs to check 'java-vm-args' for security. If that + fails, assume 'java-vm-args' is null. + (checkVMArgs): New method. Check that the vmArgs variable contains safe + arguments only. + (getValidVMArguments): New method. + (getValidStartingVMArguments): New method. + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add BXnofork. + * netx/net/sourceforge/jnlp/runtime/Boot/java: + Add -Xnofork to helpMessage + (main): Check for '-Xnofork'. Set initial arguments. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: + Add forksAllowed to store whether creating a new JVM is allowed. Add + initialArguments to store the arguments to Netx. + (getForksAllowed): New function. Check if creating a new JVM is allowed. + (setForksAllowed): New function. Set whether creating a JVM is allowed. + (setInitialArguments): New function. Store the arguments passed to Netx. + (getInitialArguments): New function. Return the arguments passed to Netx. + 2009-06-10 Omair Majid * netx/net/sourceforge/jnlp/services/XBasicService.java diff -r 649b859ba20d -r a5edccad3c7c netx/net/sourceforge/jnlp/JNLPFile.java --- a/netx/net/sourceforge/jnlp/JNLPFile.java Wed Jun 10 10:53:03 2009 -0400 +++ b/netx/net/sourceforge/jnlp/JNLPFile.java Wed Jun 10 12:00:53 2009 -0400 @@ -17,12 +17,19 @@ package net.sourceforge.jnlp; -import java.io.*; -import java.net.*; -import java.util.*; - -import net.sourceforge.jnlp.cache.*; -import net.sourceforge.jnlp.runtime.*; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; + +import net.sourceforge.jnlp.cache.ResourceTracker; +import net.sourceforge.jnlp.cache.UpdatePolicy; +import net.sourceforge.jnlp.runtime.JNLPRuntime; /** * Provides methods to access the information in a Java Network @@ -520,4 +527,48 @@ public class JNLPFile { } } + /** + * + * @return true if the JNLP file specifies things that can only be + * applied on a new vm (eg: different max heap memory) + */ + public boolean needsNewVM() { + + if (getNewVMArgs().size() == 0) { + return false; + } else { + return true; + } + } + + /** + * @return a list of args to pass to the new + * JVM based on this JNLP file + */ + public List getNewVMArgs() { + + List newVMArgs = new LinkedList(); + + JREDesc[] jres = getResources().getJREs(); + for (int jreIndex = 0; jreIndex < jres.length; jreIndex++) { + String initialHeapSize = jres[jreIndex].getInitialHeapSize(); + if (initialHeapSize != null) { + newVMArgs.add("-Xms" + initialHeapSize); + } + + String maxHeapSize = jres[jreIndex].getMaximumHeapSize(); + if (maxHeapSize != null) { + newVMArgs.add("-Xmx" + maxHeapSize); + } + + String vmArgsFromJre = jres[jreIndex].getVMArgs(); + if (vmArgsFromJre != null) { + String[] args = vmArgsFromJre.split(" "); + newVMArgs.addAll(Arrays.asList(args)); + } + } + + return newVMArgs; + } + } diff -r 649b859ba20d -r a5edccad3c7c netx/net/sourceforge/jnlp/JREDesc.java --- a/netx/net/sourceforge/jnlp/JREDesc.java Wed Jun 10 10:53:03 2009 -0400 +++ b/netx/net/sourceforge/jnlp/JREDesc.java Wed Jun 10 12:00:53 2009 -0400 @@ -121,6 +121,7 @@ public class JREDesc { /** * Returns the additional arguments to pass to the Java VM + * Can be null */ public String getVMArgs() { return vmArgs; diff -r 649b859ba20d -r a5edccad3c7c netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Wed Jun 10 10:53:03 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Wed Jun 10 12:00:53 2009 -0400 @@ -17,16 +17,27 @@ package net.sourceforge.jnlp; -import java.applet.*; +import java.applet.Applet; import java.awt.Container; -import java.io.*; -import java.net.*; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.net.URL; +import java.util.LinkedList; +import java.util.List; import java.util.jar.JarFile; -import java.lang.reflect.*; - -import net.sourceforge.jnlp.cache.*; -import net.sourceforge.jnlp.runtime.*; -import net.sourceforge.jnlp.util.*; + +import net.sourceforge.jnlp.cache.CacheUtil; +import net.sourceforge.jnlp.cache.ResourceTracker; +import net.sourceforge.jnlp.cache.UpdatePolicy; +import net.sourceforge.jnlp.runtime.AppThreadGroup; +import net.sourceforge.jnlp.runtime.AppletInstance; +import net.sourceforge.jnlp.runtime.ApplicationInstance; +import net.sourceforge.jnlp.runtime.JNLPClassLoader; +import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.util.Reflect; /** * Launches JNLPFiles either in the foreground or background.

@@ -238,44 +249,67 @@ public class Launcher { * application's output is sent to the system out and it's * standard input channel is closed. * + * @param vmArgs the arguments to pass to the new JVM. Can be empty but + * must not be null. * @param file the JNLP file to launch + * @param javawsArgs the arguments to pass to the javaws command. Can be + * an empty list but must not be null. * @throws LaunchException if there was an exception */ - public void launchExternal(JNLPFile file) throws LaunchException { - if (file.getSourceLocation() != null) - launchExternal(file.getSourceLocation()); - else if (file.getFileLocation() != null) - launchExternal(file.getFileLocation()); + public void launchExternal(List vmArgs, JNLPFile file, List javawsArgs) throws LaunchException { + List updatedArgs = new LinkedList(javawsArgs); + + if (file.getFileLocation() != null) + updatedArgs.add(file.getFileLocation().toString()); + else if (file.getSourceLocation() != null) + updatedArgs.add(file.getFileLocation().toString()); else launchError(new LaunchException(file, null, R("LSFatal"), R("LCExternalLaunch"), R("LNullLocation"), R("LNullLocationInfo"))); + + launchExternal(vmArgs, updatedArgs); + + } + + /** + * Launches the JNLP file in a new JVM instance. The launched + * application's output is sent to the system out and it's + * standard input channel is closed. + * + * @param url the URL of the JNLP file to launch + * @throws LaunchException if there was an exception + */ + public void launchExternal(URL url) throws LaunchException { + List javawsArgs = new LinkedList(); + javawsArgs.add(url.toString()); + launchExternal(new LinkedList(), javawsArgs); } /** * Launches the JNLP file at the specified location in a new JVM * instance. The launched application's output is sent to the * system out and it's standard input channel is closed. - * - * @param location the URL of the JNLP file to launch + * @param vmArgs the arguments to pass to the jvm + * @param javawsArgs the arguments to pass to javaws (aka Netx) * @throws LaunchException if there was an exception */ - public void launchExternal(URL location) throws LaunchException { - try { - URL cs = Launcher.class.getProtectionDomain().getCodeSource().getLocation(); - if (JNLPRuntime.isDebug()) - System.out.println("netx.jar path: "+cs.getPath()); - - File netxFile = new File(cs.getPath()); - if (!netxFile.exists()) - throw launchError(new LaunchException(null, null, R("LSFatal"), R("LCExternalLaunch"), R("LNetxJarMissing"), R("LNetxJarMissingInfo"))); - - String command[] = { - "javaw", - "-jar", - netxFile.toString(), - "-jnlp", - location.toString(), - "-verbose", - }; + public void launchExternal(List vmArgs, List javawsArgs) throws LaunchException { + try { + + List commands = new LinkedList(); + + String pathToWebstartBinary = System.getProperty("java.home") + + File.separatorChar + + "bin" + + File.separatorChar + + "javaws"; + commands.add(pathToWebstartBinary); + // use -Jargument format to pass arguments to the JVM through the launcher + for (String arg: vmArgs) { + commands.add("-J" + arg); + } + commands.addAll(javawsArgs); + + String[] command = commands.toArray(new String[] {}); Process p = Runtime.getRuntime().exec(command); new StreamEater(p.getErrorStream()).start(); @@ -331,6 +365,15 @@ public class Launcher { throw launchError(new LaunchException(file, null, R("LSFatal"), R("LCClient"), R("LNotApplication"), R("LNotApplicationInfo"))); try { + + if (JNLPRuntime.getForksAllowed() && file.needsNewVM()) { + List netxArguments = new LinkedList(); + netxArguments.add("-Xnofork"); + netxArguments.addAll(JNLPRuntime.getInitialArguments()); + launchExternal(file.getNewVMArgs(), netxArguments); + return null; + } + final int preferredWidth = 500; final int preferredHeight = 400; JNLPSplashScreen splashScreen = null; diff -r 649b859ba20d -r a5edccad3c7c netx/net/sourceforge/jnlp/Parser.java --- a/netx/net/sourceforge/jnlp/Parser.java Wed Jun 10 10:53:03 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Parser.java Wed Jun 10 12:00:53 2009 -0400 @@ -281,6 +281,11 @@ class Parser { Version version = getVersion(node, "version", null); URL location = getURL(node, "href", base); String vmArgs = getAttribute(node, "java-vm-args",null); + try { + checkVMArgs(vmArgs); + } catch (IllegalArgumentException argumentException) { + vmArgs = null; + } String initialHeap = getAttribute(node, "initial-heap-size", null); String maxHeap = getAttribute(node, "max-heap-size", null); List resources = getResources(node, true); @@ -290,6 +295,8 @@ class Parser { return new JREDesc(version, location, vmArgs, initialHeap, maxHeap, resources); } + + /** * Returns the JAR element at the specified node. @@ -992,6 +999,111 @@ class Parser { return null; else return new Version(version); + } + + /** + * Check that the VM args are valid and safe + * @param vmArgs a string containing the args + * @throws ParseException if the VM arguments are invalid or dangerous + */ + private void checkVMArgs(String vmArgs) throws IllegalArgumentException { + if (vmArgs == null) { + return; + } + + List validArguments = Arrays.asList(getValidVMArguments()); + List validStartingArguments = Arrays.asList(getValidStartingVMArguments()); + + String[] arguments = vmArgs.split(" "); + boolean argumentIsValid = false; + for (String argument: arguments) { + argumentIsValid = false; + + if (validArguments.contains(argument)) { + argumentIsValid = true; + } else { + for (String validStartingArgument: validStartingArguments) { + if (argument.startsWith(validStartingArgument)) { + argumentIsValid = true; + break; + } + } + } + + if (!argumentIsValid) { + throw new IllegalArgumentException(argument); + } + } + + } + + /** + * Returns an array of valid (ie safe and supported) arguments for the JVM + * + * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html + */ + private String[] getValidVMArguments() { + return new String[] { + "-d32", /* use a 32-bit data model if available */ + "-client", /* to select the client VM */ + "-server", /* to select the server VM */ + "-verbose", /* enable verbose output */ + "-version", /* print product version and exit */ + "-showversion", /* print product version and continue */ + "-help", /* print this help message */ + "-X", /* print help on non-standard options */ + "-ea", /* enable assertions */ + "-enableassertions", /* enable assertions */ + "-da", /* disable assertions */ + "-disableassertions", /* disable assertions */ + "-esa", /* enable system assertions */ + "-enablesystemassertions", /* enable system assertions */ + "-dsa", /* disable system assertione */ + "-disablesystemassertions", /* disable system assertione */ + "-Xmixed", /* mixed mode execution (default) */ + "-Xint", /* interpreted mode execution only */ + "-Xnoclassgc", /* disable class garbage collection */ + "-Xincgc", /* enable incremental garbage collection */ + "-Xbatch", /* disable background compilation */ + "-Xprof", /* output cpu profiling data */ + "-Xdebug", /* enable remote debugging */ + "-Xfuture", /* enable strictest checks, anticipating future default */ + "-Xrs", /* reduce use of OS signals by Java/VM (see documentation) */ + "-XX:+ForceTimeHighResolution", /* use high resolution timer */ + "-XX:-ForceTimeHighResolution", /* use low resolution (default) */ + }; + } + + /** + * Returns an array containing the starts of valid (ie safe and supported) + * arguments for the JVM + * + * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html + */ + private String[] getValidStartingVMArguments() { + return new String[] { + "-ea", /* enable assertions for classes */ + "-enableassertions", /* enable assertions for classes */ + "-da", /* disable assertions for classes */ + "-disableassertions", /* disable assertions for classes */ + "-verbose", /* enable verbose output */ + "-Xms", /* set initial Java heap size */ + "-Xmx", /* set maximum Java heap size */ + "-Xss", /* set java thread stack size */ + "-XX:NewRatio", /* set Ratio of new/old gen sizes */ + "-XX:NewSize", /* set initial size of new generation */ + "-XX:MaxNewSize", /* set max size of new generation */ + "-XX:PermSize", /* set initial size of permanent gen */ + "-XX:MaxPermSize", /* set max size of permanent gen */ + "-XX:MaxHeapFreeRatio", /* heap free percentage (default 70) */ + "-XX:MinHeapFreeRatio", /* heap free percentage (default 40) */ + "-XX:UseSerialGC", /* use serial garbage collection */ + "-XX:ThreadStackSize", /* thread stack size (in KB) */ + "-XX:MaxInlineSize", /* set max num of bytecodes to inline */ + "-XX:ReservedCodeCacheSize", /* Reserved code cache size (bytes) */ + "-XX:MaxDirectMemorySize", + + }; } /** diff -r 649b859ba20d -r a5edccad3c7c netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Jun 10 10:53:03 2009 -0400 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Jun 10 12:00:53 2009 -0400 @@ -130,6 +130,7 @@ BOStrict = Enables strict checking of BOStrict = Enables strict checking of JNLP file format. BOViewer = Shows the trusted certificate viewer. BOUmask = Sets the umask for files created by an application. +BXnofork = Do not create another JVM. BOHelp = Print this message and exit. # Cache diff -r 649b859ba20d -r a5edccad3c7c netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Jun 10 10:53:03 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Jun 10 12:00:53 2009 -0400 @@ -24,6 +24,7 @@ import java.security.AccessController; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.net.ssl.HttpsURLConnection; @@ -116,6 +117,7 @@ public final class Boot implements Privi + " -headless "+R("BOHeadless")+"\n" + " -strict "+R("BOStrict")+"\n" + " -umask=value "+R("BOUmask")+"\n" + + " -Xnofork "+R("BXnofork")+"\n" + " -help "+R("BOHelp")+"\n"; private static final String doubleArgs = "-basedir -jnlp -arg -param -property -update"; @@ -168,6 +170,10 @@ public final class Boot implements Privi if (null != getOption("-noupdate")) JNLPRuntime.setDefaultUpdatePolicy(UpdatePolicy.NEVER); + + if (null != getOption("-Xnofork")) { + JNLPRuntime.setForksAllowed(false); + } // wire in custom authenticator try { @@ -183,12 +189,13 @@ public final class Boot implements Privi e.printStackTrace(); } + JNLPRuntime.setInitialArgments(Arrays.asList(argsIn)); + // do in a privileged action to clear the security context of // the Boot13 class, which doesn't have any privileges in // JRE1.3; JRE1.4 works without Boot13 or this PrivilegedAction. AccessController.doPrivileged(new Boot()); - args = null; // might save a couple bytes... } /** diff -r 649b859ba20d -r a5edccad3c7c netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Jun 10 10:53:03 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Jun 10 12:00:53 2009 -0400 @@ -21,6 +21,7 @@ import java.awt.*; import java.awt.*; import java.text.*; import java.util.*; +import java.util.List; import java.security.*; import javax.jnlp.*; @@ -96,7 +97,14 @@ public class JNLPRuntime { /** set to true if this is a webstart application. */ private static boolean isWebstartApplication; - + + /** set to false to indicate another JVM should not be spawned, even if necessary */ + private static boolean forksAllowed = true; + + /** contains the arguments passed to the jnlp runtime */ + private static List initialArguments; + + /** * Returns whether the JNLP runtime environment has been * initialized. Once initialized, some properties such as the From omajid at redhat.com Tue Aug 4 09:07:30 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:30 +0000 Subject: changeset in /hg/icedtea: 2009-05-29 Omair Majid changeset 0c18ad4aa0cf in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=0c18ad4aa0cf description: 2009-05-29 Omair Majid * netx/net/sourceforge/jnlp/JREDesc.java: Change initialHeapSize and maximumHeapSize to String. (JREDesc): Check and store initialHeapSize and maximumHeapSize. Throw ParseException on error. (getMaximumHeapSize): Return String. (getInitialHeapSize): Likewise. (heapToLong): Renamed to... (checkHeapSize): New method. Check for valid heap size. * netx/net/sourceforge/jnlp/resources/Messages.properties: Add PBadHeapSize to indicate a bad heap size. diffstat: 3 files changed, 55 insertions(+), 11 deletions(-) ChangeLog | 13 +++ netx/net/sourceforge/jnlp/JREDesc.java | 52 +++++++++++---- netx/net/sourceforge/jnlp/resources/Messages.properties | 1 diffs (134 lines): diff -r fa12c4801f74 -r 0c18ad4aa0cf ChangeLog --- a/ChangeLog Mon May 25 13:54:44 2009 -0400 +++ b/ChangeLog Fri May 29 12:13:53 2009 -0400 @@ -1,3 +1,16 @@ 2009-05-25 Omair Majid + + * netx/net/sourceforge/jnlp/JREDesc.java: + Change initialHeapSize and maximumHeapSize to String. + (JREDesc): Check and store initialHeapSize and maximumHeapSize. Throw + ParseException on error. + (getMaximumHeapSize): Return String. + (getInitialHeapSize): Likewise. + (heapToLong): Renamed to... + (checkHeapSize): New method. Check for valid heap size. + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add PBadHeapSize + to indicate a bad heap size. + 2009-05-25 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add diff -r fa12c4801f74 -r 0c18ad4aa0cf netx/net/sourceforge/jnlp/JREDesc.java --- a/netx/net/sourceforge/jnlp/JREDesc.java Mon May 25 13:54:44 2009 -0400 +++ b/netx/net/sourceforge/jnlp/JREDesc.java Fri May 29 12:13:53 2009 -0400 @@ -21,6 +21,8 @@ import java.net.*; import java.net.*; import java.util.*; +import net.sourceforge.jnlp.runtime.JNLPRuntime; + /** * The J2SE/Java element. * @@ -36,10 +38,10 @@ public class JREDesc { private URL location; /** inital heap size */ - private long initialHeapSize; + private String initialHeapSize; /** maximum head size */ - private long maximumHeapSize; + private String maximumHeapSize; /** args to pass to the vm */ private String vmArgs; @@ -60,12 +62,14 @@ public class JREDesc { */ public JREDesc(Version version, URL location, String vmArgs, String initialHeapSize, - String maximumHeapSize, List resources) { + String maximumHeapSize, List resources) throws ParseException { this.version = version; this.location = location; this.vmArgs = vmArgs; - this.initialHeapSize = heapToLong(initialHeapSize); - this.maximumHeapSize = heapToLong(maximumHeapSize); + checkHeapSize(initialHeapSize); + this.initialHeapSize = initialHeapSize; + checkHeapSize(maximumHeapSize); + this.maximumHeapSize = maximumHeapSize; this.resources = resources; } @@ -97,14 +101,14 @@ public class JREDesc { /** * Returns the maximum heap size in bytes. */ - public long getMaximumHeapSize() { + public String getMaximumHeapSize() { return maximumHeapSize; } /** * Returns the initial heap size in bytes. */ - public long getInitialHeapSize() { + public String getInitialHeapSize() { return initialHeapSize; } @@ -123,12 +127,38 @@ public class JREDesc { } /** - * Convert a heap size description string to a long value - * indicating the heap min/max size. + * Check for valid heap size string + * @throws ParseException if heapSize is invalid */ - static private long heapToLong(String heapSize) { + static private void checkHeapSize(String heapSize) throws ParseException { // need to implement for completeness even though not used in netx - return -1; + if (heapSize == null) { + return; + } + + boolean lastCharacterIsDigit = true; + // the last character must be 0-9 or k/K/m/M + char lastChar = Character.toLowerCase(heapSize.charAt(heapSize.length()-1)); + if ((lastChar < '0' || lastChar > '9')) { + lastCharacterIsDigit = false; + if (lastChar != 'k' && lastChar!= 'm' ) { + throw new ParseException(JNLPRuntime.getMessage("PBadHeapSize",new Object[] {heapSize})); + } + } + + int indexOfLastDigit = heapSize.length() - 1; + if (!lastCharacterIsDigit) { + indexOfLastDigit = indexOfLastDigit - 1; + } + + String size = heapSize.substring(0,indexOfLastDigit); + try { + // check that the number is a number! + Integer.valueOf(size); + } catch (NumberFormatException numberFormat) { + throw new ParseException(JNLPRuntime.getMessage("PBadHeapSize", new Object[] {heapSize}), numberFormat); + } + } } diff -r fa12c4801f74 -r 0c18ad4aa0cf netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Mon May 25 13:54:44 2009 -0400 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Fri May 29 12:13:53 2009 -0400 @@ -88,6 +88,7 @@ PBadNonrelativeUrl=Invalid non-relative PBadNonrelativeUrl=Invalid non-relative URL (node={0}, href={0}). PNeedsAttribute=The {0} element must specify a {1} attribute. PBadXML=Invalid XML document syntax. +PBadHeapSize=Invalid value for heap size ({0}) # Runtime BLaunchAbout=Launching about window... From omajid at redhat.com Tue Aug 4 09:07:30 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:30 +0000 Subject: changeset in /hg/icedtea: 2009-06-09 Omair Majid changeset 6941e22111cc in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=6941e22111cc description: 2009-06-09 Omair Majid * netx/net/sourceforge/jnlp/AssociationDesc.java: New file. (AssociationDesc): New function. Create an association descriptor. (getExtensions): New function. Get the extensions for this association. (getMimeType): New function. Get the mimetype for this association. (checkMimeType): New function. * netx/net/sourceforge/jnlp/InformationDesc.java (getAssociations): New function. Get the associations. (getShortcut): New function. Get the shortcut. (getRelatedContents): New function. Get the related-contents. * netx/net/sourceforge/jnlp/MenuDesc.java: New file. (MenuDesc): New function. (getSubMenu): New function. Get the submenu for this menu descriptor. * netx/net/sourceforge/jnlp/Parser.java (getInformationDesc): Parse "assocation", "shortcut" and "related-content" elements. (getAssociation): New function. Parse the association node to create a AssociationDesc. (getShortcut): New function. Parse the shortcut node to create a ShortcutDesc. (getMenu): New function. Parse a menu node to create a MenuDesc. (getRelatedContent): New function. Parse a related-content node to create a RelatedContentDesc. * netx/net/sourceforge/jnlp/RelatedContentDesc.java (RelatedContentDesc): New function. (setTitle): New function. Set the title of this content. (getTitle): New function. Get the title of this content. (setDescription): New function. Set the description of this content. (getDescription): New function. Get the description of this content. (getLocation): New function. Get the location of this content. (setIconDesc): New function. Set the icon descriptor for this content. (getIcon): Get the icon descriptor for this content. * netx/net/sourceforge/jnlp/ShortcutDesc.java (ShortcutDesc): New function. Initialize requiresOnline and onDesktop. (isOnline): New function. Return true if the shortcut is online only. (onDesktop): New function. Return true if the shortcut should be placed on the desktop. (addMenu): New function. Add a menu descriptor for this shortcut. (getMenu): New function. Return the menu descriptor for this shortcut. * netx/net/sourceforge/jnlp/resources/Messages.properties: Add PTwoDesktops, PTwoMenus, PTwoTitle and PTwoIcons. diffstat: 8 files changed, 445 insertions(+) ChangeLog | 43 +++++ netx/net/sourceforge/jnlp/AssociationDesc.java | 56 +++++++ netx/net/sourceforge/jnlp/InformationDesc.java | 27 +++ netx/net/sourceforge/jnlp/MenuDesc.java | 38 +++++ netx/net/sourceforge/jnlp/Parser.java | 114 +++++++++++++++ netx/net/sourceforge/jnlp/RelatedContentDesc.java | 93 ++++++++++++ netx/net/sourceforge/jnlp/ShortcutDesc.java | 70 +++++++++ netx/net/sourceforge/jnlp/resources/Messages.properties | 4 diffs (truncated from 515 to 500 lines): diff -r 0c18ad4aa0cf -r 6941e22111cc ChangeLog --- a/ChangeLog Fri May 29 12:13:53 2009 -0400 +++ b/ChangeLog Tue Jun 09 14:08:52 2009 -0400 @@ -1,3 +1,46 @@ 2009-05-29 Omair Majid + + * netx/net/sourceforge/jnlp/AssociationDesc.java: New file. + (AssociationDesc): New function. Create an association descriptor. + (getExtensions): New function. Get the extensions for this association. + (getMimeType): New function. Get the mimetype for this association. + (checkMimeType): New function. + * netx/net/sourceforge/jnlp/InformationDesc.java + (getAssociations): New function. Get the associations. + (getShortcut): New function. Get the shortcut. + (getRelatedContents): New function. Get the related-contents. + * netx/net/sourceforge/jnlp/MenuDesc.java: New file. + (MenuDesc): New function. + (getSubMenu): New function. Get the submenu for this menu descriptor. + * netx/net/sourceforge/jnlp/Parser.java + (getInformationDesc): Parse "assocation", "shortcut" and + "related-content" elements. + (getAssociation): New function. Parse the association node to create a + AssociationDesc. + (getShortcut): New function. Parse the shortcut node to create a + ShortcutDesc. + (getMenu): New function. Parse a menu node to create a MenuDesc. + (getRelatedContent): New function. Parse a related-content node to create a + RelatedContentDesc. + * netx/net/sourceforge/jnlp/RelatedContentDesc.java + (RelatedContentDesc): New function. + (setTitle): New function. Set the title of this content. + (getTitle): New function. Get the title of this content. + (setDescription): New function. Set the description of this content. + (getDescription): New function. Get the description of this content. + (getLocation): New function. Get the location of this content. + (setIconDesc): New function. Set the icon descriptor for this content. + (getIcon): Get the icon descriptor for this content. + * netx/net/sourceforge/jnlp/ShortcutDesc.java + (ShortcutDesc): New function. Initialize requiresOnline and onDesktop. + (isOnline): New function. Return true if the shortcut is online only. + (onDesktop): New function. Return true if the shortcut should be placed on + the desktop. + (addMenu): New function. Add a menu descriptor for this shortcut. + (getMenu): New function. Return the menu descriptor for this shortcut. + * netx/net/sourceforge/jnlp/resources/Messages.properties: + Add PTwoDesktops, PTwoMenus, PTwoTitle and PTwoIcons. + 2009-05-29 Omair Majid * netx/net/sourceforge/jnlp/JREDesc.java: diff -r 0c18ad4aa0cf -r 6941e22111cc netx/net/sourceforge/jnlp/AssociationDesc.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/AssociationDesc.java Tue Jun 09 14:08:52 2009 -0400 @@ -0,0 +1,56 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp; + +public final class AssociationDesc { + + /** the extensions this application wants to register with */ + private String[] extensions; + + /** the mime type for the association */ + private String mimeType; + + public AssociationDesc(String mimeType, String[] extensions) throws ParseException { + checkMimeType(mimeType); + this.mimeType = mimeType; + this.extensions = extensions; + } + + /** + * Return the extensions for this association + */ + public String[] getExtensions() { + return extensions; + } + + /** + * Return the mimetype for this association + */ + public String getMimeType() { + return mimeType; + } + + /** + * Check for valid mimeType + * @param mimeType a mime type + * @throws ParseException if mimeType is an invalid MIME type + */ + private void checkMimeType(String mimeType) throws ParseException { + // TODO check that mime type is valid + } + +} diff -r 0c18ad4aa0cf -r 6941e22111cc netx/net/sourceforge/jnlp/InformationDesc.java --- a/netx/net/sourceforge/jnlp/InformationDesc.java Fri May 29 12:13:53 2009 -0400 +++ b/netx/net/sourceforge/jnlp/InformationDesc.java Tue Jun 09 14:08:52 2009 -0400 @@ -1,4 +1,5 @@ // Copyright (C) 2001-2003 Jon A. Maxwell (JAM) +// Copyright (C) 2009 Red Hat, Inc. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -200,6 +201,32 @@ public class InformationDesc { } /** + * Returns the associations specified in the JNLP file + */ + public AssociationDesc[] getAssociations() { + List associations = getItems("association"); + + return (AssociationDesc[]) associations.toArray(new AssociationDesc[associations.size()]); + } + + /** + * Returns the shortcut specified by this JNLP file + */ + public ShortcutDesc getShortcut() { + return (ShortcutDesc) getItem("shortcut"); + } + + /** + * Returns the related-contents specified by this JNLP file + */ + public RelatedContentDesc[] getRelatedContents() { + List relatedContents = getItems("related-content"); + + return (RelatedContentDesc[]) relatedContents.toArray( + new RelatedContentDesc[relatedContents.size()]); + } + + /** * Returns the last item matching the specified key. */ protected Object getItem(Object key) { diff -r 0c18ad4aa0cf -r 6941e22111cc netx/net/sourceforge/jnlp/MenuDesc.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/MenuDesc.java Tue Jun 09 14:08:52 2009 -0400 @@ -0,0 +1,38 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp; + +public class MenuDesc { + + /** the submenu for this menu entry */ + private String subMenu; + + /** + * Create a new menu descriptor + */ + public MenuDesc(String subMenu) { + this.subMenu = subMenu; + } + + /** + * Returns the submenu for this menu entry. + */ + public String getSubMenu() { + return subMenu; + } + +} diff -r 0c18ad4aa0cf -r 6941e22111cc netx/net/sourceforge/jnlp/Parser.java --- a/netx/net/sourceforge/jnlp/Parser.java Fri May 29 12:13:53 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Parser.java Tue Jun 09 14:08:52 2009 -0400 @@ -1,4 +1,5 @@ // Copyright (C) 2001-2003 Jon A. Maxwell (JAM) +// Copyright (C) 2009 Red Hat, Inc. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -435,6 +436,15 @@ class Parser { throw new ParseException(R("PSharing")); addInfo(info, child, null, Boolean.TRUE); } + if ("association".equals(name)) { + addInfo(info, child, null, getAssociation(child)); + } + if ("shortcut".equals(name)) { + addInfo(info, child, null, getShortcut(child)); + } + if ("related-content".equals(name)) { + addInfo(info, child, null, getRelatedContent(child)); + } child = child.getNextSibling(); } @@ -643,6 +653,110 @@ class Parser { return new InstallerDesc(main); } + /** + * Returns the association descriptor. + */ + public AssociationDesc getAssociation(Node node) throws ParseException { + String[] extensions = getRequiredAttribute(node, "extensions", null).split(" "); + String mimeType = getRequiredAttribute(node, "mime-type", null); + + return new AssociationDesc(mimeType, extensions); + } + + /** + * Returns the shortcut descriptor. + */ + public ShortcutDesc getShortcut(Node node) throws ParseException { + + String online = getAttribute(node, "online", "true"); + boolean shortcutIsOnline = Boolean.valueOf(online); + + boolean showOnDesktop = false; + MenuDesc menu = null; + + // step through the elements + Node child = node.getFirstChild(); + while (child != null) { + String name = child.getNodeName(); + + if ("desktop".equals(name)) { + if (showOnDesktop && strict) { + throw new ParseException(R("PTwoDesktops")); + } + showOnDesktop = true; + } else if ("menu".equals(name)){ + if (menu != null && strict) { + throw new ParseException(R("PTwoMenus")); + } + menu = getMenu(child); + } + + child = child.getNextSibling(); + } + + ShortcutDesc shortcut = new ShortcutDesc(shortcutIsOnline, showOnDesktop); + if (menu != null) { + shortcut.addMenu(menu); + } + return shortcut; + } + + /** + * Returns the menu descriptor. + */ + public MenuDesc getMenu(Node node) { + String subMenu = getAttribute(node, "submenu", null); + + return new MenuDesc(subMenu); + } + + + /** + * Returns the related-content descriptor. + */ + public RelatedContentDesc getRelatedContent(Node node) throws ParseException { + + getRequiredAttribute(node, "href", null); + URL location = getURL(node, "href", base); + + String title = null; + String description = null; + IconDesc icon = null; + + // step through the elements + Node child = node.getFirstChild(); + while (child != null) { + String name = child.getNodeName(); + + if ("title".equals(name)) { + if (title != null && strict) { + throw new ParseException(R("PTwoTitles")); + } + title = getSpanText(child); + } else if ("description".equals(name)) { + if (description != null && strict) { + throw new ParseException(R("PTwoDescriptions")); + } + description = getSpanText(child); + } else if ("icon".equals(name)) { + if (icon != null && strict) { + throw new ParseException(R("PTwoIcons")); + } + icon = getIcon(child); + } + + child = child.getNextSibling(); + } + + RelatedContentDesc relatedContent = new RelatedContentDesc(location); + relatedContent.setDescription(description); + relatedContent.setIconDesc(icon); + relatedContent.setTitle(title); + + return relatedContent; + + } + // other methods /** diff -r 0c18ad4aa0cf -r 6941e22111cc netx/net/sourceforge/jnlp/RelatedContentDesc.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/RelatedContentDesc.java Tue Jun 09 14:08:52 2009 -0400 @@ -0,0 +1,93 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp; + +import java.net.URL; + +public class RelatedContentDesc { + + /** title of the content */ + private String title = null;; + + /** the description of the content */ + private String description = null; + + /** the location of the content */ + private URL location = null; + + /** the icon for this related content */ + private IconDesc icon = null; + + /** + * Create a related-content descriptor + * @param href the url of the related content + */ + public RelatedContentDesc(URL href) { + this.location = href; + } + + /** + * Set the title of this content + * @param title the title of this content + */ + public void setTitle(String title) { + this.title = title; + } + + /** + * Returns the title of this content.. + */ + public String getTitle() { + return title; + } + + /** + * Set the description of this related content + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * Returns the description of the related content + */ + public String getDescription() { + return description; + } + + /** + * Returns the location of the related content. Not null + */ + public URL getLocation() { + return location; + } + + /** + * Set the icon for this related content + */ + public void setIconDesc(IconDesc icon) { + this.icon = icon; + } + + /** + * Returns the icon descriptor for the realted content + */ + public IconDesc getIcon() { + return icon; + } + +} diff -r 0c18ad4aa0cf -r 6941e22111cc netx/net/sourceforge/jnlp/ShortcutDesc.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/ShortcutDesc.java Tue Jun 09 14:08:52 2009 -0400 @@ -0,0 +1,70 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp; + +public final class ShortcutDesc { + + /** the application wants to be placed on the desktop */ + private boolean onDesktop = false; + + /** the application needs to be launched online */ + private boolean requiresOnline = true; + + /** the menu descriptor */ + private MenuDesc menu = null; + + /** + * Create a new Shortcut descriptor + * @param requiresOnline whether the shortcut requires connectivity + * @param onDesktop whether the shortcut wants to be placed on the desktop + */ + public ShortcutDesc(boolean requiresOnline, boolean onDesktop) { + this.requiresOnline = requiresOnline; + this.onDesktop = onDesktop; + } + + /** + * Returns whether the shortcut requires being online + */ + public boolean isOnline() { + return requiresOnline; + } + + /** + * Return whether the shortcut should be placed on the desktop + */ + public boolean onDesktop() { + return onDesktop; + } + + /** + * Add a shortcut to the 'start menu' + * (whatever that means on gnome/kde/other ...) + * @param menu if/what menu this shortcut should be added to + */ + public void addMenu(MenuDesc menu) { + this.menu = menu; + } + + /** + * Returns the menu this shortcut should be added to + */ + public MenuDesc getMenu() { + return menu; + } + From omajid at redhat.com Tue Aug 4 09:07:31 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:31 +0000 Subject: changeset in /hg/icedtea: 2009-06-10 Omair Majid changeset 649b859ba20d in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=649b859ba20d description: 2009-06-10 Omair Majid * netx/net/sourceforge/jnlp/services/XBasicService.java (isOffline): Check if the system is offline by retrieving data from a URL. (findFirstURLFromJNLPFile): New function. Obtain a URL from the JNLP file. As a last resort, return an arbitrary known URL. diffstat: 2 files changed, 76 insertions(+), 9 deletions(-) ChangeLog | 7 + netx/net/sourceforge/jnlp/services/XBasicService.java | 78 +++++++++++++++-- diffs (109 lines): diff -r 6941e22111cc -r 649b859ba20d ChangeLog --- a/ChangeLog Tue Jun 09 14:08:52 2009 -0400 +++ b/ChangeLog Wed Jun 10 10:53:03 2009 -0400 @@ -1,3 +1,10 @@ 2009-06-09 Omair Majid + + * netx/net/sourceforge/jnlp/services/XBasicService.java + (isOffline): Check if the system is offline by retrieving data from a URL. + (findFirstURLFromJNLPFile): New function. Obtain a URL from the JNLP file. + As a last resort, return an arbitrary known URL. + 2009-06-09 Omair Majid * netx/net/sourceforge/jnlp/AssociationDesc.java: New file. diff -r 6941e22111cc -r 649b859ba20d netx/net/sourceforge/jnlp/services/XBasicService.java --- a/netx/net/sourceforge/jnlp/services/XBasicService.java Tue Jun 09 14:08:52 2009 -0400 +++ b/netx/net/sourceforge/jnlp/services/XBasicService.java Wed Jun 10 10:53:03 2009 -0400 @@ -17,14 +17,21 @@ package net.sourceforge.jnlp.services; -import java.io.*; -import java.net.*; -import javax.jnlp.*; -import javax.swing.*; - -import net.sourceforge.jnlp.*; -import net.sourceforge.jnlp.runtime.*; -import net.sourceforge.jnlp.util.*; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import javax.jnlp.BasicService; +import javax.swing.JOptionPane; +import javax.swing.JPanel; + +import net.sourceforge.jnlp.InformationDesc; +import net.sourceforge.jnlp.JARDesc; +import net.sourceforge.jnlp.JNLPFile; +import net.sourceforge.jnlp.Launcher; +import net.sourceforge.jnlp.runtime.ApplicationInstance; +import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.util.PropertiesFile; /** * The BasicService JNLP service. @@ -81,7 +88,60 @@ class XBasicService implements BasicServ * Return true if the Environment is Offline */ public boolean isOffline() { - return false; + + URL url = findFirstURLFromJNLPFile(); + + try { + url.openConnection().getInputStream().close(); + return false; + } catch (IOException exception) { + return true; + } + } + + /** + * Return the first URL from the jnlp file + * Or a default URL if no url found in JNLP file + */ + private URL findFirstURLFromJNLPFile() { + + ApplicationInstance app = JNLPRuntime.getApplication(); + + if (app != null) { + JNLPFile jnlpFile = app.getJNLPFile(); + + URL sourceURL = jnlpFile.getSourceLocation(); + if (sourceURL != null) { + return sourceURL; + } + + URL codeBaseURL = jnlpFile.getCodeBase(); + if (codeBaseURL != null) { + return codeBaseURL; + } + + InformationDesc informationDesc = jnlpFile.getInformation(); + URL homePage = informationDesc.getHomepage(); + if (homePage != null) { + return homePage; + } + + JARDesc[] jarDescs = jnlpFile.getResources().getJARs(); + for (JARDesc jarDesc: jarDescs) { + return jarDesc.getLocation(); + } + } + + // this section is only reached if the jnlp file has no jars. + // that doesnt seem very likely. + URL arbitraryURL; + try { + arbitraryURL = new URL("http://icedtea.classpath.org"); + } catch (MalformedURLException malformedURL) { + throw new RuntimeException(malformedURL); + } + + return arbitraryURL; } /** From omajid at redhat.com Tue Aug 4 09:07:29 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:29 +0000 Subject: changeset in /hg/icedtea: 2009-05-25 Omair Majid changeset fa12c4801f74 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=fa12c4801f74 description: 2009-05-25 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add RUnexpected to show generic unexpected information. * netx/net/sourceforge/jnlp/runtime/Boot.java (run): Show more information about the fatal exception. diffstat: 3 files changed, 10 insertions(+), 1 deletion(-) ChangeLog | 7 +++++++ netx/net/sourceforge/jnlp/resources/Messages.properties | 1 + netx/net/sourceforge/jnlp/runtime/Boot.java | 3 ++- diffs (38 lines): diff -r 9a93570b7b06 -r fa12c4801f74 ChangeLog --- a/ChangeLog Fri May 22 10:13:16 2009 -0400 +++ b/ChangeLog Mon May 25 13:54:44 2009 -0400 @@ -1,3 +1,10 @@ 2009-05-22 Omair Majid + + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add + RUnexpected to show generic unexpected information. + * netx/net/sourceforge/jnlp/runtime/Boot.java (run): Show more + information about the fatal exception. + 2009-05-22 Omair Majid * netx/net/sourceforge/jnlp/JNLPFile.java (parse): Fix comment to reflect diff -r 9a93570b7b06 -r fa12c4801f74 netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Fri May 22 10:13:16 2009 -0400 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Mon May 25 13:54:44 2009 -0400 @@ -105,6 +105,7 @@ RCantReplaceSM=Changing the SecurityMana RCantReplaceSM=Changing the SecurityManager is not allowed. RDenyStopped=Stopped applications have no permissions. RExitNoApp=Can not exit the JVM because the current application cannot be determined. +RUnexpected=Unexpected {0} at {1} # Boot options, message should be shorter than this ----------------> BOUsage=javaws [-run-options] diff -r 9a93570b7b06 -r fa12c4801f74 netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Fri May 22 10:13:16 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Mon May 25 13:54:44 2009 -0400 @@ -209,7 +209,8 @@ public final class Boot implements Privi if (JNLPRuntime.isDebug()) ex.printStackTrace(); - fatalError(ex.getMessage()); + fatalError(JNLPRuntime.getMessage("RUnexpected", + new Object[] {ex.toString(), ex.getStackTrace()[0]} )); } return null; From dbhole at redhat.com Tue Aug 4 09:07:32 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 04 Aug 2009 16:07:32 +0000 Subject: changeset in /hg/icedtea: - Fix race conditions related to multi... Message-ID: changeset ee421053683d in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=ee421053683d description: - Fix race conditions related to multi-stage initialization/destruction - Account for port# when implementing security policy based on address - Reduce sleep time during initialization check iterations diffstat: 4 files changed, 168 insertions(+), 32 deletions(-) ChangeLog | 9 + IcedTeaPlugin.cc | 22 ++ netx/net/sourceforge/jnlp/NetxPanel.java | 2 plugin/icedtea/sun/applet/PluginAppletViewer.java | 167 +++++++++++++++++---- diffs (359 lines): diff -r 8754d9d3bc2c -r ee421053683d ChangeLog --- a/ChangeLog Tue Jun 16 10:58:00 2009 -0400 +++ b/ChangeLog Wed Jun 17 14:47:36 2009 -0400 @@ -1,3 +1,12 @@ 2009-06-16 Omair Majid + + * IcedTeaPlugin.cc: Fix race condition that led to segfault. + * plugin/icedtea/sun/applet/PluginAppletViewer.java: Fix a host of race + conditions brought about by the multi stage asynchronous initialization + design. + * netx/net/sourceforge/jnlp/NetxPanel.java: Account for case where handler + may be null due to an error above. + 2009-06-16 Omair Majid * netx/javax/jnlp/SingleInstanceListener.java: New file. diff -r 8754d9d3bc2c -r ee421053683d IcedTeaPlugin.cc --- a/IcedTeaPlugin.cc Tue Jun 16 10:58:00 2009 -0400 +++ b/IcedTeaPlugin.cc Wed Jun 17 14:47:36 2009 -0400 @@ -1065,6 +1065,7 @@ private: gpointer window_handle; guint32 window_width; guint32 window_height; + PRBool is_active; // FIXME: nsCOMPtr. IcedTeaPluginFactory* factory; PRUint32 instance_identifier; @@ -2447,6 +2448,7 @@ IcedTeaPluginInstance::Destroy () nsCString destroyMessage (instanceIdentifierPrefix); destroyMessage += "destroy"; factory->SendMessageToAppletViewer (destroyMessage); + is_active = PR_FALSE; return NS_OK; } @@ -2475,7 +2477,9 @@ IcedTeaPluginInstance::SetWindow (nsPlug long startTime = get_time_in_s(); PRBool timedOut = PR_FALSE; - while (initialized == PR_FALSE && this->fatalErrorOccurred == PR_FALSE) + while (initialized == PR_FALSE && + this->fatalErrorOccurred == PR_FALSE && + this->is_active == PR_FALSE) { PROCESS_PENDING_EVENTS; @@ -2638,7 +2642,9 @@ IcedTeaPluginInstance::GetJavaObject (jo long startTime = get_time_in_s(); PRBool timedOut = PR_FALSE; - while (initialized == PR_FALSE && this->fatalErrorOccurred == PR_FALSE) + while (initialized == PR_FALSE && + this->fatalErrorOccurred == PR_FALSE && + this->is_active == PR_FALSE) { PROCESS_PENDING_EVENTS; @@ -4115,6 +4121,7 @@ IcedTeaPluginInstance::IcedTeaPluginInst liveconnect_window (0), initialized(PR_FALSE), fatalErrorOccurred(PR_FALSE), + is_active(PR_TRUE), instanceIdentifierPrefix ("") { PLUGIN_TRACE_INSTANCE (); @@ -4134,6 +4141,7 @@ IcedTeaPluginInstance::GetWindow () nsresult result; PLUGIN_DEBUG_1ARG ("HERE 22: %d\n", liveconnect_window); + // principalsArray, numPrincipals and securitySupports // are ignored by GetWindow. See: // @@ -4144,6 +4152,16 @@ IcedTeaPluginInstance::GetWindow () if (factory->proxyEnv != NULL) { PLUGIN_DEBUG_2ARG ("HERE 23: %d, %p\n", liveconnect_window, current_thread ()); + + // there is a bad race condition here where if the instance is active, + // this code remains active after destruction.. so double check + if (is_active != PR_TRUE) + { + PLUGIN_DEBUG_1ARG("Plugin %d is no longer active. Bypassing \ + GetWindow request.\n", instance_identifier); + return; + } + result = factory->liveconnect->GetWindow(factory->proxyEnv, this, NULL, 0, NULL, diff -r 8754d9d3bc2c -r ee421053683d netx/net/sourceforge/jnlp/NetxPanel.java --- a/netx/net/sourceforge/jnlp/NetxPanel.java Tue Jun 16 10:58:00 2009 -0400 +++ b/netx/net/sourceforge/jnlp/NetxPanel.java Wed Jun 17 14:47:36 2009 -0400 @@ -144,7 +144,7 @@ public class NetxPanel extends AppletVie } public boolean isAlive() { - return handler.isAlive() && this.appletAlive; + return handler != null && handler.isAlive() && this.appletAlive; } } diff -r 8754d9d3bc2c -r ee421053683d plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Jun 16 10:58:00 2009 -0400 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Wed Jun 17 14:47:36 2009 -0400 @@ -145,6 +145,8 @@ import com.sun.jndi.toolkit.url.UrlUtil; */ private static String defaultSaveFile = "Applet.ser"; + private static enum PAV_INIT_STATUS {PRE_INIT, ACTIVE, INACTIVE}; + /** * The panel in which the applet is being displayed. */ @@ -168,17 +170,23 @@ import com.sun.jndi.toolkit.url.UrlUtil; int identifier; - private static HashMap requests = new HashMap(); + private static HashMap requests = + new HashMap(); // Instance identifier -> PluginAppletViewer object. - private static HashMap applets = new HashMap(); + private static HashMap applets = + new HashMap(); private static PluginStreamHandler streamhandler; private static PluginCallRequestFactory requestFactory; - private static HashMap siteCookies = new HashMap(); - + private static HashMap siteCookies = + new HashMap(); + + private static HashMap status = + new HashMap(); + private double proposedHeightFactor; private double proposedWidthFactor; @@ -312,7 +320,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; Applet a; while ((a = panel.getApplet()) == null && ((NetxPanel) panel).isAlive()) { try { - Thread.sleep(2000); + Thread.sleep(1000); PluginDebug.debug("Waiting for applet to initialize... "); } catch (InterruptedException ie) { ie.printStackTrace(); @@ -328,7 +336,8 @@ import com.sun.jndi.toolkit.url.UrlUtil; PluginDebug.debug("Applet initialized"); // Applet initialized. Find out it's classloader and add it to the list - String codeBase = doc.getProtocol() + "://" + doc.getHost(); + String portComponent = doc.getPort() != -1 ? ":" + doc.getPort() : ""; + String codeBase = doc.getProtocol() + "://" + doc.getHost() + portComponent; if (atts.get("codebase") != null) { try { @@ -373,6 +382,21 @@ import com.sun.jndi.toolkit.url.UrlUtil; // may happen in independent threads synchronized(requests) { + + // Check if we should proceed with init + // (=> no if destroy was called after tag, but before + // handle) + if (status.containsKey(identifier) && + status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { + + PluginDebug.debug("Inactive flag set. Refusing to initialize instance " + identifier); + requests.remove(identifier); + return; + + } + + status.put(identifier, PAV_INIT_STATUS.PRE_INIT); + PluginParseRequest request = requests.get(identifier); if (request == null) { request = new PluginParseRequest(); @@ -393,6 +417,17 @@ import com.sun.jndi.toolkit.url.UrlUtil; new StringReader(request.tag), new URL(request.documentbase)); requests.remove(identifier); + + // Panel initialization cannot be aborted mid-way. + // Once it is initialized, double check to see if this + // panel needs to stay around.. + if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { + PluginDebug.debug("Inactive flag set. Destroying applet instance " + identifier); + applets.get(identifier).handleMessage(-1, "destroy"); + } else { + status.put(identifier, PAV_INIT_STATUS.ACTIVE); + } + } else { PluginDebug.debug ("REQUEST HANDLE NOT SET: " + request.handle + ". BYPASSING"); } @@ -400,6 +435,21 @@ import com.sun.jndi.toolkit.url.UrlUtil; } else if (message.startsWith("handle")) { synchronized(requests) { + + // Check if we should proceed with init + // (=> no if destroy was called after handle, but before + // tag) + if (status.containsKey(identifier) && + status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { + + PluginDebug.debug("Inactive flag set. Refusing to initialize instance " + identifier); + requests.remove(identifier); + return; + + } + + status.put(identifier, PAV_INIT_STATUS.PRE_INIT); + PluginParseRequest request = requests.get(identifier); if (request == null) { request = new PluginParseRequest(); @@ -418,6 +468,17 @@ import com.sun.jndi.toolkit.url.UrlUtil; requests.remove(identifier); PluginDebug.debug ("REQUEST HANDLE, DONE PARSING " + Thread.currentThread()); + + // Panel initialization cannot be aborted mid-way. + // Once it is initialized, double check to see if this + // panel needs to stay around.. + if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { + PluginDebug.debug("Inactive flag set. Destroying applet instance " + identifier); + applets.get(identifier).handleMessage(-1, "destroy"); + } else { + status.put(identifier, PAV_INIT_STATUS.ACTIVE); + } + } else { PluginDebug.debug ("REQUEST TAG NOT SET: " + request.tag + ". BYPASSING"); } @@ -433,12 +494,57 @@ import com.sun.jndi.toolkit.url.UrlUtil; // Always set the cookie -- even if it is null siteCookies.put(identifier, cookieStr); } else { - PluginDebug.debug ("HANDLING MESSAGE " + message + " instance " + identifier + " " + Thread.currentThread()); + PluginDebug.debug ("Handling message: " + message + " instance " + identifier + " " + Thread.currentThread()); + + // Destroy may be called while initialization is still going + // on. We therefore special case it. + if (!applets.containsKey(identifier) && message.equals("destroy")) { + + // Set the status to inactive right away. Doesn't matter if it + // gets clobbered during init. due to a race. That is what the + // double check below is for. + PluginDebug.debug("Destroy called during initialization. Delaying destruction."); + status.put(identifier, PAV_INIT_STATUS.INACTIVE); + + // We have set the flags. We now lock what stage 1 and 2 + // lock on, and force a synchronous status check+action. + synchronized (requests) { + // re-check (inside lock) if the applet is + // initialized at this point. + if (applets.containsKey(identifier)) { + PluginDebug.debug("Init done. destroying normally."); + applets.get(identifier).handleMessage(reference, message); + } else { + } + } // unlock + + // we're done here + return; + } + + // For messages other than destroy, wait till initialization finishes + while (!applets.containsKey(identifier) && + ( + !status.containsKey(identifier) || + status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT) + ) + ); + + // don't bother processing further for inactive applets + if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) + return; + applets.get(identifier).handleMessage(reference, message); } } catch (Exception e) { - throw new RuntimeException("Failed to handle message: " + message + " " + - Thread.currentThread(), e); + + // If an exception happened during pre-init, we need to update status + if (status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT)) + status.put(identifier, PAV_INIT_STATUS.INACTIVE); + + throw new RuntimeException("Failed to handle message: " + + message + " for instance " + identifier + " " + + Thread.currentThread(), e); } } @@ -487,6 +593,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; } } else if (message.startsWith("destroy")) { dispose(); + status.put(identifier, PAV_INIT_STATUS.INACTIVE); } else if (message.startsWith("GetJavaObject")) { // FIXME: how do we determine what security context this // object should belong to? @@ -1291,26 +1398,28 @@ import com.sun.jndi.toolkit.url.UrlUtil; * the last applet. */ void appletClose() { - - // The caller thread is event dispatch thread, so - // spawn a new thread to avoid blocking the event queue - // when calling appletShutdown. - // - final AppletPanel p = panel; - - new Thread(new Runnable() - { - public void run() - { - appletShutdown(p); - appletPanels.removeElement(p); - dispose(); - - if (countApplets() == 0) { - appletSystemExit(); - } - } - }).start(); + + // The caller thread is event dispatch thread, so + // spawn a new thread to avoid blocking the event queue + // when calling appletShutdown. + // + final AppletPanel p = panel; + + new Thread(new Runnable() + { + public void run() + { + appletShutdown(p); + appletPanels.removeElement(p); + dispose(); + + if (countApplets() == 0) { + appletSystemExit(); + } + } + }).start(); + + status.put(identifier, PAV_INIT_STATUS.INACTIVE); } /** From omajid at redhat.com Tue Aug 4 09:07:32 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:32 +0000 Subject: changeset in /hg/icedtea: 2009-06-16 Omair Majid changeset 8754d9d3bc2c in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=8754d9d3bc2c description: 2009-06-16 Omair Majid * netx/javax/jnlp/SingleInstanceListener.java: New file. * netx/javax/jnlp/SingleInstanceService.java: New file. diffstat: 3 files changed, 86 insertions(+) ChangeLog | 5 ++ netx/javax/jnlp/SingleInstanceListener.java | 35 ++++++++++++++++++++ netx/javax/jnlp/SingleInstanceService.java | 46 +++++++++++++++++++++++++++ diffs (101 lines): diff -r 5153060e463b -r 8754d9d3bc2c ChangeLog --- a/ChangeLog Tue Jun 16 10:23:45 2009 -0400 +++ b/ChangeLog Tue Jun 16 10:58:00 2009 -0400 @@ -1,3 +1,8 @@ 2009-06-16 Omair Majid + + * netx/javax/jnlp/SingleInstanceListener.java: New file. + * netx/javax/jnlp/SingleInstanceService.java: New file. + 2009-06-16 Omair Majid * netx/net/sourceforge/jnlp/services/ServiceUtil.java: diff -r 5153060e463b -r 8754d9d3bc2c netx/javax/jnlp/SingleInstanceListener.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/javax/jnlp/SingleInstanceListener.java Tue Jun 16 10:58:00 2009 -0400 @@ -0,0 +1,35 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package javax.jnlp; + +/** + * This interface specifies a listener which is notified whenever a new instance + * of the web start application is launched. + * + */ +public interface SingleInstanceListener { + + /** + * This method is called when a new instance of the application is launched. + * The arguments passed to the new instance are passed into this method. + * + * @param arguments the arguments passed to the new instance of the + * application + */ + void newActivation(String[] arguments); + +} diff -r 5153060e463b -r 8754d9d3bc2c netx/javax/jnlp/SingleInstanceService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/javax/jnlp/SingleInstanceService.java Tue Jun 16 10:58:00 2009 -0400 @@ -0,0 +1,46 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package javax.jnlp; + +/** + * The SingleInstanceService provides a way to ensure that only one instance of + * the application is ever running - singleton behavior at the application + * level. + * + */ +public interface SingleInstanceService { + + /** + * Adds the specified SingleInstanceListener to the notification list. This + * listener is notified when a new instance of the application is started. + * + * + * @param listener the single instance listener to be added. No action is + * performed if it is null. + */ + void addSingleInstanceListener(SingleInstanceListener listener); + + /** + * Removes the specified SingleInstanceListener from the notification list. + * This listener will not be notified if a new instance of the application + * is started. + * + * @param listener the single instance listener to be removed. No action is + * performed if it is null or not in the notification list. + */ + void removeSingleInstanceListener(SingleInstanceListener listener); +} From omajid at redhat.com Tue Aug 4 09:07:33 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:33 +0000 Subject: changeset in /hg/icedtea: 2009-06-17 Omair Majid changeset f04f94067be0 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=f04f94067be0 description: 2009-06-17 Omair Majid * netx/javax/jnlp/ExtendedService.java: New file. * netx/net/sourceforge/jnlp/services/XExtendedService.java: New file. * netx/net/sourceforge/jnlp/services/XServiceManagerStub.java: Add ExtendedService to serviceNames. Create a proxy for XExtendedService to provide ExtendedService. diffstat: 4 files changed, 117 insertions(+) ChangeLog | 8 + netx/javax/jnlp/ExtendedService.java | 51 ++++++++++ netx/net/sourceforge/jnlp/services/XExtendedService.java | 56 +++++++++++ netx/net/sourceforge/jnlp/services/XServiceManagerStub.java | 2 diffs (149 lines): diff -r ee421053683d -r f04f94067be0 ChangeLog --- a/ChangeLog Wed Jun 17 14:47:36 2009 -0400 +++ b/ChangeLog Wed Jun 17 15:13:34 2009 -0400 @@ -1,3 +1,11 @@ 2009-06-17 Deepak Bhole + + * * netx/javax/jnlp/ExtendedService.java: New file. + * netx/net/sourceforge/jnlp/services/XExtendedService.java: New file. + * netx/net/sourceforge/jnlp/services/XServiceManagerStub.java: Add + ExtendedService to serviceNames. Create a proxy for XExtendedService to + provide ExtendedService. + 2009-06-17 Deepak Bhole * IcedTeaPlugin.cc: Fix race condition that led to segfault. diff -r ee421053683d -r f04f94067be0 netx/javax/jnlp/ExtendedService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/javax/jnlp/ExtendedService.java Wed Jun 17 15:13:34 2009 -0400 @@ -0,0 +1,51 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package javax.jnlp; + +import java.io.File; +import java.io.IOException; + +/** + * This interface provides a way for the JNLP application to open specific files + * in the client's system. It asks permission from the user before opening any + * files. + * + * @author Omair Majid + * + */ +public interface ExtendedService { + + /** + * Open a file on the client' system and return its contents. The user must + * grant permission to the application for this to work. + * + * @param file the file to open + * @return the opened file as a {@link FileContents} object + * @throws IOException on any io problems + */ + FileContents openFile(File file) throws IOException; + + /** + * Opens multiple files on the user's sytem and returns their contents as a + * {@link FileContents} array + * + * @param files the files to open + * @return an array of FileContents objects + * @throws IOException on any io problems + */ + FileContents[] openFiles(File[] files) throws IOException; +} diff -r ee421053683d -r f04f94067be0 netx/net/sourceforge/jnlp/services/XExtendedService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/services/XExtendedService.java Wed Jun 17 15:13:34 2009 -0400 @@ -0,0 +1,56 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp.services; + +import java.io.File; +import java.io.IOException; + +import javax.jnlp.ExtendedService; +import javax.jnlp.FileContents; + +import net.sourceforge.jnlp.security.SecurityWarningDialog; + +/** + * Implementation of ExtendedService + * + * @author Omair Majid + * + */ +public class XExtendedService implements ExtendedService { + + @Override + public FileContents openFile(File file) throws IOException { + + if (ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.READ_FILE)) { + return (FileContents) ServiceUtil.createPrivilegedProxy(FileContents.class, + new XFileContents(file)); + } else { + return null; + } + + } + + @Override + public FileContents[] openFiles(File[] files) throws IOException { + FileContents[] contents = new FileContents[files.length]; + for (int i = 0; i < files.length; i++) { + contents[i] = openFile(files[i]); + } + return contents; + } + +} diff -r ee421053683d -r f04f94067be0 netx/net/sourceforge/jnlp/services/XServiceManagerStub.java --- a/netx/net/sourceforge/jnlp/services/XServiceManagerStub.java Wed Jun 17 14:47:36 2009 -0400 +++ b/netx/net/sourceforge/jnlp/services/XServiceManagerStub.java Wed Jun 17 15:13:34 2009 -0400 @@ -45,6 +45,7 @@ public class XServiceManagerStub impleme private static String serviceNames[] = { "javax.jnlp.BasicService", // required "javax.jnlp.DownloadService", // required + "javax.jnlp.ExtendedService", "javax.jnlp.ExtensionInstallerService", // required "javax.jnlp.PersistenceService", "javax.jnlp.FileOpenService", @@ -56,6 +57,7 @@ public class XServiceManagerStub impleme private static Object services[] = { ServiceUtil.createPrivilegedProxy(BasicService.class, new XBasicService()), ServiceUtil.createPrivilegedProxy(DownloadService.class, new XDownloadService()), + ServiceUtil.createPrivilegedProxy(ExtendedService.class, new XExtendedService()), ServiceUtil.createPrivilegedProxy(ExtensionInstallerService.class, new XExtensionInstallerService()), ServiceUtil.createPrivilegedProxy(PersistenceService.class, new XPersistenceService()), ServiceUtil.createPrivilegedProxy(FileOpenService.class, new XFileOpenService()), From omajid at redhat.com Tue Aug 4 09:07:34 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:34 +0000 Subject: changeset in /hg/icedtea: 2009-06-24 Omair Majid changeset 0cfbe4d569d9 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=0cfbe4d569d9 description: 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java (launchApplication): Check for any existing single instance. Dont start a second instance. * netx/net/sourceforge/jnlp/resources/Messages.properties: Add RNoLockDir. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Added USER, TMP_DIR, and changed LOCKS_DIR. * netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java New file. * netx/net/sourceforge/jnlp/services/InstanceExistsException.java: New file. * netx/net/sourceforge/jnlp/services/ServiceUtil.java (getSingleInstanceService): New function. (checkExistingSingleInstance): New function. * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java: New file. * netx/net/sourceforge/jnlp/services/XServiceManagerStub.java: Add SingleInstanceService to serviceNames. Create a new instance of XSingleInstanceService as a privileged proxy. * netx/net/sourceforge/jnlp/services/XSingleInstanceService.java: New file. diffstat: 10 files changed, 602 insertions(+), 12 deletions(-) ChangeLog | 19 netx/net/sourceforge/jnlp/Launcher.java | 8 netx/net/sourceforge/jnlp/resources/Messages.properties | 1 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 16 netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java | 49 ++ netx/net/sourceforge/jnlp/services/InstanceExistsException.java | 35 + netx/net/sourceforge/jnlp/services/ServiceUtil.java | 48 +- netx/net/sourceforge/jnlp/services/SingleInstanceLock.java | 203 ++++++++ netx/net/sourceforge/jnlp/services/XServiceManagerStub.java | 6 netx/net/sourceforge/jnlp/services/XSingleInstanceService.java | 229 ++++++++++ diffs (truncated from 717 to 500 lines): diff -r 4e5e95c066da -r 0cfbe4d569d9 ChangeLog --- a/ChangeLog Wed Jun 24 12:15:33 2009 -0400 +++ b/ChangeLog Wed Jun 24 15:02:45 2009 -0400 @@ -1,3 +1,22 @@ 2009-06-24 Omair Majid + + * netx/net/sourceforge/jnlp/Launcher.java (launchApplication): Check for any + existing single instance. Dont start a second instance. + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add RNoLockDir. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: + Added USER, TMP_DIR, and changed LOCKS_DIR. + * netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java + New file. + * netx/net/sourceforge/jnlp/services/InstanceExistsException.java: New file. + * netx/net/sourceforge/jnlp/services/ServiceUtil.java + (getSingleInstanceService): New function. + (checkExistingSingleInstance): New function. + * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java: New file. + * netx/net/sourceforge/jnlp/services/XServiceManagerStub.java: Add + SingleInstanceService to serviceNames. Create a new instance of + XSingleInstanceService as a privileged proxy. + * netx/net/sourceforge/jnlp/services/XSingleInstanceService.java: New file. + 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/Parser.java: Add 1.5 and 6.0 to diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Wed Jun 24 12:15:33 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Wed Jun 24 15:02:45 2009 -0400 @@ -37,6 +37,8 @@ import net.sourceforge.jnlp.runtime.Appl import net.sourceforge.jnlp.runtime.ApplicationInstance; import net.sourceforge.jnlp.runtime.JNLPClassLoader; import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.services.InstanceExistsException; +import net.sourceforge.jnlp.services.ServiceUtil; import net.sourceforge.jnlp.util.Reflect; /** @@ -365,6 +367,12 @@ public class Launcher { throw launchError(new LaunchException(file, null, R("LSFatal"), R("LCClient"), R("LNotApplication"), R("LNotApplicationInfo"))); try { + + try { + ServiceUtil.checkExistingSingleInstance(file); + } catch (InstanceExistsException e) { + return null; + } if (JNLPRuntime.getForksAllowed() && file.needsNewVM()) { List netxArguments = new LinkedList(); diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Jun 24 12:15:33 2009 -0400 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Jun 24 15:02:45 2009 -0400 @@ -110,6 +110,7 @@ RCantReplaceSM=Changing the SecurityMana RCantReplaceSM=Changing the SecurityManager is not allowed. RDenyStopped=Stopped applications have no permissions. RExitNoApp=Can not exit the JVM because the current application cannot be determined. +RNoLockDir=Unable to create locks directory ({0}) RUnexpected=Unexpected {0} at {1} # Boot options, message should be shorter than this ----------------> diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Jun 24 12:15:33 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Jun 24 15:02:45 2009 -0400 @@ -104,6 +104,9 @@ public class JNLPRuntime { /** contains the arguments passed to the jnlp runtime */ private static List initialArguments; + /** Username */ + public static final String USER = System.getProperty("user.name"); + /** User's home directory */ public static final String HOME_DIR = System.getProperty("user.home"); @@ -119,12 +122,17 @@ public class JNLPRuntime { /** the ~/.netx/security/trusted.certs file containing trusted certificates */ public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; - /** - * the ~/.netx/locks/ directory containing locks for single instance + /** the /tmp/ directory used for temporary files */ + public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); + + /** + * the /tmp/$USER/netx/locks/ directory containing locks for single instance * applications */ - public static final String LOCKS_DIR = NETX_DIR + File.separator + "locks"; - + public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator + + "netx" + File.separator + "locks"; + + /** the java.home directory */ public static final String JAVA_HOME_DIR = System.getProperty("java.home"); /** the JNLP file to open to display the network-based about window */ diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/services/ExtendedSingleInstanceService.java Wed Jun 24 15:02:45 2009 -0400 @@ -0,0 +1,49 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp.services; + +import javax.jnlp.SingleInstanceService; + +import net.sourceforge.jnlp.JNLPFile; + +/** + * Extends SingleInstanceService to provide a few additional methods that are + * required to initialize SingleInstanceService and check things. These methods + * are not exposed publicly + * + * @author Omair Majid + * + */ +interface ExtendedSingleInstanceService extends SingleInstanceService { + + /** + * Check if the instance identified by this jnlp file is already running + * + * @param jnlpFile The JNLPFile that specifies the application + * + * @throws InstanceExistsException if an instance of this application + * already exists + * + */ + void checkSingleInstanceRunning(JNLPFile jnlpFile); + + /** + * Start a single instance service based on the current application + */ + void initializeSingleInstance(); + +} diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/services/InstanceExistsException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/services/InstanceExistsException.java Wed Jun 24 15:02:45 2009 -0400 @@ -0,0 +1,35 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp.services; + +/** + * + * This class represents an exception indicating that an application instance + * already exists for this jnlp file + * + * @author Omair Majid + * + */ +public class InstanceExistsException extends RuntimeException { + + private static final long serialVersionUID = 7950552292795498272L; + + public InstanceExistsException(String message) { + super(message); + } + +} diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/services/ServiceUtil.java --- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Wed Jun 24 12:15:33 2009 -0400 +++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Wed Jun 24 15:02:45 2009 -0400 @@ -17,12 +17,29 @@ package net.sourceforge.jnlp.services; -import java.lang.reflect.*; -import java.security.*; - -import javax.jnlp.*; - -import net.sourceforge.jnlp.runtime.*; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; + +import javax.jnlp.BasicService; +import javax.jnlp.ClipboardService; +import javax.jnlp.DownloadService; +import javax.jnlp.ExtensionInstallerService; +import javax.jnlp.FileOpenService; +import javax.jnlp.FileSaveService; +import javax.jnlp.PersistenceService; +import javax.jnlp.PrintService; +import javax.jnlp.ServiceManager; +import javax.jnlp.SingleInstanceService; +import javax.jnlp.UnavailableServiceException; + +import net.sourceforge.jnlp.JNLPFile; +import net.sourceforge.jnlp.runtime.ApplicationInstance; +import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.security.SecurityWarningDialog; /** @@ -110,6 +127,25 @@ public class ServiceUtil { return (PrintService) getService("javax.jnlp.PrintService"); } + /** + * Returns the SingleInstanceService reference, or null if the service is + * unavailable. + */ + public static SingleInstanceService getSingleInstanceService() { + return (SingleInstanceService) getService("javax.jnlp.SingleInstanceService"); + } + + /** + * Checks that this application (represented by the jnlp) isnt already running + * @param jnlpFile the {@link JNLPFile} that specifies the application + * + * @throws InstanceExistsException if an instance of this application already exists + */ + public static void checkExistingSingleInstance(JNLPFile jnlpFile) { + ExtendedSingleInstanceService esis = (ExtendedSingleInstanceService) getSingleInstanceService(); + esis.checkSingleInstanceRunning(jnlpFile); + } + /** * Returns the service, or null instead of an UnavailableServiceException */ diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Jun 24 15:02:45 2009 -0400 @@ -0,0 +1,203 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp.services; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.net.BindException; +import java.net.ServerSocket; + +import net.sourceforge.jnlp.JNLPFile; +import net.sourceforge.jnlp.runtime.JNLPRuntime; + +/** + * This class represents a Lock for single instance jnlp applications + * + * The lock is per-session, per user. + * + * @author Omair Majid + */ +class SingleInstanceLock { + + JNLPFile jnlpFile; + File lockFile = null; + + public static final int INVALID_PORT = Integer.MIN_VALUE; + + int port = INVALID_PORT; + + /** + * Create an object to manage the instance lock for the specified JNLP file. + * + * @param jnlpFile the jnlpfile to create the lock for + */ + public SingleInstanceLock(JNLPFile jnlpFile) { + this.jnlpFile = jnlpFile; + lockFile = getLockFile(); + + } + + /** + * Create/overwrite the instance lock for the jnlp file. + * + * @param localPort the network port for the lock + * @throws IOException on any io problems + */ + public void createWithPort(int localPort) throws IOException { + + BufferedWriter lockFileWriter = new BufferedWriter(new FileWriter(lockFile, false)); + lockFileWriter.write(String.valueOf(localPort)); + lockFileWriter.newLine(); + lockFileWriter.flush(); + lockFileWriter.close(); + + } + + /** + * Returns true if the lock if valid. That is, the lock exists, and port it + * points to is listening for incoming messages. + */ + public boolean isValid() { + return (exists() && getPort() != INVALID_PORT && !isPortFree(getPort())); + } + + /** + * Returns the port in this lock file. + */ + public int getPort() { + if (!exists()) { + return INVALID_PORT; + } + + try { + parseFile(); + } catch (NumberFormatException e) { + port = INVALID_PORT; + } catch (IOException e) { + port = INVALID_PORT; + } + return port; + + } + + /** + * Returns true if the lock file already exists. + */ + private boolean exists() { + return lockFile.exists(); + } + + /** + * Returns true if the port is free. + */ + private boolean isPortFree(int port) { + try { + ServerSocket socket = new ServerSocket(port); + socket.close(); + return true; + } catch (BindException e) { + return false; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * Return a file object that represents the lock file. The lock file itself + * may or may not exist. + */ + private File getLockFile() { + File baseDir = new File(JNLPRuntime.LOCKS_DIR); + + if (!baseDir.isDirectory() && !baseDir.mkdirs()) { + throw new RuntimeException(R("RNoLockDir", baseDir)); + } + String lockFileName = getLockFileName(); + File applicationLockFile = new File(baseDir, lockFileName); + return applicationLockFile; + } + + /** + * Returns the name of the lock file. + */ + private String getLockFileName() { + String initialName = ""; + + if (jnlpFile.getSourceLocation() != null) { + initialName = initialName + jnlpFile.getSourceLocation(); + } else { + initialName = initialName + jnlpFile.getFileLocation(); + } + + if (jnlpFile.getFileVersion() != null) { + initialName = initialName + jnlpFile.getFileVersion().toString(); + } + + initialName = initialName + getCurrentDisplay(); + String encodedName; + + /* + * FIXME + * + * Assuming safe characters are 'a-z','A-Z','0-9', '_', '.' + */ + + encodedName = initialName.replaceAll("[^a-zA-Z0-9.]", "_"); + + return encodedName; + + } + + /** + * Parse the lock file. + * + * @throws NumberFormatException + * @throws IOException + */ + private void parseFile() throws NumberFormatException, IOException { + BufferedReader lockFileReader = new BufferedReader(new FileReader(lockFile)); + int port = Integer.valueOf(lockFileReader.readLine()); + lockFileReader.close(); + this.port = port; + } + + /** + * Returns a string identifying this display. + * + * Implementation note: On systems with X support, this is the DISPLAY + * variable + * + * @return a string that is guaranteed to be not null. + */ + private String getCurrentDisplay() { + String display = System.getenv("DISPLAY"); + return (display == null) ? "" : display; + } + + private static String R(String key) { + return JNLPRuntime.getMessage(key); + } + + private static String R(String key, Object param) { + return JNLPRuntime.getMessage(key, new Object[] { param }); + } + +} diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/services/XServiceManagerStub.java --- a/netx/net/sourceforge/jnlp/services/XServiceManagerStub.java Wed Jun 24 12:15:33 2009 -0400 +++ b/netx/net/sourceforge/jnlp/services/XServiceManagerStub.java Wed Jun 24 15:02:45 2009 -0400 @@ -51,7 +51,8 @@ public class XServiceManagerStub impleme "javax.jnlp.FileOpenService", "javax.jnlp.FileSaveService", "javax.jnlp.ClipboardService", - "javax.jnlp.PrintService" + "javax.jnlp.PrintService", + "javax.jnlp.SingleInstanceService" }; private static Object services[] = { @@ -63,7 +64,8 @@ public class XServiceManagerStub impleme ServiceUtil.createPrivilegedProxy(FileOpenService.class, new XFileOpenService()), ServiceUtil.createPrivilegedProxy(FileSaveService.class, new XFileSaveService()), ServiceUtil.createPrivilegedProxy(ClipboardService.class, new XClipboardService()), - ServiceUtil.createPrivilegedProxy(PrintService.class, new XPrintService()) + ServiceUtil.createPrivilegedProxy(PrintService.class, new XPrintService()), + ServiceUtil.createPrivilegedProxy(ExtendedSingleInstanceService.class, new XSingleInstanceService()) }; diff -r 4e5e95c066da -r 0cfbe4d569d9 netx/net/sourceforge/jnlp/services/XSingleInstanceService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/services/XSingleInstanceService.java Wed Jun 24 15:02:45 2009 -0400 @@ -0,0 +1,229 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// From omajid at redhat.com Tue Aug 4 09:07:32 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:32 +0000 Subject: changeset in /hg/icedtea: 2009-06-16 Omair Majid changeset 5153060e463b in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=5153060e463b description: 2009-06-16 Omair Majid * netx/net/sourceforge/jnlp/services/ServiceUtil.java: (invoke): Throw the original exception that caused the problem. diffstat: 2 files changed, 24 insertions(+), 6 deletions(-) ChangeLog | 5 +++ netx/net/sourceforge/jnlp/services/ServiceUtil.java | 25 ++++++++++++++----- diffs (47 lines): diff -r a5edccad3c7c -r 5153060e463b ChangeLog --- a/ChangeLog Wed Jun 10 12:00:53 2009 -0400 +++ b/ChangeLog Tue Jun 16 10:23:45 2009 -0400 @@ -1,3 +1,8 @@ 2009-06-10 Omair Majid + + * netx/net/sourceforge/jnlp/services/ServiceUtil.java: + (invoke): Throw the original exception that caused the problem. + 2009-06-10 Omair Majid * netx/net/sourceforge/jnlp/JNLPFile.java diff -r a5edccad3c7c -r 5153060e463b netx/net/sourceforge/jnlp/services/ServiceUtil.java --- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Wed Jun 10 12:00:53 2009 -0400 +++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Tue Jun 16 10:23:45 2009 -0400 @@ -159,12 +159,25 @@ public class ServiceUtil { } }; - Object result = AccessController.doPrivileged(invoker); - - if (JNLPRuntime.isDebug()) - System.err.println(" result: "+result); - - return result; + try { + Object result = AccessController.doPrivileged(invoker); + + if (JNLPRuntime.isDebug()) + System.err.println(" result: "+result); + + return result; + } catch (PrivilegedActionException e) { + // Any exceptions thrown by the actual methods are wrapped by a + // InvocationTargetException, which is further wrapped by the + // PrivilegedActionException. Lets unwrap them to make the + // proxy transparent to the callers + if (e.getCause() instanceof InvocationTargetException) { + throw e.getCause().getCause(); + } else { + throw e.getCause(); + } + } + } }; From omajid at redhat.com Tue Aug 4 09:07:34 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:34 +0000 Subject: changeset in /hg/icedtea: 2009-06-24 Omair Majid changeset 4e5e95c066da in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=4e5e95c066da description: 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/Parser.java: Add 1.5 and 6.0 to supportedVersions. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ netx/net/sourceforge/jnlp/Parser.java | 2 +- diffs (24 lines): diff -r 2bf6d173f425 -r 4e5e95c066da ChangeLog --- a/ChangeLog Wed Jun 17 17:10:39 2009 -0400 +++ b/ChangeLog Wed Jun 24 12:15:33 2009 -0400 @@ -1,3 +1,8 @@ 2009-06-17 Omair Majid + + * netx/net/sourceforge/jnlp/Parser.java: Add 1.5 and 6.0 to + supportedVersions. + 2009-06-17 Omair Majid * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove aboutFile. diff -r 2bf6d173f425 -r 4e5e95c066da netx/net/sourceforge/jnlp/Parser.java --- a/netx/net/sourceforge/jnlp/Parser.java Wed Jun 17 17:10:39 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Parser.java Wed Jun 24 12:15:33 2009 -0400 @@ -72,7 +72,7 @@ class Parser { /** the supported JNLP file versions */ - private static Version supportedVersions = new Version("1.0"); + private static Version supportedVersions = new Version("1.0 1.5 6.0"); // fix: some descriptors need to use the jnlp file at a later // date and having file ref lets us pass it to their From omajid at redhat.com Tue Aug 4 09:07:33 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:33 +0000 Subject: changeset in /hg/icedtea: 2009-06-17 Omair Majid changeset 2bf6d173f425 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=2bf6d173f425 description: 2009-06-17 Omair Majid * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove aboutFile. (getAboutFile): Get path from JNLPRuntime. (getBaseDir): Fix comments. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Add HOME_DIR, NETXRC_FILE, NETX_DIR, SECURITY_DIR, CERTIFICATES_FILE, LOCKS_DIR, JAVA_HOME_DIR, and NETX_ABOUT_FILE. (getDefaultBaseDir): Remove calls to loadWindowIcon and isHeadless() because they are unused. Use HOME_DIR and NETX_DIR. Be prepared for existing NETX_DIR. (getProperties): Use NETXRC_FILE instead of hardcoded file name. * netx/net/sourceforge/jnlp/security/SecurityUtil.java Remove homeDir, certDir and certFile. (getTrustedCertsFilename): Use HOME_DIR and CERTIFICATES_FILE. (checkTrustedCertsFile): Find parent directory from certFile. diffstat: 4 files changed, 61 insertions(+), 27 deletions(-) ChangeLog | 19 +++++++- netx/net/sourceforge/jnlp/runtime/Boot.java | 16 ++---- netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 42 +++++++++++++----- netx/net/sourceforge/jnlp/security/SecurityUtil.java | 11 ++-- diffs (183 lines): diff -r f04f94067be0 -r 2bf6d173f425 ChangeLog --- a/ChangeLog Wed Jun 17 15:13:34 2009 -0400 +++ b/ChangeLog Wed Jun 17 17:10:39 2009 -0400 @@ -1,6 +1,23 @@ 2009-06-17 Omair Majid - * * netx/javax/jnlp/ExtendedService.java: New file. + * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove aboutFile. + (getAboutFile): Get path from JNLPRuntime. + (getBaseDir): Fix comments. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Add HOME_DIR, + NETXRC_FILE, NETX_DIR, SECURITY_DIR, CERTIFICATES_FILE, LOCKS_DIR, + JAVA_HOME_DIR, and NETX_ABOUT_FILE. + (getDefaultBaseDir): Remove calls to loadWindowIcon and isHeadless() + because they are unused. Use HOME_DIR and NETX_DIR. Be prepared for + existing NETX_DIR. + (getProperties): Use NETXRC_FILE instead of hardcoded file name. + * netx/net/sourceforge/jnlp/security/SecurityUtil.java + Remove homeDir, certDir and certFile. + (getTrustedCertsFilename): Use HOME_DIR and CERTIFICATES_FILE. + (checkTrustedCertsFile): Find parent directory from certFile. + +2009-06-17 Omair Majid + + * netx/javax/jnlp/ExtendedService.java: New file. * netx/net/sourceforge/jnlp/services/XExtendedService.java: New file. * netx/net/sourceforge/jnlp/services/XServiceManagerStub.java: Add ExtendedService to serviceNames. Create a proxy for XExtendedService to diff -r f04f94067be0 -r 2bf6d173f425 netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Jun 17 15:13:34 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Jun 17 17:10:39 2009 -0400 @@ -67,10 +67,6 @@ public final class Boot implements Privi private static final String version = "0.5"; - /** the JNLP file to open to display the network-based about window */ - private static final String aboutFile = - System.getProperty("java.home") + "/lib/about.jnlp"; - /** the text to display before launching the about link */ private static final String aboutMessage = "" + "netx v"+version+" - (C)2001-2003 Jon A. Maxwell (jmaxwell at users.sourceforge.net)\n" @@ -234,8 +230,8 @@ public final class Boot implements Privi */ private static String getAboutFile() { - if (new File(aboutFile).exists()) - return aboutFile; + if (new File(JNLPRuntime.NETX_ABOUT_FILE).exists()) + return JNLPRuntime.NETX_ABOUT_FILE; else return null; } @@ -424,9 +420,9 @@ public final class Boot implements Privi /** * Return the base dir. If the base dir parameter is not set - * the value is read from the "${user.home}/.netxrc" file (as - * defined by JNLPRuntime). If that file does not exist, an - * install dialog is displayed to select the base directory. + * the value is read from JNLPRuntime.NETX_ABOUT_FILE file. + * If that file does not exist, an install dialog is displayed + * to select the base directory. */ private static File getBaseDir() { if (getOption("-basedir") != null) { @@ -438,7 +434,7 @@ public final class Boot implements Privi return basedir; } - // check .netxrc, display dialog + // check .netxrc File basedir = JNLPRuntime.getDefaultBaseDir(); if (basedir == null) fatalError(R("BNoBase")); diff -r f04f94067be0 -r 2bf6d173f425 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Jun 17 15:13:34 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Jun 17 17:10:39 2009 -0400 @@ -104,6 +104,34 @@ public class JNLPRuntime { /** contains the arguments passed to the jnlp runtime */ private static List initialArguments; + /** User's home directory */ + public static final String HOME_DIR = System.getProperty("user.home"); + + /** the ~/.netxrc file containing netx settings */ + public static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; + + /** the ~/.netx directory containing user-specific data */ + public static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; + + /** the ~/.netx/security directory containing security related information */ + public static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; + + /** the ~/.netx/security/trusted.certs file containing trusted certificates */ + public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; + + /** + * the ~/.netx/locks/ directory containing locks for single instance + * applications + */ + public static final String LOCKS_DIR = NETX_DIR + File.separator + "locks"; + + public static final String JAVA_HOME_DIR = System.getProperty("java.home"); + + /** the JNLP file to open to display the network-based about window */ + public static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" + + File.separator + "about.jnlp"; + + /** * Returns whether the JNLP runtime environment has been @@ -279,18 +307,13 @@ public class JNLPRuntime { public static File getDefaultBaseDir() { PropertiesFile props = JNLPRuntime.getProperties(); - loadWindowIcon(); - String baseStr = props.getProperty("basedir"); if (baseStr != null) return new File(baseStr); - if (isHeadless()) - return null; - - String homeDir = System.getProperty("user.home"); - File baseDir = new File(homeDir + "/.netx/"); - if (homeDir == null || !baseDir.mkdir()) + String homeDir = HOME_DIR; + File baseDir = new File(NETX_DIR); + if (homeDir == null || (!baseDir.isDirectory() && !baseDir.mkdir())) return null; props.setProperty("basedir", baseDir.toString()); @@ -332,8 +355,7 @@ public class JNLPRuntime { * properties file. */ public static PropertiesFile getProperties() { - File netxrc = new File(System.getProperty("user.home"), ".netxrc"); - + File netxrc = new File(NETXRC_FILE); return new PropertiesFile(netxrc); } diff -r f04f94067be0 -r 2bf6d173f425 netx/net/sourceforge/jnlp/security/SecurityUtil.java --- a/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Jun 17 15:13:34 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Jun 17 17:10:39 2009 -0400 @@ -42,21 +42,20 @@ import java.io.FileOutputStream; import java.io.FileOutputStream; import java.security.KeyStore; +import net.sourceforge.jnlp.runtime.JNLPRuntime; + public class SecurityUtil { - private static String homeDir = null; - private static final String certDir = "/.netx/security/"; - private static final String certFile = "trusted.certs"; private static final char[] password = "changeit".toCharArray(); public static String getTrustedCertsFilename() throws Exception{ - homeDir = System.getProperty("user.home"); + String homeDir = JNLPRuntime.HOME_DIR; if (homeDir == null) { throw new Exception("Could not access home directory"); } else { - return homeDir + certDir + certFile; + return JNLPRuntime.CERTIFICATES_FILE; } } @@ -90,7 +89,7 @@ public class SecurityUtil { //file does not exist if (!certFile.isFile()) { - File dir = new File(homeDir+certDir); + File dir = certFile.getAbsoluteFile().getParentFile(); boolean madeDir = false; if (!dir.isDirectory()) { madeDir = dir.mkdirs(); From omajid at redhat.com Tue Aug 4 09:07:34 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:34 +0000 Subject: changeset in /hg/icedtea: 2009-06-24 Omair Majid changeset 9528fc8f3555 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=9528fc8f3555 description: 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java (createApplication): Fix messages to refer to application instead of applet. diffstat: 2 files changed, 7 insertions(+), 1 deletion(-) ChangeLog | 6 ++++++ netx/net/sourceforge/jnlp/Launcher.java | 2 +- diffs (25 lines): diff -r 0cfbe4d569d9 -r 9528fc8f3555 ChangeLog --- a/ChangeLog Wed Jun 24 15:02:45 2009 -0400 +++ b/ChangeLog Wed Jun 24 15:10:22 2009 -0400 @@ -1,3 +1,9 @@ 2009-06-24 Omair Majid + + * netx/net/sourceforge/jnlp/Launcher.java + (createApplication): Fix messages to refer to application instead of + applet. + 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java (launchApplication): Check for any diff -r 0cfbe4d569d9 -r 9528fc8f3555 netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Wed Jun 24 15:02:45 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Wed Jun 24 15:10:22 2009 -0400 @@ -590,7 +590,7 @@ public class Launcher { return app; } catch (Exception ex) { - throw new LaunchException(file, ex, R("LSFatal"), R("LCInit"), R("LInitApplet"), R("LInitAppletInfo")); + throw new LaunchException(file, ex, R("LSFatal"), R("LCInit"), R("LInitApplication"), R("LInitApplicationInfo")); } } From omajid at redhat.com Tue Aug 4 09:07:36 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:36 +0000 Subject: changeset in /hg/icedtea: 2009-06-24 Omair Majid changeset dd483ae1e6ca in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=dd483ae1e6ca description: 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/security/CertWarningPane.java (installComponents): Call SecurityUtil.getCN instead of getCN. (getCN): Removed. * netx/net/sourceforge/jnlp/security/CertsInfoPane.java (buildTree): Call SecurityUtil.getCN instead of getCN. (populateTable): Likewise. (getCN): Removed. * netx/net/sourceforge/jnlp/security/SecurityUtil.java (getCN): Follow RFC 2253 partially and understand escaping. (isHexDigit): New function. * netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java (buildTree): Call SecurityUtil.getCN instead of getCN. (populateTable): Likewise. * netx/net/sourceforge/jnlp/tools/KeyTool.java: (doPrintEntry): Call SecurityUtil.getCN instead of getCN. (getCN): Removed. diffstat: 6 files changed, 130 insertions(+), 77 deletions(-) ChangeLog | 19 ++ netx/net/sourceforge/jnlp/security/CertWarningPane.java | 22 -- netx/net/sourceforge/jnlp/security/CertsInfoPane.java | 29 --- netx/net/sourceforge/jnlp/security/SecurityUtil.java | 110 ++++++++++-- netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java | 8 netx/net/sourceforge/jnlp/tools/KeyTool.java | 19 -- diffs (316 lines): diff -r 9528fc8f3555 -r dd483ae1e6ca ChangeLog --- a/ChangeLog Wed Jun 24 15:10:22 2009 -0400 +++ b/ChangeLog Wed Jun 24 16:26:08 2009 -0400 @@ -1,3 +1,22 @@ 2009-06-24 Omair Majid + + * netx/net/sourceforge/jnlp/security/CertWarningPane.java + (installComponents): Call SecurityUtil.getCN instead of getCN. + (getCN): Removed. + * netx/net/sourceforge/jnlp/security/CertsInfoPane.java + (buildTree): Call SecurityUtil.getCN instead of getCN. + (populateTable): Likewise. + (getCN): Removed. + * netx/net/sourceforge/jnlp/security/SecurityUtil.java + (getCN): Follow RFC 2253 partially and understand escaping. + (isHexDigit): New function. + * netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java + (buildTree): Call SecurityUtil.getCN instead of getCN. + (populateTable): Likewise. + * netx/net/sourceforge/jnlp/tools/KeyTool.java: + (doPrintEntry): Call SecurityUtil.getCN instead of getCN. + (getCN): Removed. + 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java diff -r 9528fc8f3555 -r dd483ae1e6ca netx/net/sourceforge/jnlp/security/CertWarningPane.java --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Jun 24 15:10:22 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Jun 24 16:26:08 2009 -0400 @@ -101,7 +101,7 @@ public class CertWarningPane extends Sec try { if ((certVerifier instanceof HttpsCertVerifier) && (c instanceof X509Certificate)) - name = getCN(((X509Certificate)c) + name = SecurityUtil.getCN(((X509Certificate)c) .getSubjectX500Principal().getName()); else if (file instanceof PluginBridge) name = file.getTitle(); @@ -112,7 +112,7 @@ public class CertWarningPane extends Sec try { if (c instanceof X509Certificate) { - publisher = getCN(((X509Certificate)c) + publisher = SecurityUtil.getCN(((X509Certificate)c) .getSubjectX500Principal().getName()); } } catch (Exception e) { @@ -236,24 +236,6 @@ public class CertWarningPane extends Sec return ""+s+""; } - - /** - * Extracts the CN field from a Certificate principal string. - */ - private String getCN(String principal) { - int start = principal.indexOf("CN="); - int end = principal.indexOf(",", start); - - if (end == -1) { - end = principal.length(); - } - - if (start >= 0) - return principal.substring(start+3, end); - else - return principal; - } - private class MoreInfoButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { diff -r 9528fc8f3555 -r dd483ae1e6ca netx/net/sourceforge/jnlp/security/CertsInfoPane.java --- a/netx/net/sourceforge/jnlp/security/CertsInfoPane.java Wed Jun 24 15:10:22 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/CertsInfoPane.java Wed Jun 24 16:26:08 2009 -0400 @@ -91,9 +91,9 @@ public class CertsInfoPane extends Secur X509Certificate firstCert = ((X509Certificate)firstPath.getCertificates().get(0)); String subjectString = - getCN(firstCert.getSubjectX500Principal().getName()); + SecurityUtil.getCN(firstCert.getSubjectX500Principal().getName()); String issuerString = - getCN(firstCert.getIssuerX500Principal().getName()); + SecurityUtil.getCN(firstCert.getIssuerX500Principal().getName()); DefaultMutableTreeNode top = new DefaultMutableTreeNode(subjectString @@ -105,9 +105,9 @@ public class CertsInfoPane extends Secur X509Certificate secondCert = ((X509Certificate)firstPath.getCertificates().get(1)); subjectString = - getCN(secondCert.getSubjectX500Principal().getName()); + SecurityUtil.getCN(secondCert.getSubjectX500Principal().getName()); issuerString = - getCN(secondCert.getIssuerX500Principal().getName()); + SecurityUtil.getCN(secondCert.getIssuerX500Principal().getName()); top.add(new DefaultMutableTreeNode(subjectString + " (" + issuerString + ")")); } @@ -129,8 +129,8 @@ public class CertsInfoPane extends Secur X509Certificate c = (X509Certificate) certs.get(0).getCertificates().get(i); certsData.add(parseCert(c)); - certNames[i] = getCN(c.getSubjectX500Principal().getName()) - + " (" + getCN(c.getIssuerX500Principal().getName()) + ")"; + certNames[i] = SecurityUtil.getCN(c.getSubjectX500Principal().getName()) + + " (" + SecurityUtil.getCN(c.getIssuerX500Principal().getName()) + ")"; } } @@ -235,23 +235,6 @@ public class CertsInfoPane extends Secur } /** - * Extracts the CN field from a Certificate principal string. - */ - protected String getCN(String principal) { - int start = principal.indexOf("CN="); - int end = principal.indexOf(",", start); - - if (end == -1) { - end = principal.length(); - } - - if (start >= 0) - return principal.substring(start+3, end); - else - return principal; - } - - /** * Copies the currently selected certificate to the system Clipboard. */ private class CopyToClipboardHandler implements ActionListener { diff -r 9528fc8f3555 -r dd483ae1e6ca netx/net/sourceforge/jnlp/security/SecurityUtil.java --- a/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Jun 24 15:10:22 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Jun 24 16:26:08 2009 -0400 @@ -63,20 +63,106 @@ public class SecurityUtil { return password; } - public static String getCN(String principal) { + /** + * Extracts the CN field from a Certificate principal string. Or, if it + * can't find that, return the principal unmodified. + * + * This is a simple (and hence 'wrong') version. See + * http://www.ietf.org/rfc/rfc2253.txt for all the gory details. + */ + public static String getCN(String principal) { + + /* + * FIXME Incomplete + * + * This does not implement RFC 2253 completely + * + * Issues: + * - rfc2253 talks about utf8, java uses utf16. + * - theoretically, java should have dealt with all byte encodings + * so we shouldnt even see cases like \FF + * - if the above is wrong, then we need to deal with cases like + * \FF\FF + */ + int start = principal.indexOf("CN="); - int end = principal.indexOf(",", start); - - if (end == -1) { - end = principal.length(); - } - - if (start >= 0) - return principal.substring(start+3, end); - else + if (start == -1) { return principal; - } - + } + + StringBuilder commonName = new StringBuilder(); + + boolean inQuotes = false; + boolean escaped = false; + + /* + * bit 0 = high order bit. bit 1 = low order bit + */ + char[] hexBits = null; + + for (int i = start + 3; i < principal.length(); i++) { + char ch = principal.charAt(i); + switch (ch) { + case '"': + if (escaped) { + commonName.append(ch); + escaped = false; + } else { + inQuotes = !inQuotes; + } + break; + + case '\\': + if (escaped) { + commonName.append(ch); + escaped = false; + } else { + escaped = true; + } + break; + + case ',': + /* fall through */ + case ';': + /* fall through */ + case '+': + if (escaped || inQuotes) { + commonName.append(ch); + if (escaped) { + escaped = false; + } + } else { + return commonName.toString(); + } + break; + + default: + if (escaped && isHexDigit(ch)) { + hexBits = new char[2]; + hexBits[0] = ch; + } else if (hexBits != null) { + if (!isHexDigit(ch)) { + /* error parsing */ + return ""; + } + hexBits[1] = ch; + commonName.append((char) Integer.parseInt(new String(hexBits), 16)); + hexBits = null; + } else { + commonName.append(ch); + } + escaped = false; + } + } + + return commonName.toString(); + + } + + private static boolean isHexDigit(char ch) { + return ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f')); + } + /** * Checks the user's home directory to see if the trusted.certs file exists. * If it does not exist, it tries to create an empty keystore. diff -r 9528fc8f3555 -r dd483ae1e6ca netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java --- a/netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java Wed Jun 24 15:10:22 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java Wed Jun 24 16:26:08 2009 -0400 @@ -55,9 +55,9 @@ public class SingleCertInfoPane extends protected void buildTree() { X509Certificate cert = ((SecurityWarningDialog)optionPane).getCert(); String subjectString = - getCN(cert.getSubjectX500Principal().getName()); + SecurityUtil.getCN(cert.getSubjectX500Principal().getName()); String issuerString = - getCN(cert.getIssuerX500Principal().getName()); + SecurityUtil.getCN(cert.getIssuerX500Principal().getName()); DefaultMutableTreeNode top = new DefaultMutableTreeNode(subjectString + " (" + issuerString + ")"); @@ -72,7 +72,7 @@ public class SingleCertInfoPane extends certNames = new String[1]; certsData = new ArrayList(); certsData.add(parseCert(c)); - certNames[0] = getCN(c.getSubjectX500Principal().getName()) - + " (" + getCN(c.getIssuerX500Principal().getName()) + ")"; + certNames[0] = SecurityUtil.getCN(c.getSubjectX500Principal().getName()) + + " (" + SecurityUtil.getCN(c.getIssuerX500Principal().getName()) + ")"; } } diff -r 9528fc8f3555 -r dd483ae1e6ca netx/net/sourceforge/jnlp/tools/KeyTool.java --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Jun 24 15:10:22 2009 -0400 +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Jun 24 16:26:08 2009 -0400 @@ -176,30 +176,13 @@ public class KeyTool { out.println("Alias: " + alias); out.println("Date Created: " + usercerts.getCreationDate(alias)); - out.println("Subject: " + getCN(((X509Certificate)usercerts + out.println("Subject: " + SecurityUtil.getCN(((X509Certificate)usercerts .getCertificate(alias)).getSubjectX500Principal().getName())); out.println("Certificate fingerprint (MD5): " + getCertFingerPrint("MD5", cert)); out.println(); } } - - /** - * Extracts the CN field from a Certificate principal string. - */ - private String getCN(String principal) { - int start = principal.indexOf("CN="); - int end = principal.indexOf(",", start); - - if (end == -1) { - end = principal.length(); - } - - if (start >= 0) - return principal.substring(start+3, end); - else - return principal; - } /** * Gets the requested finger print of the certificate. From omajid at redhat.com Tue Aug 4 09:07:38 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:38 +0000 Subject: changeset in /hg/icedtea: Support pack200/gzip compression in Netx Message-ID: changeset 332a3a4aa5de in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=332a3a4aa5de description: Support pack200/gzip compression in Netx 2009-07-09 Omair Majid * netx/net/sourceforge/jnlp/cache/ResourceTracker.java: (downloadResource): Accept and download content with pack200 or gzip compression and uncompress it on the fly. (initializeResource): Accept content with pack200 or gzip compression. (getVersionedResourceURL): Add javadoc. diffstat: 2 files changed, 105 insertions(+), 13 deletions(-) ChangeLog | 8 + netx/net/sourceforge/jnlp/cache/ResourceTracker.java | 110 +++++++++++++++--- diffs (172 lines): diff -r b92099ea3dbc -r 332a3a4aa5de ChangeLog --- a/ChangeLog Tue Aug 04 14:27:16 2009 +0100 +++ b/ChangeLog Thu Jul 09 17:18:02 2009 -0400 @@ -1,3 +1,11 @@ 2009-07-09 Deepak Bhole + + * netx/net/sourceforge/jnlp/cache/ResourceTracker.java: + (downloadResource): Accept and download content with pack200 or gzip + compression and uncompress it on the fly. + (initializeResource): Accept content with pack200 or gzip compression. + (getVersionedResourceURL): Add javadoc. + 2009-07-09 Deepak Bhole * IcedTeaPlugin.cc: Add support for cookie info requests from applets. diff -r b92099ea3dbc -r 332a3a4aa5de netx/net/sourceforge/jnlp/cache/ResourceTracker.java --- a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java Tue Aug 04 14:27:16 2009 +0100 +++ b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java Thu Jul 09 17:18:02 2009 -0400 @@ -17,14 +17,30 @@ package net.sourceforge.jnlp.cache; -import java.io.*; -import java.net.*; -import java.util.*; - -import net.sourceforge.jnlp.*; -import net.sourceforge.jnlp.event.*; -import net.sourceforge.jnlp.runtime.*; -import net.sourceforge.jnlp.util.*; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.List; +import java.util.jar.JarOutputStream; +import java.util.jar.Pack200; +import java.util.jar.Pack200.Unpacker; +import java.util.zip.GZIPInputStream; + +import net.sourceforge.jnlp.Version; +import net.sourceforge.jnlp.event.DownloadEvent; +import net.sourceforge.jnlp.event.DownloadListener; +import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.util.WeakList; /** * This class tracks the downloading of various resources of a @@ -598,7 +614,9 @@ public class ResourceTracker { } /** - * Downloads an resource to a file. + * Downloads a resource to a file, uncompressing it if required + * + * @param resource the resource to download */ private void downloadResource(Resource resource) { resource.fireDownloadEvent(); // fire DOWNLOADING @@ -606,9 +624,34 @@ public class ResourceTracker { try { // create out second in case in does not exist URLConnection con = getVersionedResourceURL(resource).openConnection(); + con.addRequestProperty("Accept-Encoding", "pack200-gzip, gzip"); + + con.connect(); + + /* + * We dont really know what we are downloading. If we ask for + * foo.jar, the server might send us foo.jar.pack.gz or foo.jar.gz + * instead. So we save the file with the appropriate extension + */ + URL downloadLocation = resource.location; + + String contentEncoding = con.getContentEncoding(); + + if (JNLPRuntime.isDebug()) { + System.err.println("Content encoding for " + resource.location + ": " + + contentEncoding); + } + + if (contentEncoding != null) { + if (contentEncoding.equals("gzip")) { + downloadLocation = new URL(downloadLocation.toString() + ".gz"); + } else if (contentEncoding.equals("pack200-gzip")) { + downloadLocation = new URL(downloadLocation.toString() + ".pack.gz"); + } + } InputStream in = new BufferedInputStream(con.getInputStream()); - OutputStream out = CacheUtil.getOutputStream(resource.location, resource.downloadVersion); + OutputStream out = CacheUtil.getOutputStream(downloadLocation, resource.downloadVersion); byte buf[] = new byte[1024]; int rlen; @@ -623,7 +666,45 @@ public class ResourceTracker { // explicitly close the URLConnection. if (con instanceof HttpURLConnection) ((HttpURLConnection)con).disconnect(); - + + /* + * If the file was compressed, uncompress it. + */ + if (contentEncoding != null) { + if (contentEncoding.equals("gzip")) { + GZIPInputStream gzInputStream = new GZIPInputStream(new FileInputStream(CacheUtil + .getCacheFile(downloadLocation, resource.downloadVersion))); + InputStream inputStream = new BufferedInputStream(gzInputStream); + + BufferedOutputStream outputStream = new BufferedOutputStream( + new FileOutputStream(CacheUtil.getCacheFile(resource.location, + resource.downloadVersion))); + + while (-1 != (rlen = inputStream.read(buf))) { + outputStream.write(buf, 0, rlen); + } + + outputStream.close(); + inputStream.close(); + gzInputStream.close(); + + } else if (contentEncoding.equals("pack200-gzip")) { + GZIPInputStream gzInputStream = new GZIPInputStream(new FileInputStream( + CacheUtil.getCacheFile(downloadLocation, resource.downloadVersion))); + InputStream inputStream = new BufferedInputStream(gzInputStream); + + JarOutputStream outputStream = new JarOutputStream(new FileOutputStream( + CacheUtil.getCacheFile(resource.location, resource.downloadVersion))); + + Unpacker unpacker = Pack200.newUnpacker(); + unpacker.unpack(inputStream, outputStream); + + outputStream.close(); + inputStream.close(); + gzInputStream.close(); + } + } + resource.changeStatus(DOWNLOADING, DOWNLOADED); synchronized(lock) { lock.notifyAll(); // wake up wait's to check for completion @@ -654,6 +735,7 @@ public class ResourceTracker { // connect URLConnection connection = getVersionedResourceURL(resource).openConnection(); // this won't change so should be okay unsynchronized + connection.addRequestProperty("Accept-Encoding", "pack200-gzip, gzip"); int size = connection.getContentLength(); boolean current = CacheUtil.isCurrent(resource.location, resource.requestVersion, connection) && resource.getUpdatePolicy() != UpdatePolicy.FORCE; @@ -698,8 +780,10 @@ public class ResourceTracker { } } - - + /** + * Returns the versioned url for a resource + * @param resource the resource to get the url for + */ private URL getVersionedResourceURL(Resource resource) { String actualLocation = resource.location.getProtocol() + "://" + resource.location.getHost(); From dbhole at redhat.com Tue Aug 4 09:07:39 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 04 Aug 2009 16:07:39 +0000 Subject: changeset in /hg/icedtea: Commit changes to the new np plugin. T... Message-ID: changeset 5da2e8e775d5 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=5da2e8e775d5 description: Commit changes to the new np plugin. These changes do a lot of things to list. But most notably, they: - Lay down the scriptability framework. - Implement the new MessageBus architecture that is independent of how messages are passed. - Implement GetWindow and GetMember (partially) as proof of concept for message passing, threading, unicode translation, etc. ChangeLog: * Makefile.am: Update makefile to pick up plugin C++ files from new location. * plugin/icedtea/sun/applet/PluginMessageConsumer.java : Minor typo fix. * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc: New file. Processes requests from JS/C++ side to JavaSide. * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: New file. Header for IcedTeaJavaRequestProcessor.cc. * plugin/icedteanp/IcedTeaNPPlugin.cc: Modified to work with the new MessageBus archtecture for the new plugin. Also, moved from top level directory. * plugin/icedteanp/IcedTeaNPPlugin.h: New file. Header for IcedTeaNPPlugin.cc. * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: New file. Processes plugin data requests from Java side. * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: new file. Header for IcedTeaPluginRequestProcessor.cc. * plugin/icedteanp/IcedTeaPluginUtils.cc: New file. Utility functions for the rest of the plugin code. * plugin/icedteanp/IcedTeaPluginUtils.h: New file. Header for IcedTeaPluginUtils.cc. * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: New file. Scriptable object that extends NPObject and implements hooks from NPClass. * plugin/icedteanp/IcedTeaScriptablePluginObject.h: New file. Header for IcedTeaScriptablePluginObject.h * plugin/icedtea/sun/applet/PluginMessageConsumer.java: Sync with current plugin. * plugin/icedteanp/sun/applet/PluginAppletSecurityContext.java: Same. * plugin/icedteanp/sun/applet/PluginAppletViewer.java: Same. * plugin/icedteanp/sun/applet/PluginCallRequestFactory.java: Same. * plugin/icedteanp/sun/applet/PluginCookieInfoRequest.java: Same * plugin/icedteanp/sun/applet/PluginCookieStore.java: Same. * plugin/icedteanp/sun/applet/PluginMain.java: Same. * plugin/icedteanp/sun/applet/PluginMessageConsumer.java: Same. * netx/net/sourceforge/jnlp/tools/JarSigner.java: Use JarFile instead of JarInputstream when verifying jars. diffstat: 21 files changed, 4450 insertions(+), 2082 deletions(-) ChangeLog | 38 IcedTeaNPPlugin.cc | 2006 --------- netx/net/sourceforge/jnlp/tools/JarSigner.java | 23 plugin/icedtea/sun/applet/PluginMessageConsumer.java | 2 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 195 plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 107 plugin/icedteanp/IcedTeaNPPlugin.cc | 2071 ++++++++++ plugin/icedteanp/IcedTeaNPPlugin.h | 90 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 420 ++ plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 108 plugin/icedteanp/IcedTeaPluginUtils.cc | 583 ++ plugin/icedteanp/IcedTeaPluginUtils.h | 244 + plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 113 plugin/icedteanp/IcedTeaScriptablePluginObject.h | 87 plugin/icedteanp/sun/applet/PluginAppletSecurityContext.java | 2 plugin/icedteanp/sun/applet/PluginAppletViewer.java | 238 - plugin/icedteanp/sun/applet/PluginCallRequestFactory.java | 2 plugin/icedteanp/sun/applet/PluginCookieInfoRequest.java | 122 plugin/icedteanp/sun/applet/PluginCookieStore.java | 73 plugin/icedteanp/sun/applet/PluginMain.java | 6 plugin/icedteanp/sun/applet/PluginMessageConsumer.java | 2 diffs (truncated from 6848 to 500 lines): diff -r b190c887feae -r 5da2e8e775d5 ChangeLog --- a/ChangeLog Thu Jul 09 17:29:13 2009 -0400 +++ b/ChangeLog Fri Jul 10 19:02:10 2009 -0400 @@ -1,3 +1,41 @@ 2009-07-09 Omair Majid + + * Makefile.am: Update makefile to pick up plugin C++ files from new + location. + * plugin/icedtea/sun/applet/PluginMessageConsumer.java : Minor typo fix. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc: New file. Processes + requests from JS/C++ side to JavaSide. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: New file. Header for + IcedTeaJavaRequestProcessor.cc. + * plugin/icedteanp/IcedTeaNPPlugin.cc: Modified to work with the new + MessageBus archtecture for the new plugin. Also, moved from top level + directory. + * plugin/icedteanp/IcedTeaNPPlugin.h: New file. Header for + IcedTeaNPPlugin.cc. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: New file. Processes + plugin data requests from Java side. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: new file. Header for + IcedTeaPluginRequestProcessor.cc. + * plugin/icedteanp/IcedTeaPluginUtils.cc: New file. Utility functions for + the rest of the plugin code. + * plugin/icedteanp/IcedTeaPluginUtils.h: New file. Header for + IcedTeaPluginUtils.cc. + * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: New file. Scriptable + object that extends NPObject and implements hooks from NPClass. + * plugin/icedteanp/IcedTeaScriptablePluginObject.h: New file. Header for + IcedTeaScriptablePluginObject.h + * plugin/icedtea/sun/applet/PluginMessageConsumer.java: Sync with current + plugin. + * plugin/icedteanp/sun/applet/PluginAppletSecurityContext.java: Same. + * plugin/icedteanp/sun/applet/PluginAppletViewer.java: Same. + * plugin/icedteanp/sun/applet/PluginCallRequestFactory.java: Same. + * plugin/icedteanp/sun/applet/PluginCookieInfoRequest.java: Same + * plugin/icedteanp/sun/applet/PluginCookieStore.java: Same. + * plugin/icedteanp/sun/applet/PluginMain.java: Same. + * plugin/icedteanp/sun/applet/PluginMessageConsumer.java: Same. + * netx/net/sourceforge/jnlp/tools/JarSigner.java: Use JarFile instead of + JarInputstream when verifying jars. + 2009-07-09 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java diff -r b190c887feae -r 5da2e8e775d5 IcedTeaNPPlugin.cc --- a/IcedTeaNPPlugin.cc Thu Jul 09 17:29:13 2009 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2006 +0,0 @@ -/* gcjwebplugin.cc -- web browser plugin to execute Java applets - Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -// System includes. -#include -#include -#include -#include -#include -#include -#include -#include - -// Netscape plugin API includes. -#include -#include - -// GLib includes. -#include -#include - -// GTK includes. -#include - -// Documentbase retrieval includes. -#include -#include -#include - -// API's into Mozilla -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -// Debugging macros. -#define PLUGIN_DEBUG(message) \ - g_print ("GCJ PLUGIN: thread %p: %s\n", g_thread_self (), message) - -#define PLUGIN_DEBUG_TWO(first, second) \ - g_print ("GCJ PLUGIN: thread %p: %s %s\n", g_thread_self (), \ - first, second) - -// Error reporting macros. -#define PLUGIN_ERROR(message) \ - g_printerr ("%s:%d: thread %p: Error: %s\n", __FILE__, __LINE__, \ - g_thread_self (), message) - -#define PLUGIN_ERROR_TWO(first, second) \ - g_printerr ("%s:%d: thread %p: Error: %s: %s\n", __FILE__, __LINE__, \ - g_thread_self (), first, second) - -#define PLUGIN_ERROR_THREE(first, second, third) \ - g_printerr ("%s:%d: thread %p: Error: %s: %s: %s\n", __FILE__, \ - __LINE__, g_thread_self (), first, second, third) - -// Plugin information passed to about:plugins. -#define PLUGIN_NAME "IcedTea NPR Web Browser Plugin (using IcedTea)" -#define PLUGIN_DESC "The " PLUGIN_NAME PLUGIN_VERSION " executes Java applets." -#define PLUGIN_MIME_DESC \ - "application/x-java-vm:class,jar:IcedTea;" \ - "application/x-java-applet:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.1:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.1.1:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.1.2:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.1.3:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.2:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.2.1:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.2.2:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.3:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.3.1:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.4:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.4.1:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.4.2:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.5:class,jar:IcedTea;" \ - "application/x-java-applet;version=1.6:class,jar:IcedTea;" \ - "application/x-java-applet;jpi-version=1.6.0_00:class,jar:IcedTea;" \ - "application/x-java-bean:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.1:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.1.1:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.1.2:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.1.3:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.2:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.2.1:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.2.2:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.3:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.3.1:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.4:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.4.1:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.4.2:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.5:class,jar:IcedTea;" \ - "application/x-java-bean;version=1.6:class,jar:IcedTea;" \ - "application/x-java-bean;jpi-version=1.6.0_00:class,jar:IcedTea;" -#define PLUGIN_URL NS_INLINE_PLUGIN_CONTRACTID_PREFIX NS_JVM_MIME_TYPE -#define PLUGIN_MIME_TYPE "application/x-java-vm" -#define PLUGIN_FILE_EXTS "class,jar,zip" -#define PLUGIN_MIME_COUNT 1 - -#define FAILURE_MESSAGE "gcjwebplugin error: Failed to run %s." \ - " For more detail rerun \"firefox -g\" in a terminal window." - -static int plugin_debug = 1; - -#define PLUGIN_DEBUG_0ARG(str) \ - do \ - { \ - if (plugin_debug) \ - { \ - fprintf(stderr, "GCJ PLUGIN: thread %p: ", g_thread_self ()); \ - fprintf(stderr, str); \ - } \ - } while (0) - -#define PLUGIN_DEBUG_1ARG(str, arg1) \ - do \ - { \ - if (plugin_debug) \ - { \ - fprintf(stderr, "GCJ PLUGIN: thread %p: ", g_thread_self ()); \ - fprintf(stderr, str, arg1); \ - } \ - } while (0) - -#define PLUGIN_DEBUG_2ARG(str, arg1, arg2) \ - do \ - { \ - if (plugin_debug) \ - { \ - fprintf(stderr, "GCJ PLUGIN: thread %p: ", g_thread_self ()); \ - fprintf(stderr, str, arg1, arg2); \ - } \ - } while (0) - -#define PLUGIN_DEBUG_3ARG(str, arg1, arg2, arg3) \ - do \ - { \ - if (plugin_debug) \ - { \ - fprintf(stderr, "GCJ PLUGIN: thread %p: ", g_thread_self ()); \ - fprintf(stderr, str, arg1, arg2, arg3); \ - } \ - } while (0) - -#define PLUGIN_DEBUG_4ARG(str, arg1, arg2, arg3, arg4) \ - do \ - { \ - if (plugin_debug) \ - { \ - fprintf(stderr, "GCJ PLUGIN: thread %p: ", g_thread_self ()); \ - fprintf(stderr, str, arg1, arg2, arg3, arg4); \ - } \ - } while (0) - -// Documentbase retrieval required definition. -static NS_DEFINE_IID (kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID); - -// Browser function table. -static NPNetscapeFuncs browserFunctions; - -// Data directory for plugin. -static gchar* data_directory = NULL; - -// Fully-qualified appletviewer executable. -static gchar* appletviewer_executable = NULL; - -// Applet viewer input channel (needs to be static because it is used in plugin_in_pipe_callback) -static GIOChannel* in_from_appletviewer = NULL; - -// Applet viewer input pipe name. -gchar* in_pipe_name; - -// Applet viewer input watch source. -gint in_watch_source; - -// Applet viewer output pipe name. -gchar* out_pipe_name; - -// Applet viewer output watch source. -gint out_watch_source; - -// Applet viewer output channel. -GIOChannel* out_to_appletviewer; - -// Tracks jvm status -gboolean jvm_up = FALSE; - -// Keeps track of initialization. NP_Initialize should only be -// called once. -gboolean initialized = false; - -GQuark ITNP_PLUGIN_ERROR = g_quark_from_string("IcedTeaNPPlugin"); - -// GCJPluginData stores all the data associated with a single plugin -// instance. A separate plugin instance is created for each -// tag. For now, each plugin instance spawns its own applet viewer -// process but this may need to change if we find pages containing -// multiple applets that expect to be running in the same VM. -struct GCJPluginData -{ - // A unique identifier for this plugin window. - gchar* instance_string; - // Mutex to protect appletviewer_alive. - GMutex* appletviewer_mutex; - // Back-pointer to the plugin instance to which this data belongs. - // This should not be freed but instead simply set to NULL. - NPP owner; - // The address of the plugin window. This should not be freed but - // instead simply set to NULL. - gpointer window_handle; - // The last plugin window width sent to us by the browser. - guint32 window_width; - // The last plugin window height sent to us by the browser. - guint32 window_height; -}; - -// Documentbase retrieval type-punning union. -typedef union -{ - void** void_field; - nsIPluginTagInfo2** info_field; -} info_union; - -// Static instance helper functions. -// Have the browser allocate a new GCJPluginData structure. -static void plugin_data_new (GCJPluginData** data); -// Retrieve the current document's documentbase. -static gchar* plugin_get_documentbase (NPP instance); -// Notify the user that the appletviewer is not installed correctly. -static void plugin_display_failure_dialog (); -// Callback used to monitor input pipe status. -static gboolean plugin_in_pipe_callback (GIOChannel* source, - GIOCondition condition, - gpointer plugin_data); -// Callback used to monitor output pipe status. -static gboolean plugin_out_pipe_callback (GIOChannel* source, - GIOCondition condition, - gpointer plugin_data); -static NPError plugin_start_appletviewer (GCJPluginData* data); -static gchar* plugin_create_applet_tag (int16 argc, char* argn[], - char* argv[]); -static void plugin_send_message_to_appletviewer (gchar const* message); -static void plugin_stop_appletviewer (); -// Uninitialize GCJPluginData structure -static void plugin_data_destroy (NPP instance); - -NS_IMETHODIMP get_cookie_info(const char* siteAddr, char** cookieString); -void get_proxy_info(const char* siteAddr, char** proxy_scheme, char** proxy_host, char** proxy_port, GError *error); -void decode_url(const gchar* url, gchar** decoded_url); -void consume_message(gchar* message); -void start_jvm_if_needed(); -static void appletviewer_monitor(GPid pid, gint status, gpointer data); - -// Global instance counter. -// Mutex to protect plugin_instance_counter. -static GMutex* plugin_instance_mutex = NULL; -// A global variable for reporting GLib errors. This must be free'd -// and set to NULL after each use. -static GError* channel_error = NULL; - -static GHashTable* instance_to_id_map = g_hash_table_new(NULL, NULL); -static GHashTable* id_to_instance_map = g_hash_table_new(NULL, NULL); -static gint instance_counter = 1; -static GPid appletviewer_pid = -1; -static guint appletviewer_watch_id = -1; - -// Functions prefixed by GCJ_ are instance functions. They are called -// by the browser and operate on instances of GCJPluginData. -// Functions prefixed by plugin_ are static helper functions. -// Functions prefixed by NP_ are factory functions. They are called -// by the browser and provide functionality needed to create plugin -// instances. - -// INSTANCE FUNCTIONS - -// Creates a new gcjwebplugin instance. This function creates a -// GCJPluginData* and stores it in instance->pdata. The following -// GCJPluginData fiels are initialized: instance_string, in_pipe_name, -// in_from_appletviewer, in_watch_source, out_pipe_name, -// out_to_appletviewer, out_watch_source, appletviewer_mutex, owner, -// appletviewer_alive. In addition two pipe files are created. All -// of those fields must be properly destroyed, and the pipes deleted, -// by GCJ_Destroy. If an error occurs during initialization then this -// function will free anything that's been allocated so far, set -// instance->pdata to NULL and return an error code. -NPError -GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode, - int16 argc, char* argn[], char* argv[], - NPSavedData* saved) -{ - PLUGIN_DEBUG ("GCJ_New"); - - NPError np_error = NPERR_NO_ERROR; - GCJPluginData* data = NULL; - - gchar* documentbase = NULL; - gchar* read_message = NULL; - gchar* applet_tag = NULL; - gchar* tag_message = NULL; - gchar* cookie_info = NULL; - - if (!instance) - { - PLUGIN_ERROR ("Browser-provided instance pointer is NULL."); - np_error = NPERR_INVALID_INSTANCE_ERROR; - goto cleanup_done; - } - - // data - plugin_data_new (&data); - if (data == NULL) - { - PLUGIN_ERROR ("Failed to allocate plugin data."); - np_error = NPERR_OUT_OF_MEMORY_ERROR; - goto cleanup_done; - } - - // start the jvm if needed - start_jvm_if_needed(); - - // Initialize data->instance_string. - // - // instance_string should be unique for this process so we use a - // combination of getpid and plugin_instance_counter. - // - // Critical region. Reference and increment plugin_instance_counter - // global. - g_mutex_lock (plugin_instance_mutex); - - // data->instance_string - data->instance_string = g_strdup_printf ("%d", - instance_counter); - - g_mutex_unlock (plugin_instance_mutex); - - // data->appletviewer_mutex - data->appletviewer_mutex = g_mutex_new (); - - g_mutex_lock (data->appletviewer_mutex); - - // Documentbase retrieval. - documentbase = plugin_get_documentbase (instance); - if (!documentbase) - { - PLUGIN_ERROR ("Documentbase retrieval failed." - " Browser not Mozilla-based?"); - goto cleanup_appletviewer_mutex; - } - - // Send applet tag message to appletviewer. - applet_tag = plugin_create_applet_tag (argc, argn, argv); - - tag_message = (gchar*) malloc(strlen(applet_tag)*sizeof(gchar) + 1024); - g_sprintf(tag_message, "instance %d tag %s %s", instance_counter, documentbase, applet_tag); - - //plugin_send_message_to_appletviewer (data, data->instance_string); - plugin_send_message_to_appletviewer (tag_message); - - //send cookie information - char* cookie_string; - if (get_cookie_info(documentbase, &cookie_string) == NS_OK) - { - cookie_info = (gchar*) malloc(sizeof(cookie_string) + 1024); - g_sprintf(cookie_info, "instance %d cookie %s", instance_counter, cookie_string); - } - else - { - cookie_info = (gchar*) malloc(1024); - g_sprintf(cookie_info, "instance %d cookie", instance_counter); - } - - plugin_send_message_to_appletviewer (cookie_info); - - g_mutex_unlock (data->appletviewer_mutex); - - // If initialization succeeded entirely then we store the plugin - // data in the instance structure and return. Otherwise we free the - // data we've allocated so far and set instance->pdata to NULL. - - // Set back-pointer to owner instance. - data->owner = instance; - instance->pdata = data; - goto cleanup_done; - - cleanup_appletviewer_mutex: - g_free (data->appletviewer_mutex); - data->appletviewer_mutex = NULL; - - // cleanup_instance_string: - g_free (data->instance_string); - data->instance_string = NULL; - - // cleanup_data: - // Eliminate back-pointer to plugin instance. - data->owner = NULL; - (*browserFunctions.memfree) (data); - data = NULL; - - // Initialization failed so return a NULL pointer for the browser - // data. - instance->pdata = NULL; - - cleanup_done: - g_free (tag_message); - tag_message = NULL; - g_free (applet_tag); - applet_tag = NULL; - g_free (read_message); From omajid at redhat.com Tue Aug 4 09:07:37 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:37 +0000 Subject: changeset in /hg/icedtea: 2009-07-07 Omair Majid changeset 559f19ce8d7b in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=559f19ce8d7b description: 2009-07-07 Omair Majid * netx/net/sourceforge/jnlp/Parser.java (getExtension): Fix typo in node name. diffstat: 2 files changed, 9 insertions(+), 4 deletions(-) ChangeLog | 5 +++++ netx/net/sourceforge/jnlp/Parser.java | 8 ++++---- diffs (30 lines): diff -r 0a41b2f5f086 -r 559f19ce8d7b ChangeLog --- a/ChangeLog Tue Jul 07 10:12:31 2009 -0400 +++ b/ChangeLog Tue Jul 07 13:44:35 2009 -0400 @@ -1,3 +1,8 @@ 2009-07-07 Omair Majid + + * netx/net/sourceforge/jnlp/Parser.java + (getExtension): Fix typo in node name. + 2009-07-07 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add diff -r 0a41b2f5f086 -r 559f19ce8d7b netx/net/sourceforge/jnlp/Parser.java --- a/netx/net/sourceforge/jnlp/Parser.java Tue Jul 07 10:12:31 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Parser.java Tue Jul 07 13:44:35 2009 -0400 @@ -336,10 +336,10 @@ class Parser { Node dload[] = getChildNodes(node, "ext-download"); for (int i=0; i < dload.length; i++) { - boolean lazy = "lazy".equals(getAttribute(node, "download", "eager")); - - ext.addPart(getRequiredAttribute(node, "ext-part", null), - getAttribute(node, "part", null), + boolean lazy = "lazy".equals(getAttribute(dload[i], "download", "eager")); + + ext.addPart(getRequiredAttribute(dload[i], "ext-part", null), + getAttribute(dload[i], "part", null), lazy); } From dbhole at redhat.com Tue Aug 4 09:07:37 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 04 Aug 2009 16:07:37 +0000 Subject: changeset in /hg/icedtea: Rewrote cookie support for the plugin ... Message-ID: changeset 544a26bdc6d0 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=544a26bdc6d0 description: Rewrote cookie support for the plugin so that cookies are aquired dynamically from Mozilla for each http/https connection. diffstat: 16 files changed, 127 insertions(+), 108 deletions(-) ChangeLog | 16 ++++ IcedTeaPlugin.cc | 52 ++++++++++--- netx/net/sourceforge/jnlp/ExtensionDesc.java | 16 ---- netx/net/sourceforge/jnlp/JNLPFile.java | 27 ++----- netx/net/sourceforge/jnlp/Launcher.java | 6 - netx/net/sourceforge/jnlp/NetxPanel.java | 5 - netx/net/sourceforge/jnlp/Parser.java | 2 netx/net/sourceforge/jnlp/PluginBridge.java | 3 netx/net/sourceforge/jnlp/cache/CacheUtil.java | 4 - netx/net/sourceforge/jnlp/cache/Resource.java | 17 ---- netx/net/sourceforge/jnlp/cache/ResourceTracker.java | 10 -- netx/net/sourceforge/jnlp/runtime/Boot.java | 2 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 10 +- plugin/icedtea/sun/applet/PluginAppletViewer.java | 57 +++++++++------ plugin/icedtea/sun/applet/PluginCallRequestFactory.java | 2 plugin/icedtea/sun/applet/PluginMain.java | 6 + diffs (truncated from 645 to 500 lines): diff -r 559f19ce8d7b -r 544a26bdc6d0 ChangeLog --- a/ChangeLog Tue Jul 07 13:44:35 2009 -0400 +++ b/ChangeLog Thu Jul 09 14:42:44 2009 -0400 @@ -1,3 +1,19 @@ 2009-07-07 Omair Majid + + * IcedTeaPlugin.cc: Add suppport for cookie info requests from applets. + * plugin/icedtea/sun/applet/PluginAppletViewer.java: Rework cookie support + to make it dynamic. + * plugin/icedtea/sun/applet/PluginMain.java: Wire in custom cookie store + that dynamically requests cookie information from C++ side. + * netx/net/sourceforge/jnlp/JNLPFile.java: Remove old cookie handling code. + * netx/net/sourceforge/jnlp/Launcher.java: Same. + * netx/net/sourceforge/jnlp/NetxPanel.java: Same. + * netx/net/sourceforge/jnlp/PluginBridge.java: Same. + * netx/net/sourceforge/jnlp/cache/CacheUtil.java: Same. + * netx/net/sourceforge/jnlp/cache/Resource.java: Same. + * netx/net/sourceforge/jnlp/cache/ResourceTracker.java: Same. + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Same. + 2009-07-07 Omair Majid * netx/net/sourceforge/jnlp/Parser.java diff -r 559f19ce8d7b -r 544a26bdc6d0 IcedTeaPlugin.cc --- a/IcedTeaPlugin.cc Tue Jul 07 13:44:35 2009 -0400 +++ b/IcedTeaPlugin.cc Thu Jul 09 14:42:44 2009 -0400 @@ -1012,6 +1012,7 @@ private: void ProcessMessage(); void ConsumeMsgFromJVM(); nsresult GetProxyInfo(const char* siteAddr, char** proxyScheme, char** proxyHost, char** proxyPort); + nsresult GetCookieInfo(const char* siteAddr, char** cookieString); nsCOMPtr sink; nsCOMPtr transport; nsCOMPtr applet_viewer_process; @@ -1070,7 +1071,6 @@ private: IcedTeaPluginFactory* factory; PRUint32 instance_identifier; nsCString instanceIdentifierPrefix; - nsresult GetCookie(const char* siteAddr, char** cookieString); }; @@ -2380,16 +2380,6 @@ IcedTeaPluginInstance::Initialize (nsIPl encodedAppletTag += tagMessage.get()[i]; } - nsCString cookieInfo(instanceIdentifierPrefix); - cookieInfo += "cookie "; - - char* cookieString; - if (GetCookie(documentbase, &cookieString) == NS_OK) - { - cookieInfo += cookieString; - } - - factory->SendMessageToAppletViewer (cookieInfo); factory->SendMessageToAppletViewer (encodedAppletTag); // Set back-pointer to peer instance. @@ -2760,8 +2750,15 @@ IcedTeaPluginFactory::GetProxyInfo(const return NS_OK; } -NS_IMETHODIMP -IcedTeaPluginInstance::GetCookie(const char* siteAddr, char** cookieString) +/** + * Returns the cookie information for the given url + * + * @param siteAddr The URI to check (must be decoded) + * @return cookieString The cookie string for the given URI + */ + +NS_IMETHODIMP +IcedTeaPluginFactory::GetCookieInfo(const char* siteAddr, char** cookieString) { nsresult rv; @@ -3497,6 +3494,35 @@ IcedTeaPluginFactory::HandleMessage (nsC // free allocated memory delete proxyScheme, proxyHost, proxyPort; + + } else if (command == "PluginCookieInfo") + { + + nsresult rv; + nsCOMPtr net_util = do_GetService(NS_NETUTIL_CONTRACTID, &rv); + + if (!net_util) + printf("Error instantiating NetUtil service.\n"); + + // decode the url + nsDependentCSubstring url; + net_util->UnescapeString(rest, 0, url); + + nsCString cookieInfo("plugin PluginCookieInfo "); + cookieInfo += rest; + cookieInfo += " "; + + char* cookieString; + if (GetCookieInfo(((nsCString) url).get(), &cookieString) == NS_OK) + { + cookieInfo += cookieString; + PLUGIN_DEBUG_2ARG("Cookie for %s is %s\n", ((nsCString) url).get(), cookieString); + } else { + PLUGIN_DEBUG_1ARG("No cookie found for %s\n", ((nsCString) url).get()); + } + + // send back what we found + SendMessageToAppletViewer (cookieInfo); } } diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/ExtensionDesc.java --- a/netx/net/sourceforge/jnlp/ExtensionDesc.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/ExtensionDesc.java Thu Jul 09 14:42:44 2009 -0400 @@ -40,9 +40,6 @@ public class ExtensionDesc { /** the location of the extension JNLP file */ private URL location; - - /** the cookie string sent with resource requests */ - private String cookieStr; /** the JNLPFile the extension refers to */ private JNLPFile file; @@ -61,11 +58,10 @@ public class ExtensionDesc { * @param version the required version of the extention JNLPFile * @param location the location of the extention JNLP file */ - public ExtensionDesc(String name, Version version, URL location, String cookieStr) { + public ExtensionDesc(String name, Version version, URL location) { this.name = name; this.version = version; this.location = location; - this.cookieStr = cookieStr; } /** @@ -125,7 +121,7 @@ public class ExtensionDesc { */ public void resolve() throws ParseException, IOException { if (file == null) { - file = new JNLPFile(location, cookieStr); + file = new JNLPFile(location); if (JNLPRuntime.isDebug()) System.out.println("Resolve: "+file.getInformation().getTitle()); @@ -144,14 +140,6 @@ public class ExtensionDesc { public JNLPFile getJNLPFile() { return file; } - - /** - * Returns the cookie associated with this instance - */ - public String getCookieStr() { - return cookieStr; - } - } diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/JNLPFile.java --- a/netx/net/sourceforge/jnlp/JNLPFile.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/JNLPFile.java Thu Jul 09 14:42:44 2009 -0400 @@ -69,9 +69,6 @@ public class JNLPFile { /** the URL used to resolve relative URLs in the file */ protected URL codeBase; - - /** cookie string to send alongwith resource requests */ - protected String cookieStr; /** file version */ protected Version fileVersion; @@ -127,8 +124,8 @@ public class JNLPFile { * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ - public JNLPFile(URL location, String cookieStr) throws IOException, ParseException { - this(location, cookieStr, false); // not strict + public JNLPFile(URL location) throws IOException, ParseException { + this(location, false); // not strict } /** @@ -140,8 +137,8 @@ public class JNLPFile { * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ - public JNLPFile(URL location, String cookieStr, boolean strict) throws IOException, ParseException { - this(location, cookieStr, strict, JNLPRuntime.getDefaultUpdatePolicy()); + public JNLPFile(URL location, boolean strict) throws IOException, ParseException { + this(location, strict, JNLPRuntime.getDefaultUpdatePolicy()); } /** @@ -154,12 +151,11 @@ public class JNLPFile { * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ - public JNLPFile(URL location, String cookieStr, boolean strict, UpdatePolicy policy) throws IOException, ParseException { - Node root = Parser.getRootNode(openURL(location, cookieStr, policy)); + public JNLPFile(URL location, boolean strict, UpdatePolicy policy) throws IOException, ParseException { + Node root = Parser.getRootNode(openURL(location, policy)); parse(root, strict, location); this.fileLocation = location; - this.cookieStr = cookieStr; } /** @@ -190,13 +186,13 @@ public class JNLPFile { * Open the jnlp file URL from the cache if there, otherwise * download to the cache. Called from constructor. */ - private static InputStream openURL(URL location, String cookieStr, UpdatePolicy policy) throws IOException { + private static InputStream openURL(URL location, UpdatePolicy policy) throws IOException { if (location == null || policy == null) throw new IllegalArgumentException(R("NullParameter")); try { ResourceTracker tracker = new ResourceTracker(false); // no prefetch - tracker.addResource(location, cookieStr, null/*version*/, policy); + tracker.addResource(location, null/*version*/, policy); return tracker.getInputStream(location); } @@ -255,13 +251,6 @@ public class JNLPFile { */ public URL getCodeBase() { return codeBase; - } - - /** - * Returns the cookie string that will be send when resources for this file are requested - */ - public String getCookieStr() { - return cookieStr; } /** diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Thu Jul 09 14:42:44 2009 -0400 @@ -335,10 +335,10 @@ public class Launcher { JNLPFile file = null; try { - file = new JNLPFile(location, null, true, updatePolicy); // strict + file = new JNLPFile(location, true, updatePolicy); // strict } catch (ParseException ex) { - file = new JNLPFile(location, null, false, updatePolicy); + file = new JNLPFile(location, false, updatePolicy); // only here if strict failed but lax did not fail LaunchException lex = @@ -389,7 +389,7 @@ public class Launcher { IconDesc.SPLASH, preferredWidth, preferredHeight); if (splashImageURL != null) { ResourceTracker resourceTracker = new ResourceTracker(true); - resourceTracker.addResource(splashImageURL, "SPLASH", file.getFileVersion(), updatePolicy); + resourceTracker.addResource(splashImageURL, file.getFileVersion(), updatePolicy); splashScreen = new JNLPSplashScreen(resourceTracker, null, null); splashScreen.setSplashImageURL(splashImageURL); if (splashScreen.isSplashScreenValid()) { diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/NetxPanel.java --- a/netx/net/sourceforge/jnlp/NetxPanel.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/NetxPanel.java Thu Jul 09 14:42:44 2009 -0400 @@ -41,7 +41,6 @@ public class NetxPanel extends AppletVie private PluginBridge bridge = null; private boolean exitOnFailure = true; private AppletInstance appInst = null; - private String cookieStr; private boolean appletAlive; public NetxPanel(URL documentURL, Hashtable atts) @@ -50,11 +49,10 @@ public class NetxPanel extends AppletVie } // overloaded constructor, called when initialized via plugin - public NetxPanel(URL documentURL, String cookieStr, Hashtable atts, boolean exitOnFailure) + public NetxPanel(URL documentURL, Hashtable atts, boolean exitOnFailure) { this(documentURL, atts); this.exitOnFailure = exitOnFailure; - this.cookieStr = cookieStr; this.appletAlive = true; } @@ -64,7 +62,6 @@ public class NetxPanel extends AppletVie try { bridge = new PluginBridge(baseURL, - cookieStr, getDocumentBase(), getJarFiles(), getCode(), diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/Parser.java --- a/netx/net/sourceforge/jnlp/Parser.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Parser.java Thu Jul 09 14:42:44 2009 -0400 @@ -332,7 +332,7 @@ class Parser { Version version = getVersion(node, "version", null); URL location = getRequiredURL(node, "href", base); - ExtensionDesc ext = new ExtensionDesc(name, version, location, null); + ExtensionDesc ext = new ExtensionDesc(name, version, location); Node dload[] = getChildNodes(node, "ext-download"); for (int i=0; i < dload.length; i++) { diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/PluginBridge.java --- a/netx/net/sourceforge/jnlp/PluginBridge.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/PluginBridge.java Thu Jul 09 14:42:44 2009 -0400 @@ -43,7 +43,7 @@ public class PluginBridge extends JNLPFi String[] cache_ex_jars = new String[0]; Hashtable atts; - public PluginBridge(URL codebase, String cookieStr, URL documentBase, String jar, String main, + public PluginBridge(URL codebase, URL documentBase, String jar, String main, int width, int height, Hashtable atts) throws Exception { @@ -104,7 +104,6 @@ public class PluginBridge extends JNLPFi else security = null; - this.cookieStr = cookieStr; } public String getTitle() diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/cache/CacheUtil.java --- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Thu Jul 09 14:42:44 2009 -0400 @@ -75,9 +75,9 @@ public class CacheUtil { * @param version the version, or null * @return either the location in the cache or the original location */ - public static URL getCachedResource(URL location, String cookieStr, Version version, UpdatePolicy policy) { + public static URL getCachedResource(URL location, Version version, UpdatePolicy policy) { ResourceTracker rt = new ResourceTracker(); - rt.addResource(location, cookieStr, version, policy); + rt.addResource(location, version, policy); try { File f = rt.getCacheFile(location); return f.toURL(); diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/cache/Resource.java --- a/netx/net/sourceforge/jnlp/cache/Resource.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/cache/Resource.java Thu Jul 09 14:42:44 2009 -0400 @@ -68,9 +68,6 @@ public class Resource { /** the remote location of the resource */ URL location; - /** cookie string to send with the resource request */ - String cookieStr; - /** the local file downloaded to */ File localFile; @@ -98,20 +95,19 @@ public class Resource { /** * Create a resource. */ - private Resource(URL location, String cookieStr, UpdatePolicy updatePolicy, Version requestVersion) { + private Resource(URL location, UpdatePolicy updatePolicy, Version requestVersion) { this.location = location; this.requestVersion = requestVersion; this.updatePolicy = updatePolicy; - this.cookieStr = cookieStr; } /** * Return a shared Resource object representing the given * location and version. */ - public static Resource getResource(URL location, String cookieStr, UpdatePolicy updatePolicy, Version requestVersion) { + public static Resource getResource(URL location, UpdatePolicy updatePolicy, Version requestVersion) { synchronized (resources) { - Resource resource = new Resource(location, cookieStr, updatePolicy, requestVersion); + Resource resource = new Resource(location, updatePolicy, requestVersion); int index = resources.indexOf(resource); if (index >= 0) { // return existing object @@ -132,13 +128,6 @@ public class Resource { */ public URL getLocation() { return location; - } - - /** - * Returns the cookie string associated with this resource - */ - public String getCookieStr() { - return cookieStr; } /** diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/cache/ResourceTracker.java --- a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java Thu Jul 09 14:42:44 2009 -0400 @@ -148,11 +148,11 @@ public class ResourceTracker { * @param version the resource version * @param updatePolicy whether to check for updates if already in cache */ - public void addResource(URL location, String cookieStr, Version version, UpdatePolicy updatePolicy) { + public void addResource(URL location, Version version, UpdatePolicy updatePolicy) { if (location == null) throw new IllegalArgumentException("location==null"); - Resource resource = Resource.getResource(location, cookieStr, updatePolicy, version); + Resource resource = Resource.getResource(location, updatePolicy, version); boolean downloaded = false; synchronized (resources) { @@ -606,9 +606,6 @@ public class ResourceTracker { try { // create out second in case in does not exist URLConnection con = getVersionedResourceURL(resource).openConnection(); - - if (resource.getCookieStr() != null && resource.getCookieStr().length() > 0) - con.setRequestProperty("Cookie", resource.getCookieStr()); InputStream in = new BufferedInputStream(con.getInputStream()); OutputStream out = CacheUtil.getOutputStream(resource.location, resource.downloadVersion); @@ -657,9 +654,6 @@ public class ResourceTracker { // connect URLConnection connection = getVersionedResourceURL(resource).openConnection(); // this won't change so should be okay unsynchronized - - if (resource.getCookieStr() != null && resource.getCookieStr().length() > 0) - connection.setRequestProperty("Cookie", resource.getCookieStr()); int size = connection.getContentLength(); boolean current = CacheUtil.isCurrent(resource.location, resource.requestVersion, connection) && resource.getUpdatePolicy() != UpdatePolicy.FORCE; diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Thu Jul 09 14:42:44 2009 -0400 @@ -276,7 +276,7 @@ public final class Boot implements Privi boolean strict = (null != getOption("-strict")); - JNLPFile file = new JNLPFile(url, null, strict); + JNLPFile file = new JNLPFile(url, strict); // add in extra params from command line addProperties(file); diff -r 559f19ce8d7b -r 544a26bdc6d0 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Jul 07 13:44:35 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Jul 09 14:42:44 2009 -0400 @@ -234,11 +234,11 @@ public class JNLPClassLoader extends URL * @param location the file's location * @param policy the update policy to use when downloading resources */ - public static JNLPClassLoader getInstance(URL location, String cookieStr, UpdatePolicy policy) throws IOException, ParseException, LaunchException { + public static JNLPClassLoader getInstance(URL location, UpdatePolicy policy) throws IOException, ParseException, LaunchException { JNLPClassLoader loader = (JNLPClassLoader) urlToLoader.get(location); if (loader == null) - loader = getInstance(new JNLPFile(location, cookieStr, false, policy), policy); + loader = getInstance(new JNLPFile(location, false, policy), policy); return loader; } @@ -256,7 +256,7 @@ public class JNLPClassLoader extends URL //if (ext != null) { for (int i=0; i < ext.length; i++) { try { - JNLPClassLoader loader = getInstance(ext[i].getLocation(), ext[i].getCookieStr(), updatePolicy); + JNLPClassLoader loader = getInstance(ext[i].getLocation(), updatePolicy); loaderList.add(loader); } catch (Exception ex) { @@ -314,7 +314,6 @@ public class JNLPClassLoader extends URL initialJars.add(jars[i]); // regardless of part tracker.addResource(jars[i].getLocation(), - file.getCookieStr(), jars[i].getVersion(), jars[i].isCacheable() ? JNLPRuntime.getDefaultUpdatePolicy() : UpdatePolicy.FORCE ); @@ -780,8 +779,7 @@ public class JNLPClassLoader extends URL available.add(desc); - tracker.addResource(desc.getLocation(), - file.getCookieStr(), + tracker.addResource(desc.getLocation(), desc.getVersion(), JNLPRuntime.getDefaultUpdatePolicy() ); diff -r 559f19ce8d7b -r 544a26bdc6d0 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Jul 07 13:44:35 2009 -0400 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Thu Jul 09 14:42:44 2009 -0400 @@ -84,6 +84,7 @@ import java.io.PrintStream; import java.io.PrintStream; import java.io.Reader; import java.io.StringReader; +import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; From dbhole at redhat.com Tue Aug 4 09:07:37 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 04 Aug 2009 16:07:37 +0000 Subject: changeset in /hg/icedtea: Adding new plugin cookie related files. Message-ID: changeset 9af9639e360e in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=9af9639e360e description: Adding new plugin cookie related files. diffstat: 2 files changed, 195 insertions(+) plugin/icedtea/sun/applet/PluginCookieInfoRequest.java | 122 ++++++++++++++++ plugin/icedtea/sun/applet/PluginCookieStore.java | 73 +++++++++ diffs (203 lines): diff -r 544a26bdc6d0 -r 9af9639e360e plugin/icedtea/sun/applet/PluginCookieInfoRequest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedtea/sun/applet/PluginCookieInfoRequest.java Thu Jul 09 15:28:30 2009 -0400 @@ -0,0 +1,122 @@ +/* PluginCookieInfoRequest -- Object representing a request for cookie information from the browser + Copyright (C) 2009 Red Hat + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package sun.applet; + +import java.net.HttpCookie; +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + +import com.sun.jndi.toolkit.url.UrlUtil; + +/** + * This class represents a request object for cookie information for a given URI + */ + +public class PluginCookieInfoRequest extends PluginCallRequest { + + List cookieObjects = new ArrayList(); + + public PluginCookieInfoRequest(String message, String returnString) { + super(message, returnString); + } + + public void parseReturn(String cookieInfo) { + + // try to parse the proxy information. If things go wrong, do nothing .. + // this will keep internal = null which forces a direct connection + + PluginDebug.debug ("PluginCookieInfoRequest GOT: " + cookieInfo); + + String encodedURI = cookieInfo.split(" ")[2]; + + // Skip the first 3 components. We are guaranteed 3 components, + // so no index -1 to worry about + cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); + cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); + cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); + + URI siteURI; + try + { + siteURI = new URI(UrlUtil.decode(encodedURI, "UTF-8")); + } catch (Exception e) + { + e.printStackTrace(); + return; + } + + if (cookieInfo != null && cookieInfo.length() > 0) + { + String[] cookies = cookieInfo.split(";"); + + for (int i = 0; i < cookies.length; i++) + { + ArrayList l = new ArrayList(); + + String cookie = cookies[i]; + cookie = cookie.trim(); + String cookieName = cookie.substring(0, cookie.indexOf("=")); + String cookieValue = cookie.substring(cookie.indexOf("=")+1); + + HttpCookie httpCookieObj = new HttpCookie(cookieName, cookieValue); + httpCookieObj.setPath(siteURI.getPath()); + httpCookieObj.setVersion(0); // force v0 + + PluginDebug.debug("Adding cookie info COOKIEN=" + cookieName + " and COOKIEV=" + cookieValue); + cookieObjects.add(httpCookieObj); + } + } + + setDone(true); + } + + /** + * Returns whether the given message is serviceable by this object + * + * @param message The message to service + * @return boolean indicating if message is serviceable + */ + public boolean serviceable(String message) { + return message.startsWith(returnString); + } + + public List getObject() { + return this.cookieObjects; + } +} diff -r 544a26bdc6d0 -r 9af9639e360e plugin/icedtea/sun/applet/PluginCookieStore.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedtea/sun/applet/PluginCookieStore.java Thu Jul 09 15:28:30 2009 -0400 @@ -0,0 +1,73 @@ +/* PluginCookieStore -- Storage for cookie information + Copyright (C) 2009 Red Hat + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package sun.applet; + +import java.net.HttpCookie; +import java.net.URI; +import java.util.List; + +import sun.net.www.protocol.http.InMemoryCookieStore; + +public class PluginCookieStore extends InMemoryCookieStore +{ + public List get(URI uri) + { + List cookies; + + // Try to fetch it from the plugin, but if something goes + // wrong, fall back. Don't crash! + try + { + cookies = (List) PluginAppletViewer.requestPluginCookieInfo(uri); + + // If cookies is null, something went wrong. Fall back. + if (cookies == null) throw new NullPointerException("Null cookie"); + + } catch (Exception e) + { + PluginDebug.debug("Unable to fetch cookie information from plugin. " + + "Falling back to default."); + e.printStackTrace(); + cookies = super.get(uri); + } + + PluginDebug.debug("Returning cookies " + cookies + " for site: " + uri); + + return cookies; + } +} From omajid at redhat.com Tue Aug 4 09:07:38 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:38 +0000 Subject: changeset in /hg/icedtea: Netx: Set context classloader for all ... Message-ID: changeset b190c887feae in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=b190c887feae description: Netx: Set context classloader for all threads in an application 2009-07-09 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java (launchApplication): Call setContextClassLoaderForAllThreads. (setContextClassLoaderForAllThreads): New function. diffstat: 2 files changed, 48 insertions(+), 2 deletions(-) ChangeLog | 6 ++++ netx/net/sourceforge/jnlp/Launcher.java | 44 +++++++++++++++++++++++++++++-- diffs (81 lines): diff -r 332a3a4aa5de -r b190c887feae ChangeLog --- a/ChangeLog Thu Jul 09 17:18:02 2009 -0400 +++ b/ChangeLog Thu Jul 09 17:29:13 2009 -0400 @@ -1,3 +1,9 @@ 2009-07-09 Omair Majid + + * netx/net/sourceforge/jnlp/Launcher.java + (launchApplication): Call setContextClassLoaderForAllThreads. + (setContextClassLoaderForAllThreads): New function. + 2009-07-09 Omair Majid * netx/net/sourceforge/jnlp/cache/ResourceTracker.java: diff -r 332a3a4aa5de -r b190c887feae netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Thu Jul 09 17:18:02 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Thu Jul 09 17:29:13 2009 -0400 @@ -23,6 +23,8 @@ import java.io.File; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadMXBean; import java.lang.reflect.Method; import java.net.URL; import java.util.LinkedList; @@ -425,8 +427,7 @@ public class Launcher { Method main = mainClass.getDeclaredMethod("main", new Class[] {String[].class} ); String args[] = file.getApplication().getArguments(); - // required to make some apps work right - Thread.currentThread().setContextClassLoader(app.getClassLoader()); + setContextClassLoaderForAllThreads(app.getClassLoader()); if (splashScreen != null) { if (splashScreen.isSplashScreenValid()) { @@ -445,6 +446,45 @@ public class Launcher { catch (Exception ex) { throw launchError(new LaunchException(file, ex, R("LSFatal"), R("LCLaunching"), R("LCouldNotLaunch"), R("LCouldNotLaunchInfo"))); } + } + + /** + * Set the classloader as the context classloader for all threads. This is + * required to make some applications work. For example, an application that + * provides a custom Swing LnF may ask the swing thread to load resources + * from their JNLP, which would only work if the Swing thread knows about + * the JNLPClassLoader. + * + * @param classLoader the classloader to set as the context classloader + */ + private void setContextClassLoaderForAllThreads(ClassLoader classLoader) { + ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); + ThreadGroup root; + + root = Thread.currentThread().getThreadGroup(); + while (root.getParent() != null) { + root = root.getParent(); + } + + /* be prepared for change in thread size */ + int threadCountGuess = threadBean.getThreadCount(); + Thread[] threads; + do { + threadCountGuess = threadCountGuess * 2; + threads = new Thread[threadCountGuess]; + root.enumerate(threads, true); + } while (threads[threadCountGuess-1] != null); + + + for (Thread thread: threads) { + if (thread != null) { + if (JNLPRuntime.isDebug()) { + System.err.println("Setting " + classLoader + " as the classloader for thread " + thread.getName()); + } + thread.setContextClassLoader(classLoader); + } + } + } /** From omajid at redhat.com Tue Aug 4 09:07:36 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:36 +0000 Subject: changeset in /hg/icedtea: 2009-07-07 Omair Majid changeset 0a41b2f5f086 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=0a41b2f5f086 description: 2009-07-07 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add RNestedJarExtration. * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java (activateJar): Create parent directories for nested jars. diffstat: 3 files changed, 12 insertions(+) ChangeLog | 7 +++++++ netx/net/sourceforge/jnlp/resources/Messages.properties | 1 + netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 4 ++++ diffs (39 lines): diff -r dd483ae1e6ca -r 0a41b2f5f086 ChangeLog --- a/ChangeLog Wed Jun 24 16:26:08 2009 -0400 +++ b/ChangeLog Tue Jul 07 10:12:31 2009 -0400 @@ -1,3 +1,10 @@ 2009-06-24 Omair Majid + + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add + RNestedJarExtration. + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (activateJar): Create parent directories for nested jars. + 2009-06-24 Omair Majid * netx/net/sourceforge/jnlp/security/CertWarningPane.java diff -r dd483ae1e6ca -r 0a41b2f5f086 netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Jun 24 16:26:08 2009 -0400 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Jul 07 10:12:31 2009 -0400 @@ -111,6 +111,7 @@ RDenyStopped=Stopped applications have n RDenyStopped=Stopped applications have no permissions. RExitNoApp=Can not exit the JVM because the current application cannot be determined. RNoLockDir=Unable to create locks directory ({0}) +RNestedJarExtration=Unable to extract nested jar. RUnexpected=Unexpected {0} at {1} # Boot options, message should be shorter than this ----------------> diff -r dd483ae1e6ca -r 0a41b2f5f086 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Jun 24 16:26:08 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Jul 07 10:12:31 2009 -0400 @@ -521,6 +521,10 @@ public class JNLPClassLoader extends URL // with standard classloader methods) String extractedJarLocation = localFile.getParent() + "/" + je.getName(); + File parentDir = new File(extractedJarLocation).getParentFile(); + if (!parentDir.isDirectory() && !parentDir.mkdirs()) { + throw new RuntimeException(R("RNestedJarExtration")); + } FileOutputStream extractedJar = new FileOutputStream(extractedJarLocation); InputStream is = jarFile.getInputStream(je); From ahughes at redhat.com Tue Aug 4 09:07:38 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 04 Aug 2009 16:07:38 +0000 Subject: changeset in /hg/icedtea: Correct typo. Message-ID: changeset b92099ea3dbc in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=b92099ea3dbc description: Correct typo. diffstat: 1 file changed, 1 insertion(+), 1 deletion(-) ChangeLog | 2 +- diffs (11 lines): diff -r 9af9639e360e -r b92099ea3dbc ChangeLog --- a/ChangeLog Thu Jul 09 15:28:30 2009 -0400 +++ b/ChangeLog Tue Aug 04 14:27:16 2009 +0100 @@ -1,6 +1,6 @@ 2009-07-09 Deepak Bhole - * IcedTeaPlugin.cc: Add suppport for cookie info requests from applets. + * IcedTeaPlugin.cc: Add support for cookie info requests from applets. * plugin/icedtea/sun/applet/PluginAppletViewer.java: Rework cookie support to make it dynamic. * plugin/icedtea/sun/applet/PluginMain.java: Wire in custom cookie store From ahughes at redhat.com Tue Aug 4 09:07:39 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 04 Aug 2009 16:07:39 +0000 Subject: changeset in /hg/icedtea: Deepak's Makefile.am updates. Message-ID: changeset 96a276fcaa9e in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=96a276fcaa9e description: Deepak's Makefile.am updates. 2009-07-10 Deepak Bhole * Makefile.am: Update makefile to pick up plugin C++ files from new location. diffstat: 1 file changed, 21 insertions(+), 4 deletions(-) Makefile.am | 25 +++++++++++++++++++++---- diffs (50 lines): diff -r 5da2e8e775d5 -r 96a276fcaa9e Makefile.am --- a/Makefile.am Fri Jul 10 19:02:10 2009 -0400 +++ b/Makefile.am Tue Aug 04 14:35:37 2009 +0100 @@ -3219,6 +3219,17 @@ if ENABLE_NPPLUGIN # is listed before -l options. See: # http://developer.mozilla.org/en/docs/XPCOM_Glue IcedTeaNPPlugin.o: IcedTeaNPPlugin.cc + +NPPLUGIN_SRC=IcedTeaNPPlugin.cc IcedTeaScriptablePluginObject.cc \ + IcedTeaJavaRequestProcessor.cc IcedTeaPluginRequestProcessor.cc \ + IcedTeaPluginUtils.cc + +NPPLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedTeaScriptablePluginObject.o \ + IcedTeaJavaRequestProcessor.o IcedTeaPluginRequestProcessor.o \ + IcedTeaPluginUtils.o + +IcedTeaNPPlugin_objects: + (cd plugin/icedteanp if [ -e $(abs_top_srcdir)/.hg ] && which $(HG) >/dev/null; then \ revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{rev}')`" ; \ fi ; \ @@ -3231,18 +3242,24 @@ IcedTeaNPPlugin.o: IcedTeaNPPlugin.cc $(GLIB_CFLAGS) \ $(GTK_CFLAGS) \ $(MOZILLA_CFLAGS) \ - -fPIC -c -o $@ $< -IcedTeaNPPlugin.so: IcedTeaNPPlugin.o + -fPIC -c $(NPPLUGIN_SRC) + ) + +IcedTeaNPPlugin.so: IcedTeaNPPlugin_objects + (cd plugin/icedteanp $(CXX) $(CXXFLAGS) \ - $< \ + $(NPPLUGIN_OBJECTS) \ $(GLIB_LIBS) \ $(GTK_LIBS) \ $(MOZILLA_LIBS)\ -shared -o $@ + ) clean-IcedTeaNPPlugin: - rm -f IcedTeaNPPlugin.o + (cd plugin/icedteanp + rm -f $(NPPLUGIN_OBJECTS) rm -f IcedTeaNPPlugin.so + ) endif if ENABLE_PLUGIN # IcedTeaPlugin.so. From dbhole at redhat.com Tue Aug 4 09:07:40 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 04 Aug 2009 16:07:40 +0000 Subject: changeset in /hg/icedtea: Clean up directory structure of .java ... Message-ID: changeset b9dc9e08ed23 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=b9dc9e08ed23 description: Clean up directory structure of .java files before any significant amount of history gets written. This change does not alter any of the java code, just moves it around to a cleaner location. The only code change is in Makefile.am to adapt to the new location, and another minor change that affects only np plugin build. diffstat: 59 files changed, 7046 insertions(+), 6978 deletions(-) ChangeLog | 68 plugin/icedteanp/java/netscape/javascript/JSException.java | 140 plugin/icedteanp/java/netscape/javascript/JSObject.java | 263 + plugin/icedteanp/java/netscape/javascript/JSProxy.java | 58 plugin/icedteanp/java/netscape/javascript/JSRunnable.java | 72 plugin/icedteanp/java/netscape/javascript/JSUtil.java | 59 plugin/icedteanp/java/sun/applet/AppletSecurityContextManager.java | 71 plugin/icedteanp/java/sun/applet/GetMemberPluginCallRequest.java | 76 plugin/icedteanp/java/sun/applet/GetWindowPluginCallRequest.java | 75 plugin/icedteanp/java/sun/applet/JavaConsole.java | 365 + plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java | 241 + plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 1307 ++++++ plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 1988 ++++++++++ plugin/icedteanp/java/sun/applet/PluginCallRequest.java | 85 plugin/icedteanp/java/sun/applet/PluginCallRequestFactory.java | 62 plugin/icedteanp/java/sun/applet/PluginClassLoader.java | 51 plugin/icedteanp/java/sun/applet/PluginCookieInfoRequest.java | 122 plugin/icedteanp/java/sun/applet/PluginCookieStore.java | 73 plugin/icedteanp/java/sun/applet/PluginDebug.java | 51 plugin/icedteanp/java/sun/applet/PluginException.java | 53 plugin/icedteanp/java/sun/applet/PluginMain.java | 319 + plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java | 119 plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java | 121 plugin/icedteanp/java/sun/applet/PluginObjectStore.java | 132 plugin/icedteanp/java/sun/applet/PluginProxyInfoRequest.java | 85 plugin/icedteanp/java/sun/applet/PluginProxySelector.java | 195 plugin/icedteanp/java/sun/applet/PluginStreamHandler.java | 479 ++ plugin/icedteanp/java/sun/applet/RequestQueue.java | 77 plugin/icedteanp/java/sun/applet/TestEnv.java | 172 plugin/icedteanp/java/sun/applet/VoidPluginCallRequest.java | 67 plugin/icedteanp/netscape/javascript/JSException.java | 140 plugin/icedteanp/netscape/javascript/JSObject.java | 263 - plugin/icedteanp/netscape/javascript/JSProxy.java | 58 plugin/icedteanp/netscape/javascript/JSRunnable.java | 72 plugin/icedteanp/netscape/javascript/JSUtil.java | 59 plugin/icedteanp/sun/applet/AppletSecurityContextManager.java | 71 plugin/icedteanp/sun/applet/GetMemberPluginCallRequest.java | 76 plugin/icedteanp/sun/applet/GetWindowPluginCallRequest.java | 75 plugin/icedteanp/sun/applet/JavaConsole.java | 365 - plugin/icedteanp/sun/applet/PasswordAuthenticationDialog.java | 241 - plugin/icedteanp/sun/applet/PluginAppletSecurityContext.java | 1307 ------ plugin/icedteanp/sun/applet/PluginAppletViewer.java | 1988 ---------- plugin/icedteanp/sun/applet/PluginCallRequest.java | 85 plugin/icedteanp/sun/applet/PluginCallRequestFactory.java | 62 plugin/icedteanp/sun/applet/PluginClassLoader.java | 51 plugin/icedteanp/sun/applet/PluginCookieInfoRequest.java | 122 plugin/icedteanp/sun/applet/PluginCookieStore.java | 73 plugin/icedteanp/sun/applet/PluginDebug.java | 51 plugin/icedteanp/sun/applet/PluginException.java | 53 plugin/icedteanp/sun/applet/PluginMain.java | 319 - plugin/icedteanp/sun/applet/PluginMessageConsumer.java | 119 plugin/icedteanp/sun/applet/PluginMessageHandlerWorker.java | 121 plugin/icedteanp/sun/applet/PluginObjectStore.java | 132 plugin/icedteanp/sun/applet/PluginProxyInfoRequest.java | 85 plugin/icedteanp/sun/applet/PluginProxySelector.java | 195 plugin/icedteanp/sun/applet/PluginStreamHandler.java | 479 -- plugin/icedteanp/sun/applet/RequestQueue.java | 77 plugin/icedteanp/sun/applet/TestEnv.java | 172 plugin/icedteanp/sun/applet/VoidPluginCallRequest.java | 67 diffs (truncated from 14263 to 500 lines): diff -r bebe7bbde097 -r b9dc9e08ed23 ChangeLog --- a/ChangeLog Mon Jul 13 15:22:34 2009 -0400 +++ b/ChangeLog Tue Jul 14 13:04:20 2009 -0400 @@ -1,3 +1,71 @@ 2009-07-13 Omair Majid + + * Makefile.am: Fix npplugin build. + * plugin/icedteanp/java/netscape/javascript/JSException.java: Moved from + the plugin/icedteanp/netscape/javascript/ hierarchy. + * plugin/icedteanp/java/netscape/javascript/JSObject.java: Same. + * plugin/icedteanp/java/netscape/javascript/JSProxy.java: Same. + * plugin/icedteanp/java/netscape/javascript/JSRunnable.java: Same. + * plugin/icedteanp/java/netscape/javascript/JSUtil.java: Same. + * plugin/icedteanp/java/sun/applet/AppletSecurityContextManager.java: + Moved from the plugin/icedteanp/sun/applet hierarchy. + * plugin/icedteanp/java/sun/applet/GetMemberPluginCallRequest.java: Same. + * plugin/icedteanp/java/sun/applet/GetWindowPluginCallRequest.java: Same. + * plugin/icedteanp/java/sun/applet/JavaConsole.java: Same. + * plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java: + Same. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java: Same. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: Same. + * plugin/icedteanp/java/sun/applet/PluginCallRequest.java: Same. + * plugin/icedteanp/java/sun/applet/PluginCallRequestFactory.java: Same. + * plugin/icedteanp/java/sun/applet/PluginClassLoader.java: Same. + * plugin/icedteanp/java/sun/applet/PluginCookieInfoRequest.java: Same. + * plugin/icedteanp/java/sun/applet/PluginCookieStore.java: Same. + * plugin/icedteanp/java/sun/applet/PluginDebug.java: Same. + * plugin/icedteanp/java/sun/applet/PluginException.java: Same. + * plugin/icedteanp/java/sun/applet/PluginMain.java: Same. + * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: Same. + * plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java: Same. + * plugin/icedteanp/java/sun/applet/PluginObjectStore.java: Same. + * plugin/icedteanp/java/sun/applet/PluginProxyInfoRequest.java: Same. + * plugin/icedteanp/java/sun/applet/PluginProxySelector.java: Same. + * plugin/icedteanp/java/sun/applet/PluginStreamHandler.java: Same. + * plugin/icedteanp/java/sun/applet/RequestQueue.java: Same. + * plugin/icedteanp/java/sun/applet/TestEnv.java: Same. + * plugin/icedteanp/java/sun/applet/VoidPluginCallRequest.java: Same. + * plugin/icedteanp/netscape/javascript/JSException.java: Moved to + the plugin/icedteanp/java/netscape/javascript/ heirarchy. + * plugin/icedteanp/netscape/javascript/JSObject.java: Same. + * plugin/icedteanp/netscape/javascript/JSProxy.java: Same. + * plugin/icedteanp/netscape/javascript/JSRunnable.java: Same. + * plugin/icedteanp/netscape/javascript/JSUtil.java: Same. + * plugin/icedteanp/sun/applet/AppletSecurityContextManager.java: Moved to + the plugin/icedteanp/java/sun/applet/ heirarchy. + * plugin/icedteanp/sun/applet/GetMemberPluginCallRequest.java: Same. + * plugin/icedteanp/sun/applet/GetWindowPluginCallRequest.java: Same. + * plugin/icedteanp/sun/applet/JavaConsole.java: Same. + * plugin/icedteanp/sun/applet/PasswordAuthenticationDialog.java: Same. + * plugin/icedteanp/sun/applet/PluginAppletSecurityContext.java: Same. + * plugin/icedteanp/sun/applet/PluginAppletViewer.java: Same. + * plugin/icedteanp/sun/applet/PluginCallRequest.java: Same. + * plugin/icedteanp/sun/applet/PluginCallRequestFactory.java: Same. + * plugin/icedteanp/sun/applet/PluginClassLoader.java: Same. + * plugin/icedteanp/sun/applet/PluginCookieInfoRequest.java: Same. + * plugin/icedteanp/sun/applet/PluginCookieStore.java: Same. + * plugin/icedteanp/sun/applet/PluginDebug.java: Same. + * plugin/icedteanp/sun/applet/PluginException.java: Same. + * plugin/icedteanp/sun/applet/PluginMain.java: Same. + * plugin/icedteanp/sun/applet/PluginMessageConsumer.java: Same. + * plugin/icedteanp/sun/applet/PluginMessageHandlerWorker.java: Same. + * plugin/icedteanp/sun/applet/PluginObjectStore.java: Same. + * plugin/icedteanp/sun/applet/PluginProxyInfoRequest.java: Same. + * plugin/icedteanp/sun/applet/PluginProxySelector.java: Same. + * plugin/icedteanp/sun/applet/PluginStreamHandler.java: Same. + * plugin/icedteanp/sun/applet/RequestQueue.java: Same. + * plugin/icedteanp/sun/applet/TestEnv.java: Same. + * plugin/icedteanp/sun/applet/VoidPluginCallRequest.java: Same. + + 2009-07-13 Omair Majid * netx/net/sourceforge/jnlp/JNLPFile.java diff -r bebe7bbde097 -r b9dc9e08ed23 plugin/icedteanp/java/netscape/javascript/JSException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedteanp/java/netscape/javascript/JSException.java Tue Jul 14 13:04:20 2009 -0400 @@ -0,0 +1,140 @@ +/* -*- Mode: Java; tab-width: 8; c-basic-offset: 4 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +package netscape.javascript; + +/** + * JSException is an exception which is thrown when JavaScript code + * returns an error. + */ + +public +class JSException extends RuntimeException { + public static final int EXCEPTION_TYPE_EMPTY = -1; + public static final int EXCEPTION_TYPE_VOID = 0; + public static final int EXCEPTION_TYPE_OBJECT = 1; + public static final int EXCEPTION_TYPE_FUNCTION = 2; + public static final int EXCEPTION_TYPE_STRING = 3; + public static final int EXCEPTION_TYPE_NUMBER = 4; + public static final int EXCEPTION_TYPE_BOOLEAN = 5; + public static final int EXCEPTION_TYPE_ERROR = 6; + + public String filename; + public int lineno; + public String source; + public int tokenIndex; + public int wrappedExceptionType; + public Object wrappedException; + + /** + * Constructs a JSException without a detail message. + * A detail message is a String that describes this particular exception. + * + * @deprecated Not for public use in future versions. + */ + public JSException() { + super(); + filename = "unknown"; + lineno = 0; + source = ""; + tokenIndex = 0; + wrappedExceptionType = EXCEPTION_TYPE_EMPTY; + } + + /** + * Constructs a JSException with a detail message. + * A detail message is a String that describes this particular exception. + * @param s the detail message + * + * @deprecated Not for public use in future versions. + */ + public JSException(String s) { + super(s); + filename = "unknown"; + lineno = 0; + source = ""; + tokenIndex = 0; + wrappedExceptionType = EXCEPTION_TYPE_EMPTY; + } + + /** + * Constructs a JSException with a wrapped JavaScript exception object. + * This constructor needs to be public so that Java users can throw + * exceptions to JS cleanly. + */ + public JSException(int wrappedExceptionType, Object wrappedException) { + super(); + this.wrappedExceptionType = wrappedExceptionType; + this.wrappedException = wrappedException; + } + + /** + * Constructs a JSException with a detail message and all the + * other info that usually comes with a JavaScript error. + * @param s the detail message + * + * @deprecated Not for public use in future versions. + */ + public JSException(String s, String filename, int lineno, + String source, int tokenIndex) { + super(s); + this.filename = filename; + this.lineno = lineno; + this.source = source; + this.tokenIndex = tokenIndex; + wrappedExceptionType = EXCEPTION_TYPE_EMPTY; + } + + /** + * Instance method getWrappedExceptionType returns the int mapping of the + * type of the wrappedException Object. + */ + public int getWrappedExceptionType() { + return wrappedExceptionType; + } + + /** + * Instance method getWrappedException. + */ + public Object getWrappedException() { + return wrappedException; + } + +} + diff -r bebe7bbde097 -r b9dc9e08ed23 plugin/icedteanp/java/netscape/javascript/JSObject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedteanp/java/netscape/javascript/JSObject.java Tue Jul 14 13:04:20 2009 -0400 @@ -0,0 +1,263 @@ +/* -*- Mode: Java; tab-width: 8; c-basic-offset: 4 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* more doc todo: + * threads + * gc + * + * + */ + +package netscape.javascript; + +import java.applet.Applet; + +import sun.applet.PluginAppletViewer; +import sun.applet.PluginDebug; + + + +/** + * JSObject allows Java to manipulate objects that are + * defined in JavaScript. + * Values passed from Java to JavaScript are converted as + * follows:
    + *
  • JSObject is converted to the original JavaScript object + *
  • Any other Java object is converted to a JavaScript wrapper, + * which can be used to access methods and fields of the java object. + * Converting this wrapper to a string will call the toString method + * on the original object, converting to a number will call the + * doubleValue method if possible and fail otherwise. Converting + * to a boolean will try to call the booleanValue method in the + * same way. + *
  • Java arrays are wrapped with a JavaScript object that understands + * array.length and array[index] + *
  • A Java boolean is converted to a JavaScript boolean + *
  • Java byte, char, short, int, long, float, and double are converted + * to JavaScript numbers + *
+ * Values passed from JavaScript to Java are converted as follows:
    + *
  • objects which are wrappers around java objects are unwrapped + *
  • other objects are wrapped with a JSObject + *
  • strings, numbers and booleans are converted to String, Double, + * and Boolean objects respectively + *
+ * This means that all JavaScript values show up as some kind + * of java.lang.Object in Java. In order to make much use of them, + * you will have to cast them to the appropriate subclass of Object, + * e.g. (String) window.getMember("name"); or + * (JSObject) window.getMember("document");. + */ +public final class JSObject { + /* the internal object data */ + private long internal; + + /** + * initialize + */ + private static void initClass() { + PluginDebug.debug ("JSObject.initClass"); + } + + static { + PluginDebug.debug ("JSObject INITIALIZER"); + } + + /** + * it is illegal to construct a JSObject manually + */ + // FIXME: make private! + public JSObject(int jsobj_addr) { + PluginDebug.debug ("JSObject int CONSTRUCTOR"); + internal = jsobj_addr; + } + + public JSObject(long jsobj_addr) { + PluginDebug.debug ("JSObject long CONSTRUCTOR"); + internal = jsobj_addr; + } + + /** + * Retrieves a named member of a JavaScript object. + * Equivalent to "this.name" in JavaScript. + */ + public Object getMember(String name) + { + PluginDebug.debug ("JSObject.getMember " + name); + + Object o = PluginAppletViewer.getMember(internal, name); + PluginDebug.debug ("JSObject.getMember GOT " + o); + return o; + } + + + /** + * Retrieves an indexed member of a JavaScript object. + * Equivalent to "this[index]" in JavaScript. + */ + // public Object getMember(int index) { return getSlot(index); } + public Object getSlot(int index) + { + PluginDebug.debug ("JSObject.getSlot " + index); + + return PluginAppletViewer.getSlot(internal, index); + } + + + /** + * Sets a named member of a JavaScript object. + * Equivalent to "this.name = value" in JavaScript. + */ + public void setMember(String name, Object value) + { + PluginDebug.debug ("JSObject.setMember " + name + " " + value); + + PluginAppletViewer.setMember(internal, name, value); + } + + /** + * Sets an indexed member of a JavaScript object. + * Equivalent to "this[index] = value" in JavaScript. + */ + // public void setMember(int index, Object value) { + // setSlot(index, value); + // } + public void setSlot(int index, Object value) + { + PluginDebug.debug ("JSObject.setSlot " + index + " " + value); + + PluginAppletViewer.setSlot(internal, index, value); + } + + + // TODO: toString, finalize. + + /** + * Removes a named member of a JavaScript object. + */ + public void removeMember(String name) + { + PluginDebug.debug ("JSObject.removeMember " + name); + + PluginAppletViewer.removeMember(internal, name); + } + + + /** + * Calls a JavaScript method. + * Equivalent to "this.methodName(args[0], args[1], ...)" in JavaScript. + */ + public Object call(String methodName, Object args[]) + { + if (args == null) + args = new Object[0]; + + PluginDebug.debug ("JSObject.call " + methodName); + for (int i = 0; i < args.length; i++) + PluginDebug.debug (" " + args[i]); + PluginDebug.debug(""); + return PluginAppletViewer.call(internal, methodName, args); + } + + + /** + * Evaluates a JavaScript expression. The expression is a string + * of JavaScript source code which will be evaluated in the context + * given by "this". + */ + public Object eval(String s) + { + PluginDebug.debug("JSObject.eval " + s); + return PluginAppletViewer.eval(internal, s); + } + + + /** + * Converts a JSObject to a String. + */ + public String toString() + { + PluginDebug.debug("JSObject.toString"); + return PluginAppletViewer.javascriptToString(internal); + } + + + // should use some sort of identifier rather than String + // is "property" the right word? + // native String[] listProperties(); + + + /** + * get a JSObject for the window containing the given applet + */ + public static JSObject getWindow(Applet applet) + { + PluginDebug.debug("JSObject.getWindow"); + // FIXME: handle long case as well. + long internal = 0; + internal = ((PluginAppletViewer) + applet.getAppletContext()).getWindow(); + PluginDebug.debug ("GOT IT: " + internal); + return new JSObject(internal); + } + + + /** + * Finalization decrements the reference count on the corresponding + * JavaScript object. + */ + protected void finalize() + { + PluginDebug.debug("JSObject.finalize "); + PluginAppletViewer.JavaScriptFinalize(internal); + } + + + /** + * Override java.lang.Object.equals() because identity is not preserved + * with instances of JSObject. + */ + public boolean equals(Object obj) + { + PluginDebug.debug("JSObject.equals " + obj); + + return false; + } + +} diff -r bebe7bbde097 -r b9dc9e08ed23 plugin/icedteanp/java/netscape/javascript/JSProxy.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedteanp/java/netscape/javascript/JSProxy.java Tue Jul 14 13:04:20 2009 -0400 @@ -0,0 +1,58 @@ +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * From ahughes at redhat.com Tue Aug 4 09:07:40 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 04 Aug 2009 16:07:40 +0000 Subject: changeset in /hg/icedtea: Add Deepak's Makefile.am updates. Message-ID: changeset dbbf4ab50f12 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=dbbf4ab50f12 description: Add Deepak's Makefile.am updates. 2009-07-10 Deepak Bhole * Makefile.am: Fix npplugin build. diffstat: 1 file changed, 16 insertions(+), 15 deletions(-) Makefile.am | 31 ++++++++++++++++--------------- diffs (87 lines): diff -r b9dc9e08ed23 -r dbbf4ab50f12 Makefile.am --- a/Makefile.am Tue Jul 14 13:04:20 2009 -0400 +++ b/Makefile.am Tue Aug 04 14:44:12 2009 +0100 @@ -27,6 +27,7 @@ ICEDTEAPLUGIN_TARGET = IcedTeaNPPlugin.s ICEDTEAPLUGIN_TARGET = IcedTeaNPPlugin.so PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = -C lib/rt netscape +NPPLUGIN_DIR=$(abs_top_srcdir)/plugin/icedteanp JNLP_ABOUT_TARGET = extra-lib/about.jar else if ENABLE_PLUGIN @@ -100,7 +101,7 @@ if ENABLE_PLUGIN rm -f IcedTeaPlugin.o IcedTeaPlugin.so endif if ENABLE_NPPLUGIN - rm -f IcedTeaNPPlugin.o IcedTeaNPPlugin.so + rm -f $(NPPLUGIN_DIR)/*.o $(NPPLUGIN_DIR)/IcedTeaNPPlugin.so endif if BUILD_CACAO rm -rf cacao @@ -2303,9 +2304,9 @@ stamps/patch.stamp: stamps/patch-fsg.sta mv stamps/patch.stamp.tmp stamps/patch.stamp if ENABLE_NPPLUGIN - cp -a $(abs_top_srcdir)/plugin/icedteanp/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ + cp -a $(abs_top_srcdir)/plugin/icedteanp/java/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ mkdir -p rt - cp -a $(abs_top_srcdir)/plugin/icedteanp/netscape rt/ + cp -a $(abs_top_srcdir)/plugin/icedteanp/java/netscape rt/ else if ENABLE_PLUGIN cp -a $(abs_top_srcdir)/plugin/icedtea/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ @@ -2679,9 +2680,9 @@ stamps/icedtea.stamp: stamps/bootstrap-d mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/ext mkdir -p $(BUILD_OUTPUT_DIR)/j2re-image/lib/ext if ENABLE_NPPLUGIN - cp -pPRf IcedTeaNPPlugin.so \ + cp -pPRf $(NPPLUGIN_DIR)/IcedTeaNPPlugin.so \ $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) - cp -pPRf IcedTeaNPPlugin.so \ + cp -pPRf $(NPPLUGIN_DIR)/IcedTeaNPPlugin.so \ $(BUILD_OUTPUT_DIR)/j2re-image/lib/$(INSTALL_ARCH_DIR) endif if ENABLE_PLUGIN @@ -3229,7 +3230,7 @@ NPPLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedT IcedTeaPluginUtils.o IcedTeaNPPlugin_objects: - (cd plugin/icedteanp + cd $(NPPLUGIN_DIR); \ if [ -e $(abs_top_srcdir)/.hg ] && which $(HG) >/dev/null; then \ revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{rev}')`" ; \ fi ; \ @@ -3242,24 +3243,24 @@ IcedTeaNPPlugin_objects: $(GLIB_CFLAGS) \ $(GTK_CFLAGS) \ $(MOZILLA_CFLAGS) \ - -fPIC -c $(NPPLUGIN_SRC) - ) + -fPIC -c $(NPPLUGIN_SRC); \ + cd ../ IcedTeaNPPlugin.so: IcedTeaNPPlugin_objects - (cd plugin/icedteanp + cd $(NPPLUGIN_DIR); \ $(CXX) $(CXXFLAGS) \ $(NPPLUGIN_OBJECTS) \ $(GLIB_LIBS) \ $(GTK_LIBS) \ $(MOZILLA_LIBS)\ - -shared -o $@ - ) + -shared -o $@ \ + cd ../ clean-IcedTeaNPPlugin: - (cd plugin/icedteanp - rm -f $(NPPLUGIN_OBJECTS) - rm -f IcedTeaNPPlugin.so - ) + cd $(NPPLUGIN_DIR); \ + rm -f *.o; \ + rm -f IcedTeaNPPlugin.so; \ + cd ../ endif if ENABLE_PLUGIN # IcedTeaPlugin.so. From omajid at redhat.com Tue Aug 4 09:07:39 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:39 +0000 Subject: changeset in /hg/icedtea: Netx: Use version based download proto... Message-ID: changeset bebe7bbde097 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=bebe7bbde097 description: Netx: Use version based download protocol for JNLP files too 2009-07-13 Omair Majid * netx/net/sourceforge/jnlp/JNLPFile.java (JNLPFile): Delegate to the Version-based constructor. (JNLPFile): New constructor. (JNLPFile): Modified to take an additional version argument used in downloading the JNLP file. (openURL): Take an additional version argument and use when downloading the URL. * netx/net/sourceforge/jnlp/Launcher.java (toFile): Use the new JNLPFile constructor. * netx/net/sourceforge/jnlp/cache/Resource.java (Resource): Rearrange argument order. (getResource): Likewise. Fix parameters to constructor. * netx/net/sourceforge/jnlp/cache/ResourceTracker.java (addResource): Fix arguments to Resource.getResource. * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java (getInstance): Take additional version argument and use it when creating a JNLPFile. (initializeExtensions): Use the extension version when requesting a JNLPClassLoader. diffstat: 6 files changed, 59 insertions(+), 19 deletions(-) ChangeLog | 22 ++++++++++ netx/net/sourceforge/jnlp/JNLPFile.java | 35 +++++++++++----- netx/net/sourceforge/jnlp/Launcher.java | 4 - netx/net/sourceforge/jnlp/cache/Resource.java | 6 +- netx/net/sourceforge/jnlp/cache/ResourceTracker.java | 2 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 9 ++-- diffs (183 lines): diff -r 96a276fcaa9e -r bebe7bbde097 ChangeLog --- a/ChangeLog Tue Aug 04 14:35:37 2009 +0100 +++ b/ChangeLog Mon Jul 13 15:22:34 2009 -0400 @@ -1,3 +1,25 @@ 2009-07-10 Deepak Bhole + + * netx/net/sourceforge/jnlp/JNLPFile.java + (JNLPFile): Delegate to the Version-based constructor. + (JNLPFile): New constructor. + (JNLPFile): Modified to take an additional version argument used in + downloading the JNLP file. + (openURL): Take an additional version argument and use when downloading + the URL. + * netx/net/sourceforge/jnlp/Launcher.java + (toFile): Use the new JNLPFile constructor. + * netx/net/sourceforge/jnlp/cache/Resource.java + (Resource): Rearrange argument order. + (getResource): Likewise. Fix parameters to constructor. + * netx/net/sourceforge/jnlp/cache/ResourceTracker.java + (addResource): Fix arguments to Resource.getResource. + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (getInstance): Take additional version argument and use it when creating a + JNLPFile. + (initializeExtensions): Use the extension version when requesting a + JNLPClassLoader. + 2009-07-10 Deepak Bhole * Makefile.am: Update makefile to pick up plugin C++ files from new diff -r 96a276fcaa9e -r bebe7bbde097 netx/net/sourceforge/jnlp/JNLPFile.java --- a/netx/net/sourceforge/jnlp/JNLPFile.java Tue Aug 04 14:35:37 2009 +0100 +++ b/netx/net/sourceforge/jnlp/JNLPFile.java Mon Jul 13 15:22:34 2009 -0400 @@ -138,21 +138,36 @@ public class JNLPFile { * @throws ParseException if the JNLP file was invalid */ public JNLPFile(URL location, boolean strict) throws IOException, ParseException { - this(location, strict, JNLPRuntime.getDefaultUpdatePolicy()); - } - - /** - * Create a JNLPFile from a URL checking for updates using the - * specified policy. + this(location, (Version) null, strict); + } + + /** + * Create a JNLPFile from a URL and a Version checking for updates using + * the default policy. * * @param location the location of the JNLP file + * @param version the version of the JNLP file + * @param strict whether to enforce the spec when + * @throws IOException if an IO exception occurred + * @throws ParseException if the JNLP file was invalid + */ + public JNLPFile(URL location, Version version, boolean strict) throws IOException, ParseException { + this(location, version, strict, JNLPRuntime.getDefaultUpdatePolicy()); + } + + /** + * Create a JNLPFile from a URL and a version, checking for updates + * using the specified policy. + * + * @param location the location of the JNLP file + * @param version the version of the JNLP file * @param strict whether to enforce the spec when * @param policy the update policy * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ - public JNLPFile(URL location, boolean strict, UpdatePolicy policy) throws IOException, ParseException { - Node root = Parser.getRootNode(openURL(location, policy)); + public JNLPFile(URL location, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException { + Node root = Parser.getRootNode(openURL(location, version, policy)); parse(root, strict, location); this.fileLocation = location; @@ -186,13 +201,13 @@ public class JNLPFile { * Open the jnlp file URL from the cache if there, otherwise * download to the cache. Called from constructor. */ - private static InputStream openURL(URL location, UpdatePolicy policy) throws IOException { + private static InputStream openURL(URL location, Version version, UpdatePolicy policy) throws IOException { if (location == null || policy == null) throw new IllegalArgumentException(R("NullParameter")); try { ResourceTracker tracker = new ResourceTracker(false); // no prefetch - tracker.addResource(location, null/*version*/, policy); + tracker.addResource(location, version , policy); return tracker.getInputStream(location); } diff -r 96a276fcaa9e -r bebe7bbde097 netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Tue Aug 04 14:35:37 2009 +0100 +++ b/netx/net/sourceforge/jnlp/Launcher.java Mon Jul 13 15:22:34 2009 -0400 @@ -337,10 +337,10 @@ public class Launcher { JNLPFile file = null; try { - file = new JNLPFile(location, true, updatePolicy); // strict + file = new JNLPFile(location, (Version) null, true, updatePolicy); // strict } catch (ParseException ex) { - file = new JNLPFile(location, false, updatePolicy); + file = new JNLPFile(location, (Version) null, false, updatePolicy); // only here if strict failed but lax did not fail LaunchException lex = diff -r 96a276fcaa9e -r bebe7bbde097 netx/net/sourceforge/jnlp/cache/Resource.java --- a/netx/net/sourceforge/jnlp/cache/Resource.java Tue Aug 04 14:35:37 2009 +0100 +++ b/netx/net/sourceforge/jnlp/cache/Resource.java Mon Jul 13 15:22:34 2009 -0400 @@ -95,7 +95,7 @@ public class Resource { /** * Create a resource. */ - private Resource(URL location, UpdatePolicy updatePolicy, Version requestVersion) { + private Resource(URL location, Version requestVersion, UpdatePolicy updatePolicy) { this.location = location; this.requestVersion = requestVersion; this.updatePolicy = updatePolicy; @@ -105,9 +105,9 @@ public class Resource { * Return a shared Resource object representing the given * location and version. */ - public static Resource getResource(URL location, UpdatePolicy updatePolicy, Version requestVersion) { + public static Resource getResource(URL location, Version requestVersion, UpdatePolicy updatePolicy) { synchronized (resources) { - Resource resource = new Resource(location, updatePolicy, requestVersion); + Resource resource = new Resource(location, requestVersion, updatePolicy); int index = resources.indexOf(resource); if (index >= 0) { // return existing object diff -r 96a276fcaa9e -r bebe7bbde097 netx/net/sourceforge/jnlp/cache/ResourceTracker.java --- a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java Tue Aug 04 14:35:37 2009 +0100 +++ b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java Mon Jul 13 15:22:34 2009 -0400 @@ -168,7 +168,7 @@ public class ResourceTracker { if (location == null) throw new IllegalArgumentException("location==null"); - Resource resource = Resource.getResource(location, updatePolicy, version); + Resource resource = Resource.getResource(location, version, updatePolicy); boolean downloaded = false; synchronized (resources) { diff -r 96a276fcaa9e -r bebe7bbde097 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Aug 04 14:35:37 2009 +0100 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Mon Jul 13 15:22:34 2009 -0400 @@ -51,6 +51,7 @@ import net.sourceforge.jnlp.PluginBridge import net.sourceforge.jnlp.PluginBridge; import net.sourceforge.jnlp.ResourcesDesc; import net.sourceforge.jnlp.SecurityDesc; +import net.sourceforge.jnlp.Version; import net.sourceforge.jnlp.cache.CacheUtil; import net.sourceforge.jnlp.cache.ResourceTracker; import net.sourceforge.jnlp.cache.UpdatePolicy; @@ -232,13 +233,15 @@ public class JNLPClassLoader extends URL * location. * * @param location the file's location + * @param version the file's version * @param policy the update policy to use when downloading resources */ - public static JNLPClassLoader getInstance(URL location, UpdatePolicy policy) throws IOException, ParseException, LaunchException { + public static JNLPClassLoader getInstance(URL location, Version version, UpdatePolicy policy) + throws IOException, ParseException, LaunchException { JNLPClassLoader loader = (JNLPClassLoader) urlToLoader.get(location); if (loader == null) - loader = getInstance(new JNLPFile(location, false, policy), policy); + loader = getInstance(new JNLPFile(location, version, false, policy), policy); return loader; } @@ -256,7 +259,7 @@ public class JNLPClassLoader extends URL //if (ext != null) { for (int i=0; i < ext.length; i++) { try { - JNLPClassLoader loader = getInstance(ext[i].getLocation(), updatePolicy); + JNLPClassLoader loader = getInstance(ext[i].getLocation(), ext[i].getVersion(), updatePolicy); loaderList.add(loader); } catch (Exception ex) { From dbhole at redhat.com Tue Aug 4 09:07:41 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 04 Aug 2009 16:07:41 +0000 Subject: changeset in /hg/icedtea: Fix date in ChangeLog entry from previ... Message-ID: changeset 358aefef4fb5 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=358aefef4fb5 description: Fix date in ChangeLog entry from previous commit. Bad me for copying+pasting :/ diffstat: 1 file changed, 1 insertion(+), 1 deletion(-) ChangeLog | 2 +- diffs (9 lines): diff -r dbbf4ab50f12 -r 358aefef4fb5 ChangeLog --- a/ChangeLog Tue Aug 04 14:44:12 2009 +0100 +++ b/ChangeLog Tue Jul 14 13:12:50 2009 -0400 @@ -1,4 +1,4 @@ 2009-07-10 Deepak Bhole +2009-07-14 Deepak Bhole * Makefile.am: Fix npplugin build. * plugin/icedteanp/java/netscape/javascript/JSException.java: Moved from From dbhole at redhat.com Tue Aug 4 09:07:41 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 04 Aug 2009 16:07:41 +0000 Subject: changeset in /hg/icedtea: - Added support for FindClass, GetClas... Message-ID: changeset e808c63fb3a3 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=e808c63fb3a3 description: - Added support for FindClass, GetClassName, GetMethodID, GetToStringValue, NewObject and NewStringUTF. - Split the request wait code in Java processor into a generic function. - Centralized all debug output calls. - ICEDTEAPLUGIN_DEBUG flag now supported. - Dynamic cookie fetching support ported over from current plugin. - Added support for modifying JS objects via SetMember calls. - Message processing model made more robust by using dedicated processing threads, rather than dynamically initialized threads. With this commit, http://www.apl.jhu.edu/~hall/CWP-Sources/CWP-Examples/Chapter19/Everest.html now works. diffstat: 12 files changed, 1577 insertions(+), 552 deletions(-) ChangeLog | 23 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 258 ++ plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 34 plugin/icedteanp/IcedTeaNPPlugin.cc | 371 ++-- plugin/icedteanp/IcedTeaNPPlugin.h | 15 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 866 ++++++---- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 47 plugin/icedteanp/IcedTeaPluginUtils.cc | 145 + plugin/icedteanp/IcedTeaPluginUtils.h | 15 plugin/icedteanp/IcedTeaRunnable.cc | 74 plugin/icedteanp/IcedTeaRunnable.h | 102 + plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 179 +- diffs (truncated from 3025 to 500 lines): diff -r 358aefef4fb5 -r e808c63fb3a3 ChangeLog --- a/ChangeLog Tue Jul 14 13:12:50 2009 -0400 +++ b/ChangeLog Thu Jul 23 11:39:18 2009 -0400 @@ -1,3 +1,26 @@ 2009-07-14 Deepak Bhole + + * plugin/icedteanp/IcedTeaJavaRequestProcessor.c: Added support for + FindClass, GetClassName, GetMethodID, GetToStringValue, NewObject and + NewStringUTF. Split the request wait code into a generic function. + * plugin/icedteanp/IcedTeaNPPlugin.cc: Centralize debug output calls. Obey + the ICEDTEAPLUGIN_DEBUG flag. Support dynamic cookie fetching. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.c: Update multi-threaded + processing model. Support SetMember. Set up a dedicated message queue + processor (arbitrarily scalable). + * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: Add function and + variable declerations as needed by the .cc file. + * plugin/icedteanp/IcedTeaPluginUtils.cc: Use only long and long long for + memory address translation. Add additional utility methods. + * plugin/icedteanp/IcedTeaPluginUtils.h: Update as needed by the .cc file. + * plugin/icedteanp/IcedTeaRunnable.h: New file. Represents a dispatchable + event, extends nsIRunnable. + * plugin/icedteanp/IcedTeaRunnable.h: New file. Header for + IcedTeaRunnable.cc. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java: Fix + signature handling to remove the need for return type. Add support for + GetToStringValue and GetClassName. + 2009-07-14 Deepak Bhole * Makefile.am: Fix npplugin build. diff -r 358aefef4fb5 -r e808c63fb3a3 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Tue Jul 14 13:12:50 2009 -0400 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Thu Jul 23 11:39:18 2009 -0400 @@ -67,7 +67,8 @@ JavaRequestProcessor::newMessageOnBus(co // Gather the results // GetStringUTFChars - if (message_parts->at(4) == "GetStringUTFChars") + if (message_parts->at(4) == "GetStringUTFChars" || + message_parts->at(4) == "GetToStringValue") { // first item is length, and it is radix 10 int length = strtol(message_parts->at(5).c_str(), NULL, 10); @@ -81,6 +82,31 @@ JavaRequestProcessor::newMessageOnBus(co int length = strtol(message_parts->at(5).c_str(), NULL, 10); IcedTeaPluginUtilities::getUTF16LEString(length, 6 /* start at */, message_parts, result->return_wstring); + result_ready = true; + } else if (message_parts->at(4) == "FindClass") + { + result->return_identifier = atoi(message_parts->at(5).c_str()); + result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access + result_ready = true; + } else if (message_parts->at(4) == "GetClassName") + { + result->return_identifier = atoi(message_parts->at(5).c_str()); + result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access + result_ready = true; + } else if (message_parts->at(4) == "GetMethodID") + { + result->return_identifier = atoi(message_parts->at(5).c_str()); + result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access + result_ready = true; + } else if (message_parts->at(4) == "NewObject") + { + result->return_identifier = atoi(message_parts->at(5).c_str()); + result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access + result_ready = true; + } else if (message_parts->at(4) == "NewStringUTF") + { + result->return_identifier = atoi(message_parts->at(5).c_str()); + result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access result_ready = true; } @@ -119,6 +145,8 @@ JavaRequestProcessor::JavaRequestProcess JavaRequestProcessor::~JavaRequestProcessor() { + PLUGIN_DEBUG_0ARG("JavaRequestProcessor::~JavaRequestProcessor\n"); + if (result) { if (result->error_msg) @@ -134,32 +162,12 @@ JavaRequestProcessor::~JavaRequestProces } } -/** - * Given a string id, fetches the actual string from Java side - * - * @param request_data The JavaRequest struct containing request relevant information - * @return A JavaResultData struct containing the result of the request - */ - -JavaResultData* -JavaRequestProcessor::getString(JavaRequest* request_data) -{ - std::string string_id; - std::string* message; - - this->instance = 0; // context is always 0 (needed for java-side backwards compat.) - this->reference = IcedTeaPluginUtilities::getReference(); - - string_id = request_data->data->at(0); - - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" GetStringUTFChars "); // get it in UTF8 - message->append(string_id); - +void +JavaRequestProcessor::postAndWaitForResponse(std::string* message) +{ struct timespec t; clock_gettime(CLOCK_REALTIME, &t); - t.tv_sec += 60; // 1 minute timeout + t.tv_sec += REQUESTTIMEOUT; // 1 minute timeout result_ready = false; java_to_plugin_bus->subscribe(this); @@ -174,7 +182,7 @@ JavaRequestProcessor::getString(JavaRequ bool timedout = false; if (!result_ready && (curr_t.tv_sec < t.tv_sec)) - sleep(1); + usleep(2000); else break; @@ -187,9 +195,195 @@ JavaRequestProcessor::getString(JavaRequ } java_to_plugin_bus->unSubscribe(this); - IcedTeaPluginUtilities::releaseReference(); - - delete message; - - return result; -} +} + +/** + * Given an object id, fetches the toString() value from Java + * + * @param object_id The ID of the object + * @return A JavaResultData struct containing the result of the request + */ + +JavaResultData* +JavaRequestProcessor::getToStringValue(std::string object_id) +{ + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + + message->append(" GetToStringValue "); // get it in UTF8 + message->append(object_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete message; + + return result; +} + +/** + * Given a string id, fetches the actual string from Java side + * + * @param string_id The ID of the string + * @return A JavaResultData struct containing the result of the request + */ + +JavaResultData* +JavaRequestProcessor::getString(std::string string_id) +{ + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + + message->append(" GetStringUTFChars "); // get it in UTF8 + message->append(string_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::findClass(std::string name) +{ + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + + message->append(" FindClass "); + message->append(name); + + postAndWaitForResponse(message); + + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::getClassName(std::string ID) +{ + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + + message->append(" GetClassName "); + message->append(ID); + + postAndWaitForResponse(message); + + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::getMethodID(std::string objectID, NPIdentifier methodName, + std::vector args) +{ + JavaRequestProcessor* java_request; + std::string* message; + std::string* signature; + + signature = new std::string(); + *signature += "("; + + // FIXME: Need to determine how to extract array types and complex java objects + for (int i=0; i < args.size(); i++) + { + *signature += args[i]; + } + + *signature += ")"; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + *message += " GetMethodID "; + *message += objectID; + *message += " "; + *message += browser_functions.utf8fromidentifier(methodName); + *message += " "; + *message += *signature; + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete signature; + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::newObject(std::string objectID, std::string methodID, + std::vector args) +{ + JavaRequestProcessor* java_request; + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + *message += " NewObject "; + *message += objectID; + *message += " "; + *message += methodID; + *message += " "; + + for (int i=0; i < args.size(); i++) + { + *message += args[i]; + *message += " "; + } + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::newString(std::string str) +{ + JavaRequestProcessor* java_request; + std::string* utf_string = new std::string(); + std::string* message; + + IcedTeaPluginUtilities::convertStringToUTF8(&str, utf_string); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + message->append(" NewStringUTF "); + message->append(*utf_string); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete utf_string; + delete message; + + return result; +} diff -r 358aefef4fb5 -r e808c63fb3a3 plugin/icedteanp/IcedTeaJavaRequestProcessor.h --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.h Tue Jul 14 13:12:50 2009 -0400 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.h Thu Jul 23 11:39:18 2009 -0400 @@ -45,6 +45,8 @@ exception statement from your version. * #include "IcedTeaNPPlugin.h" #include "IcedTeaPluginUtils.h" + +#define REQUESTTIMEOUT 60 /* * This struct holds data specific to a Java operation requested by the plugin @@ -97,11 +99,41 @@ class JavaRequestProcessor : BusSubscrib bool result_ready; JavaResultData* result; + /* Post message on bus and wait */ + void postAndWaitForResponse(std::string* message); + public: JavaRequestProcessor(); ~JavaRequestProcessor(); virtual bool newMessageOnBus(const char* message); - JavaResultData* getString(JavaRequest* request_data); + + /* Returns the toString() value, given an object identifier */ + JavaResultData* getToStringValue(std::string object_id); + + /* Returns the string, given the identifier */ + JavaResultData* getString(std::string string_id); + + /* Returns the method ID from Java side */ + JavaResultData* getMethodID1(NPObject* obj, NPIdentifier methodName, + std::vector args); + + /* Returns the method id */ + JavaResultData* getMethodID(std::string objectID, NPIdentifier methodName, + std::vector args); + + /* Creates a new object */ + JavaResultData* newObject(std::string objectID, std::string methodID, + std::vector args); + + /* Returns the class ID */ + JavaResultData* findClass(std::string name); + + /* Returns the type class name */ + JavaResultData* getClassName(std::string ID); + + /* Creates a new string in the Java store */ + JavaResultData* newString(std::string str); + }; #endif /* ICEDTEAJAVAREQUESTPROCESSOR_H_ */ diff -r 358aefef4fb5 -r e808c63fb3a3 plugin/icedteanp/IcedTeaNPPlugin.cc --- a/plugin/icedteanp/IcedTeaNPPlugin.cc Tue Jul 14 13:12:50 2009 -0400 +++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Thu Jul 23 11:39:18 2009 -0400 @@ -70,14 +70,6 @@ exception statement from your version. * // Liveconnect extension #include "IcedTeaScriptablePluginObject.h" #include "IcedTeaNPPlugin.h" - -// Debugging macros. -#define PLUGIN_DEBUG(message) \ - g_print ("GCJ PLUGIN: thread %p: %s\n", g_thread_self (), message) - -#define PLUGIN_DEBUG_TWO(first, second) \ - g_print ("GCJ PLUGIN: thread %p: %s %s\n", g_thread_self (), \ - first, second) // Error reporting macros. #define PLUGIN_ERROR(message) \ @@ -180,7 +172,7 @@ NPNetscapeFuncs browser_functions; // Various message buses carrying information to/from Java, and internally MessageBus* plugin_to_java_bus = new MessageBus(); MessageBus* java_to_plugin_bus = new MessageBus(); -MessageBus* internal_bus = new MessageBus(); +//MessageBus* internal_bus = new MessageBus(); // Processor for plugin requests PluginRequestProcessor* plugin_req_proc = new PluginRequestProcessor(); @@ -265,6 +257,8 @@ static GPid appletviewer_pid = -1; static GPid appletviewer_pid = -1; static guint appletviewer_watch_id = -1; +int plugin_debug = getenv ("ICEDTEAPLUGIN_DEBUG") != NULL; + // Functions prefixed by GCJ_ are instance functions. They are called // by the browser and operate on instances of GCJPluginData. // Functions prefixed by plugin_ are static helper functions. @@ -289,7 +283,22 @@ GCJ_New (NPMIMEType pluginType, NPP inst int16 argc, char* argn[], char* argv[], NPSavedData* saved) { - PLUGIN_DEBUG ("GCJ_New"); + PLUGIN_DEBUG_0ARG("GCJ_New\n"); + + static NPObject *window_ptr; + NPIdentifier identifier; + NPVariant member_ptr; + browser_functions.getvalue(instance, NPNVWindowNPObject, &window_ptr); + identifier = browser_functions.getstringidentifier("document"); + printf("Looking for %p %p %p (%s)\n", instance, window_ptr, identifier, "document"); + if (!browser_functions.hasproperty(instance, window_ptr, identifier)) + { + printf("%s not found!\n", "document"); + } + browser_functions.getproperty(instance, window_ptr, identifier, &member_ptr); + + PLUGIN_DEBUG_1ARG("Got variant %p\n", &member_ptr); + NPError np_error = NPERR_NO_ERROR; GCJPluginData* data = NULL; @@ -389,9 +398,6 @@ GCJ_New (NPMIMEType pluginType, NPP inst data->scriptable_plugin_object = npPluginObj; instance->pdata = data; - - java_to_plugin_bus->subscribe(plugin_req_proc); - plugin_to_java_bus->subscribe(java_req_proc); goto cleanup_done; @@ -428,7 +434,7 @@ GCJ_New (NPMIMEType pluginType, NPP inst g_hash_table_insert(id_to_instance_map, GINT_TO_POINTER(instance_counter), instance); instance_counter++; - PLUGIN_DEBUG ("GCJ_New return"); + PLUGIN_DEBUG_0ARG ("GCJ_New return\n"); return np_error; } @@ -475,14 +481,14 @@ void start_jvm_if_needed() // clean up any older pip unlink (in_pipe_name); - PLUGIN_DEBUG_TWO ("GCJ_New: creating input fifo:", in_pipe_name); + PLUGIN_DEBUG_1ARG ("GCJ_New: creating input fifo: %s", in_pipe_name); if (mkfifo (in_pipe_name, 0700) == -1 && errno != EEXIST) { PLUGIN_ERROR_TWO ("Failed to create input pipe", strerror (errno)); np_error = NPERR_GENERIC_ERROR; goto cleanup_in_pipe_name; } - PLUGIN_DEBUG_TWO ("GCJ_New: created input fifo:", in_pipe_name); + PLUGIN_DEBUG_1ARG ("GCJ_New: created input fifo: %s\n", in_pipe_name); // Create plugin-to-appletviewer pipe which we refer to as the // output pipe. @@ -501,14 +507,14 @@ void start_jvm_if_needed() // clean up any older pip unlink (out_pipe_name); - PLUGIN_DEBUG_TWO ("GCJ_New: creating output fifo:", out_pipe_name); + PLUGIN_DEBUG_1ARG ("GCJ_New: creating output fifo: %s\n", out_pipe_name); if (mkfifo (out_pipe_name, 0700) == -1 && errno != EEXIST) { PLUGIN_ERROR_TWO ("Failed to create output pipe", strerror (errno)); np_error = NPERR_GENERIC_ERROR; goto cleanup_out_pipe_name; } - PLUGIN_DEBUG_TWO ("GCJ_New: created output fifo:", out_pipe_name); + PLUGIN_DEBUG_1ARG ("GCJ_New: created output fifo: %s\n", out_pipe_name); // Start a separate appletviewer process for each applet, even if // there are multiple applets in the same page. We may need to From omajid at redhat.com Tue Aug 4 09:07:41 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:41 +0000 Subject: changeset in /hg/icedtea: Netx: prompt the user fewer times for ... Message-ID: changeset 324662e5e611 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=324662e5e611 description: Netx: prompt the user fewer times for https certificate issues diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java | 2 +- diffs (24 lines): diff -r e808c63fb3a3 -r 324662e5e611 ChangeLog --- a/ChangeLog Thu Jul 23 11:39:18 2009 -0400 +++ b/ChangeLog Wed Jul 29 10:48:43 2009 -0400 @@ -1,3 +1,8 @@ 2009-07-23 Deepak Bhole + + * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java + (checkServerTrusted): Synchronize the function. + 2009-07-23 Deepak Bhole * plugin/icedteanp/IcedTeaJavaRequestProcessor.c: Added support for diff -r e808c63fb3a3 -r 324662e5e611 netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java --- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Thu Jul 23 11:39:18 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Wed Jul 29 10:48:43 2009 -0400 @@ -143,7 +143,7 @@ public class VariableX509TrustManager im * @param authType The auth type algorithm * @param checkOnly Whether to "check only" i.e. no user prompt, or to prompt for permission */ - public void checkServerTrusted(X509Certificate[] chain, String authType, boolean checkOnly) throws CertificateException { + public synchronized void checkServerTrusted(X509Certificate[] chain, String authType, boolean checkOnly) throws CertificateException { try { checkAllManagers(chain, authType); } catch (CertificateException ce) { From omajid at redhat.com Tue Aug 4 09:07:42 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:42 +0000 Subject: changeset in /hg/icedtea: Netx: add support for desktop shortcuts Message-ID: changeset 03e2ef9b5c6b in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=03e2ef9b5c6b description: Netx: add support for desktop shortcuts 2009-07-29 Omair Majid * netx/net/sourceforge/jnlp/IconDesc.java: Add new icon kind SHORTCUT. * netx/net/sourceforge/jnlp/Launcher.java: Move StreamEater class to ... * netx/net/sourceforge/jnlp/StreamEater.java: New file. * netx/net/sourceforge/jnlp/resources/Messages.properties: Add SDesktopShortcut. * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java (initialize): Call addMenuAndDesktopEntries. (addMenuAndDesktopEntries): New function. * netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java: Add CREATE_DESKTOP_SHORTCUT to AccessType. * netx/net/sourceforge/jnlp/security/AccessWarningPane.java (installComponents): Add a case for CREATE_DESKTOP_SHORTCUT * netx/net/sourceforge/jnlp/services/ServiceUtil.java Remove duplicate enum AccessType. (checkAccess): New function. (checkAccess): Add a new argument app. * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java (getLockFileName): Call FileUtils.sanitizeFileName to sanitize the filename. * netx/net/sourceforge/jnlp/util/FileUtils.java: New file. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: New file. diffstat: 12 files changed, 386 insertions(+), 45 deletions(-) ChangeLog | 24 + netx/net/sourceforge/jnlp/IconDesc.java | 3 netx/net/sourceforge/jnlp/Launcher.java | 26 - netx/net/sourceforge/jnlp/StreamEater.java | 45 ++ netx/net/sourceforge/jnlp/resources/Messages.properties | 1 netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 28 + netx/net/sourceforge/jnlp/security/AccessWarningPane.java | 3 netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java | 1 netx/net/sourceforge/jnlp/services/ServiceUtil.java | 29 + netx/net/sourceforge/jnlp/services/SingleInstanceLock.java | 13 netx/net/sourceforge/jnlp/util/FileUtils.java | 48 ++ netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 210 ++++++++++ diffs (truncated from 553 to 500 lines): diff -r 324662e5e611 -r 03e2ef9b5c6b ChangeLog --- a/ChangeLog Wed Jul 29 10:48:43 2009 -0400 +++ b/ChangeLog Wed Jul 29 10:57:38 2009 -0400 @@ -1,3 +1,27 @@ 2009-07-29 Omair Majid + + * netx/net/sourceforge/jnlp/IconDesc.java: Add new icon kind SHORTCUT. + * netx/net/sourceforge/jnlp/Launcher.java: Move StreamEater class to ... + * netx/net/sourceforge/jnlp/StreamEater.java: New file. + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add + SDesktopShortcut. + * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java + (initialize): Call addMenuAndDesktopEntries. + (addMenuAndDesktopEntries): New function. + * netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java: Add + CREATE_DESKTOP_SHORTCUT to AccessType. + * netx/net/sourceforge/jnlp/security/AccessWarningPane.java + (installComponents): Add a case for CREATE_DESKTOP_SHORTCUT + * netx/net/sourceforge/jnlp/services/ServiceUtil.java + Remove duplicate enum AccessType. + (checkAccess): New function. + (checkAccess): Add a new argument app. + * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java + (getLockFileName): Call FileUtils.sanitizeFileName to sanitize the + filename. + * netx/net/sourceforge/jnlp/util/FileUtils.java: New file. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: New file. + 2009-07-29 Omair Majid * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/IconDesc.java --- a/netx/net/sourceforge/jnlp/IconDesc.java Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/IconDesc.java Wed Jul 29 10:57:38 2009 -0400 @@ -43,6 +43,9 @@ public class IconDesc { /** splash icon */ public static final Object SPLASH = "splash"; + + /** destop shortcut icon */ + public static final Object SHORTCUT = "shortcut"; /** the location of the icon */ diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Wed Jul 29 10:57:38 2009 -0400 @@ -770,32 +770,6 @@ public class Launcher { } }; - /** - * This class reads the output from a launched process and - * writes it to stdout. - */ - private static class StreamEater extends Thread { - private InputStream stream; - - StreamEater(InputStream stream) { - this.stream = new BufferedInputStream(stream); - } - - public void run() { - try { - while (true) { - int c = stream.read(); - if (c == -1) - break; - - System.out.write(c); - } - } - catch (IOException ex) { - } - } - }; - } diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/StreamEater.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/StreamEater.java Wed Jul 29 10:57:38 2009 -0400 @@ -0,0 +1,45 @@ +// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * This class reads the output from a launched process and writes it to stdout. + */ +public class StreamEater extends Thread { + private InputStream stream; + + public StreamEater(InputStream stream) { + this.stream = new BufferedInputStream(stream); + } + + public void run() { + try { + while (true) { + int c = stream.read(); + if (c == -1) + break; + + System.out.write(c); + } + } catch (IOException ex) { + } + } +} diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Jul 29 10:57:38 2009 -0400 @@ -147,6 +147,7 @@ CChooseCacheDir=Cache directory # Security SFileReadAccess=The application has requested read access to a file on the machine. Do you want to allow this action? SFileWriteAccess=The application has requested write access to a file on the machine. Do you want to allow this action? +SDesktopShortcut=The application has requested permission to create a desktop launcher. Do you want to allow this action? SSigUnverified=The application's digital signature cannot be verified. Do you want to run the application? SSigVerified=The application's digital signature has been verified. Do you want to run the application? SSignatureError=The application's digital signature has an error. Do you want to run the application? diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java --- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Wed Jul 29 10:57:38 2009 -0400 @@ -25,6 +25,8 @@ import javax.swing.event.EventListenerLi import net.sourceforge.jnlp.*; import net.sourceforge.jnlp.event.*; +import net.sourceforge.jnlp.security.SecurityWarningDialog.AccessType; +import net.sourceforge.jnlp.services.ServiceUtil; import net.sourceforge.jnlp.util.*; /** @@ -107,6 +109,32 @@ public class ApplicationInstance { */ public void initialize() { installEnvironment(); + addMenuAndDesktopEntries(); + } + + /** + * Creates menu and desktop entries if required by the jnlp file + */ + + private void addMenuAndDesktopEntries() { + XDesktopEntry entry = new XDesktopEntry(file); + + if (file.getInformation().getShortcut().onDesktop()) { + if (ServiceUtil.checkAccess(this, AccessType.CREATE_DESTKOP_SHORTCUT)) { + entry.createDesktopShortcut(); + } + } + + if (file.getInformation().getShortcut().getMenu() != null) { + /* + * Sun's WebStart implementation doesnt seem to do anything under GNOME + */ + if (JNLPRuntime.isDebug()) { + System.err.println("ApplicationInstance.addMenuAndDesktopEntries():" + + " Adding menu entries NOT IMPLEMENTED"); + } + } + } /** diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/security/AccessWarningPane.java --- a/netx/net/sourceforge/jnlp/security/AccessWarningPane.java Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/AccessWarningPane.java Wed Jul 29 10:57:38 2009 -0400 @@ -121,6 +121,9 @@ public class AccessWarningPane extends S case WRITE_FILE: topLabelText = R("SFileWriteAccess"); break; + case CREATE_DESTKOP_SHORTCUT: + topLabelText = R("SDesktopShortcut"); + break; case CLIPBOARD_READ: topLabelText = R("SClipboardReadAccess"); break; diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java --- a/netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java Wed Jul 29 10:57:38 2009 -0400 @@ -70,6 +70,7 @@ public class SecurityWarningDialog exten public static enum AccessType { READ_FILE, WRITE_FILE, + CREATE_DESTKOP_SHORTCUT, CLIPBOARD_READ, CLIPBOARD_WRITE, PRINTER, diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/services/ServiceUtil.java --- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Wed Jul 29 10:57:38 2009 -0400 @@ -57,13 +57,6 @@ public class ServiceUtil { } /** - * Types of system access that may need permissions. - */ - public static enum AccessType { - READ_FILE, WRITE_FILE, CLIPBOARD_READ, CLIPBOARD_WRITE, PRINTER - } - - /** * Returns the BasicService reference, or null if the service is * unavailable. */ @@ -227,9 +220,29 @@ public class ServiceUtil { * @return true if the access was granted, false otherwise. */ public static boolean checkAccess(SecurityWarningDialog.AccessType type, + Object... extras) { + return checkAccess(null, type, extras); + } + + /** + * Returns whether the app requesting a service is signed. If the app is + * unsigned, the user is prompted with a dialog asking if the action + * should be allowed. + * @param app the application which is requesting the check. If null, the current + * application is used. + * @param type the type of access being requested + * @param extras extra Strings (usually) that are passed to the dialog for + * message formatting. + * @return true if the access was granted, false otherwise. + */ + public static boolean checkAccess(ApplicationInstance app, + SecurityWarningDialog.AccessType type, Object... extras) { - ApplicationInstance app = JNLPRuntime.getApplication(); + if (app == null) { + app = JNLPRuntime.getApplication(); + } + if (app != null) { if (!app.isSigned()) { final SecurityWarningDialog.AccessType tmpType = type; diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/services/SingleInstanceLock.java --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Jul 29 10:48:43 2009 -0400 +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Jul 29 10:57:38 2009 -0400 @@ -27,6 +27,7 @@ import java.net.ServerSocket; import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.util.FileUtils; /** * This class represents a Lock for single instance jnlp applications @@ -152,17 +153,7 @@ class SingleInstanceLock { } initialName = initialName + getCurrentDisplay(); - String encodedName; - - /* - * FIXME - * - * Assuming safe characters are 'a-z','A-Z','0-9', '_', '.' - */ - - encodedName = initialName.replaceAll("[^a-zA-Z0-9.]", "_"); - - return encodedName; + return FileUtils.sanitizeFileName(initialName); } diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/util/FileUtils.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/util/FileUtils.java Wed Jul 29 10:57:38 2009 -0400 @@ -0,0 +1,48 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +package net.sourceforge.jnlp.util; + +/** + * This class contains a few file-related utility functions. + * + * @author Omair Majid + */ + +public class FileUtils { + + + /** + * Given an input, return a sanitized form of the input suitable for use as + * a file/directory name + * + * @param input + * @return a sanitized version of the input + */ + public static String sanitizeFileName(String input) { + + /* + * FIXME + * + * Assuming safe characters are 'a-z','A-Z','0-9', '_', '.' + */ + + String sanitizedName = input.replaceAll("[^a-zA-Z0-9.]", "_"); + return sanitizedName; + } + +} diff -r 324662e5e611 -r 03e2ef9b5c6b netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Jul 29 10:57:38 2009 -0400 @@ -0,0 +1,210 @@ +// Copyright (C) 2009 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp.util; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.StringReader; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.Arrays; + +import net.sourceforge.jnlp.IconDesc; +import net.sourceforge.jnlp.JNLPFile; +import net.sourceforge.jnlp.StreamEater; +import net.sourceforge.jnlp.cache.CacheUtil; +import net.sourceforge.jnlp.cache.UpdatePolicy; +import net.sourceforge.jnlp.runtime.JNLPRuntime; + +/** + * This class builds a (freedesktop.org) desktop entry out of a {@link JNLPFile} + * . This entry can be used to install desktop shortcuts. See xdg-desktop-icon + * (1) and http://standards.freedesktop.org/desktop-entry-spec/latest/ for more + * information + * + * @author Omair Majid + * + */ +public class XDesktopEntry { + + public static final String JAVA_ICON_NAME = "java.png"; + + private JNLPFile file = null; + private int iconSize = -1; + private String iconLocation = null; + + private int[] VALID_ICON_SIZES = new int[] { 16, 22, 32, 48, 64, 128 }; + + /** + * Create a XDesktopEntry for the given JNLP file + * + * @param file a {@link JNLPFile} that indicates the application to launch + */ + public XDesktopEntry(JNLPFile file) { + this.file = file; + + /* looks like a good initial value */ + iconSize = VALID_ICON_SIZES[2]; + } + + /** + * Returns the contents of the {@link XDesktopEntry} through the + * {@link Reader} interface. + */ + public Reader getContentsAsReader() { + + String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" + + File.separator + "javaws"; + + String fileContents = "[Desktop Entry]\n"; + fileContents += "Version=1.0\n"; + fileContents += "Name=" + file.getTitle() + "\n"; + fileContents += "GenericName=Java Web Start Application\n"; + fileContents += "Comment=" + file.getInformation().getDescription() + "\n"; + fileContents += "Type=Application\n"; + if (iconLocation != null) { + fileContents += "Icon=" + iconLocation + "\n"; + } else { + fileContents += "Icon=" + JAVA_ICON_NAME + "\n"; + + } + if (file.getInformation().getVendor() != null) { + fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; + } + fileContents += "Exec=" + pathToJavaws + " \"" + file.getSourceLocation() + "\"\n"; + + return new StringReader(fileContents); + + } + + /** + * Get the size of the icon (in pixels) for the desktop shortcut + */ + public int getIconSize() { + return iconSize; + } + + /** + * Set the icon size to use for the desktop shortcut + * + * @param size the size (in pixels) of the icon to use. Commonly used sizes + * are of 16, 22, 32, 48, 64 and 128 + */ + public void setIconSize(int size) { + iconSize = size; + } + + /** + * Create a desktop shortcut for this desktop entry + */ + public void createDesktopShortcut() { + try { + cacheIcon(); + installDesktopLauncher(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Install this XDesktopEntry into the user's desktop as a launcher + */ + private void installDesktopLauncher() { + File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator + + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); + try { + + /* + * Write out a Java String (UTF-16) as a UTF-8 file + */ + + OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(shortcutFile), + Charset.forName("UTF-8")); + Reader reader = getContentsAsReader(); + + char[] buffer = new char[1024]; + int ret = 0; + while (-1 != (ret = reader.read(buffer))) { + writer.write(buffer, 0, ret); + } + + reader.close(); + writer.close(); + + /* + * Install the desktop entry + */ + + String[] execString = new String[] { "xdg-desktop-icon", "install", "--novendor", + shortcutFile.getCanonicalPath() }; From omajid at redhat.com Tue Aug 4 09:07:42 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:42 +0000 Subject: changeset in /hg/icedtea: 2009-06-12 Omair Majid changeset 88c498641265 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=88c498641265 description: 2009-06-12 Omair Majid * patches/icedtea-liveconnect.patch: Make netscape.javascript package visible to javac by adding it to the non-core package list. diffstat: 2 files changed, 22 insertions(+) ChangeLog | 5 +++++ patches/icedtea-liveconnect.patch | 17 +++++++++++++++++ diffs (36 lines): diff -r 03e2ef9b5c6b -r 88c498641265 ChangeLog --- a/ChangeLog Wed Jul 29 10:57:38 2009 -0400 +++ b/ChangeLog Fri Jun 12 10:05:15 2009 -0400 @@ -1,3 +1,8 @@ 2009-07-29 Omair Majid + + * patches/icedtea-liveconnect.patch: Make netscape.javascript package + visible to javac by adding it to the non-core package list. + 2009-07-29 Omair Majid * netx/net/sourceforge/jnlp/IconDesc.java: Add new icon kind SHORTCUT. diff -r 03e2ef9b5c6b -r 88c498641265 patches/icedtea-liveconnect.patch --- a/patches/icedtea-liveconnect.patch Wed Jul 29 10:57:38 2009 -0400 +++ b/patches/icedtea-liveconnect.patch Fri Jun 12 10:05:15 2009 -0400 @@ -67,3 +67,20 @@ diff -Nru openjdk.orig/jdk/make/sun/plug +JAVA_ARGS = "{ \"sun.applet.PluginMain\" }" +include $(BUILDDIR)/common/Program.gmk + +--- openjdk/jdk/make/docs/NON_CORE_PKGS.gmk.orig 2009-06-10 17:48:57.000000000 -0400 ++++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-06-10 17:49:59.000000000 -0400 +@@ -82,11 +82,14 @@ + TREEAPI_PKGS = com.sun.source.tree \ + com.sun.source.util + ++JAVASCRIPT_PKGS = netscape.javascript ++ + SMARTCARDIO_PKGS = javax.smartcardio + + # non-core packages in rt.jar + NON_CORE_PKGS = $(DOMAPI_PKGS) \ + $(MGMT_PKGS) \ ++ $(JAVASCRIPT_PKGS) \ + $(JAAS_PKGS) \ + $(JGSS_PKGS) \ + $(OLD_JSSE_PKGS) \ From ahughes at redhat.com Tue Aug 4 09:07:43 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 04 Aug 2009 16:07:43 +0000 Subject: changeset in /hg/icedtea: Recreate updated patches against OpenJ... Message-ID: changeset f9fae3b84b02 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=f9fae3b84b02 description: Recreate updated patches against OpenJDK7. 2009-08-04 Andrew John Hughes * patches/icedtea-webstart.patch, * patches/icedtea-liveconnect.patch: Recreated against OpenJDK7. diffstat: 3 files changed, 58 insertions(+), 47 deletions(-) ChangeLog | 6 ++++ patches/icedtea-liveconnect.patch | 49 +++++++++++++++++++----------------- patches/icedtea-webstart.patch | 50 +++++++++++++++++++------------------ diffs (153 lines): diff -r 1990512a970a -r f9fae3b84b02 ChangeLog --- a/ChangeLog Fri Jun 05 10:25:13 2009 -0400 +++ b/ChangeLog Tue Aug 04 15:23:28 2009 +0100 @@ -1,3 +1,9 @@ 2009-06-05 Omair Majid + + * patches/icedtea-webstart.patch, + * patches/icedtea-liveconnect.patch: + Recreated against OpenJDK7. + 2009-06-05 Omair Majid * patches/icedtea-webstart.patch: Make javax.jnlp package visible to diff -r 1990512a970a -r f9fae3b84b02 patches/icedtea-liveconnect.patch --- a/patches/icedtea-liveconnect.patch Fri Jun 05 10:25:13 2009 -0400 +++ b/patches/icedtea-liveconnect.patch Tue Aug 04 15:23:28 2009 +0100 @@ -1,6 +1,26 @@ diff -Nru openjdk.orig/jdk/make/sun/Make -diff -Nru openjdk.orig/jdk/make/sun/Makefile openjdk/jdk/make/sun/Makefile ---- openjdk.orig/jdk/make/sun/Makefile 2009-06-30 14:05:45.000000000 +0100 -+++ openjdk/jdk/make/sun/Makefile 2009-06-30 16:40:55.000000000 +0100 +diff -Nru openjdk.o/jdk/make/docs/NON_CORE_PKGS.gmk openjdk/jdk/make/docs/NON_CORE_PKGS.gmk +--- openjdk.o/jdk/make/docs/NON_CORE_PKGS.gmk 2009-07-25 04:30:42.000000000 +0100 ++++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-08-04 14:54:12.000000000 +0100 +@@ -84,6 +84,8 @@ + TREEAPI_PKGS = com.sun.source.tree \ + com.sun.source.util + ++JAVASCRIPT_PKGS = netscape.javascript ++ + SMARTCARDIO_PKGS = javax.smartcardio + + SCTPAPI_PKGS = com.sun.nio.sctp +@@ -94,6 +96,7 @@ + # non-core packages in rt.jar + NON_CORE_PKGS = $(DOMAPI_PKGS) \ + $(MGMT_PKGS) \ ++ $(JAVASCRIPT_PKGS) \ + $(JAAS_PKGS) \ + $(JGSS_PKGS) \ + $(NIO_PKGS) \ +diff -Nru openjdk.o/jdk/make/sun/Makefile openjdk/jdk/make/sun/Makefile +--- openjdk.o/jdk/make/sun/Makefile 2009-07-25 04:30:42.000000000 +0100 ++++ openjdk/jdk/make/sun/Makefile 2009-08-04 14:53:42.000000000 +0100 @@ -64,7 +64,7 @@ $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \ font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \ @@ -10,9 +30,9 @@ diff -Nru openjdk.orig/jdk/make/sun/Make all build clean clobber:: $(SUBDIRS-loop) -diff -Nru openjdk.orig/jdk/make/sun/plugin/Makefile openjdk/jdk/make/sun/plugin/Makefile ---- openjdk.orig/jdk/make/sun/plugin/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ openjdk/jdk/make/sun/plugin/Makefile 2009-06-30 16:28:07.000000000 +0100 +diff -Nru openjdk.o/jdk/make/sun/plugin/Makefile openjdk/jdk/make/sun/plugin/Makefile +--- openjdk.o/jdk/make/sun/plugin/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/make/sun/plugin/Makefile 2009-08-04 14:53:42.000000000 +0100 @@ -0,0 +1,53 @@ +# +# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved. @@ -67,20 +87,3 @@ diff -Nru openjdk.orig/jdk/make/sun/plug +JAVA_ARGS = "{ \"sun.applet.PluginMain\" }" +include $(BUILDDIR)/common/Program.gmk + ---- openjdk/jdk/make/docs/NON_CORE_PKGS.gmk.orig 2009-06-10 17:48:57.000000000 -0400 -+++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-06-10 17:49:59.000000000 -0400 -@@ -82,11 +82,14 @@ - TREEAPI_PKGS = com.sun.source.tree \ - com.sun.source.util - -+JAVASCRIPT_PKGS = netscape.javascript -+ - SMARTCARDIO_PKGS = javax.smartcardio - - # non-core packages in rt.jar - NON_CORE_PKGS = $(DOMAPI_PKGS) \ - $(MGMT_PKGS) \ -+ $(JAVASCRIPT_PKGS) \ - $(JAAS_PKGS) \ - $(JGSS_PKGS) \ - $(OLD_JSSE_PKGS) \ diff -r 1990512a970a -r f9fae3b84b02 patches/icedtea-webstart.patch --- a/patches/icedtea-webstart.patch Fri Jun 05 10:25:13 2009 -0400 +++ b/patches/icedtea-webstart.patch Tue Aug 04 15:23:28 2009 +0100 @@ -1,6 +1,26 @@ diff -Nru openjdk.orig/jdk/make/launcher +diff -Nru openjdk.orig/jdk/make/docs/NON_CORE_PKGS.gmk openjdk/jdk/make/docs/NON_CORE_PKGS.gmk +--- openjdk.orig/jdk/make/docs/NON_CORE_PKGS.gmk 2009-08-04 14:58:33.000000000 +0100 ++++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-08-04 14:59:43.000000000 +0100 +@@ -93,6 +93,8 @@ + TRACING_PKGS = com.sun.tracing \ + com.sun.tracing.dtrace + ++JNLP_PKGS = javax.jnlp ++ + # non-core packages in rt.jar + NON_CORE_PKGS = $(DOMAPI_PKGS) \ + $(MGMT_PKGS) \ +@@ -103,6 +105,7 @@ + $(OLD_JSSE_PKGS) \ + $(HTTPSERVER_PKGS) \ + $(SMARTCARDIO_PKGS) \ ++ $(JNLP_PKGS) \ + $(TRACING_PKGS) \ + $(SCTPAPI_PKGS) + diff -Nru openjdk.orig/jdk/make/launchers/Makefile openjdk/jdk/make/launchers/Makefile ---- openjdk.orig/jdk/make/launchers/Makefile 2009-06-30 14:05:45.000000000 +0100 -+++ openjdk/jdk/make/launchers/Makefile 2009-07-14 15:33:57.000000000 +0100 +--- openjdk.orig/jdk/make/launchers/Makefile 2009-07-25 04:30:42.000000000 +0100 ++++ openjdk/jdk/make/launchers/Makefile 2009-08-04 14:59:15.000000000 +0100 @@ -67,6 +67,7 @@ $(call make-launcher, javadoc, com.sun.tools.javadoc.Main, , ) $(call make-launcher, javah, com.sun.tools.javah.Main, , ) @@ -10,8 +30,8 @@ diff -Nru openjdk.orig/jdk/make/launcher -J-Djconsole.showOutputViewer, ) $(call make-launcher, jdb, com.sun.tools.example.debug.tty.TTY, , ) diff -Nru openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java 2009-07-14 15:15:40.000000000 +0100 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java 2009-07-14 15:33:57.000000000 +0100 +--- openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java 2009-08-04 14:57:54.000000000 +0100 ++++ openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java 2009-08-04 14:59:15.000000000 +0100 @@ -67,7 +67,7 @@ /** * The applet (if loaded). @@ -50,27 +70,9 @@ diff -Nru openjdk.orig/jdk/src/share/cla if (status != APPLET_DISPOSE) { showAppletStatus("notdisposed"); return; ---- openjdk/jdk/make/docs/NON_CORE_PKGS.gmk.orig 2009-06-04 11:02:18.000000000 -0400 -+++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-06-04 11:02:45.000000000 -0400 -@@ -84,6 +84,8 @@ - - SMARTCARDIO_PKGS = javax.smartcardio - -+JNLP_PKGS = javax.jnlp -+ - # non-core packages in rt.jar - NON_CORE_PKGS = $(DOMAPI_PKGS) \ - $(MGMT_PKGS) \ -@@ -91,4 +93,5 @@ - $(JGSS_PKGS) \ - $(OLD_JSSE_PKGS) \ - $(HTTPSERVER_PKGS) \ -- $(SMARTCARDIO_PKGS) -+ $(SMARTCARDIO_PKGS) \ -+ $(JNLP_PKGS) diff -Nru openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2009-07-14 15:15:40.000000000 +0100 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2009-07-14 15:33:57.000000000 +0100 +--- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2009-08-04 14:57:54.000000000 +0100 ++++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2009-08-04 14:59:15.000000000 +0100 @@ -42,25 +42,25 @@ * * @author Arthur van Hoff From omajid at redhat.com Tue Aug 4 09:07:43 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:43 +0000 Subject: changeset in /hg/icedtea: 2009-06-05 Omair Majid changeset 1990512a970a in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=1990512a970a description: 2009-06-05 Omair Majid * patches/icedtea-webstart.patch: Make javax.jnlp package visible to javac. diffstat: 2 files changed, 23 insertions(+) ChangeLog | 5 +++++ patches/icedtea-webstart.patch | 18 ++++++++++++++++++ diffs (40 lines): diff -r 88c498641265 -r 1990512a970a ChangeLog --- a/ChangeLog Fri Jun 12 10:05:15 2009 -0400 +++ b/ChangeLog Fri Jun 05 10:25:13 2009 -0400 @@ -1,3 +1,8 @@ 2009-06-12 Omair Majid + + * patches/icedtea-webstart.patch: Make javax.jnlp package visible to + javac. + 2009-06-12 Omair Majid * patches/icedtea-liveconnect.patch: Make netscape.javascript package diff -r 88c498641265 -r 1990512a970a patches/icedtea-webstart.patch --- a/patches/icedtea-webstart.patch Fri Jun 12 10:05:15 2009 -0400 +++ b/patches/icedtea-webstart.patch Fri Jun 05 10:25:13 2009 -0400 @@ -50,6 +50,24 @@ diff -Nru openjdk.orig/jdk/src/share/cla if (status != APPLET_DISPOSE) { showAppletStatus("notdisposed"); return; +--- openjdk/jdk/make/docs/NON_CORE_PKGS.gmk.orig 2009-06-04 11:02:18.000000000 -0400 ++++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-06-04 11:02:45.000000000 -0400 +@@ -84,6 +84,8 @@ + + SMARTCARDIO_PKGS = javax.smartcardio + ++JNLP_PKGS = javax.jnlp ++ + # non-core packages in rt.jar + NON_CORE_PKGS = $(DOMAPI_PKGS) \ + $(MGMT_PKGS) \ +@@ -91,4 +93,5 @@ + $(JGSS_PKGS) \ + $(OLD_JSSE_PKGS) \ + $(HTTPSERVER_PKGS) \ +- $(SMARTCARDIO_PKGS) ++ $(SMARTCARDIO_PKGS) \ ++ $(JNLP_PKGS) diff -Nru openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java --- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2009-07-14 15:15:40.000000000 +0100 +++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2009-07-14 15:33:57.000000000 +0100 From mark at klomp.org Tue Aug 4 09:07:43 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 04 Aug 2009 16:07:43 +0000 Subject: changeset in /hg/icedtea: Don't use @Override for methods implem... Message-ID: changeset bc51357839c0 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=bc51357839c0 description: Don't use @Override for methods implementing interfaces. * netx/net/sourceforge/jnlp/services/XExtendedService.java (openFile): Remove @Override of interface method. (openFiles): Likewise. diffstat: 2 files changed, 6 insertions(+), 2 deletions(-) ChangeLog | 6 ++++++ netx/net/sourceforge/jnlp/services/XExtendedService.java | 2 -- diffs (32 lines): diff -r f9fae3b84b02 -r bc51357839c0 ChangeLog --- a/ChangeLog Tue Aug 04 15:23:28 2009 +0100 +++ b/ChangeLog Thu Jun 18 10:58:02 2009 +0200 @@ -1,3 +1,9 @@ 2009-08-04 Andrew John Hughes + + * netx/net/sourceforge/jnlp/services/XExtendedService.java + (openFile): Remove @Override of interface method. + (openFiles): Likewise. + 2009-08-04 Andrew John Hughes * patches/icedtea-webstart.patch, diff -r f9fae3b84b02 -r bc51357839c0 netx/net/sourceforge/jnlp/services/XExtendedService.java --- a/netx/net/sourceforge/jnlp/services/XExtendedService.java Tue Aug 04 15:23:28 2009 +0100 +++ b/netx/net/sourceforge/jnlp/services/XExtendedService.java Thu Jun 18 10:58:02 2009 +0200 @@ -32,7 +32,6 @@ import net.sourceforge.jnlp.security.Sec */ public class XExtendedService implements ExtendedService { - @Override public FileContents openFile(File file) throws IOException { if (ServiceUtil.checkAccess(SecurityWarningDialog.AccessType.READ_FILE)) { @@ -44,7 +43,6 @@ public class XExtendedService implements } - @Override public FileContents[] openFiles(File[] files) throws IOException { FileContents[] contents = new FileContents[files.length]; for (int i = 0; i < files.length; i++) { From omajid at redhat.com Tue Aug 4 09:07:44 2009 From: omajid at redhat.com (Omair Majid) Date: Tue, 04 Aug 2009 16:07:44 +0000 Subject: changeset in /hg/icedtea: Netx: disable destkop shortcuts Message-ID: changeset a790ee31024d in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=a790ee31024d description: Netx: disable destkop shortcuts 2009-08-04 Omair Majid * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java (initialize): Disable creation of desktop shortcuts. diffstat: 2 files changed, 23 insertions(+), 1 deletion(-) ChangeLog | 5 +++ netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 19 +++++++++++- diffs (41 lines): diff -r bc51357839c0 -r a790ee31024d ChangeLog --- a/ChangeLog Thu Jun 18 10:58:02 2009 +0200 +++ b/ChangeLog Tue Aug 04 11:34:49 2009 -0400 @@ -1,3 +1,8 @@ 2009-06-18 Mark Wielaard + + * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java + (initialize): Disable creation of desktop shortcuts. + 2009-06-18 Mark Wielaard * netx/net/sourceforge/jnlp/services/XExtendedService.java diff -r bc51357839c0 -r a790ee31024d netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java --- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Jun 18 10:58:02 2009 +0200 +++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Tue Aug 04 11:34:49 2009 -0400 @@ -109,7 +109,24 @@ public class ApplicationInstance { */ public void initialize() { installEnvironment(); - addMenuAndDesktopEntries(); + + /* + * FIXME: Disable creating desktop entries for now + * + * there are some major issues we need to work out before we can enable them + * 1. Playing nice with the altnatives system + * - use the system preferred jdk (/usr/bin/javaws) + * - dont assume what jdk javaws corresponds to + * - make sure our shortcuts work with the sun jdk and vice versa + * (may not be possible since sun's javaws creates a launcher that + * links to /usr/java/${ver}/bin/javaws) + * - we should use the same options and arguments as sun's javaws + * 2. Make shortcuts work offline + * - make the cache updates and replacements work properly + * - shortcuts should use the cache + * + * addMenuAndDesktopEntries(); + */ } /** From ahughes at redhat.com Tue Aug 4 09:27:54 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 04 Aug 2009 16:27:54 +0000 Subject: changeset in /hg/icedtea: Fix use of DOS line endings in netx. Message-ID: changeset 5aca55727a2a in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=5aca55727a2a description: Fix use of DOS line endings in netx. 2009-08-04 Andrew John Hughes * netx/net/sourceforge/jnlp/DefaultLaunchHandler.java, * netx/net/sourceforge/jnlp/ExtensionDesc.java, * netx/net/sourceforge/jnlp/JNLPFile.java, * netx/net/sourceforge/jnlp/LaunchException.java, * netx/net/sourceforge/jnlp/LaunchHandler.java, * netx/net/sourceforge/jnlp/Launcher.java, * netx/net/sourceforge/jnlp/ParseException.java, * netx/net/sourceforge/jnlp/Parser.java, * netx/net/sourceforge/jnlp/cache/CacheEntry.java, * netx/net/sourceforge/jnlp/cache/CacheUtil.java, * netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java, * netx/net/sourceforge/jnlp/cache/ResourceTracker.java, * netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java, * netx/net/sourceforge/jnlp/runtime/AppletInstance.java, * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java, * netx/net/sourceforge/jnlp/runtime/Boot.java, * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java, * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, * netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java, * netx/net/sourceforge/jnlp/services/XBasicService.java, * netx/net/sourceforge/jnlp/util/PropertiesFile.java, * netx/net/sourceforge/jnlp/util/Reflect.java, * netx/net/sourceforge/jnlp/util/WeakList.java: Convert DOS line endings to UNIX. diffstat: 24 files changed, 9067 insertions(+), 9040 deletions(-) ChangeLog | 27 netx/net/sourceforge/jnlp/DefaultLaunchHandler.java | 228 netx/net/sourceforge/jnlp/ExtensionDesc.java | 290 - netx/net/sourceforge/jnlp/JNLPFile.java | 1156 ++-- netx/net/sourceforge/jnlp/LaunchException.java | 380 - netx/net/sourceforge/jnlp/LaunchHandler.java | 136 netx/net/sourceforge/jnlp/Launcher.java | 1550 +++--- netx/net/sourceforge/jnlp/ParseException.java | 188 netx/net/sourceforge/jnlp/Parser.java | 2412 +++++----- netx/net/sourceforge/jnlp/cache/CacheEntry.java | 348 - netx/net/sourceforge/jnlp/cache/CacheUtil.java | 788 +-- netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java | 642 +- netx/net/sourceforge/jnlp/cache/ResourceTracker.java | 2102 ++++---- netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java | 708 +- netx/net/sourceforge/jnlp/runtime/AppletInstance.java | 278 - netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 586 +- netx/net/sourceforge/jnlp/runtime/Boot.java | 892 +-- netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 1982 ++++---- netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 1118 ++-- netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java | 980 ++-- netx/net/sourceforge/jnlp/services/XBasicService.java | 468 - netx/net/sourceforge/jnlp/util/PropertiesFile.java | 296 - netx/net/sourceforge/jnlp/util/Reflect.java | 296 - netx/net/sourceforge/jnlp/util/WeakList.java | 256 - diffs (truncated from 18206 to 500 lines): diff -r a790ee31024d -r 5aca55727a2a ChangeLog --- a/ChangeLog Tue Aug 04 11:34:49 2009 -0400 +++ b/ChangeLog Tue Aug 04 17:29:24 2009 +0100 @@ -1,3 +1,30 @@ 2009-08-04 Omair Majid + + * netx/net/sourceforge/jnlp/DefaultLaunchHandler.java, + * netx/net/sourceforge/jnlp/ExtensionDesc.java, + * netx/net/sourceforge/jnlp/JNLPFile.java, + * netx/net/sourceforge/jnlp/LaunchException.java, + * netx/net/sourceforge/jnlp/LaunchHandler.java, + * netx/net/sourceforge/jnlp/Launcher.java, + * netx/net/sourceforge/jnlp/ParseException.java, + * netx/net/sourceforge/jnlp/Parser.java, + * netx/net/sourceforge/jnlp/cache/CacheEntry.java, + * netx/net/sourceforge/jnlp/cache/CacheUtil.java, + * netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java, + * netx/net/sourceforge/jnlp/cache/ResourceTracker.java, + * netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java, + * netx/net/sourceforge/jnlp/runtime/AppletInstance.java, + * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java, + * netx/net/sourceforge/jnlp/runtime/Boot.java, + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java, + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, + * netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java, + * netx/net/sourceforge/jnlp/services/XBasicService.java, + * netx/net/sourceforge/jnlp/util/PropertiesFile.java, + * netx/net/sourceforge/jnlp/util/Reflect.java, + * netx/net/sourceforge/jnlp/util/WeakList.java: + Convert DOS line endings to UNIX. + 2009-08-04 Omair Majid * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java diff -r a790ee31024d -r 5aca55727a2a netx/net/sourceforge/jnlp/DefaultLaunchHandler.java --- a/netx/net/sourceforge/jnlp/DefaultLaunchHandler.java Tue Aug 04 11:34:49 2009 -0400 +++ b/netx/net/sourceforge/jnlp/DefaultLaunchHandler.java Tue Aug 04 17:29:24 2009 +0100 @@ -1,114 +1,114 @@ -// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -package net.sourceforge.jnlp; - -import net.sourceforge.jnlp.runtime.*; -import net.sourceforge.jnlp.util.*; - -import java.awt.*; -import java.util.*; -import javax.swing.*; - - -/** - * This default implementation shows prints the exception to - * stdout and if not in headless mode displays the exception in a - * dialog. - * - * @author Jon A. Maxwell (JAM) - initial author - * @version $Revision: 1.1 $ - */ -public class DefaultLaunchHandler implements LaunchHandler { - - /** - * Called when the application could not be launched due to a - * fatal error, such as the inability to find the main class - * or non-parseable XML. - */ - public void launchError(LaunchException exception) { - printMessage(exception); - } - - /** - * Called when launching the application can not be launched - * due to an error that is not fatal. For example a JNLP file - * that is not strictly correct yet does not necessarily - * prohibit the system from attempting to launch the - * application. - * - * @return true if the launch should continue, false to abort - */ - public boolean launchWarning(LaunchException warning) { - printMessage(warning); - return true; - } - - /** - * Called when a security validation error occurs while - * launching the application. - * - * @return true to allow the application to continue, false to stop it. - */ - public boolean validationError(LaunchException security) { - printMessage(security); - return true; - } - - /** - * Called when an application, applet, or installer has been - * launched successfully (the main method or applet start method - * returned normally). - * - * @param application the launched application instance - */ - public void launchCompleted(ApplicationInstance application) { - // - } - - /** - * Print a message to stdout. - */ - protected void printMessage(LaunchException ex) { - StringBuffer result = new StringBuffer(); - result.append("netx: "); - result.append(ex.getCategory()); - if (ex.getSummary() != null) { - result.append(": "); - result.append(ex.getSummary()); - } - - if (JNLPRuntime.isDebug()) { - if (ex.getCause() != null) - ex.getCause().printStackTrace(); - else - ex.printStackTrace(); - } - - Throwable causes[] = ex.getCauses(); - - for (int i=0; i < causes.length; i++) { - result.append(" ("); - result.append(causes[i].getClass().getName()); - result.append(" "); - result.append(causes[i].getMessage()); - result.append(")"); - } - } - -} - - +// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp; + +import net.sourceforge.jnlp.runtime.*; +import net.sourceforge.jnlp.util.*; + +import java.awt.*; +import java.util.*; +import javax.swing.*; + + +/** + * This default implementation shows prints the exception to + * stdout and if not in headless mode displays the exception in a + * dialog. + * + * @author Jon A. Maxwell (JAM) - initial author + * @version $Revision: 1.1 $ + */ +public class DefaultLaunchHandler implements LaunchHandler { + + /** + * Called when the application could not be launched due to a + * fatal error, such as the inability to find the main class + * or non-parseable XML. + */ + public void launchError(LaunchException exception) { + printMessage(exception); + } + + /** + * Called when launching the application can not be launched + * due to an error that is not fatal. For example a JNLP file + * that is not strictly correct yet does not necessarily + * prohibit the system from attempting to launch the + * application. + * + * @return true if the launch should continue, false to abort + */ + public boolean launchWarning(LaunchException warning) { + printMessage(warning); + return true; + } + + /** + * Called when a security validation error occurs while + * launching the application. + * + * @return true to allow the application to continue, false to stop it. + */ + public boolean validationError(LaunchException security) { + printMessage(security); + return true; + } + + /** + * Called when an application, applet, or installer has been + * launched successfully (the main method or applet start method + * returned normally). + * + * @param application the launched application instance + */ + public void launchCompleted(ApplicationInstance application) { + // + } + + /** + * Print a message to stdout. + */ + protected void printMessage(LaunchException ex) { + StringBuffer result = new StringBuffer(); + result.append("netx: "); + result.append(ex.getCategory()); + if (ex.getSummary() != null) { + result.append(": "); + result.append(ex.getSummary()); + } + + if (JNLPRuntime.isDebug()) { + if (ex.getCause() != null) + ex.getCause().printStackTrace(); + else + ex.printStackTrace(); + } + + Throwable causes[] = ex.getCauses(); + + for (int i=0; i < causes.length; i++) { + result.append(" ("); + result.append(causes[i].getClass().getName()); + result.append(" "); + result.append(causes[i].getMessage()); + result.append(")"); + } + } + +} + + diff -r a790ee31024d -r 5aca55727a2a netx/net/sourceforge/jnlp/ExtensionDesc.java --- a/netx/net/sourceforge/jnlp/ExtensionDesc.java Tue Aug 04 11:34:49 2009 -0400 +++ b/netx/net/sourceforge/jnlp/ExtensionDesc.java Tue Aug 04 17:29:24 2009 +0100 @@ -1,145 +1,145 @@ -// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - -package net.sourceforge.jnlp; - -import java.io.*; -import java.net.*; -import java.util.*; - -import net.sourceforge.jnlp.runtime.JNLPRuntime; - - -/** - * The extension element. - * - * @author Jon A. Maxwell (JAM) - initial author - * @version $Revision: 1.8 $ - */ -public class ExtensionDesc { - - /** the extension name */ - private String name; - - /** the required extension version */ - private Version version; - - /** the location of the extension JNLP file */ - private URL location; - - /** the JNLPFile the extension refers to */ - private JNLPFile file; - - /** map from ext-part to local part */ - private Map extToPart = new HashMap(); - - /** eager ext parts */ - private List eagerExtParts = new ArrayList(); - - - /** - * Create an extention descriptor. - * - * @param name the extension name - * @param version the required version of the extention JNLPFile - * @param location the location of the extention JNLP file - */ - public ExtensionDesc(String name, Version version, URL location) { - this.name = name; - this.version = version; - this.location = location; - } - - /** - * Adds an extension part to be downloaded when the specified - * part of the main JNLP file is loaded. The extension part - * will be downloaded before the application is launched if the - * lazy value is false or the part is empty or null. - * - * @param extPart the part name in the extension file - * @param part the part name in the main file - * @param lazy whether to load the part before launching - */ - protected void addPart(String extPart, String part, boolean lazy) { - extToPart.put(extPart, part); - - if (!lazy || part == null || part.length() == 0) - eagerExtParts.add(extPart); - } - - /** - * Returns the parts in the extension JNLP file mapped to the - * part of the main file. - */ - public String[] getExtensionParts(String thisPart) { - - return null; - } - - /** - * Returns the name of the extension. - */ - public String getName() { - return name; - } - - /** - * Returns the required version of the extension JNLP file. - */ - public Version getVersion() { - return version; - } - - /** - * Returns the location of the extension JNLP file. - */ - public URL getLocation() { - return location; - } - - /** - * Resolves the extension by creating a JNLPFile from the file - * specified by the extension's location property. - * - * @throws IOException if the extension JNLPFile could not be resolved. - * @throws ParseException if the extension JNLPFile could not be - * parsed or was not a component or installer descriptor. - */ - public void resolve() throws ParseException, IOException { - if (file == null) { - file = new JNLPFile(location); - - if (JNLPRuntime.isDebug()) - System.out.println("Resolve: "+file.getInformation().getTitle()); - - // check for it being an extension descriptor - if (!file.isComponent() && !file.isInstaller()) - throw new ParseException(JNLPRuntime.getMessage("JInvalidExtensionDescriptor", new Object[] {name, location} )); - } - - } - - /** - * Returns a JNLPFile for the extension, or null if the JNLP - * file has not been resolved. - */ - public JNLPFile getJNLPFile() { - return file; - } -} - - +// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +package net.sourceforge.jnlp; + +import java.io.*; +import java.net.*; +import java.util.*; + +import net.sourceforge.jnlp.runtime.JNLPRuntime; + + +/** + * The extension element. + * + * @author Jon A. Maxwell (JAM) - initial author + * @version $Revision: 1.8 $ + */ +public class ExtensionDesc { + + /** the extension name */ + private String name; + + /** the required extension version */ + private Version version; + + /** the location of the extension JNLP file */ + private URL location; + + /** the JNLPFile the extension refers to */ + private JNLPFile file; + + /** map from ext-part to local part */ + private Map extToPart = new HashMap(); + + /** eager ext parts */ + private List eagerExtParts = new ArrayList(); + + + /** + * Create an extention descriptor. + * + * @param name the extension name + * @param version the required version of the extention JNLPFile + * @param location the location of the extention JNLP file + */ + public ExtensionDesc(String name, Version version, URL location) { + this.name = name; + this.version = version; + this.location = location; + } + + /** + * Adds an extension part to be downloaded when the specified + * part of the main JNLP file is loaded. The extension part + * will be downloaded before the application is launched if the + * lazy value is false or the part is empty or null. + * + * @param extPart the part name in the extension file + * @param part the part name in the main file + * @param lazy whether to load the part before launching + */ + protected void addPart(String extPart, String part, boolean lazy) { + extToPart.put(extPart, part); + + if (!lazy || part == null || part.length() == 0) + eagerExtParts.add(extPart); + } + + /** + * Returns the parts in the extension JNLP file mapped to the From ahughes at redhat.com Tue Aug 4 09:37:53 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 04 Aug 2009 16:37:53 +0000 Subject: changeset in /hg/icedtea6: Convert DOS line endings to UNIX. Message-ID: changeset e315bc774531 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e315bc774531 description: Convert DOS line endings to UNIX. 2009-08-04 Andrew John Hughes * rt/net/sourceforge/jnlp/DefaultLaunchHandler.java, * rt/net/sourceforge/jnlp/ExtensionDesc.java, * rt/net/sourceforge/jnlp/JNLPFile.java, * rt/net/sourceforge/jnlp/LaunchException.java, * rt/net/sourceforge/jnlp/LaunchHandler.java, * rt/net/sourceforge/jnlp/Launcher.java, * rt/net/sourceforge/jnlp/ParseException.java, * rt/net/sourceforge/jnlp/Parser.java, * rt/net/sourceforge/jnlp/cache/CacheEntry.java, * rt/net/sourceforge/jnlp/cache/CacheUtil.java, * rt/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java, * rt/net/sourceforge/jnlp/cache/ResourceTracker.java, * rt/net/sourceforge/jnlp/runtime/AppletEnvironment.java, * rt/net/sourceforge/jnlp/runtime/AppletInstance.java, * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java, * rt/net/sourceforge/jnlp/runtime/Boot.java, * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java, * rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java, * rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java, * rt/net/sourceforge/jnlp/services/XBasicService.java, * rt/net/sourceforge/jnlp/util/PropertiesFile.java, * rt/net/sourceforge/jnlp/util/Reflect.java, * rt/net/sourceforge/jnlp/util/WeakList.java, * test/jtreg/com/sun/javatest/exec/FileTable.java, * test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java, * test/jtreg/com/sun/javatest/report/XMLReportMaker.java: Convert DOS line endings to UNIX. diffstat: 27 files changed, 9963 insertions(+), 9933 deletions(-) ChangeLog | 30 rt/net/sourceforge/jnlp/DefaultLaunchHandler.java | 228 rt/net/sourceforge/jnlp/ExtensionDesc.java | 290 - rt/net/sourceforge/jnlp/JNLPFile.java | 1156 ++-- rt/net/sourceforge/jnlp/LaunchException.java | 380 - rt/net/sourceforge/jnlp/LaunchHandler.java | 136 rt/net/sourceforge/jnlp/Launcher.java | 1550 +++--- rt/net/sourceforge/jnlp/ParseException.java | 188 rt/net/sourceforge/jnlp/Parser.java | 2412 +++++----- rt/net/sourceforge/jnlp/cache/CacheEntry.java | 348 - rt/net/sourceforge/jnlp/cache/CacheUtil.java | 788 +-- rt/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java | 642 +- rt/net/sourceforge/jnlp/cache/ResourceTracker.java | 2102 ++++---- rt/net/sourceforge/jnlp/runtime/AppletEnvironment.java | 708 +- rt/net/sourceforge/jnlp/runtime/AppletInstance.java | 278 - rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 586 +- rt/net/sourceforge/jnlp/runtime/Boot.java | 892 +-- rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 1982 ++++---- rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 1118 ++-- rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java | 980 ++-- rt/net/sourceforge/jnlp/services/XBasicService.java | 468 - rt/net/sourceforge/jnlp/util/PropertiesFile.java | 296 - rt/net/sourceforge/jnlp/util/Reflect.java | 296 - rt/net/sourceforge/jnlp/util/WeakList.java | 256 - test/jtreg/com/sun/javatest/exec/FileTable.java | 146 test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java | 474 - test/jtreg/com/sun/javatest/report/XMLReportMaker.java | 1166 ++-- diffs (truncated from 20016 to 500 lines): diff -r f5ed1489ddcf -r e315bc774531 ChangeLog --- a/ChangeLog Tue Aug 04 11:34:49 2009 -0400 +++ b/ChangeLog Tue Aug 04 17:39:11 2009 +0100 @@ -1,3 +1,33 @@ 2009-08-04 Omair Majid + + * rt/net/sourceforge/jnlp/DefaultLaunchHandler.java, + * rt/net/sourceforge/jnlp/ExtensionDesc.java, + * rt/net/sourceforge/jnlp/JNLPFile.java, + * rt/net/sourceforge/jnlp/LaunchException.java, + * rt/net/sourceforge/jnlp/LaunchHandler.java, + * rt/net/sourceforge/jnlp/Launcher.java, + * rt/net/sourceforge/jnlp/ParseException.java, + * rt/net/sourceforge/jnlp/Parser.java, + * rt/net/sourceforge/jnlp/cache/CacheEntry.java, + * rt/net/sourceforge/jnlp/cache/CacheUtil.java, + * rt/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java, + * rt/net/sourceforge/jnlp/cache/ResourceTracker.java, + * rt/net/sourceforge/jnlp/runtime/AppletEnvironment.java, + * rt/net/sourceforge/jnlp/runtime/AppletInstance.java, + * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java, + * rt/net/sourceforge/jnlp/runtime/Boot.java, + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java, + * rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java, + * rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java, + * rt/net/sourceforge/jnlp/services/XBasicService.java, + * rt/net/sourceforge/jnlp/util/PropertiesFile.java, + * rt/net/sourceforge/jnlp/util/Reflect.java, + * rt/net/sourceforge/jnlp/util/WeakList.java, + * test/jtreg/com/sun/javatest/exec/FileTable.java, + * test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java, + * test/jtreg/com/sun/javatest/report/XMLReportMaker.java: + Convert DOS line endings to UNIX. + 2009-08-04 Omair Majid * rt/net/sourceforge/jnlp/runtime/ApplicationInstance.java diff -r f5ed1489ddcf -r e315bc774531 rt/net/sourceforge/jnlp/DefaultLaunchHandler.java --- a/rt/net/sourceforge/jnlp/DefaultLaunchHandler.java Tue Aug 04 11:34:49 2009 -0400 +++ b/rt/net/sourceforge/jnlp/DefaultLaunchHandler.java Tue Aug 04 17:39:11 2009 +0100 @@ -1,114 +1,114 @@ -// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -package net.sourceforge.jnlp; - -import net.sourceforge.jnlp.runtime.*; -import net.sourceforge.jnlp.util.*; - -import java.awt.*; -import java.util.*; -import javax.swing.*; - - -/** - * This default implementation shows prints the exception to - * stdout and if not in headless mode displays the exception in a - * dialog. - * - * @author Jon A. Maxwell (JAM) - initial author - * @version $Revision: 1.1 $ - */ -public class DefaultLaunchHandler implements LaunchHandler { - - /** - * Called when the application could not be launched due to a - * fatal error, such as the inability to find the main class - * or non-parseable XML. - */ - public void launchError(LaunchException exception) { - printMessage(exception); - } - - /** - * Called when launching the application can not be launched - * due to an error that is not fatal. For example a JNLP file - * that is not strictly correct yet does not necessarily - * prohibit the system from attempting to launch the - * application. - * - * @return true if the launch should continue, false to abort - */ - public boolean launchWarning(LaunchException warning) { - printMessage(warning); - return true; - } - - /** - * Called when a security validation error occurs while - * launching the application. - * - * @return true to allow the application to continue, false to stop it. - */ - public boolean validationError(LaunchException security) { - printMessage(security); - return true; - } - - /** - * Called when an application, applet, or installer has been - * launched successfully (the main method or applet start method - * returned normally). - * - * @param application the launched application instance - */ - public void launchCompleted(ApplicationInstance application) { - // - } - - /** - * Print a message to stdout. - */ - protected void printMessage(LaunchException ex) { - StringBuffer result = new StringBuffer(); - result.append("netx: "); - result.append(ex.getCategory()); - if (ex.getSummary() != null) { - result.append(": "); - result.append(ex.getSummary()); - } - - if (JNLPRuntime.isDebug()) { - if (ex.getCause() != null) - ex.getCause().printStackTrace(); - else - ex.printStackTrace(); - } - - Throwable causes[] = ex.getCauses(); - - for (int i=0; i < causes.length; i++) { - result.append(" ("); - result.append(causes[i].getClass().getName()); - result.append(" "); - result.append(causes[i].getMessage()); - result.append(")"); - } - } - -} - - +// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp; + +import net.sourceforge.jnlp.runtime.*; +import net.sourceforge.jnlp.util.*; + +import java.awt.*; +import java.util.*; +import javax.swing.*; + + +/** + * This default implementation shows prints the exception to + * stdout and if not in headless mode displays the exception in a + * dialog. + * + * @author Jon A. Maxwell (JAM) - initial author + * @version $Revision: 1.1 $ + */ +public class DefaultLaunchHandler implements LaunchHandler { + + /** + * Called when the application could not be launched due to a + * fatal error, such as the inability to find the main class + * or non-parseable XML. + */ + public void launchError(LaunchException exception) { + printMessage(exception); + } + + /** + * Called when launching the application can not be launched + * due to an error that is not fatal. For example a JNLP file + * that is not strictly correct yet does not necessarily + * prohibit the system from attempting to launch the + * application. + * + * @return true if the launch should continue, false to abort + */ + public boolean launchWarning(LaunchException warning) { + printMessage(warning); + return true; + } + + /** + * Called when a security validation error occurs while + * launching the application. + * + * @return true to allow the application to continue, false to stop it. + */ + public boolean validationError(LaunchException security) { + printMessage(security); + return true; + } + + /** + * Called when an application, applet, or installer has been + * launched successfully (the main method or applet start method + * returned normally). + * + * @param application the launched application instance + */ + public void launchCompleted(ApplicationInstance application) { + // + } + + /** + * Print a message to stdout. + */ + protected void printMessage(LaunchException ex) { + StringBuffer result = new StringBuffer(); + result.append("netx: "); + result.append(ex.getCategory()); + if (ex.getSummary() != null) { + result.append(": "); + result.append(ex.getSummary()); + } + + if (JNLPRuntime.isDebug()) { + if (ex.getCause() != null) + ex.getCause().printStackTrace(); + else + ex.printStackTrace(); + } + + Throwable causes[] = ex.getCauses(); + + for (int i=0; i < causes.length; i++) { + result.append(" ("); + result.append(causes[i].getClass().getName()); + result.append(" "); + result.append(causes[i].getMessage()); + result.append(")"); + } + } + +} + + diff -r f5ed1489ddcf -r e315bc774531 rt/net/sourceforge/jnlp/ExtensionDesc.java --- a/rt/net/sourceforge/jnlp/ExtensionDesc.java Tue Aug 04 11:34:49 2009 -0400 +++ b/rt/net/sourceforge/jnlp/ExtensionDesc.java Tue Aug 04 17:39:11 2009 +0100 @@ -1,145 +1,145 @@ -// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - -package net.sourceforge.jnlp; - -import java.io.*; -import java.net.*; -import java.util.*; - -import net.sourceforge.jnlp.runtime.JNLPRuntime; - - -/** - * The extension element. - * - * @author Jon A. Maxwell (JAM) - initial author - * @version $Revision: 1.8 $ - */ -public class ExtensionDesc { - - /** the extension name */ - private String name; - - /** the required extension version */ - private Version version; - - /** the location of the extension JNLP file */ - private URL location; - - /** the JNLPFile the extension refers to */ - private JNLPFile file; - - /** map from ext-part to local part */ - private Map extToPart = new HashMap(); - - /** eager ext parts */ - private List eagerExtParts = new ArrayList(); - - - /** - * Create an extention descriptor. - * - * @param name the extension name - * @param version the required version of the extention JNLPFile - * @param location the location of the extention JNLP file - */ - public ExtensionDesc(String name, Version version, URL location) { - this.name = name; - this.version = version; - this.location = location; - } - - /** - * Adds an extension part to be downloaded when the specified - * part of the main JNLP file is loaded. The extension part - * will be downloaded before the application is launched if the - * lazy value is false or the part is empty or null. - * - * @param extPart the part name in the extension file - * @param part the part name in the main file - * @param lazy whether to load the part before launching - */ - protected void addPart(String extPart, String part, boolean lazy) { - extToPart.put(extPart, part); - - if (!lazy || part == null || part.length() == 0) - eagerExtParts.add(extPart); - } - - /** - * Returns the parts in the extension JNLP file mapped to the - * part of the main file. - */ - public String[] getExtensionParts(String thisPart) { - - return null; - } - - /** - * Returns the name of the extension. - */ - public String getName() { - return name; - } - - /** - * Returns the required version of the extension JNLP file. - */ - public Version getVersion() { - return version; - } - - /** - * Returns the location of the extension JNLP file. - */ - public URL getLocation() { - return location; - } - - /** - * Resolves the extension by creating a JNLPFile from the file - * specified by the extension's location property. - * - * @throws IOException if the extension JNLPFile could not be resolved. - * @throws ParseException if the extension JNLPFile could not be - * parsed or was not a component or installer descriptor. - */ - public void resolve() throws ParseException, IOException { - if (file == null) { - file = new JNLPFile(location); - - if (JNLPRuntime.isDebug()) - System.out.println("Resolve: "+file.getInformation().getTitle()); - - // check for it being an extension descriptor - if (!file.isComponent() && !file.isInstaller()) - throw new ParseException(JNLPRuntime.getMessage("JInvalidExtensionDescriptor", new Object[] {name, location} )); - } - - } - - /** - * Returns a JNLPFile for the extension, or null if the JNLP - * file has not been resolved. - */ - public JNLPFile getJNLPFile() { - return file; - } -} - - +// Copyright (C) 2001-2003 Jon A. Maxwell (JAM) +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +package net.sourceforge.jnlp; + +import java.io.*; +import java.net.*; +import java.util.*; + +import net.sourceforge.jnlp.runtime.JNLPRuntime; + + +/** + * The extension element. + * + * @author Jon A. Maxwell (JAM) - initial author + * @version $Revision: 1.8 $ + */ +public class ExtensionDesc { + + /** the extension name */ + private String name; + + /** the required extension version */ + private Version version; + + /** the location of the extension JNLP file */ + private URL location; + + /** the JNLPFile the extension refers to */ + private JNLPFile file; + + /** map from ext-part to local part */ + private Map extToPart = new HashMap(); + + /** eager ext parts */ + private List eagerExtParts = new ArrayList(); + + + /** + * Create an extention descriptor. + * + * @param name the extension name + * @param version the required version of the extention JNLPFile + * @param location the location of the extention JNLP file + */ + public ExtensionDesc(String name, Version version, URL location) { + this.name = name; + this.version = version; + this.location = location; + } + + /** + * Adds an extension part to be downloaded when the specified + * part of the main JNLP file is loaded. The extension part + * will be downloaded before the application is launched if the + * lazy value is false or the part is empty or null. + * + * @param extPart the part name in the extension file + * @param part the part name in the main file + * @param lazy whether to load the part before launching + */ + protected void addPart(String extPart, String part, boolean lazy) { + extToPart.put(extPart, part); + + if (!lazy || part == null || part.length() == 0) + eagerExtParts.add(extPart); + } From ahughes at redhat.com Tue Aug 4 09:41:19 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 04 Aug 2009 16:41:19 +0000 Subject: changeset in /hg/icedtea: Fix up more DOS line endings. Message-ID: changeset 40aa38f0fe07 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=40aa38f0fe07 description: Fix up more DOS line endings. 2009-08-04 Andrew John Hughes * test/jtreg/com/sun/javatest/exec/FileTable.java, * test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java, * test/jtreg/com/sun/javatest/report/XMLReportMaker.java: Remove more DOS line endings. diffstat: 4 files changed, 900 insertions(+), 893 deletions(-) ChangeLog | 7 test/jtreg/com/sun/javatest/exec/FileTable.java | 146 - test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java | 474 ++-- test/jtreg/com/sun/javatest/report/XMLReportMaker.java | 1166 +++++----- diffs (truncated from 1821 to 500 lines): diff -r 5aca55727a2a -r 40aa38f0fe07 ChangeLog --- a/ChangeLog Tue Aug 04 17:29:24 2009 +0100 +++ b/ChangeLog Tue Aug 04 17:43:18 2009 +0100 @@ -1,3 +1,10 @@ 2009-08-04 Andrew John Hughes + + * test/jtreg/com/sun/javatest/exec/FileTable.java, + * test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java, + * test/jtreg/com/sun/javatest/report/XMLReportMaker.java: + Remove more DOS line endings. + 2009-08-04 Andrew John Hughes * netx/net/sourceforge/jnlp/DefaultLaunchHandler.java, diff -r 5aca55727a2a -r 40aa38f0fe07 test/jtreg/com/sun/javatest/exec/FileTable.java --- a/test/jtreg/com/sun/javatest/exec/FileTable.java Tue Aug 04 17:29:24 2009 +0100 +++ b/test/jtreg/com/sun/javatest/exec/FileTable.java Tue Aug 04 17:43:18 2009 +0100 @@ -24,76 +24,76 @@ * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ -package com.sun.javatest.exec; - -import com.sun.javatest.tool.UIFactory; -import java.awt.Component; -import javax.swing.Icon; -import javax.swing.JTable; -import javax.swing.ListSelectionModel; -import javax.swing.table.DefaultTableCellRenderer; - -public class FileTable extends JTable { - - - - public FileTable(FileSystemTableModel model, UIFactory uif) { - super(model); - this.uif = uif; - setCellSelectionEnabled(false); - setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - setRowSelectionAllowed(true); - setShowGrid(false); - getColumnModel().getColumn(0).setCellRenderer(new IconRenderer()); - } - - private class IconRenderer extends DefaultTableCellRenderer { - - { - up = uif.createIcon("upper"); - dir = uif.createIcon("folder"); - } - - public Component getTableCellRendererComponent(JTable table, Object value, - boolean isSelected, boolean hasFocus, int row, int column) { - - setFont(table.getFont()); - setIcon(null); - setText(""); - - if (isSelected) { - super.setForeground(table.getSelectionForeground()); - super.setBackground(table.getSelectionBackground()); - } else { - super.setForeground(table.getForeground()); - super.setBackground(table.getBackground()); - } - - if (value instanceof FileTableNode) { - FileTableNode fn = (FileTableNode) value; - if (fn.getMode() != 'f') { - if (fn.getMode() == 'u') { - setIcon(up); - return this; - } - if (fn.getMode() == 'd') { - setIcon(dir); - setText(fn.toString()); - return this; - } - } - } - return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - } - - private Icon up; - private Icon dir; - - } - - - - private UIFactory uif; - - -} +package com.sun.javatest.exec; + +import com.sun.javatest.tool.UIFactory; +import java.awt.Component; +import javax.swing.Icon; +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.table.DefaultTableCellRenderer; + +public class FileTable extends JTable { + + + + public FileTable(FileSystemTableModel model, UIFactory uif) { + super(model); + this.uif = uif; + setCellSelectionEnabled(false); + setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + setRowSelectionAllowed(true); + setShowGrid(false); + getColumnModel().getColumn(0).setCellRenderer(new IconRenderer()); + } + + private class IconRenderer extends DefaultTableCellRenderer { + + { + up = uif.createIcon("upper"); + dir = uif.createIcon("folder"); + } + + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + + setFont(table.getFont()); + setIcon(null); + setText(""); + + if (isSelected) { + super.setForeground(table.getSelectionForeground()); + super.setBackground(table.getSelectionBackground()); + } else { + super.setForeground(table.getForeground()); + super.setBackground(table.getBackground()); + } + + if (value instanceof FileTableNode) { + FileTableNode fn = (FileTableNode) value; + if (fn.getMode() != 'f') { + if (fn.getMode() == 'u') { + setIcon(up); + return this; + } + if (fn.getMode() == 'd') { + setIcon(dir); + setText(fn.toString()); + return this; + } + } + } + return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } + + private Icon up; + private Icon dir; + + } + + + + private UIFactory uif; + + +} diff -r 5aca55727a2a -r 40aa38f0fe07 test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java --- a/test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java Tue Aug 04 17:29:24 2009 +0100 +++ b/test/jtreg/com/sun/javatest/mrep/ConflictResolutionDialog.java Tue Aug 04 17:43:18 2009 +0100 @@ -24,240 +24,240 @@ * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ -package com.sun.javatest.mrep; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Container; -import java.awt.FlowLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JDialog; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.ListSelectionModel; -import javax.swing.border.Border; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import com.sun.javatest.tool.UIFactory; -import javax.swing.JOptionPane; - -public class ConflictResolutionDialog extends JDialog { - - private String resolveButtonStr = "resolve"; - private String cancelButtonStr = "cancel"; - private String useMostRecentCheckBoxStr = "useMost"; - - private JCheckBox preferredReportCheckBox; - private JCheckBox useMostRecentCheckBox; - - private JButton resolveButton; - private JButton cancelButton; - - private DefaultListModel listModel; - private JList list; - - private int selectedIndex; - private boolean bPreferredReport; - private boolean bUseMostRecent; - - private UIFactory uif; - - private boolean cancel = false; - - - public ConflictResolutionDialog(JFrame parent, String testName, String[] reportsList, boolean bPreferredSet, UIFactory uif) { - super(parent, true); - this.uif = uif; - - setName("conflict"); - setTitle(uif.getI18NString("conflict.name")); - setResizable(false); - - Container cp = getContentPane(); - cp.setLayout(new BorderLayout()); - setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - ConflictResolutionActionListener conflictResolutionListener = new ConflictResolutionActionListener(); - - JLabel text = uif.createLabel("conflict.text"); - text.setText(text.getText() + " " + testName); - - - text.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); - JPanel textPanel = uif.createPanel("conflict.text.panel", new FlowLayout(FlowLayout.CENTER)); - textPanel.add(text); - - Box vBox = Box.createVerticalBox(); - - JLabel chooseText =uif.createLabel("conflict.chooseText"); - //text.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); - JPanel chooseTextPanel = uif.createPanel("conflict.choosePanel", new FlowLayout(FlowLayout.CENTER)); - chooseTextPanel.add(chooseText); - - // Build list box - listModel=new DefaultListModel(); - for (int i=0; i< reportsList.length; i++) { - listModel.addElement(reportsList[i]); - } - list = uif.createList("conflict.list", listModel); - list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - - ReportsListSelectionListener rl = new ReportsListSelectionListener(); - list.addListSelectionListener(rl); - Border brd = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK); - list.setBorder(brd); - JScrollPane scrollPane = uif.createScrollPane(list); - Box hBox = Box.createHorizontalBox(); - //hBox.add(Box.createHorizontalStrut(20)); - hBox.add(scrollPane); - //hBox.add(Box.createHorizontalStrut(20)); - - preferredReportCheckBox = uif.createCheckBox("conflict.preffered"); - preferredReportCheckBox.setMnemonic(0); - preferredReportCheckBox.setEnabled(false); - JPanel preferredReportPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); - preferredReportPanel.add(preferredReportCheckBox); - - - useMostRecentCheckBox = uif.createCheckBox("conflict.most.recent"); - useMostRecentCheckBox.setMnemonic(1); - useMostRecentCheckBox.addActionListener(conflictResolutionListener); - useMostRecentCheckBox.setActionCommand(useMostRecentCheckBoxStr); - JPanel useRecentPanel = uif.createPanel("conflict.recent", new FlowLayout(FlowLayout.LEFT)); - useRecentPanel.add(useMostRecentCheckBox); - - - - vBox.setBorder(BorderFactory.createEmptyBorder(0,20,0,20)); - vBox.add(chooseTextPanel); - vBox.add(hBox); - // if preferred report was already chosen, in previous dialogs, it should not be seen here - if (!bPreferredSet) { - vBox.add(preferredReportPanel); - } - vBox.add(useRecentPanel); - - - // Build control buttons - JPanel controlButtonsPanel = uif.createPanel("conflict.control", new FlowLayout(FlowLayout.CENTER)); - JPanel p2 = new JPanel(); - p2.setLayout(new GridLayout(1,0,5,5)); - - resolveButton = uif.createButton("conflict.resolve"); - resolveButton.setMnemonic(0); - resolveButton.addActionListener(conflictResolutionListener); - resolveButton.setActionCommand(resolveButtonStr); - resolveButton.setEnabled(false); - - cancelButton = uif.createButton("conflict.cancel"); - cancelButton.addActionListener(conflictResolutionListener); - cancelButton.setActionCommand(cancelButtonStr); - - p2.add(resolveButton); - p2.add(cancelButton); - - controlButtonsPanel.add(p2); - controlButtonsPanel.setBorder(BorderFactory.createEmptyBorder(20,0,0,0)); - - cp.add(textPanel, BorderLayout.NORTH); - cp.add(vBox, BorderLayout.CENTER); - cp.add(controlButtonsPanel, BorderLayout.SOUTH); - - pack(); - setLocationRelativeTo(parent); - } - - public int getSelectedIndex() { - return selectedIndex; - } - public boolean getPreferredReport() { - return bPreferredReport; - } - - public boolean getUseMostRecent() { - return bUseMostRecent; - } - - public boolean wasCanceled() { - return cancel; - } - - class CancelException extends Exception { - - } - - - class ConflictResolutionActionListener implements ActionListener { - - public void actionPerformed(ActionEvent e) { - - String cmd = e.getActionCommand(); - if (cmd.equals(cancelButtonStr)) { - - if (uif.showYesNoDialog("conflict.areyousure") != JOptionPane.YES_OPTION) - return; - - ConflictResolutionDialog.this.cancel = true; - ConflictResolutionDialog.this.dispose(); - } else if (cmd.equals(resolveButtonStr)) { - bUseMostRecent = useMostRecentCheckBox.isSelected(); - bPreferredReport = preferredReportCheckBox.isSelected(); - selectedIndex = list.getSelectedIndex(); - ConflictResolutionDialog.this.dispose(); - - } else if (cmd.equals(useMostRecentCheckBoxStr)) { - if ((list.getSelectedValues().length == 0) && - (!useMostRecentCheckBox.isSelected())) { - resolveButton.setEnabled(false); - } else { - resolveButton.setEnabled(true); - } - - - if (useMostRecentCheckBox.isSelected()) { - list.setEnabled(false); - preferredReportCheckBox.setEnabled(false); - } else { - list.setEnabled(true); - preferredReportCheckBox.setEnabled(true); - } - } else - ; // ignore events on all other objects - } - } - - - class ReportsListSelectionListener implements ListSelectionListener { - public void valueChanged(ListSelectionEvent e) { - if(e.getValueIsAdjusting()) return; - - if ((list.getSelectedValues().length == 0) && - (!useMostRecentCheckBox.isSelected())) { - resolveButton.setEnabled(false); - } else { - resolveButton.setEnabled(true); - } - - - if (list.getSelectedValues().length == 0) { - preferredReportCheckBox.setEnabled(false); - } else { - preferredReportCheckBox.setEnabled(true); - } - - } - } - -} - +package com.sun.javatest.mrep; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import javax.swing.border.Border; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import com.sun.javatest.tool.UIFactory; +import javax.swing.JOptionPane; + +public class ConflictResolutionDialog extends JDialog { + + private String resolveButtonStr = "resolve"; + private String cancelButtonStr = "cancel"; + private String useMostRecentCheckBoxStr = "useMost"; + + private JCheckBox preferredReportCheckBox; + private JCheckBox useMostRecentCheckBox; + + private JButton resolveButton; + private JButton cancelButton; + + private DefaultListModel listModel; + private JList list; + + private int selectedIndex; + private boolean bPreferredReport; + private boolean bUseMostRecent; + + private UIFactory uif; + + private boolean cancel = false; + + + public ConflictResolutionDialog(JFrame parent, String testName, String[] reportsList, boolean bPreferredSet, UIFactory uif) { + super(parent, true); + this.uif = uif; + + setName("conflict"); + setTitle(uif.getI18NString("conflict.name")); + setResizable(false); + + Container cp = getContentPane(); + cp.setLayout(new BorderLayout()); + setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + ConflictResolutionActionListener conflictResolutionListener = new ConflictResolutionActionListener(); + + JLabel text = uif.createLabel("conflict.text"); + text.setText(text.getText() + " " + testName); + + + text.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); + JPanel textPanel = uif.createPanel("conflict.text.panel", new FlowLayout(FlowLayout.CENTER)); + textPanel.add(text); + + Box vBox = Box.createVerticalBox(); + + JLabel chooseText =uif.createLabel("conflict.chooseText"); + //text.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); + JPanel chooseTextPanel = uif.createPanel("conflict.choosePanel", new FlowLayout(FlowLayout.CENTER)); + chooseTextPanel.add(chooseText); + + // Build list box + listModel=new DefaultListModel(); + for (int i=0; i< reportsList.length; i++) { + listModel.addElement(reportsList[i]); + } + list = uif.createList("conflict.list", listModel); + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + From gnu_andrew at member.fsf.org Tue Aug 4 09:45:28 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 4 Aug 2009 17:45:28 +0100 Subject: DOS Line Ending Patches Message-ID: <17c6771e0908040945r7b279b8fue3374f6075e54bc4@mail.gmail.com> When porting the patches for netx to IcedTea7, I noticed that a few of the files were using DOS line endings. So I did a quick scan with find and dos2unix, fixed all files to use UNIX line endings and pushed patches to both 6 and 7 to keep things in sync. I think that's trivial enough to not need approval ;) 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 doko at ubuntu.com Tue Aug 4 09:53:37 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Tue, 04 Aug 2009 16:53:37 +0000 Subject: changeset in /hg/icedtea6: Fix shark build failure with llvm trunk Message-ID: changeset bf12ce0165c0 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=bf12ce0165c0 description: Fix shark build failure with llvm trunk 2009-08-04 Matthias Klose * ports/hotspot/src/share/vm/shark/llvmValue.hpp: Adjust to rev 78061. ConstantInt API moved back to the 2.5 API, ConstantFP partially moved back to the 2.5 API. diffstat: 2 files changed, 16 insertions(+), 36 deletions(-) ChangeLog | 6 +++ ports/hotspot/src/share/vm/shark/llvmValue.hpp | 46 +++++------------------- diffs (96 lines): diff -r e315bc774531 -r bf12ce0165c0 ChangeLog --- a/ChangeLog Tue Aug 04 17:39:11 2009 +0100 +++ b/ChangeLog Tue Aug 04 18:48:17 2009 +0200 @@ -1,3 +1,9 @@ 2009-08-04 Andrew John Hughes + + * ports/hotspot/src/share/vm/shark/llvmValue.hpp: Adjust to rev 78061. + ConstantInt API moved back to the 2.5 API, ConstantFP partially moved + back to the 2.5 API. + 2009-08-04 Andrew John Hughes * rt/net/sourceforge/jnlp/DefaultLaunchHandler.java, diff -r e315bc774531 -r bf12ce0165c0 ports/hotspot/src/share/vm/shark/llvmValue.hpp --- a/ports/hotspot/src/share/vm/shark/llvmValue.hpp Tue Aug 04 17:39:11 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/llvmValue.hpp Tue Aug 04 18:48:17 2009 +0200 @@ -27,50 +27,32 @@ class LLVMValue : public AllStatic { public: static llvm::ConstantInt* jbyte_constant(jbyte value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::jbyte_type(), value, true); -#else return llvm::ConstantInt::get(SharkType::jbyte_type(), value, true); -#endif } static llvm::ConstantInt* jint_constant(jint value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::jint_type(), value, true); -#else return llvm::ConstantInt::get(SharkType::jint_type(), value, true); -#endif } static llvm::ConstantInt* jlong_constant(jlong value) { + return llvm::ConstantInt::get(SharkType::jlong_type(), value, true); + } + static llvm::ConstantFP* jfloat_constant(jfloat value) + { #if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::jlong_type(), value, true); + return llvm::ConstantFP::get(llvm::getGlobalContext(), llvm::APFloat(value)); #else - return llvm::ConstantInt::get(SharkType::jlong_type(), value, true); + return llvm::ConstantFP::get(SharkType::jfloat_type(), value); #endif } -#if SHARK_LLVM_VERSION >= 26 - static llvm::Constant* jfloat_constant(jfloat value) - { - return llvm::getGlobalContext().getConstantFP(SharkType::jfloat_type(), value); - } -#else - static llvm::ConstantFP* jfloat_constant(jfloat value) - { - return llvm::ConstantFP::get(SharkType::jfloat_type(), value); - } -#endif -#if SHARK_LLVM_VERSION >= 26 - static llvm::Constant* jdouble_constant(jdouble value) - { - return llvm::getGlobalContext().getConstantFP(SharkType::jdouble_type(), value); - } -#else static llvm::ConstantFP* jdouble_constant(jdouble value) { +#if SHARK_LLVM_VERSION >= 26 + return llvm::ConstantFP::get(llvm::getGlobalContext(), llvm::APFloat(value)); +#else return llvm::ConstantFP::get(SharkType::jdouble_type(), value); +#endif } -#endif static llvm::ConstantPointerNull* null() { return llvm::ConstantPointerNull::get(SharkType::jobject_type()); @@ -79,18 +61,10 @@ class LLVMValue : public AllStatic { public: static llvm::ConstantInt* bit_constant(int value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(llvm::Type::Int1Ty, value, false); -#else return llvm::ConstantInt::get(llvm::Type::Int1Ty, value, false); -#endif } static llvm::ConstantInt* intptr_constant(intptr_t value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::intptr_type(), value, false); -#else return llvm::ConstantInt::get(SharkType::intptr_type(), value, false); -#endif } }; From gnu_andrew at member.fsf.org Tue Aug 4 12:15:44 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 4 Aug 2009 20:15:44 +0100 Subject: Shark and IcedTea7 In-Reply-To: <17c6771e0908040546s1d37fcceofad26e6fa9a27c11@mail.gmail.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> <4A78219D.8000407@ubuntu.com> <17c6771e0908040546s1d37fcceofad26e6fa9a27c11@mail.gmail.com> Message-ID: <17c6771e0908041215x21be9f61g2eba44398d8cf417@mail.gmail.com> 2009/8/4 Andrew John Hughes : > 2009/8/4 Matthias Klose : >> On 03.08.2009 20:03, Andrew John Hughes wrote: >>> >>> I've forwardported the latest IcedTea6 changest to Shark to 7 and >>> pushed them. ?However, I haven't been able to successfully build with >>> them. ?The version of LLVM with which I was building was apparently >>> now too old. ?It seems the latest SVN may be too new: >>> >>> In file included from ../generated/incls/_sharkBuilder.cpp.incl:3, >>> ? ? ? ? ? ? ? ? ?from >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/sharkBuilder.cpp:27: >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >>> In static member function 'static llvm::ConstantInt* >>> LLVMValue::jbyte_constant(jbyte)': >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:31: >>> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >>> In static member function 'static llvm::ConstantInt* >>> LLVMValue::jint_constant(jint)': >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:39: >>> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >>> In static member function 'static llvm::ConstantInt* >>> LLVMValue::jlong_constant(jlong)': >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:47: >>> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >>> In static member function 'static llvm::Constant* >>> LLVMValue::jfloat_constant(jfloat)': >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:55: >>> error: 'class llvm::LLVMContext' has no member named 'getConstantFP' >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >>> In static member function 'static llvm::Constant* >>> LLVMValue::jdouble_constant(jdouble)': >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:66: >>> error: 'class llvm::LLVMContext' has no member named 'getConstantFP' >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >>> In static member function 'static llvm::ConstantInt* >>> LLVMValue::bit_constant(int)': >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:83: >>> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp: >>> In static member function 'static llvm::ConstantInt* >>> LLVMValue::intptr_constant(intptr_t)': >>> >>> /mnt/builder/shark7/openjdk-ecj/hotspot/src/share/vm/shark/llvmValue.hpp:91: >>> error: 'class llvm::LLVMContext' has no member named 'getConstantInt' >>> make[7]: *** [sharkCompiler.o] Error 1 >>> >>> There was a change to the file containing getConstantInt last Thursday: >>> >>> ------------------------------------------------------------------------ >>> r77583 | evancheng | 2009-07-30 09:44:08 +0100 (Thu, 30 Jul 2009) | 4 >>> lines >>> >>> I've changed the semantics of MERGE_VALUES a bit. It's now allowed to >>> live until scheduling. It's deleted when the scheduler translate DAG >>> nodes to machine instructions. >>> >>> This is currently used by X86 to handle atomic_load_add when the >>> output of the node is not used. I believe there is a better solution. >>> But I find MERGE_VALUES useful for selecting multi-output node when >>> the dead output can be selected as a IMPLICIT_DEF. >>> >>> but this only seems to have altered a comment. >>> >>> Any ideas? ?I've pushed because I assume that those working with Shark >>> have been successfully building it even if I can't... :) >> >> please check with the patch attached. It works for me building current >> IcedTea6. >> >> ?Matthias >> >> > > Managed to do a full build with 2.5. > > I'll try with this after I've done the plugin forwardporting. > -- > 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 > Seems to build with this patch. I'll check 2.5 still works then push. -- 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 Tue Aug 4 15:33:44 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Tue, 04 Aug 2009 22:33:44 +0000 Subject: changeset in /hg/icedtea: Fix shark build failure with llvm trunk Message-ID: changeset 8d06dc9cbd73 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=8d06dc9cbd73 description: Fix shark build failure with llvm trunk 2009-08-04 Matthias Klose * ports/hotspot/src/share/vm/shark/llvmValue.hpp: Adjust to rev 78061. ConstantInt API moved back to the 2.5 API, ConstantFP partially moved back to the 2.5 API. diffstat: 2 files changed, 16 insertions(+), 36 deletions(-) ChangeLog | 6 +++ ports/hotspot/src/share/vm/shark/llvmValue.hpp | 46 +++++------------------- diffs (96 lines): diff -r 40aa38f0fe07 -r 8d06dc9cbd73 ChangeLog --- a/ChangeLog Tue Aug 04 17:43:18 2009 +0100 +++ b/ChangeLog Tue Aug 04 18:48:17 2009 +0200 @@ -1,3 +1,9 @@ 2009-08-04 Andrew John Hughes + + * ports/hotspot/src/share/vm/shark/llvmValue.hpp: Adjust to rev 78061. + ConstantInt API moved back to the 2.5 API, ConstantFP partially moved + back to the 2.5 API. + 2009-08-04 Andrew John Hughes * test/jtreg/com/sun/javatest/exec/FileTable.java, diff -r 40aa38f0fe07 -r 8d06dc9cbd73 ports/hotspot/src/share/vm/shark/llvmValue.hpp --- a/ports/hotspot/src/share/vm/shark/llvmValue.hpp Tue Aug 04 17:43:18 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/llvmValue.hpp Tue Aug 04 18:48:17 2009 +0200 @@ -27,50 +27,32 @@ class LLVMValue : public AllStatic { public: static llvm::ConstantInt* jbyte_constant(jbyte value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::jbyte_type(), value, true); -#else return llvm::ConstantInt::get(SharkType::jbyte_type(), value, true); -#endif } static llvm::ConstantInt* jint_constant(jint value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::jint_type(), value, true); -#else return llvm::ConstantInt::get(SharkType::jint_type(), value, true); -#endif } static llvm::ConstantInt* jlong_constant(jlong value) { + return llvm::ConstantInt::get(SharkType::jlong_type(), value, true); + } + static llvm::ConstantFP* jfloat_constant(jfloat value) + { #if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::jlong_type(), value, true); + return llvm::ConstantFP::get(llvm::getGlobalContext(), llvm::APFloat(value)); #else - return llvm::ConstantInt::get(SharkType::jlong_type(), value, true); + return llvm::ConstantFP::get(SharkType::jfloat_type(), value); #endif } -#if SHARK_LLVM_VERSION >= 26 - static llvm::Constant* jfloat_constant(jfloat value) - { - return llvm::getGlobalContext().getConstantFP(SharkType::jfloat_type(), value); - } -#else - static llvm::ConstantFP* jfloat_constant(jfloat value) - { - return llvm::ConstantFP::get(SharkType::jfloat_type(), value); - } -#endif -#if SHARK_LLVM_VERSION >= 26 - static llvm::Constant* jdouble_constant(jdouble value) - { - return llvm::getGlobalContext().getConstantFP(SharkType::jdouble_type(), value); - } -#else static llvm::ConstantFP* jdouble_constant(jdouble value) { +#if SHARK_LLVM_VERSION >= 26 + return llvm::ConstantFP::get(llvm::getGlobalContext(), llvm::APFloat(value)); +#else return llvm::ConstantFP::get(SharkType::jdouble_type(), value); +#endif } -#endif static llvm::ConstantPointerNull* null() { return llvm::ConstantPointerNull::get(SharkType::jobject_type()); @@ -79,18 +61,10 @@ class LLVMValue : public AllStatic { public: static llvm::ConstantInt* bit_constant(int value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(llvm::Type::Int1Ty, value, false); -#else return llvm::ConstantInt::get(llvm::Type::Int1Ty, value, false); -#endif } static llvm::ConstantInt* intptr_constant(intptr_t value) { -#if SHARK_LLVM_VERSION >= 26 - return llvm::getGlobalContext().getConstantInt(SharkType::intptr_type(), value, false); -#else return llvm::ConstantInt::get(SharkType::intptr_type(), value, false); -#endif } }; From Joe.Darcy at Sun.COM Tue Aug 4 17:51:22 2009 From: Joe.Darcy at Sun.COM (Joe Darcy) Date: Tue, 04 Aug 2009 17:51:22 -0700 Subject: [FOR REVIEW] hs14 merge for OpenJDK6 In-Reply-To: <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> Message-ID: <4A78D78A.5000604@sun.com> Kelly, Do you have any ideas on how to resolve Andrew's push problem? Thanks, -Joe Andrew John Hughes wrote: > 2009/8/2 Joseph D. Darcy : >> Erik Trimble wrote: >>> Andrew John Hughes wrote: >>>> Here it is, the mother of all webrevs: >>>> >>>> http://cr.openjdk.java.net/~andrew/jdk6-hs14-merge/webrev.01/ >>>> >>>> with the patch itself being ~13mb. >>>> >>>> This takes OpenJDK6 up to HotSpot 14 build 16 (see >>>> http://hg.openjdk.java.net/hsx/hsx14/master/), incorporating 553 >>>> changesets from the hs14 repo. and one merge changeset. >>>> I'll shortly push this to http://fuseyism.com/hg/hotspot too. >>>> >>>> Ok to push? >>>> >>> I approve. >>> >> I've taken a look too and don't see anything amiss; approved! >> >> Thanks, >> >> -Joe >> > > > Thanks Erik and Joe for the (very quick) approval! Wasn't expecting > that over a weekend :) > > It looks like pushing isn't working too well though: > > pushing to ssh://andrew at hg.openjdk.java.net/jdk6/jdk6-gate/hotspot > searching for changes > remote: adding changesets > remote: abort: Permission denied: > /hg/jdk6/jdk6-gate/hotspot/.hg/store/00changelog.i > abort: unexpected response: empty string > > I've pushed to various trees before (tl, awt, build, icedtea, cvmi) so > I'm guessing this might be related to some permission issues following > the replacement of hotspot? > > Any ideas? CCing Mark Reinhold as well as he manages hg. > > Thanks, From Tim.Bell at Sun.COM Tue Aug 4 18:08:16 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Tue, 04 Aug 2009 18:08:16 -0700 Subject: [FOR REVIEW] hs14 merge for OpenJDK6 In-Reply-To: <4A78D78A.5000604@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> Message-ID: <4A78DB80.2030504@sun.com> Andrew wrote: >> It looks like pushing isn't working too well though: >> >> pushing to ssh://andrew at hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >> searching for changes >> remote: adding changesets >> remote: abort: Permission denied: >> /hg/jdk6/jdk6-gate/hotspot/.hg/store/00changelog.i >> abort: unexpected response: empty string >> >> I've pushed to various trees before (tl, awt, build, icedtea, cvmi) so >> I'm guessing this might be related to some permission issues following >> the replacement of hotspot? >> >> Any ideas? CCing Mark Reinhold as well as he manages hg. Mark is on vacation, so I took a look at this. The problem seems to be that some files on hg.ojn belong to group 'green' instead of group 'hg'. I reset that. Andrew: please try your push again and let us know how it works. HTH- Tim P.S.: the 'green' group dates back to the early days of the 'Oak' project- long before this thing called Java[tm] was unleashed on the world. It is still around. From gnu_andrew at member.fsf.org Tue Aug 4 18:17:04 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 5 Aug 2009 02:17:04 +0100 Subject: [FOR REVIEW] hs14 merge for OpenJDK6 In-Reply-To: <4A78DB80.2030504@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> Message-ID: <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> 2009/8/5 Tim Bell : > Andrew wrote: > >>> It looks like pushing isn't working too well though: >>> >>> pushing to ssh://andrew at hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >>> searching for changes >>> remote: adding changesets >>> remote: abort: Permission denied: >>> /hg/jdk6/jdk6-gate/hotspot/.hg/store/00changelog.i >>> abort: unexpected response: empty string >>> >>> I've pushed to various trees before (tl, awt, build, icedtea, cvmi) so >>> I'm guessing this might be related to some permission issues following >>> the replacement of hotspot? >>> >>> Any ideas? CCing Mark Reinhold as well as he manages hg. > > Mark is on vacation, so I took a look at this. ?The problem seems to > be that some files on hg.ojn belong to group 'green' instead of group 'hg'. > I reset that. > > Andrew: please try your push again and let us know how it works. > > HTH- > ?Tim > > P.S.: the 'green' group dates back to the early days of the 'Oak' project- > long before this thing called Java[tm] was unleashed on the world. ?It is > still around. > Nope, still the same error :( -- 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 Tim.Bell at Sun.COM Tue Aug 4 18:33:05 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Tue, 04 Aug 2009 18:33:05 -0700 Subject: [FOR REVIEW] hs14 merge for OpenJDK6 In-Reply-To: <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> Message-ID: <4A78E151.9070304@sun.com> Andrew John Hughes wrote: > Nope, still the same error :( So I needed to fix the group ownership and also add group write permissions on a few files. Andrew: Sorry for the delay - Please try it again? Thanks- Tim From gbenson at redhat.com Wed Aug 5 02:14:19 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 5 Aug 2009 10:14:19 +0100 Subject: Shark and IcedTea7 In-Reply-To: <17c6771e0908040546s1d37fcceofad26e6fa9a27c11@mail.gmail.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> <4A78219D.8000407@ubuntu.com> <17c6771e0908040546s1d37fcceofad26e6fa9a27c11@mail.gmail.com> Message-ID: <20090805091419.GA3248@redhat.com> Andrew John Hughes wrote: > Managed to do a full build with 2.5. Cool :) Cheers, Gary -- http://gbenson.net/ From ahughes at redhat.com Wed Aug 5 03:45:56 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 05 Aug 2009 10:45:56 +0000 Subject: changeset in /hg/icedtea: Fix CACAO bootstrap issues with b66. Message-ID: changeset 777441157d99 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=777441157d99 description: Fix CACAO bootstrap issues with b66. 2009-08-04 Andrew John Hughes * Makefile.am: Add new CACAO patches. * patches/cacao/version.patch: Patch classfile version to 51 (Java 1.7). * patches/cacao/versioninfo.patch: Implement JVM_GetVersionInfo. diffstat: 4 files changed, 57 insertions(+), 1 deletion(-) ChangeLog | 9 +++++++++ Makefile.am | 4 +++- patches/cacao/version.patch | 21 +++++++++++++++++++++ patches/cacao/versioninfo.patch | 24 ++++++++++++++++++++++++ diffs (83 lines): diff -r 8d06dc9cbd73 -r 777441157d99 ChangeLog --- a/ChangeLog Tue Aug 04 18:48:17 2009 +0200 +++ b/ChangeLog Wed Aug 05 11:48:16 2009 +0100 @@ -1,3 +1,12 @@ 2009-08-04 Matthias Klose + + * Makefile.am: + Add new CACAO patches. + * patches/cacao/version.patch: + Patch classfile version to 51 (Java 1.7). + * patches/cacao/versioninfo.patch: + Implement JVM_GetVersionInfo. + 2009-08-04 Matthias Klose * ports/hotspot/src/share/vm/shark/llvmValue.hpp: Adjust to rev 78061. diff -r 8d06dc9cbd73 -r 777441157d99 Makefile.am --- a/Makefile.am Tue Aug 04 18:48:17 2009 +0200 +++ b/Makefile.am Wed Aug 05 11:48:16 2009 +0100 @@ -2085,7 +2085,9 @@ ICEDTEA_PATCHES += \ patches/cacao/native-resolve.patch \ patches/cacao/xxoption-warning.patch \ patches/cacao/no-strict-aliasing.patch \ - patches/cacao/openjdk7.patch + patches/cacao/openjdk7.patch \ + patches/cacao/version.patch \ + patches/cacao/versioninfo.patch endif if WITH_CACAO diff -r 8d06dc9cbd73 -r 777441157d99 patches/cacao/version.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/cacao/version.patch Wed Aug 05 11:48:16 2009 +0100 @@ -0,0 +1,21 @@ +diff -Nru cacao.orig2/cacao/src/vm/global.h cacao2/cacao/src/vm/global.h +--- cacao.orig/cacao/src/vm/global.h 2009-08-05 01:12:02.000000000 +0100 ++++ cacao/cacao/src/vm/global.h 2009-08-05 01:51:01.000000000 +0100 +@@ -132,14 +132,14 @@ + + /* some Java related defines **************************************************/ + +-#define JAVA_VERSION "1.5.0" /* this version is supported by CACAO */ +-#define CLASS_VERSION "50.0" ++#define JAVA_VERSION "1.7.0" /* this version is supported by CACAO */ ++#define CLASS_VERSION "51.0" + + + /* Java class file constants **************************************************/ + + #define MAGIC 0xCAFEBABE +-#define MAJOR_VERSION 50 ++#define MAJOR_VERSION 51 + #define MINOR_VERSION 0 + + diff -r 8d06dc9cbd73 -r 777441157d99 patches/cacao/versioninfo.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/cacao/versioninfo.patch Wed Aug 05 11:48:16 2009 +0100 @@ -0,0 +1,24 @@ +diff -Nru cacao.orig/cacao/src/native/vm/openjdk/jvm.c cacao/cacao/src/native/vm/openjdk/jvm.c +--- cacao.orig/cacao/src/native/vm/openjdk/jvm.c 2009-08-05 01:22:03.000000000 +0100 ++++ cacao/cacao/src/native/vm/openjdk/jvm.c 2009-08-05 01:48:46.000000000 +0100 +@@ -3645,7 +3645,19 @@ + + void JVM_GetVersionInfo(JNIEnv* env, jvm_version_info* info, size_t info_size) + { +- log_println("JVM_GetVersionInfo: IMPLEMENT ME!"); ++ TRACEJVMCALLS(("JVM_GetVersionInfo(env=%p, info=%p, info_size=%ld)", env, info, info_size)); ++ ++ memset(info, 0, sizeof(info_size)); ++ ++ int major = atoi(VERSION); ++ const char* minor_string = strchr(VERSION, '.'); ++ int minor = atoi(++minor_string); ++ int micro = atoi(strchr(minor_string, '.') + 1); ++ ++ info->jvm_version = (major << 24) | (minor << 16) | (micro << 8); ++ info->update_version = 0; ++ info->special_update_version = 0; ++ info->is_attachable = 0; + } + + From gnu_andrew at member.fsf.org Wed Aug 5 03:50:34 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 5 Aug 2009 11:50:34 +0100 Subject: Shark and IcedTea7 In-Reply-To: <20090805091419.GA3248@redhat.com> References: <17c6771e0908031103g49058689m5f91772f57d76be7@mail.gmail.com> <4A78219D.8000407@ubuntu.com> <17c6771e0908040546s1d37fcceofad26e6fa9a27c11@mail.gmail.com> <20090805091419.GA3248@redhat.com> Message-ID: <17c6771e0908050350q4b82c8f6rcbfeb6b26c290e7d@mail.gmail.com> 2009/8/5 Gary Benson : > Andrew John Hughes wrote: >> Managed to do a full build with 2.5. > > Cool :) > > Cheers, > Gary > > -- > http://gbenson.net/ > With doko's patch, I also managed this with SVN :) -- 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 Wed Aug 5 03:57:49 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 5 Aug 2009 11:57:49 +0100 Subject: [FOR REVIEW] hs14 merge for OpenJDK6 In-Reply-To: <4A78E151.9070304@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> Message-ID: <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> 2009/8/5 Tim Bell : > Andrew John Hughes wrote: > >> Nope, still the same error :( > > So I needed to fix the group ownership and also add group write permissions > on a few files. > > Andrew: Sorry for the delay - Please try it again? > > Thanks- > > Tim > Thanks Tim, that seems to have fixed the permissions issue. There now seems to be an issue with jcheck, as the merge causes some bugids to be repeated: pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 555 changesets with 4771 changes to 1453 files remote: remote: > Changeset: 100:d821d920b465 remote: > Author: kvn remote: > Date: 2008-03-11 11:04 remote: > remote: > 6623167: C2 crashed in StoreCMNode::Value remote: > Summary: C2 crashed in StoreCMNode::Value because n->in(MemNode::OopStore) is 0. remote: > Reviewed-by: rasbold, never remote: remote: Bugid 6623167 already used in this repository, in revision 20 remote: remote: > Changeset: 104:2c106685d6d0 remote: > Author: dcubed remote: > Date: 2008-03-12 18:06 remote: > remote: > 6497639: 4/3 Profiling Swing application caused JVM crash remote: > Summary: Make RedefineClasses() interoperate better with class sharing. remote: > Reviewed-by: sspitsyn, jmasa remote: remote: Bugid 6497639 already used in this repository, in revision 20 remote: remote: > Changeset: 105:d8b3ef7ee3e5 remote: > Author: dcubed remote: > Date: 2008-03-12 18:07 remote: > remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or assert() failure remote: > Summary: Add should_not_be_cached() to markOop and methodOop and query that status inOopMapCache::lookup() remote: > Reviewed-by: coleenp, sspitsyn, jmasa remote: remote: Bugid 6599425 already used in this repository, in revision 20 remote: remote: > Changeset: 240:65fe2bd88839 remote: > Author: never remote: > Date: 2008-06-05 21:44 remote: > remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse with 1.6.0_05-ea remote: > Reviewed-by: kvn, jrose, rasbold remote: remote: Bugid 6614100 already used in this repository, in revision 20 remote: remote: > Changeset: 286:3e82d72933d0 remote: > Author: xlu remote: > Date: 2008-06-26 14:15 remote: > remote: > 6718830: Hotspot fails to build with gcc 4.3 remote: > Summary: Fixed linux make file and couple adlc code to meet the changes of gcc 4.3 remote: > Reviewed-by: kamg, igor remote: remote: Bugid 6718830 already used in this repository, in revision 32 remote: remote: > Changeset: 289:551f4309f476 remote: > Author: ohair remote: > Date: 2008-07-03 10:46 remote: > remote: > 6695777: Queens.class should be built from source, not put in source repo remote: > Reviewed-by: kvn remote: remote: Bugid 6695777 already used in this repository, in revision 20 remote: remote: > Changeset: 314:54499b980c23 remote: > Author: swamyv remote: > Date: 2008-07-29 13:54 remote: > remote: > 6710791: Remove files or build from source:maf-1_0.jar, jlfg-1_0.jar remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. remote: > Reviewed-by: poonam, jjh remote: remote: Bugid 6710791 already used in this repository, in revision 20 remote: remote: > Changeset: 360:fa4d1d240383 remote: > Author: never remote: > Date: 2008-08-26 15:49 remote: > remote: > 6741642: bad enum definition in ciTypeFlow.hpp remote: > Reviewed-by: rasbold, martin remote: > Contributed-by: doko at ubuntu.com remote: remote: Bugid 6741642 already used in this repository, in revision 22 remote: remote: > Changeset: 589:748572b86af6 remote: > Author: never remote: > Date: 2009-04-07 14:46 remote: > remote: > 6636360: compiler/6595044/Main.java test fails with 64bit java on solaris-sparcv9 with SIGSEGV remote: > Reviewed-by: kvn, twisti remote: remote: Bugid 6636360 already used in this repository, in revision 29 remote: remote: abort: pretxnchangegroup.0.jcheck hook failed remote: transaction abort! remote: rollback completed abort: unexpected response: empty string Is there a way of getting it to ignore these for this one push? I don't know of a way to just pull out these nine changesets from the 555 waiting to go... -- 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 ahughes at redhat.com Wed Aug 5 06:17:34 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 05 Aug 2009 13:17:34 +0000 Subject: changeset in /hg/icedtea: Enable warnings only when --enable-war... Message-ID: changeset 7a7436abd808 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=7a7436abd808 description: Enable warnings only when --enable-warnings is given. 2009-08-04 Andrew John Hughes * Makefile.am: Remove unnecessary whitespace. * acinclude.m4: (IT_CHECK_ENABLE_WARNINGS): Add --enable-warnings option to turn javac warnings on and off. * configure.ac: Enable IT_CHECK_ENABLE_WARNINGS macro. * javac.in: Turn on warnings only when specified. diffstat: 5 files changed, 43 insertions(+), 3 deletions(-) ChangeLog | 12 ++++++++++++ Makefile.am | 2 +- acinclude.m4 | 17 +++++++++++++++++ configure.ac | 1 + javac.in | 14 ++++++++++++-- diffs (90 lines): diff -r 777441157d99 -r 7a7436abd808 ChangeLog --- a/ChangeLog Wed Aug 05 11:48:16 2009 +0100 +++ b/ChangeLog Wed Aug 05 14:19:58 2009 +0100 @@ -1,3 +1,15 @@ 2009-08-04 Andrew John Hughes + + * Makefile.am: + Remove unnecessary whitespace. + * acinclude.m4: + (IT_CHECK_ENABLE_WARNINGS): Add --enable-warnings + option to turn javac warnings on and off. + * configure.ac: + Enable IT_CHECK_ENABLE_WARNINGS macro. + * javac.in: + Turn on warnings only when specified. + 2009-08-04 Andrew John Hughes * Makefile.am: diff -r 777441157d99 -r 7a7436abd808 Makefile.am --- a/Makefile.am Wed Aug 05 11:48:16 2009 +0100 +++ b/Makefile.am Wed Aug 05 14:19:58 2009 +0100 @@ -3232,7 +3232,7 @@ NPPLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedT IcedTeaPluginUtils.o IcedTeaNPPlugin_objects: - cd $(NPPLUGIN_DIR); \ + cd $(NPPLUGIN_DIR); \ if [ -e $(abs_top_srcdir)/.hg ] && which $(HG) >/dev/null; then \ revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{rev}')`" ; \ fi ; \ diff -r 777441157d99 -r 7a7436abd808 acinclude.m4 --- a/acinclude.m4 Wed Aug 05 11:48:16 2009 +0100 +++ b/acinclude.m4 Wed Aug 05 14:19:58 2009 +0100 @@ -1630,3 +1630,20 @@ AC_SUBST(USING_ECJ) AC_SUBST(USING_ECJ) AC_PROVIDE([$0])dnl ]) + +AC_DEFUN([IT_CHECK_ENABLE_WARNINGS], +[ + AC_MSG_CHECKING(whether to enable Java compiler warnings) + AC_ARG_ENABLE([warnings], + [AS_HELP_STRING(--enable-warnings,produce warnings from javac/ecj [[default=no]])], + [ + ENABLE_WARNINGS="${enableval}" + ], + [ + ENABLE_WARNINGS=no + ]) + + AC_MSG_RESULT(${ENABLE_WARNINGS}) + AM_CONDITIONAL(ENABLE_WARNINGS, test x"${ENABLE_WARNINGS}" = "xyes") + AC_SUBST(ENABLE_WARNINGS) +]) diff -r 777441157d99 -r 7a7436abd808 configure.ac --- a/configure.ac Wed Aug 05 11:48:16 2009 +0100 +++ b/configure.ac Wed Aug 05 14:19:58 2009 +0100 @@ -231,6 +231,7 @@ IT_LIBRARY_CHECK IT_LIBRARY_CHECK IT_SCANNER_CHECK IT_PR40630_CHECK +IT_CHECK_ENABLE_WARNINGS FIND_RHINO_JAR WITH_OPENJDK_SRC_ZIP diff -r 777441157d99 -r 7a7436abd808 javac.in --- a/javac.in Wed Aug 05 11:48:16 2009 +0100 +++ b/javac.in Wed Aug 05 14:19:58 2009 +0100 @@ -3,8 +3,18 @@ use constant NO_DUP_ARGS => qw(-source - use constant NO_DUP_ARGS => qw(-source -target -d -encoding); use constant STRIP_ARGS => qw(-Werror); -my $ECJ_WARNINGS="-warn:-deprecation,serial,unused,warningToken"; -my $JAVAC_WARNINGS="-Xlint:unchecked,cast,divzero,empty,finally,overrides"; +my ($ECJ_WARNINGS, $JAVAC_WARNINGS); + +if ("@ENABLE_WARNINGS@" eq "yes") +{ + $ECJ_WARNINGS="-warn:-deprecation,serial,unused,warningToken"; + $JAVAC_WARNINGS="-Xlint:unchecked,cast,divzero,empty,finally,overrides"; +} +else +{ + $ECJ_WARNINGS="-nowarn"; + $JAVAC_WARNINGS="-nowarn"; +} my @bcoption; push @bcoption, '-bootclasspath', glob '@SYSTEM_JDK_DIR@/jre/lib/rt.jar' From ahughes at redhat.com Wed Aug 5 07:19:55 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 05 Aug 2009 14:19:55 +0000 Subject: changeset in /hg/icedtea: Security patches for netx+plugin. Message-ID: changeset 77ea95965bad in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=77ea95965bad description: Security patches for netx+plugin. 2009-08-05 Lillian Angel * plugin/icedtea/netscape/javascript/JSObject.java: Security patch applied to disallow the ability to run unsigned code as signed under some cases. * plugin/icedtea/sun/applet/PluginAppletSecurityContext.java: Likewise. * netx/net/sourceforge/jnlp/SecurityDesc.java: Likewise. * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Likewise. * plugin/icedtea/netscape/javascript/JSObjectCreatePermission.java: Likewise. * netx/netscape/javascript/JSObjectCreatePermission.java: Likewise. diffstat: 7 files changed, 360 insertions(+), 180 deletions(-) ChangeLog | 13 netx/net/sourceforge/jnlp/SecurityDesc.java | 24 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 366 +++++----- netx/netscape/javascript/JSObjectCreatePermission.java | 47 + plugin/icedtea/netscape/javascript/JSObject.java | 37 - plugin/icedtea/netscape/javascript/JSObjectCreatePermission.java | 47 + plugin/icedtea/sun/applet/PluginAppletSecurityContext.java | 6 diffs (truncated from 826 to 500 lines): diff -r adadd58eff31 -r 77ea95965bad ChangeLog --- a/ChangeLog Wed Aug 05 15:02:51 2009 +0100 +++ b/ChangeLog Wed Aug 05 15:22:13 2009 +0100 @@ -1,3 +1,16 @@ 2009-08-04 Andrew John Hughes + + * plugin/icedtea/netscape/javascript/JSObject.java: Security patch + applied to disallow the ability to run unsigned code as + signed under some cases. + * plugin/icedtea/sun/applet/PluginAppletSecurityContext.java: + Likewise. + * netx/net/sourceforge/jnlp/SecurityDesc.java: Likewise. + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Likewise. + * plugin/icedtea/netscape/javascript/JSObjectCreatePermission.java: + Likewise. + * netx/netscape/javascript/JSObjectCreatePermission.java: Likewise. + 2009-08-04 Andrew John Hughes * Makefile.am: diff -r adadd58eff31 -r 77ea95965bad netx/net/sourceforge/jnlp/SecurityDesc.java --- a/netx/net/sourceforge/jnlp/SecurityDesc.java Wed Aug 05 15:02:51 2009 +0100 +++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Wed Aug 05 15:22:13 2009 +0100 @@ -166,6 +166,30 @@ public class SecurityDesc { return permissions; } + + /** + * Returns a PermissionCollection containing the sandbox permissions + */ + public PermissionCollection getSandBoxPermissions() { + + Permissions permissions = new Permissions(); + + for (int i=0; i < sandboxPermissions.length; i++) + permissions.add(sandboxPermissions[i]); + + if (downloadHost != null) + permissions.add(new SocketPermission(downloadHost, + "connect, accept")); + + // properties + PropertyDesc props[] = file.getResources().getProperties(); + for (int i=0; i < props.length; i++) { + // should only allow jnlp.* properties if in sandbox? + permissions.add(new PropertyPermission(props[i].getKey(), "read,write")); + } + + return permissions; + } } diff -r adadd58eff31 -r 77ea95965bad netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Aug 05 15:02:51 2009 +0100 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Aug 05 15:22:13 2009 +0100 @@ -1,15 +1,15 @@ -// +// // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. -// +// // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. -// +// // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -66,7 +66,7 @@ import sun.misc.JarIndex; * security context when the classloader was created. * * @author Jon A. Maxwell (JAM) - initial author - * @version $Revision: 1.20 $ + * @version $Revision: 1.20 $ */ public class JNLPClassLoader extends URLClassLoader { @@ -115,29 +115,29 @@ public class JNLPClassLoader extends URL /** the security section */ private SecurityDesc security; - + /** Permissions granted by the user during runtime. */ private ArrayList runtimePermissions = new ArrayList(); /** all jars not yet part of classloader or active */ private List available = new ArrayList(); - /** all of the jar files that were verified */ - private ArrayList verifiedJars = null; - - /** all of the jar files that were not verified */ - private ArrayList unverifiedJars = null; - - /** the jarsigner tool to verify our jars */ - private JarSigner js = null; - - private boolean signing = false; - - /** ArrayList containing jar indexes for various jars available to this classloader */ - private ArrayList jarIndexes = new ArrayList(); - - /** File entries in the jar files available to this classloader */ - private TreeSet jarEntries = new TreeSet(); + /** all of the jar files that were verified */ + private ArrayList verifiedJars = null; + + /** all of the jar files that were not verified */ + private ArrayList unverifiedJars = null; + + /** the jarsigner tool to verify our jars */ + private JarSigner js = null; + + private boolean signing = false; + + /** ArrayList containing jar indexes for various jars available to this classloader */ + private ArrayList jarIndexes = new ArrayList(); + + /** File entries in the jar files available to this classloader */ + private TreeSet jarEntries = new TreeSet(); /** * Create a new JNLPClassLoader from the specified file. @@ -167,41 +167,41 @@ 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 - - /** - * 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()); - } - } - } - + /** + * 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 + + /** + * 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()); + } + } + } + /** * Returns a JNLP classloader for the specified JNLP file. * @@ -215,12 +215,12 @@ public class JNLPClassLoader extends URL if (location != null) loader = (JNLPClassLoader) urlToLoader.get(location); - try { - if (loader == null) - loader = new JNLPClassLoader(file, policy); - } catch (LaunchException e) { - throw e; - } + try { + if (loader == null) + loader = new JNLPClassLoader(file, policy); + } catch (LaunchException e) { + throw e; + } if (file.getInformation().isSharingAllowed()) urlToLoader.put(location, loader); @@ -230,7 +230,7 @@ public class JNLPClassLoader extends URL /** * Returns a JNLP classloader for the JNLP file at the specified - * location. + * location. * * @param location the file's location * @param version the file's version @@ -256,17 +256,17 @@ public class JNLPClassLoader extends URL loaderList.add(this); - //if (ext != null) { - for (int i=0; i < ext.length; i++) { - try { - JNLPClassLoader loader = getInstance(ext[i].getLocation(), ext[i].getVersion(), updatePolicy); - loaderList.add(loader); - } - catch (Exception ex) { - ex.printStackTrace(); - } - } - //} + //if (ext != null) { + for (int i=0; i < ext.length; i++) { + try { + JNLPClassLoader loader = getInstance(ext[i].getLocation(), ext[i].getVersion(), updatePolicy); + loaderList.add(loader); + } + catch (Exception ex) { + ex.printStackTrace(); + } + } + //} loaders = (JNLPClassLoader[]) loaderList.toArray(new JNLPClassLoader[ loaderList.size()]); } @@ -283,10 +283,10 @@ public class JNLPClassLoader extends URL jars[i].getVersion()); if (JNLPRuntime.isDebug()) { - if (p == null) - System.out.println("Unable to add permission for " + jars[i].getLocation()); - else - System.out.println("Permission added: " + p.toString()); + if (p == null) + System.out.println("Unable to add permission for " + jars[i].getLocation()); + else + System.out.println("Permission added: " + p.toString()); } if (p != null) resourcePermissions.add(p); @@ -299,14 +299,14 @@ public class JNLPClassLoader extends URL */ void initializeResources() throws LaunchException { JARDesc jars[] = resources.getJARs(); - if (jars == null || jars.length == 0) - return; - /* - if (jars == null || jars.length == 0) { - throw new LaunchException(null, null, R("LSFatal"), - R("LCInit"), R("LFatalVerification"), "No jars!"); - } - */ + if (jars == null || jars.length == 0) + return; + /* + if (jars == null || jars.length == 0) { + throw new LaunchException(null, null, R("LSFatal"), + R("LCInit"), R("LFatalVerification"), "No jars!"); + } + */ List initialJars = new ArrayList(); for (int i=0; i < jars.length; i++) { @@ -317,7 +317,7 @@ public class JNLPClassLoader extends URL initialJars.add(jars[i]); // regardless of part tracker.addResource(jars[i].getLocation(), - jars[i].getVersion(), + jars[i].getVersion(), jars[i].isCacheable() ? JNLPRuntime.getDefaultUpdatePolicy() : UpdatePolicy.FORCE ); } @@ -325,42 +325,42 @@ public class JNLPClassLoader extends URL if (strict) fillInPartJars(initialJars); // add in each initial part's lazy jars - if (JNLPRuntime.isVerifying()) { - - JarSigner js; - waitForJars(initialJars); //download the jars first. - - try { - js = verifyJars(initialJars); - } catch (Exception e) { - //we caught an Exception from the JarSigner class. - //Note: one of these exceptions could be from not being able - //to read the cacerts or trusted.certs files. - e.printStackTrace(); - throw new LaunchException(null, null, R("LSFatal"), - R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo")); - } - - //Case when at least one jar has some signing - if (js.anyJarsSigned()){ - signing = true; - - //user does not trust this publisher - if (!js.getAlreadyTrustPublisher()) { - checkTrustWithUser(js); - } else { - /** - * If the user trusts this publisher (i.e. the publisher's certificate - * is in the user's trusted.certs file), we do not show any dialogs. - */ - } - } else { - - signing = false; - //otherwise this jar is simply unsigned -- make sure to ask - //for permission on certain actions - } - } + if (JNLPRuntime.isVerifying()) { + + JarSigner js; + waitForJars(initialJars); //download the jars first. + + try { + js = verifyJars(initialJars); + } catch (Exception e) { + //we caught an Exception from the JarSigner class. + //Note: one of these exceptions could be from not being able + //to read the cacerts or trusted.certs files. + e.printStackTrace(); + throw new LaunchException(null, null, R("LSFatal"), + R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo")); + } + + //Case when at least one jar has some signing + if (js.anyJarsSigned()){ + signing = true; + + //user does not trust this publisher + if (!js.getAlreadyTrustPublisher()) { + checkTrustWithUser(js); + } else { + /** + * If the user trusts this publisher (i.e. the publisher's certificate + * is in the user's trusted.certs file), we do not show any dialogs. + */ + } + } else { + + signing = false; + //otherwise this jar is simply unsigned -- make sure to ask + //for permission on certain actions + } + } activateJars(initialJars); } @@ -370,7 +370,7 @@ public class JNLPClassLoader extends URL boolean b = SecurityWarningDialog.showCertWarningDialog( SecurityWarningDialog.AccessType.UNVERIFIED, file, js); if (!b) - throw new LaunchException(null, null, R("LSFatal"), + throw new LaunchException(null, null, R("LSFatal"), R("LCLaunching"), R("LNotVerified"), ""); } else if (js.getRootInCacerts()) { //root cert is in cacerts boolean b = false; @@ -435,11 +435,29 @@ public class JNLPClassLoader extends URL // access w/o security dialog once we actually check certificates. // copy security permissions from SecurityDesc element - if (security != null) { - Enumeration e = security.getPermissions().elements(); - while (e.hasMoreElements()) - result.add((Permission) e.nextElement()); - } + if (security != null) { + // Security desc. is used only to track security settings for the + // application. However, an application may comprise of multiple + // jars, and as such, security must be evaluated on a per jar basis. + + // set default perms + PermissionCollection permissions = security.getSandBoxPermissions(); + + // If more than default is needed, evaluate based on codesource + if (security.getSecurityType().equals(SecurityDesc.ALL_PERMISSIONS) || + security.getSecurityType().equals(SecurityDesc.J2EE_PERMISSIONS)) { + + if (cs.getCodeSigners() != null) { + permissions = security.getPermissions(); + } + } + + Enumeration e = permissions.elements(); + while (e.hasMoreElements()) + result.add(e.nextElement()); + } + + // add in permission to read the cached JAR files for (int i=0; i < resourcePermissions.size(); i++) @@ -447,15 +465,15 @@ public class JNLPClassLoader extends URL // add in the permissions that the user granted. for (int i=0; i < runtimePermissions.size(); i++) - result.add(runtimePermissions.get(i)); + result.add(runtimePermissions.get(i)); return result; } protected void addPermission(Permission p) { - runtimePermissions.add(p); - } - + runtimePermissions.add(p); + } + /** * Adds to the specified list of JARS any other JARs that need * to be loaded at the same time as the JARs specified (ie, are @@ -501,25 +519,25 @@ public class JNLPClassLoader extends URL URL location = jar.getLocation(); // non-cacheable, use source location if (localFile != null) { location = localFile.toURL(); // cached file - - // This is really not the best way.. but we need some way for - // PluginAppletViewer::getCachedImageRef() to check if the image - // is available locally, and it cannot use getResources() because - // that prefetches the resource, which confuses MediaTracker.waitForAll() - // which does a wait(), waiting for notification (presumably + + // This is really not the best way.. but we need some way for + // PluginAppletViewer::getCachedImageRef() to check if the image + // is available locally, and it cannot use getResources() because + // that prefetches the resource, which confuses MediaTracker.waitForAll() + // which does a wait(), waiting for notification (presumably // thrown after a resource is fetched). This bug manifests itself // particularly when using The FileManager applet from Webmin. - + JarFile jarFile = new JarFile(localFile); Enumeration e = jarFile.entries(); while (e.hasMoreElements()) { - + JarEntry je = (JarEntry) e.nextElement(); - - // another jar in my jar? it is more likely than you think + + // another jar in my jar? it is more likely than you think if (je.getName().endsWith(".jar")) { - // We need to extract that jar so that it can be loaded - // (inline loading with "jar:..!/..." path will not work + // We need to extract that jar so that it can be loaded + // (inline loading with "jar:..!/..." path will not work // with standard classloader methods) String extractedJarLocation = localFile.getParent() + "/" + je.getName(); @@ -564,7 +582,7 @@ public class JNLPClassLoader extends URL addURL(location); - // there is currently no mechanism to cache files per + // there is currently no mechanism to cache files per From ahughes at redhat.com Wed Aug 5 07:19:54 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 05 Aug 2009 14:19:54 +0000 Subject: changeset in /hg/icedtea: Fix make distcheck issue with IcedTeaN... Message-ID: changeset adadd58eff31 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=adadd58eff31 description: Fix make distcheck issue with IcedTeaNPPlugin.cc. 2009-08-04 Andrew John Hughes * Makefile.am: Remove IcedTeaNPPlugin.cc from EXTRA_DIST as now under plugin directory tree. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 6 ++++++ Makefile.am | 1 - diffs (24 lines): diff -r 7a7436abd808 -r adadd58eff31 ChangeLog --- a/ChangeLog Wed Aug 05 14:19:58 2009 +0100 +++ b/ChangeLog Wed Aug 05 15:02:51 2009 +0100 @@ -1,3 +1,9 @@ 2009-08-04 Andrew John Hughes + + * Makefile.am: + Remove IcedTeaNPPlugin.cc from EXTRA_DIST + as now under plugin directory tree. + 2009-08-04 Andrew John Hughes * Makefile.am: diff -r 7a7436abd808 -r adadd58eff31 Makefile.am --- a/Makefile.am Wed Aug 05 14:19:58 2009 +0100 +++ b/Makefile.am Wed Aug 05 15:02:51 2009 +0100 @@ -1494,7 +1494,6 @@ EXTRA_DIST = $(GENERATED_FILES) $(top_sr jconsole.desktop policytool.desktop \ $(JTREG_SRCS) \ IcedTeaPlugin.cc \ - IcedTeaNPPlugin.cc \ HACKING $(PULSEAUDIO_SRCS) fsg.sh \ plugin $(top_srcdir)/netx hotspot.map autogen.sh From omajid at redhat.com Wed Aug 5 08:28:04 2009 From: omajid at redhat.com (Omair Majid) Date: Wed, 05 Aug 2009 11:28:04 -0400 Subject: RFC: Netx - fix caching for compressed files Message-ID: <4A79A504.4010004@redhat.com> Hi, When I added support for compression, I believe I accidentally broke caching of compressed files. The way compression works is that Netx tells the server that it can accept the file encoded as pack200-gzip and gzip, when it asks for a file foo. In the case of compressed files, Netx saves the compressed file as foo.gz and then uncompress it as foo and goes on happily using it. When Netx is started next time, it tries to use the cached file foo. But first it checks that the cache is up to date by comparing the timestamps and the file sizes of the local file and the remote file. Because the remote file foo is compressed and the local file foo is uncompressed, the file sizes are very different. Netx decides that the file hasnt been cached, and redownloads the file. The attached patch caches every downloaded file foo as foo.cache. It then processes (currently that's just uncompressing or copyting) foo.cache to generate foo. When it wants to check if the cache is up to date, it uses foo.cache as the local file instead of foo. One potential issue is that we are now using up twice the disk space if the remote files arent compressed. However, this brings us the flexibility that the only code conditional on the file compression and names is the code that downloads the file. ChangeLog 2009-08-05 Omair Majid * rt/net/sourceforge/jnlp/JNLPFile.java (openURL): Throw the cause of the original exception rather than just the message. * rt/net/sourceforge/jnlp/Launcher.java (launchApplication): Use getProcessedCacheFile. * rt/net/sourceforge/jnlp/cache/CacheEntry.java (CacheEntry): Use getOriginalCacheFile. (isCached): Likewise. * rt/net/sourceforge/jnlp/cache/CacheUtil.java (getReadPermission): Use getProcessedCacheFile. (getCacheFile): Renamed to... (getProcessedCacheFile): New function. (getOriginalCacheFile): New function. (getOutputStream): Renamed to. (getProcessedOutputStream): New function. (getOriginalOutputStream): New function. (getProcessedInputStream): Likewise. (getOriginalInputStream): Likewise. * rt/net/sourceforge/jnlp/cache/ResourceTracker.java (checkCache): Use getProcessedCacheFile for the local file name. (downloadResource): Always save file with a different file name, and uncompress or copy it to a file with the right name. (initializeResource): Use getProcessedCacheFile for the local file name. Any comments? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: netx-fix-caching.patch Type: text/x-patch Size: 14131 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090805/5aadc868/netx-fix-caching.patch From doko at ubuntu.com Wed Aug 5 10:41:04 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Wed, 05 Aug 2009 17:41:04 +0000 Subject: changeset in /hg/icedtea6: 2009-08-05 Matthias Klose changeset 2f1cdccc2d63 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2f1cdccc2d63 description: 2009-08-05 Matthias Klose * Makefile.am (ABS_SOURCE_DIRS): Add $(abs_top_builddir)/rt. diffstat: 2 files changed, 5 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ Makefile.am | 2 +- diffs (23 lines): diff -r 769586c385c0 -r 2f1cdccc2d63 ChangeLog --- a/ChangeLog Wed Aug 05 13:19:03 2009 -0400 +++ b/ChangeLog Wed Aug 05 19:35:37 2009 +0200 @@ -1,3 +1,7 @@ 2009-08-05 Lillian Angel + + * Makefile.am (ABS_SOURCE_DIRS): Add $(abs_top_builddir)/rt. + 2009-08-05 Lillian Angel * rt/netscape/javascript/JSObjectCreatePermission.java: Removed. diff -r 769586c385c0 -r 2f1cdccc2d63 Makefile.am --- a/Makefile.am Wed Aug 05 13:19:03 2009 -0400 +++ b/Makefile.am Wed Aug 05 19:35:37 2009 +0200 @@ -1469,7 +1469,7 @@ hotspot-tools-source-files.txt: stamps/r find hotspot-tools -name '*.java' | sort > $@ mkdir -p lib/hotspot-tools -ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_srcdir)/rt +ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_builddir)/rt:$(abs_top_srcdir)/rt stamps/hotspot-tools-class-files.stamp: hotspot-tools-source-files.txt if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ From mark at klomp.org Wed Aug 5 11:40:54 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 05 Aug 2009 18:40:54 +0000 Subject: changeset in /hg/icedtea6: Add systemtap java method tracing sup... Message-ID: changeset 8a0ea636a6e5 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8a0ea636a6e5 description: Add systemtap java method tracing support. 2009-08-05 Mark Wielaard * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. * tapset/hotspot.stp.in: Add tapset functions for hotspot.method_entry, hotspot.method_return, hotspot.compiled_method_load and hotspot.compiled_method_unload. * NEWS: Metion new support for java method tracing. * INSTALL: Add that java method tracing support needs systemtap 0.9.9 or higher. diffstat: 5 files changed, 93 insertions(+), 25 deletions(-) ChangeLog | 10 ++++ INSTALL | 1 NEWS | 4 + patches/icedtea-systemtap.patch | 18 -------- tapset/hotspot.stp.in | 85 +++++++++++++++++++++++++++++++++++---- diffs (162 lines): diff -r 2f1cdccc2d63 -r 8a0ea636a6e5 ChangeLog --- a/ChangeLog Wed Aug 05 19:35:37 2009 +0200 +++ b/ChangeLog Wed Aug 05 20:43:00 2009 +0200 @@ -1,3 +1,13 @@ 2009-08-05 Matthias Klose + + * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. + * tapset/hotspot.stp.in: Add tapset functions for + hotspot.method_entry, hotspot.method_return, + hotspot.compiled_method_load and hotspot.compiled_method_unload. + * NEWS: Metion new support for java method tracing. + * INSTALL: Add that java method tracing support needs systemtap + 0.9.9 or higher. + 2009-08-05 Matthias Klose * Makefile.am (ABS_SOURCE_DIRS): Add $(abs_top_builddir)/rt. diff -r 2f1cdccc2d63 -r 8a0ea636a6e5 INSTALL --- a/INSTALL Wed Aug 05 19:35:37 2009 +0200 +++ b/INSTALL Wed Aug 05 20:43:00 2009 +0200 @@ -48,6 +48,7 @@ you cannot move that to another location you cannot move that to another location without adjusting the paths in the tapset/hotspot.stp file. For example: --enable-systemtap --with-abs-install-dir=/usr/lib/jvm/java-1.6.0-openjdk +(Java method tracing works starting with systemtap 0.9.9) See ./configure --help if you need to override the defaults. diff -r 2f1cdccc2d63 -r 8a0ea636a6e5 NEWS --- a/NEWS Wed Aug 05 19:35:37 2009 +0200 +++ b/NEWS Wed Aug 05 20:43:00 2009 +0200 @@ -1,3 +1,7 @@ New in release 1.5 (2009-05-20) +New in release 1.6 (UNRELEASED) + +- Added java method tracing using systemtap version 0.9.9+. + New in release 1.5 (2009-05-20) - Static trace support through systemtap. diff -r 2f1cdccc2d63 -r 8a0ea636a6e5 patches/icedtea-systemtap.patch --- a/patches/icedtea-systemtap.patch Wed Aug 05 19:35:37 2009 +0200 +++ b/patches/icedtea-systemtap.patch Wed Aug 05 20:43:00 2009 +0200 @@ -9,24 +9,6 @@ diff -r 945bf7540697 make/linux/makefile +CFLAGS += -DDTRACE_ENABLED + +# It doesn't support HAVE_DTRACE_H though. -diff -r 945bf7540697 src/share/vm/code/nmethod.cpp ---- openjdk/hotspot/src/share/vm/code/nmethod.cpp Thu Jan 22 14:42:01 2009 -0800 -+++ openjdk/hotspot/src/share/vm/code/nmethod.cpp Mon Feb 02 13:47:34 2009 +0100 -@@ -22,6 +22,14 @@ - * - */ - -+#ifdef __GNUC__ -+// GCC seems to have some trouble with the inserted probes. -+// error: _probe_compiled__method__unload causes a section type conflict -+// error: compiled__method__unload_probe_name causes a section type conflict -+// So disable probe insertion for now. -+#undef DTRACE_ENABLED -+#endif -+ - # include "incls/_precompiled.incl" - # include "incls/_nmethod.cpp.incl" - diff -r 945bf7540697 src/share/vm/prims/jni.cpp --- openjdk/hotspot/src/share/vm/prims/jni.cpp Thu Jan 22 14:42:01 2009 -0800 +++ openjdk/hotspot/src/share/vm/prims/jni.cpp Mon Feb 02 13:47:34 2009 +0100 diff -r 2f1cdccc2d63 -r 8a0ea636a6e5 tapset/hotspot.stp.in --- a/tapset/hotspot.stp.in Wed Aug 05 19:35:37 2009 +0200 +++ b/tapset/hotspot.stp.in Wed Aug 05 20:43:00 2009 +0200 @@ -409,13 +409,84 @@ probe hotspot.monitor_contended_exit = name, thread_id, id, class); } -// Doesn't work yet. -// method__entry -// method__return - -// Missing -// compiled__method__load -// compiled__method__unload +/* hotspot.method_entry (extended probe) + Triggers when a method is entered. + Sets thread_id to the current java thread id, class to the name of + the class, method to the name of the method, and sig to the + signature string of the method. + Needs -XX:+ExtendedDTraceProbes. +*/ +probe hotspot.method_entry = + process("@ABS_CLIENT_LIBJVM_SO@").mark("method__entry"), + process("@ABS_SERVER_LIBJVM_SO@").mark("method__entry") +{ + name = "method_entry"; + thread_id = $arg1; + class = user_string_n($arg2, $arg3); + method = user_string_n($arg4, $arg5); + sig = user_string_n($arg6, $arg7); + probestr = sprintf("%s(thread_id=%d,class='%s',method='%s',sig='%s')", + name, thread_id, class, method, sig); +} + +/* hotspot.method_return (extended probe) + Triggers when a method returns. + Sets thread_id to the current java thread id, class to the name of + the class, method to the name of the method, and sig to the + signature string of the method. + Needs -XX:+ExtendedDTraceProbes. +*/ +probe hotspot.method_return = + process("@ABS_CLIENT_LIBJVM_SO@").mark("method__return"), + process("@ABS_SERVER_LIBJVM_SO@").mark("method__return") +{ + name = "method_return"; + thread_id = $arg1; + class = user_string_n($arg2, $arg3); + method = user_string_n($arg4, $arg5); + sig = user_string_n($arg6, $arg7); + probestr = sprintf("%s(thread_id=%d,class='%s',method='%s',sig='%s')", + name, thread_id, class, method, sig); +} + +/* hotspot.compiled_method_load + Triggers when a compiled method is loaded. + Sets class to the name of the class, method to the name of the + method, sig to the signature string of the method, code to the + address where the code is loaded and size to the number of bytes of + code. +*/ +probe hotspot.compiled_method_load = + process("@ABS_CLIENT_LIBJVM_SO@").mark("compiled__method__load"), + process("@ABS_SERVER_LIBJVM_SO@").mark("compiled__method__load") +{ + name = "compiled_method_load"; + class = user_string_n($arg1, $arg2); + method = user_string_n($arg3, $arg4); + sig = user_string_n($arg5, $arg6); + code = $arg7; + size = $arg8; + probestr = sprintf("%s(class='%s',method='%s',sig='%s',code=0x%x,size=%d)", + name, class, method, sig, code, size); +} + +/* hotspot.compiled_method_unload + Triggers when a compiled method is unloaded. + Sets class to the name of the class, method to the name of the + method, sig to the signature string of the method. +*/ +probe hotspot.compiled_method_unload = + process("@ABS_CLIENT_LIBJVM_SO@").mark("compiled__method__unload"), + process("@ABS_SERVER_LIBJVM_SO@").mark("compiled__method__unload") +{ + name = "compiled_method_unload"; + class = user_string_n($arg1, $arg2); + method = user_string_n($arg3, $arg4); + sig = user_string_n($arg5, $arg6); + probestr = sprintf("%s(class='%s',method='%s',sig='%s')", + name, class, method, sig); +} + // Extra private probes // hashtable__new_entry From mjw at redhat.com Wed Aug 5 11:54:23 2009 From: mjw at redhat.com (Mark Wielaard) Date: Wed, 05 Aug 2009 20:54:23 +0200 Subject: Add support for java method tracing with systemtap Message-ID: <1249498463.3438.67.camel@springer.wildebeest.org> Hi, The latest release of systemtap (0.9.9) adds better support for handling dtrace markers in user space programs as also used in hotspot. The following patch adds some cleanups so these probes are activated and provides a nice tapset to use with it. 2009-08-05 Mark Wielaard * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. * tapset/hotspot.stp.in: Add tapset functions for hotspot.method_entry, hotspot.method_return, hotspot.compiled_method_load and hotspot.compiled_method_unload. * NEWS: Metion new support for java method tracing. * INSTALL: Add that java method tracing support needs systemtap 0.9.9 or higher. With this you can now do stuff like: $ stap -e \ 'probe hotspot.method_entry {log(thread_indent(1) . "=> " . class . "." . method . sig)} probe hotspot.method_return {log(thread_indent(-1) . "<= " . class . "." . method . sig)}' \ -c 'java -XX:+ExtendedDTraceProbes Hello' And get output like: 0 java(26933):=> Hello.main([Ljava/lang/String;)V 9 java(26933): => java/lang/ClassLoader.checkPackageAccess(Ljava/lang/Class;Ljava/security/ProtectionDomain;)V 16 java(26933): => java/lang/System.getSecurityManager()Ljava/lang/SecurityManager; 23 java(26933): <= java/lang/System.getSecurityManager()Ljava/lang/SecurityManager; 30 java(26933): => java/util/HashSet.add(Ljava/lang/Object;)Z 37 java(26933): => java/util/HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 43 java(26933): => java/lang/Object.hashCode()I 50 java(26933): <= java/lang/Object.hashCode()I 56 java(26933): => java/util/HashMap.hash(I)I 63 java(26933): <= java/util/HashMap.hash(I)I 69 java(26933): => java/util/HashMap.indexFor(II)I 76 java(26933): <= java/util/HashMap.indexFor(II)I 83 java(26933): <= java/util/HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 89 java(26933): <= java/util/HashSet.add(Ljava/lang/Object;)Z 96 java(26933): <= java/lang/ClassLoader.checkPackageAccess(Ljava/lang/Class;Ljava/security/ProtectionDomain;)V [...] 2611 java(26933): => java/io/BufferedOutputStream.flush()V 2617 java(26933): => java/io/BufferedOutputStream.flushBuffer()V 2624 java(26933): <= java/io/BufferedOutputStream.flushBuffer()V 2630 java(26933): <= java/io/BufferedOutputStream.flush()V 2636 java(26933): <= java/io/PrintStream.newLine()V 2643 java(26933): <= java/io/PrintStream.println(Ljava/lang/String;)V 2649 java(26933):<= Hello.main([Ljava/lang/String;)V Have fun! Mark -------------- next part -------------- A non-text attachment was scrubbed... Name: systemtap-java-method-tracing.patch Type: text/x-patch Size: 6682 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090805/e61455ee/systemtap-java-method-tracing.patch From Tim.Bell at Sun.COM Wed Aug 5 13:53:05 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Wed, 05 Aug 2009 13:53:05 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> Message-ID: <4A79F131.7040105@sun.com> Andrew John Hughes wrote: > Thanks Tim, that seems to have fixed the permissions issue. Good. > There now seems to be an issue with jcheck, as the merge causes some > bugids to be repeated: Hmmm - how did these changesets come in through two different paths? > pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot > searching for changes > remote: adding changesets > remote: adding manifests > remote: adding file changes > remote: added 555 changesets with 4771 changes to 1453 files > remote: > remote: > Changeset: 100:d821d920b465 > remote: > Author: kvn > remote: > Date: 2008-03-11 11:04 > remote: > > remote: > 6623167: C2 crashed in StoreCMNode::Value > remote: > Summary: C2 crashed in StoreCMNode::Value because > n->in(MemNode::OopStore) is 0. > remote: > Reviewed-by: rasbold, never > remote: > remote: Bugid 6623167 already used in this repository, in revision 20 > remote: > remote: > Changeset: 104:2c106685d6d0 > remote: > Author: dcubed > remote: > Date: 2008-03-12 18:06 > remote: > > remote: > 6497639: 4/3 Profiling Swing application caused JVM crash > remote: > Summary: Make RedefineClasses() interoperate better with > class sharing. > remote: > Reviewed-by: sspitsyn, jmasa > remote: > remote: Bugid 6497639 already used in this repository, in revision 20 > remote: > remote: > Changeset: 105:d8b3ef7ee3e5 > remote: > Author: dcubed > remote: > Date: 2008-03-12 18:07 > remote: > > remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or > assert() failure > remote: > Summary: Add should_not_be_cached() to markOop and methodOop > and query that status inOopMapCache::lookup() > remote: > Reviewed-by: coleenp, sspitsyn, jmasa > remote: > remote: Bugid 6599425 already used in this repository, in revision 20 > remote: > remote: > Changeset: 240:65fe2bd88839 > remote: > Author: never > remote: > Date: 2008-06-05 21:44 > remote: > > remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse > with 1.6.0_05-ea > remote: > Reviewed-by: kvn, jrose, rasbold > remote: > remote: Bugid 6614100 already used in this repository, in revision 20 > remote: > remote: > Changeset: 286:3e82d72933d0 > remote: > Author: xlu > remote: > Date: 2008-06-26 14:15 > remote: > > remote: > 6718830: Hotspot fails to build with gcc 4.3 > remote: > Summary: Fixed linux make file and couple adlc code to meet > the changes of gcc 4.3 > remote: > Reviewed-by: kamg, igor > remote: > remote: Bugid 6718830 already used in this repository, in revision 32 > remote: > remote: > Changeset: 289:551f4309f476 > remote: > Author: ohair > remote: > Date: 2008-07-03 10:46 > remote: > > remote: > 6695777: Queens.class should be built from source, not put > in source repo > remote: > Reviewed-by: kvn > remote: > remote: Bugid 6695777 already used in this repository, in revision 20 > remote: > remote: > Changeset: 314:54499b980c23 > remote: > Author: swamyv > remote: > Date: 2008-07-29 13:54 > remote: > > remote: > 6710791: Remove files or build from source:maf-1_0.jar, jlfg-1_0.jar > remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. > remote: > Reviewed-by: poonam, jjh > remote: > remote: Bugid 6710791 already used in this repository, in revision 20 > remote: > remote: > Changeset: 360:fa4d1d240383 > remote: > Author: never > remote: > Date: 2008-08-26 15:49 > remote: > > remote: > 6741642: bad enum definition in ciTypeFlow.hpp > remote: > Reviewed-by: rasbold, martin > remote: > Contributed-by: doko at ubuntu.com > remote: > remote: Bugid 6741642 already used in this repository, in revision 22 > remote: > remote: > Changeset: 589:748572b86af6 > remote: > Author: never > remote: > Date: 2009-04-07 14:46 > remote: > > remote: > 6636360: compiler/6595044/Main.java test fails with 64bit > java on solaris-sparcv9 with SIGSEGV > remote: > Reviewed-by: kvn, twisti > remote: > remote: Bugid 6636360 already used in this repository, in revision 29 > remote: > remote: abort: pretxnchangegroup.0.jcheck hook failed > remote: transaction abort! > remote: rollback completed > abort: unexpected response: empty string > > Is there a way of getting it to ignore these for this one push? I > don't know of a way to just pull out these nine changesets from the > 555 waiting to go... I think they would need to be added to the jcheck whitelist for all time- but that is more of a question for Mark or Kelly. Tim From gnu_andrew at member.fsf.org Wed Aug 5 16:39:13 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 6 Aug 2009 00:39:13 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4A79F131.7040105@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> <4A79F131.7040105@sun.com> Message-ID: <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> 2009/8/5 Tim Bell : > Andrew John Hughes wrote: > >> Thanks Tim, that seems to have fixed the permissions issue. > > Good. > >> There now seems to be an issue with jcheck, as the merge causes some >> bugids to be repeated: > > Hmmm - how did these changesets come in through two different paths? > >> pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >> searching for changes >> remote: adding changesets >> remote: adding manifests >> remote: adding file changes >> remote: added 555 changesets with 4771 changes to 1453 files >> remote: >> remote: > Changeset: 100:d821d920b465 >> remote: > Author: ? ?kvn >> remote: > Date: ? ? ?2008-03-11 11:04 >> remote: > >> remote: > 6623167: C2 crashed in StoreCMNode::Value >> remote: > Summary: C2 crashed in StoreCMNode::Value because >> n->in(MemNode::OopStore) is 0. >> remote: > Reviewed-by: rasbold, never >> remote: >> remote: Bugid 6623167 already used in this repository, in revision 20 >> remote: >> remote: > Changeset: 104:2c106685d6d0 >> remote: > Author: ? ?dcubed >> remote: > Date: ? ? ?2008-03-12 18:06 >> remote: > >> remote: > 6497639: 4/3 Profiling Swing application caused JVM crash >> remote: > Summary: Make RedefineClasses() interoperate better with >> class sharing. >> remote: > Reviewed-by: sspitsyn, jmasa >> remote: >> remote: Bugid 6497639 already used in this repository, in revision 20 >> remote: >> remote: > Changeset: 105:d8b3ef7ee3e5 >> remote: > Author: ? ?dcubed >> remote: > Date: ? ? ?2008-03-12 18:07 >> remote: > >> remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or >> assert() failure >> remote: > Summary: Add should_not_be_cached() to markOop and methodOop >> and query that status inOopMapCache::lookup() >> remote: > Reviewed-by: coleenp, sspitsyn, jmasa >> remote: >> remote: Bugid 6599425 already used in this repository, in revision 20 >> remote: >> remote: > Changeset: 240:65fe2bd88839 >> remote: > Author: ? ?never >> remote: > Date: ? ? ?2008-06-05 21:44 >> remote: > >> remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse >> with 1.6.0_05-ea >> remote: > Reviewed-by: kvn, jrose, rasbold >> remote: >> remote: Bugid 6614100 already used in this repository, in revision 20 >> remote: >> remote: > Changeset: 286:3e82d72933d0 >> remote: > Author: ? ?xlu >> remote: > Date: ? ? ?2008-06-26 14:15 >> remote: > >> remote: > 6718830: Hotspot fails to build with gcc 4.3 >> remote: > Summary: Fixed linux make file and couple adlc code to meet >> the changes of gcc 4.3 >> remote: > Reviewed-by: kamg, igor >> remote: >> remote: Bugid 6718830 already used in this repository, in revision 32 >> remote: >> remote: > Changeset: 289:551f4309f476 >> remote: > Author: ? ?ohair >> remote: > Date: ? ? ?2008-07-03 10:46 >> remote: > >> remote: > 6695777: Queens.class should be built from source, not put >> in source repo >> remote: > Reviewed-by: kvn >> remote: >> remote: Bugid 6695777 already used in this repository, in revision 20 >> remote: >> remote: > Changeset: 314:54499b980c23 >> remote: > Author: ? ?swamyv >> remote: > Date: ? ? ?2008-07-29 13:54 >> remote: > >> remote: > 6710791: Remove files or build from source:maf-1_0.jar, jlfg-1_0.jar >> remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. >> remote: > Reviewed-by: poonam, jjh >> remote: >> remote: Bugid 6710791 already used in this repository, in revision 20 >> remote: >> remote: > Changeset: 360:fa4d1d240383 >> remote: > Author: ? ?never >> remote: > Date: ? ? ?2008-08-26 15:49 >> remote: > >> remote: > 6741642: bad enum definition in ciTypeFlow.hpp >> remote: > Reviewed-by: rasbold, martin >> remote: > Contributed-by: doko at ubuntu.com >> remote: >> remote: Bugid 6741642 already used in this repository, in revision 22 >> remote: >> remote: > Changeset: 589:748572b86af6 >> remote: > Author: ? ?never >> remote: > Date: ? ? ?2009-04-07 14:46 >> remote: > >> remote: > 6636360: compiler/6595044/Main.java test fails with 64bit >> java on solaris-sparcv9 with SIGSEGV >> remote: > Reviewed-by: kvn, twisti >> remote: >> remote: Bugid 6636360 already used in this repository, in revision 29 >> remote: >> remote: abort: pretxnchangegroup.0.jcheck hook failed >> remote: transaction abort! >> remote: rollback completed >> abort: unexpected response: empty string >> >> Is there a way of getting it to ignore these for this one push? ?I >> don't know of a way to just pull out these nine changesets from the >> 555 waiting to go... > > I think they would need to be added to the jcheck whitelist for all time- > but that is more of a question for Mark or Kelly. > > Tim > The early revisions (20, 32) are from OpenJDK6 which was rebased to allow HotSpot patches to be applied on top. So what happened here is that, as the fixes were already applied to OpenJDK6, the new changesets pulled in by the merge will be no-ops but still exist to keep the change history accurate. I think we just need a way of disabling this check. OpenJDK6 already has whitespace and comment checks turned to lax. See .jcheck: http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/0282bf49b0f6. There may already be an option for this bugid check too, but I have no idea what the format of that file is. -- 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 Aug 5 17:54:37 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 06 Aug 2009 00:54:37 +0000 Subject: [Bug 376] New: Cannot create GC thread. Out of system resources. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=376 Summary: Cannot create GC thread. Out of system resources. Product: IcedTea Version: unspecified Platform: PC URL: http://sweethome3d.eu OS/Version: Linux Status: NEW Severity: major Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: GavinFlower at yahoo.com click on Launch Sweet Home 3D -- 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 Aug 5 17:56:35 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 06 Aug 2009 00:56:35 +0000 Subject: [Bug 376] Cannot create GC thread. Out of system resources. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=376 ------- Comment #1 from GavinFlower at yahoo.com 2009-08-06 00:56 ------- Created an attachment (id=251) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=251&action=view) java error log -- 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 ahughes at redhat.com Wed Aug 5 18:11:06 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 01:11:06 +0000 Subject: changeset in /hg/icedtea: Use tip of forest with new security pa... Message-ID: changeset a6ecfd52e2db in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=a6ecfd52e2db description: Use tip of forest with new security patches. 2009-08-05 Andrew John Hughes * Makefile.am: Update md5sums and changeset IDs to include security fixes. * patches/security/icedtea-6592792.patch: Remove fixes applied as part of 6657133 diffstat: 3 files changed, 14 insertions(+), 42 deletions(-) ChangeLog | 8 +++++++ Makefile.am | 12 +++++----- patches/security/icedtea-6592792.patch | 36 -------------------------------- diffs (85 lines): diff -r 77ea95965bad -r a6ecfd52e2db ChangeLog --- a/ChangeLog Wed Aug 05 15:22:13 2009 +0100 +++ b/ChangeLog Thu Aug 06 02:13:19 2009 +0100 @@ -1,3 +1,11 @@ 2009-08-05 Lillian Angel + + * Makefile.am: + Update md5sums and changeset IDs to include + security fixes. + * patches/security/icedtea-6592792.patch: + Remove fixes applied as part of 6657133 + 2009-08-05 Lillian Angel * plugin/icedtea/netscape/javascript/JSObject.java: Security patch diff -r 77ea95965bad -r a6ecfd52e2db Makefile.am --- a/Makefile.am Wed Aug 05 15:22:13 2009 +0100 +++ b/Makefile.am Thu Aug 06 02:13:19 2009 +0100 @@ -2,17 +2,17 @@ OPENJDK_VERSION = b66 OPENJDK_CHANGESET = e7eeeda332ec CORBA_CHANGESET = 1741ea5cb854 -JAXP_CHANGESET = 22f9d5d5b5fe -JAXWS_CHANGESET = 43c35a1df5cb -JDK_CHANGESET = 69ba5ca06a43 +JAXP_CHANGESET = b3d2bf4c255d +JAXWS_CHANGESET = c37936a72332 +JDK_CHANGESET = b96cfe9cfcfa LANGTOOLS_CHANGESET = 634f519d6f9a HOTSPOT_CHANGESET = 945fcffdbcab OPENJDK_MD5SUM = 8f63dbb0dcd83d905e243c58d0135174 CORBA_MD5SUM = 06ac898f583fc9eec179fc2d1dcb5c71 -JAXP_MD5SUM = 366dde7f9a1fa6436f48a64a8704dc20 -JAXWS_MD5SUM = 4fb20d6ee197e63dac567ad340532293 -JDK_MD5SUM = 8c54f71ff1f519440716c9d50e02468f +JAXP_MD5SUM = 01118a1882ea1ac5205e232bd7c847f7 +JAXWS_MD5SUM = 8c53573f9f072bb273435ee75c7aaaa3 +JDK_MD5SUM = 16a73b3b2409429425999b20aca1ba65 LANGTOOLS_MD5SUM = cd1389112baa1b2b24da95555345c1b9 HOTSPOT_MD5SUM = ce3ab877df030cf4842001918898244e diff -r 77ea95965bad -r a6ecfd52e2db patches/security/icedtea-6592792.patch --- a/patches/security/icedtea-6592792.patch Wed Aug 05 15:22:13 2009 +0100 +++ b/patches/security/icedtea-6592792.patch Thu Aug 06 02:13:19 2009 +0100 @@ -1,39 +1,3 @@ diff -Nru openjdk.orig/jdk/src/share/lib -diff -Nru openjdk.orig/jdk/src/share/lib/security/java.security openjdk/jdk/src/share/lib/security/java.security ---- openjdk.orig/jdk/src/share/lib/security/java.security 2009-03-30 17:23:07.000000000 +0100 -+++ openjdk/jdk/src/share/lib/security/java.security 2009-05-12 23:41:24.000000000 +0100 -@@ -127,7 +127,7 @@ - # passed to checkPackageAccess unless the - # corresponding RuntimePermission ("accessClassInPackage."+package) has - # been granted. --package.access=sun. -+package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind. - - # - # List of comma-separated packages that start with or equal this string -diff -Nru openjdk.orig/jdk/src/share/lib/security/java.security-solaris openjdk/jdk/src/share/lib/security/java.security-solaris ---- openjdk.orig/jdk/src/share/lib/security/java.security-solaris 2009-03-30 17:23:07.000000000 +0100 -+++ openjdk/jdk/src/share/lib/security/java.security-solaris 2009-05-12 23:41:24.000000000 +0100 -@@ -128,7 +128,7 @@ - # passed to checkPackageAccess unless the - # corresponding RuntimePermission ("accessClassInPackage."+package) has - # been granted. --package.access=sun. -+package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind. - - # - # List of comma-separated packages that start with or equal this string -diff -Nru openjdk.orig/jdk/src/share/lib/security/java.security-windows openjdk/jdk/src/share/lib/security/java.security-windows ---- openjdk.orig/jdk/src/share/lib/security/java.security-windows 2009-03-30 17:23:07.000000000 +0100 -+++ openjdk/jdk/src/share/lib/security/java.security-windows 2009-05-12 23:41:24.000000000 +0100 -@@ -128,7 +128,7 @@ - # passed to checkPackageAccess unless the - # corresponding RuntimePermission ("accessClassInPackage."+package) has - # been granted. --package.access=sun. -+package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind. - - # - # List of comma-separated packages that start with or equal this string diff -Nru openjdk.orig/jdk/test/com/sun/org/apache/xml/internal/ws/server/Test.java openjdk/jdk/test/com/sun/org/apache/xml/internal/ws/server/Test.java --- openjdk.orig/jdk/test/com/sun/org/apache/xml/internal/ws/server/Test.java 1970-01-01 01:00:00.000000000 +0100 +++ openjdk/jdk/test/com/sun/org/apache/xml/internal/ws/server/Test.java 2009-05-12 23:41:24.000000000 +0100 From ahughes at redhat.com Thu Aug 6 02:37:15 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 09:37:15 +0000 Subject: changeset in /hg/icedtea: Added tag icedtea-1.11 for changeset b... Message-ID: changeset 4cd87c94518f in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=4cd87c94518f description: Added tag icedtea-1.11 for changeset bceb1140e068 diffstat: 1 file changed, 1 insertion(+) .hgtags | 1 + diffs (8 lines): diff -r bceb1140e068 -r 4cd87c94518f .hgtags --- a/.hgtags Thu Aug 06 09:38:51 2009 +0100 +++ b/.hgtags Thu Aug 06 10:39:35 2009 +0100 @@ -16,3 +16,4 @@ 2b1c03c1e9fa88e453da2ca774dc8900227a2e16 2b1c03c1e9fa88e453da2ca774dc8900227a2e16 icedtea6-1.4 db666234267c53adb4f55967fa3dce442167ae3b icedtea-1.9 9729b3a513055efc33f1220e3c8cd372afdf74d9 icedtea-1.10 +bceb1140e068851e32b2e29635cd0c25b6d655a4 icedtea-1.11 From ahughes at redhat.com Thu Aug 6 02:37:15 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 09:37:15 +0000 Subject: changeset in /hg/icedtea: Prepare for IcedTea7 1.11 release. Message-ID: changeset bceb1140e068 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=bceb1140e068 description: Prepare for IcedTea7 1.11 release. 2009-08-06 Andrew John Hughes * INSTALL: Mention Shark requirements. * NEWS: Add release notes for 1.11. * configure.ac: Bump to 1.11 proper, remove duplicate VisualVM/NetBeans macros. diffstat: 4 files changed, 33 insertions(+), 30 deletions(-) ChangeLog | 10 ++++++++++ INSTALL | 5 ++--- NEWS | 20 ++++++++++++++++++++ configure.ac | 28 +--------------------------- diffs (109 lines): diff -r a6ecfd52e2db -r bceb1140e068 ChangeLog --- a/ChangeLog Thu Aug 06 02:13:19 2009 +0100 +++ b/ChangeLog Thu Aug 06 09:38:51 2009 +0100 @@ -1,3 +1,13 @@ 2009-08-05 Andrew John Hughes + + * INSTALL: + Mention Shark requirements. + * NEWS: + Add release notes for 1.11. + * configure.ac: + Bump to 1.11 proper, remove duplicate + VisualVM/NetBeans macros. + 2009-08-05 Andrew John Hughes * Makefile.am: diff -r a6ecfd52e2db -r bceb1140e068 INSTALL --- a/INSTALL Thu Aug 06 02:13:19 2009 +0100 +++ b/INSTALL Thu Aug 06 09:38:51 2009 +0100 @@ -38,10 +38,9 @@ For building VisualVM, you will need For building VisualVM, you will need netbeans = 6.5 -For building VisualVM, you will need -netbeans = 6.5 +For building the zero-assembler port (see below), you will need libffi. -For building the zero-assembler port (see below), you will need libffi. +For building the Shark JIT, you will need LLVM 2.5 or current SVN. For building with systemtap support (--enable-systemtap), you will need systemtap-sdt-devel (available since systemtap 0.9.5). This also needs diff -r a6ecfd52e2db -r bceb1140e068 NEWS --- a/NEWS Thu Aug 06 02:13:19 2009 +0100 +++ b/NEWS Thu Aug 06 09:38:51 2009 +0100 @@ -1,3 +1,23 @@ New in release 1.10 (2009-05-29) +New in release 1.11 (2009-08-06) + +- Updated to OpenJDK7 b66 (Milestone 4), including + JSR 308: Annotations on Java types. +- Updates/bug fixes for netx, Shark and the web plugin. +- Zero is now provided in the upstream forest rather than in-tree. +- The options + - --with-openjdk + - --with-icedtea + - --with-openjdk-home + - --with-icedtea-home + - --with-gcj-jdk + have been removed. The JDK is now specified by --with-jdk-home + and whether or not do a full bootstrap or not is now decided + by --disable-bootstrap (the default is yes). This is in preparation + for making the two stages independent of the JDK used, but some + artefacts still remain in this release; the supported behaviour + is still the use of gcj jdk for a full bootstrap and icedtea + for a quick build. + New in release 1.10 (2009-05-29) - Updated to OpenJDK7 b59 build via IcedTea forest. Now includes diff -r a6ecfd52e2db -r bceb1140e068 configure.ac --- a/configure.ac Thu Aug 06 02:13:19 2009 +0100 +++ b/configure.ac Thu Aug 06 09:38:51 2009 +0100 @@ -1,4 +1,4 @@ AC_INIT([icedtea], [1.11-pre], [distro-p -AC_INIT([icedtea], [1.11-pre], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea], [1.11], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) @@ -65,24 +65,6 @@ AC_MSG_RESULT([${SYSTEM_NETBEANS_DIR}]) AC_MSG_RESULT([${SYSTEM_NETBEANS_DIR}]) AC_SUBST(SYSTEM_NETBEANS_DIR) -AC_MSG_CHECKING([for a NetBeans installation]) -AC_ARG_WITH([netbeans-home], - [AS_HELP_STRING([--with-netbeans-home], - [NetBeans home directory (default is /usr/share/netbeans)])], - [ - if test "x${withval}" = x - then - SYSTEM_NETBEANS_DIR=/usr/share/netbeans - else - SYSTEM_NETBEANS_DIR=${withval} - fi - ], - [ - SYSTEM_NETBEANS_DIR=/usr/share/netbeans - ]) -AC_MSG_RESULT([${SYSTEM_NETBEANS_DIR}]) -AC_SUBST(SYSTEM_NETBEANS_DIR) - AC_MSG_CHECKING(for Ant home directory) AC_ARG_WITH([ant-home], [AS_HELP_STRING([--with-ant-home], @@ -109,14 +91,6 @@ AM_CONDITIONAL(WITH_VISUALVM, test "x${e AM_CONDITIONAL(WITH_VISUALVM, test "x${enable_visualvm}" = "xyes") AC_MSG_RESULT(${enable_visualvm}) -AC_MSG_CHECKING(whether to build VisualVM) -AC_ARG_ENABLE([visualvm], - [AS_HELP_STRING([--enable-visualvm], - [Enable compilation of visualvm.])], - [enable_visualvm="${enableval}"], [enable_visualvm="no"]) -AM_CONDITIONAL(WITH_VISUALVM, test "x${enable_visualvm}" = "xyes") -AC_MSG_RESULT(${enable_visualvm}) - AC_MSG_CHECKING([whether to build the LiveConnect plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], From ahughes at redhat.com Thu Aug 6 02:53:48 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 09:53:48 +0000 Subject: changeset in /hg/icedtea: Removed tag icedtea-1.11 Message-ID: changeset 2c882969908f in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=2c882969908f description: Removed tag icedtea-1.11 diffstat: 1 file changed, 2 insertions(+) .hgtags | 2 ++ diffs (9 lines): diff -r 4cd87c94518f -r 2c882969908f .hgtags --- a/.hgtags Thu Aug 06 10:39:35 2009 +0100 +++ b/.hgtags Thu Aug 06 10:55:43 2009 +0100 @@ -17,3 +17,5 @@ db666234267c53adb4f55967fa3dce442167ae3b db666234267c53adb4f55967fa3dce442167ae3b icedtea-1.9 9729b3a513055efc33f1220e3c8cd372afdf74d9 icedtea-1.10 bceb1140e068851e32b2e29635cd0c25b6d655a4 icedtea-1.11 +bceb1140e068851e32b2e29635cd0c25b6d655a4 icedtea-1.11 +0000000000000000000000000000000000000000 icedtea-1.11 From ahughes at redhat.com Thu Aug 6 02:53:48 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 09:53:48 +0000 Subject: changeset in /hg/icedtea: Update SystemTap support. Message-ID: changeset 7800f23fa7a8 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=7800f23fa7a8 description: Update SystemTap support. 2009-08-05 Mark Wielaard * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. * tapset/hotspot.stp.in: Add tapset functions for hotspot.method_entry, hotspot.method_return, hotspot.compiled_method_load and hotspot.compiled_method_unload. * NEWS: Metion new support for java method tracing. * INSTALL: Add that java method tracing support needs systemtap 0.9.9 or higher. diffstat: 5 files changed, 91 insertions(+), 25 deletions(-) ChangeLog | 10 ++++ INSTALL | 1 NEWS | 2 patches/icedtea-systemtap.patch | 18 -------- tapset/hotspot.stp.in | 85 +++++++++++++++++++++++++++++++++++---- diffs (163 lines): diff -r 2c882969908f -r 7800f23fa7a8 ChangeLog --- a/ChangeLog Thu Aug 06 10:55:43 2009 +0100 +++ b/ChangeLog Thu Aug 06 10:56:04 2009 +0100 @@ -1,3 +1,13 @@ 2009-08-06 Andrew John Hughes + + * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. + * tapset/hotspot.stp.in: Add tapset functions for + hotspot.method_entry, hotspot.method_return, + hotspot.compiled_method_load and hotspot.compiled_method_unload. + * NEWS: Metion new support for java method tracing. + * INSTALL: Add that java method tracing support needs systemtap + 0.9.9 or higher. + 2009-08-06 Andrew John Hughes * INSTALL: diff -r 2c882969908f -r 7800f23fa7a8 INSTALL --- a/INSTALL Thu Aug 06 10:55:43 2009 +0100 +++ b/INSTALL Thu Aug 06 10:56:04 2009 +0100 @@ -50,6 +50,7 @@ you cannot move that to another location you cannot move that to another location without adjusting the paths in the tapset/hotspot.stp file. For example: --enable-systemtap --with-abs-install-dir=/usr/lib/jvm/java-1.6.0-openjdk +(Java method tracing works starting with systemtap 0.9.9) See ./configure --help if you need to override the defaults. diff -r 2c882969908f -r 7800f23fa7a8 NEWS --- a/NEWS Thu Aug 06 10:55:43 2009 +0100 +++ b/NEWS Thu Aug 06 10:56:04 2009 +0100 @@ -17,6 +17,8 @@ New in release 1.11 (2009-08-06) artefacts still remain in this release; the supported behaviour is still the use of gcj jdk for a full bootstrap and icedtea for a quick build. +- Added java method tracing using systemtap version 0.9.9+. +- Added latest security fixes. New in release 1.10 (2009-05-29) diff -r 2c882969908f -r 7800f23fa7a8 patches/icedtea-systemtap.patch --- a/patches/icedtea-systemtap.patch Thu Aug 06 10:55:43 2009 +0100 +++ b/patches/icedtea-systemtap.patch Thu Aug 06 10:56:04 2009 +0100 @@ -9,24 +9,6 @@ diff -r 945bf7540697 make/linux/makefile +CFLAGS += -DDTRACE_ENABLED + +# It doesn't support HAVE_DTRACE_H though. -diff -r 945bf7540697 src/share/vm/code/nmethod.cpp ---- openjdk/hotspot/src/share/vm/code/nmethod.cpp Thu Jan 22 14:42:01 2009 -0800 -+++ openjdk/hotspot/src/share/vm/code/nmethod.cpp Mon Feb 02 13:47:34 2009 +0100 -@@ -22,6 +22,14 @@ - * - */ - -+#ifdef __GNUC__ -+// GCC seems to have some trouble with the inserted probes. -+// error: _probe_compiled__method__unload causes a section type conflict -+// error: compiled__method__unload_probe_name causes a section type conflict -+// So disable probe insertion for now. -+#undef DTRACE_ENABLED -+#endif -+ - # include "incls/_precompiled.incl" - # include "incls/_nmethod.cpp.incl" - diff -r 945bf7540697 src/share/vm/prims/jni.cpp --- openjdk/hotspot/src/share/vm/prims/jni.cpp Thu Jan 22 14:42:01 2009 -0800 +++ openjdk/hotspot/src/share/vm/prims/jni.cpp Mon Feb 02 13:47:34 2009 +0100 diff -r 2c882969908f -r 7800f23fa7a8 tapset/hotspot.stp.in --- a/tapset/hotspot.stp.in Thu Aug 06 10:55:43 2009 +0100 +++ b/tapset/hotspot.stp.in Thu Aug 06 10:56:04 2009 +0100 @@ -409,13 +409,84 @@ probe hotspot.monitor_contended_exit = name, thread_id, id, class); } -// Doesn't work yet. -// method__entry -// method__return - -// Missing -// compiled__method__load -// compiled__method__unload +/* hotspot.method_entry (extended probe) + Triggers when a method is entered. + Sets thread_id to the current java thread id, class to the name of + the class, method to the name of the method, and sig to the + signature string of the method. + Needs -XX:+ExtendedDTraceProbes. +*/ +probe hotspot.method_entry = + process("@ABS_CLIENT_LIBJVM_SO@").mark("method__entry"), + process("@ABS_SERVER_LIBJVM_SO@").mark("method__entry") +{ + name = "method_entry"; + thread_id = $arg1; + class = user_string_n($arg2, $arg3); + method = user_string_n($arg4, $arg5); + sig = user_string_n($arg6, $arg7); + probestr = sprintf("%s(thread_id=%d,class='%s',method='%s',sig='%s')", + name, thread_id, class, method, sig); +} + +/* hotspot.method_return (extended probe) + Triggers when a method returns. + Sets thread_id to the current java thread id, class to the name of + the class, method to the name of the method, and sig to the + signature string of the method. + Needs -XX:+ExtendedDTraceProbes. +*/ +probe hotspot.method_return = + process("@ABS_CLIENT_LIBJVM_SO@").mark("method__return"), + process("@ABS_SERVER_LIBJVM_SO@").mark("method__return") +{ + name = "method_return"; + thread_id = $arg1; + class = user_string_n($arg2, $arg3); + method = user_string_n($arg4, $arg5); + sig = user_string_n($arg6, $arg7); + probestr = sprintf("%s(thread_id=%d,class='%s',method='%s',sig='%s')", + name, thread_id, class, method, sig); +} + +/* hotspot.compiled_method_load + Triggers when a compiled method is loaded. + Sets class to the name of the class, method to the name of the + method, sig to the signature string of the method, code to the + address where the code is loaded and size to the number of bytes of + code. +*/ +probe hotspot.compiled_method_load = + process("@ABS_CLIENT_LIBJVM_SO@").mark("compiled__method__load"), + process("@ABS_SERVER_LIBJVM_SO@").mark("compiled__method__load") +{ + name = "compiled_method_load"; + class = user_string_n($arg1, $arg2); + method = user_string_n($arg3, $arg4); + sig = user_string_n($arg5, $arg6); + code = $arg7; + size = $arg8; + probestr = sprintf("%s(class='%s',method='%s',sig='%s',code=0x%x,size=%d)", + name, class, method, sig, code, size); +} + +/* hotspot.compiled_method_unload + Triggers when a compiled method is unloaded. + Sets class to the name of the class, method to the name of the + method, sig to the signature string of the method. +*/ +probe hotspot.compiled_method_unload = + process("@ABS_CLIENT_LIBJVM_SO@").mark("compiled__method__unload"), + process("@ABS_SERVER_LIBJVM_SO@").mark("compiled__method__unload") +{ + name = "compiled_method_unload"; + class = user_string_n($arg1, $arg2); + method = user_string_n($arg3, $arg4); + sig = user_string_n($arg5, $arg6); + probestr = sprintf("%s(class='%s',method='%s',sig='%s')", + name, class, method, sig); +} + // Extra private probes // hashtable__new_entry From doko at ubuntu.com Thu Aug 6 03:57:34 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Thu, 06 Aug 2009 10:57:34 +0000 Subject: changeset in /hg/icedtea: Remove Makefile.am.orig Message-ID: changeset e8bc22197b08 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=e8bc22197b08 description: Remove Makefile.am.orig diffstat: 1 file changed, 4 insertions(+) ChangeLog | 4 ++++ diffs (11 lines): diff -r 7800f23fa7a8 -r e8bc22197b08 ChangeLog --- a/ChangeLog Thu Aug 06 10:56:04 2009 +0100 +++ b/ChangeLog Thu Aug 06 12:52:14 2009 +0200 @@ -1,3 +1,7 @@ 2009-08-05 Mark Wielaard + + * Makefile.am.orig: Remove. + 2009-08-05 Mark Wielaard * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. From ahughes at redhat.com Thu Aug 6 04:05:46 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 11:05:46 +0000 Subject: changeset in /hg/icedtea: Merge Message-ID: changeset df574d432c00 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=df574d432c00 description: Merge diffstat: 1 file changed, 4 insertions(+) ChangeLog | 4 ++++ diffs (14 lines): diff -r 2174f64c8bc9 -r df574d432c00 ChangeLog --- a/ChangeLog Thu Aug 06 12:01:27 2009 +0100 +++ b/ChangeLog Thu Aug 06 12:06:49 2009 +0100 @@ -2,6 +2,10 @@ 2009-08-06 Andrew John Hughes + + * Makefile.am.orig: Remove. 2009-08-05 Mark Wielaard From ahughes at redhat.com Thu Aug 6 04:05:46 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 11:05:46 +0000 Subject: changeset in /hg/icedtea: Add execvpe fix. Message-ID: changeset 2174f64c8bc9 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=2174f64c8bc9 description: Add execvpe fix. 2009-08-06 Andrew John Hughes * Makefile.am: Bump JDK changeset to obtain execvpe fix. diffstat: 2 files changed, 7 insertions(+), 2 deletions(-) ChangeLog | 5 +++++ Makefile.am | 4 ++-- diffs (33 lines): diff -r 7800f23fa7a8 -r 2174f64c8bc9 ChangeLog --- a/ChangeLog Thu Aug 06 10:56:04 2009 +0100 +++ b/ChangeLog Thu Aug 06 12:01:27 2009 +0100 @@ -1,3 +1,8 @@ 2009-08-05 Mark Wielaard + + * Makefile.am: + Bump JDK changeset to obtain execvpe fix. + 2009-08-05 Mark Wielaard * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. diff -r 7800f23fa7a8 -r 2174f64c8bc9 Makefile.am --- a/Makefile.am Thu Aug 06 10:56:04 2009 +0100 +++ b/Makefile.am Thu Aug 06 12:01:27 2009 +0100 @@ -4,7 +4,7 @@ CORBA_CHANGESET = 1741ea5cb854 CORBA_CHANGESET = 1741ea5cb854 JAXP_CHANGESET = b3d2bf4c255d JAXWS_CHANGESET = c37936a72332 -JDK_CHANGESET = b96cfe9cfcfa +JDK_CHANGESET = 51fcc41d8b24 LANGTOOLS_CHANGESET = 634f519d6f9a HOTSPOT_CHANGESET = 945fcffdbcab @@ -12,7 +12,7 @@ CORBA_MD5SUM = 06ac898f583fc9eec179fc2d1 CORBA_MD5SUM = 06ac898f583fc9eec179fc2d1dcb5c71 JAXP_MD5SUM = 01118a1882ea1ac5205e232bd7c847f7 JAXWS_MD5SUM = 8c53573f9f072bb273435ee75c7aaaa3 -JDK_MD5SUM = 16a73b3b2409429425999b20aca1ba65 +JDK_MD5SUM = 5ca832939f80db7c2e836141a9cac98a LANGTOOLS_MD5SUM = cd1389112baa1b2b24da95555345c1b9 HOTSPOT_MD5SUM = ce3ab877df030cf4842001918898244e From ahughes at redhat.com Thu Aug 6 04:09:41 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 11:09:41 +0000 Subject: changeset in /hg/icedtea: Added tag icedtea-1.11 for changeset d... Message-ID: changeset bcd06cb49945 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=bcd06cb49945 description: Added tag icedtea-1.11 for changeset df574d432c00 diffstat: 1 file changed, 2 insertions(+) .hgtags | 2 ++ diffs (9 lines): diff -r df574d432c00 -r bcd06cb49945 .hgtags --- a/.hgtags Thu Aug 06 12:06:49 2009 +0100 +++ b/.hgtags Thu Aug 06 12:11:42 2009 +0100 @@ -19,3 +19,5 @@ bceb1140e068851e32b2e29635cd0c25b6d655a4 bceb1140e068851e32b2e29635cd0c25b6d655a4 icedtea-1.11 bceb1140e068851e32b2e29635cd0c25b6d655a4 icedtea-1.11 0000000000000000000000000000000000000000 icedtea-1.11 +0000000000000000000000000000000000000000 icedtea-1.11 +df574d432c00e6ad570cc9d92eb4dcd51d31eb7a icedtea-1.11 From doko at ubuntu.com Thu Aug 6 04:22:44 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Thu, 06 Aug 2009 11:22:44 +0000 Subject: changeset in /hg/icedtea: 2009-08-06 Matthias Klose changeset ad8209f846e0 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=ad8209f846e0 description: 2009-08-06 Matthias Klose * Makefile.am (ICEDTEA_PATCHES): Make $(DISTRIBUTION_PATCHES) the last patches in the list. diffstat: 2 files changed, 8 insertions(+), 6 deletions(-) ChangeLog | 9 +++++---- Makefile.am | 5 +++-- diffs (42 lines): diff -r bcd06cb49945 -r ad8209f846e0 ChangeLog --- a/ChangeLog Thu Aug 06 12:11:42 2009 +0100 +++ b/ChangeLog Thu Aug 06 13:17:23 2009 +0200 @@ -1,11 +1,12 @@ 2009-08-06 Andrew John Hughes + + * Makefile.am (ICEDTEA_PATCHES): Make $(DISTRIBUTION_PATCHES) the + last patches in the list. + 2009-08-06 Andrew John Hughes * Makefile.am: Bump JDK changeset to obtain execvpe fix. - -2009-08-06 Matthias Klose - - * Makefile.am.orig: Remove. 2009-08-05 Mark Wielaard diff -r bcd06cb49945 -r ad8209f846e0 Makefile.am --- a/Makefile.am Thu Aug 06 12:11:42 2009 +0100 +++ b/Makefile.am Thu Aug 06 13:17:23 2009 +0200 @@ -2069,8 +2069,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-jvmtiEnv.patch \ patches/icedtea-xml-encodinginfo.patch \ patches/icedtea-cc-interp-backedge.patch \ - patches/icedtea-netx.patch \ - $(DISTRIBUTION_PATCHES) + patches/icedtea-netx.patch if WITH_RHINO ICEDTEA_PATCHES += \ @@ -2129,6 +2128,8 @@ ICEDTEA_PATCHES += patches/icedtea-livec ICEDTEA_PATCHES += patches/icedtea-liveconnect-dist.patch endif endif + +ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp if OPENJDK_SRC_DIR_FOUND From gnu_andrew at member.fsf.org Thu Aug 6 04:30:59 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 6 Aug 2009 12:30:59 +0100 Subject: IcedTea7 1.11 (OpenJDK7 Milestone 4) released! Message-ID: <17c6771e0908060430t126e58cdvf7f069aafcfb695e@mail.gmail.com> We are pleased to announce the release of IcedTea7 1.11. The IcedTea project provides a harness to build the source code from OpenJDK7 using Free Software build tools. It also includes the only Free Java plugin and Web Start implementation, and support for additional architectures over and above x86, x86_64 and sparc via the Zero assembler port and the Shark JIT compiler. This release provides a version of IcedTea for producing builds of OpenJDK7 Milestone 4. Unlike the binaries mentioned by Mark Reinhold (http://blogs.sun.com/mr/entry/jdk7_m4) and Xiomara Jayasena (http://blogs.sun.com/xiomara/entry/jdk7_m4u), those produced by IcedTea are completely Free Software, and include Free implementations of a Java plugin and Web Start support. You can also build IcedTea on architectures not supported by OpenJDK as standard e.g. ppc, ppc64, arm via the Zero assembler port (--enable-zero). There is also experimental support for a JIT based on LLVM. What?s New? ?????? - Updated to OpenJDK7 b66 (Milestone 4), including JSR 308: Annotations on Java types. - Updates/bug fixes for netx, Shark and the web plugin. - Zero is now provided in the upstream forest rather than in-tree. - The options - --with-openjdk - --with-icedtea - --with-openjdk-home - --with-icedtea-home - --with-gcj-jdk have been removed. The JDK is now specified by --with-jdk-home and whether or not do a full bootstrap or not is now decided by --disable-bootstrap (the default is yes). This is in preparation for making the two stages independent of the JDK used, but some artefacts still remain in this release; the supported behaviour is still the use of gcj jdk for a full bootstrap and icedtea for a quick build. - Added java method tracing using systemtap version 0.9.9+. - Added latest security fixes. ?????? The tarball can be downloaded here: http://icedtea.classpath.org/download/source/icedtea-1.11.tar.gz The following people helped with this release: Lillian Angel, Gary Benson, Deepak Bhole, Andrew Haley, Andrew John Hughes, Matthias Klose, Omair Majid, Xerxes R?nby, Mark Wielaard We would also like to thank all the bug reporters and testers! To get started: $ tar xzf icedtea-1.11.tar.gz $ cd icedtea-1.11 Full build requirements and instructions are in INSTALL: $ ./configure [--enable-visualvm --with-jdk-home --disable-bootstrap --enable-pulse-java --enable-systemtap ...] $ make -- 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 Aug 6 04:35:30 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Thu, 06 Aug 2009 11:35:30 +0000 Subject: changeset in /hg/icedtea: 2009-08-06 Matthias Klose changeset 2af5ec988144 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=2af5ec988144 description: 2009-08-06 Matthias Klose * Makefile.am (ICEDTEA_ENV, ICEDTEA_ENV_ECJ): Allow passing as environment. diffstat: 2 files changed, 106 insertions(+), 102 deletions(-) ChangeLog | 5 + Makefile.am | 203 +++++++++++++++++++++++++++++------------------------------ diffs (262 lines): diff -r ad8209f846e0 -r 2af5ec988144 ChangeLog --- a/ChangeLog Thu Aug 06 13:17:23 2009 +0200 +++ b/ChangeLog Thu Aug 06 13:30:06 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-06 Matthias Klose + + * Makefile.am (ICEDTEA_ENV, ICEDTEA_ENV_ECJ): Allow passing + as environment. + 2009-08-06 Matthias Klose * Makefile.am (ICEDTEA_PATCHES): Make $(DISTRIBUTION_PATCHES) the diff -r ad8209f846e0 -r 2af5ec988144 Makefile.am --- a/Makefile.am Thu Aug 06 13:17:23 2009 +0200 +++ b/Makefile.am Thu Aug 06 13:30:06 2009 +0200 @@ -1532,74 +1532,74 @@ else ICEDTEA_SHARK_BUILD = endif ICEDTEA_ENV = \ - "ALT_JDK_IMPORT_PATH=$(ICEDTEA_BOOT_DIR)" \ - "ANT_HOME=$(SYSTEM_ANT_DIR)" \ - "BUILD_NUMBER=$(OPENJDK_VERSION)" \ - "JDK_UPDATE_VERSION=$(JDK_UPDATE_VERSION)" \ - "JRE_RELEASE_VERSION=1.7.0_$(COMBINED_VERSION)" \ - "MILESTONE=fcs" \ - "LANG=C" \ - "PATH=$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ - "ALT_BOOTDIR=$(ICEDTEA_BOOT_DIR)" \ - "BUILD_ARCH_DIR=$(BUILD_ARCH_DIR)" \ - "ICEDTEA_RT=$(ICEDTEA_RT)" \ - "ICEDTEA_BUILD_DIR=$(ICEDTEA_BUILD_DIR)" \ - "ICEDTEA_CLS_DIR=$(ICEDTEA_CLS_DIR)" \ - "ICEDTEA_ENDORSED_DIR=$(ICEDTEA_ENDORSED_DIR)" \ - "ENDORSED=-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ - "CLASSPATH=" \ - "LD_LIBRARY_PATH=" \ - "CORE_BUILD=$(ICEDTEA_CORE_BUILD)" \ - "ZERO_BUILD=$(ICEDTEA_ZERO_BUILD)" \ - "ICEDTEA_SHARK_BUILD=$(ICEDTEA_SHARK_BUILD)" \ - "ZERO_LIBARCH=$(ZERO_LIBARCH)" \ - "ZERO_BITSPERWORD=$(ZERO_BITSPERWORD)" \ - "ZERO_ENDIANNESS=$(ZERO_ENDIANNESS)" \ - "ZERO_ARCHDEF=$(ZERO_ARCHDEF)" \ - "ZERO_ARCHFLAG=$(ZERO_ARCHFLAG)" \ - "LIBFFI_CFLAGS=$(LIBFFI_CFLAGS)" \ - "LIBFFI_LIBS=$(LIBFFI_LIBS)" \ - "LLVM_CFLAGS=$(LLVM_CFLAGS)" \ - "LLVM_LDFLAGS=$(LLVM_LDFLAGS)" \ - "LLVM_LIBS=$(LLVM_LIBS)" \ - "FREETYPE2_HEADERS=$(FREETYPE2_CFLAGS)" \ - "FT2_LIB=$(FREETYPE2_LIBS)" \ - "ALT_PARALLEL_COMPILE_JOBS=$(PARALLEL_JOBS)" \ - "HOTSPOT_BUILD_JOBS=$(PARALLEL_JOBS)" \ - "JAVAC=" \ - "ANT_RESPECT_JAVA_HOME=TRUE" \ - "RHINO_JAR=$(RHINO_JAR)" \ - "DISTRIBUTION_ID=$(DIST_ID)" \ - "ALT_JIBX_LIBS_PATH=$(JIBX_DEPS_DIR)" \ - "ALT_NETX_DIST=$(abs_top_builddir)/netx.build" \ - "ALT_LIVECONNECT_DIST=$(abs_top_builddir)" \ - "DEBUG_CLASSFILES=true" \ - "DEBUG_BINARIES=true" + ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ + ANT_HOME="$(SYSTEM_ANT_DIR)" \ + BUILD_NUMBER="$(OPENJDK_VERSION)" \ + JDK_UPDATE_VERSION="$(JDK_UPDATE_VERSION)" \ + JRE_RELEASE_VERSION="1.7.0_$(COMBINED_VERSION)" \ + MILESTONE="fcs" \ + LANG="C" \ + PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ + ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ + BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ + ICEDTEA_RT="$(ICEDTEA_RT)" \ + ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR)" \ + ICEDTEA_CLS_DIR="$(ICEDTEA_CLS_DIR)" \ + ICEDTEA_ENDORSED_DIR="$(ICEDTEA_ENDORSED_DIR)" \ + ENDORSED="-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ + CLASSPATH="" \ + LD_LIBRARY_PATH="" \ + CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ + ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ + ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ + ZERO_LIBARCH="$(ZERO_LIBARCH)" \ + ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ + ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ + ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ + ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ + LIBFFI_CFLAGS="$(LIBFFI_CFLAGS)" \ + LIBFFI_LIBS="$(LIBFFI_LIBS)" \ + LLVM_CFLAGS="$(LLVM_CFLAGS)" \ + LLVM_LDFLAGS="$(LLVM_LDFLAGS)" \ + LLVM_LIBS="$(LLVM_LIBS)" \ + FREETYPE2_HEADERS="$(FREETYPE2_CFLAGS)" \ + FT2_LIB="$(FREETYPE2_LIBS)" \ + ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ + HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ + JAVAC="" \ + ANT_RESPECT_JAVA_HOME="TRUE" \ + RHINO_JAR="$(RHINO_JAR)" \ + DISTRIBUTION_ID="$(DIST_ID)" \ + ALT_JIBX_LIBS_PATH="$(JIBX_DEPS_DIR)" \ + ALT_NETX_DIST="$(abs_top_builddir)/netx.build" \ + ALT_LIVECONNECT_DIST="$(abs_top_builddir)" \ + DEBUG_CLASSFILES="true" \ + DEBUG_BINARIES="true" if WITH_CACAO ICEDTEA_ENV += \ - "ALT_HOTSPOT_IMPORT_PATH=$(CACAO_IMPORT_PATH)" + ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" endif if !ENABLE_NIMBUS_GENERATION ICEDTEA_ENV += \ - "DISABLE_NIMBUS=true" + DISABLE_NIMBUS="true" endif if DISABLE_OPTIMIZATIONS ICEDTEA_ENV += \ - "NO_OPTIMIZATIONS=true" \ - "CC_NO_OPT=-O0 -g" + NO_OPTIMIZATIONS="true" \ + CC_NO_OPT="-O0 -g" endif if !ENABLE_DOCS ICEDTEA_ENV += \ - "NO_DOCS=true" + NO_DOCS="true" endif if USE_ALT_JAR ICEDTEA_ENV += \ - "ALT_JAR_CMD=$(ALT_JAR_CMD)" + ALT_JAR_CMD="$(ALT_JAR_CMD)" endif env: @@ -1612,70 +1612,69 @@ ICEDTEA_CLS_DIR_ECJ = \ ICEDTEA_CLS_DIR_ECJ = \ $(abs_top_builddir)/$(ECJ_BUILD_OUTPUT_DIR)/classes ICEDTEA_ENV_ECJ = \ - "ALT_JDK_IMPORT_PATH=$(ICEDTEA_BOOT_DIR)" \ - "ANT_HOME=$(SYSTEM_ANT_DIR)" \ - "BUILD_NUMBER=$(OPENJDK_VERSION)" \ - "JDK_UPDATE_VERSION=$(JDK_UPDATE_VERSION)" \ - "JRE_RELEASE_VERSION=1.7.0_$(COMBINED_VERSION)" \ - "MILESTONE=fcs" \ - "LANG=C" \ - "PATH=$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ - "ALT_BOOTDIR=$(ICEDTEA_BOOT_DIR)" \ - "BUILD_ARCH_DIR=$(BUILD_ARCH_DIR)" \ - "ICEDTEA_RT=$(ICEDTEA_RT)" \ - "ICEDTEA_BUILD_DIR=$(ICEDTEA_BUILD_DIR_ECJ)" \ - "ICEDTEA_CLS_DIR=$(ICEDTEA_CLS_DIR_ECJ)" \ - "ICEDTEA_ENDORSED_DIR=$(ICEDTEA_ENDORSED_DIR)" \ - "ENDORSED=-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ - "BOOTCLASSPATH_CLS_RT=-bootclasspath \ - $(ICEDTEA_CLS_DIR_ECJ):$(ICEDTEA_RT)" \ - "BOOTCLASSPATH_CLS=-bootclasspath $(ICEDTEA_CLS_DIR_ECJ)" \ - "BOOTCLASSPATH_RT_LIBGCJ=-bootclasspath $(ICEDTEA_RT):$(SYSTEM_JDK_DIR)/jre/lib/rt.jar" \ - "CLASSPATH=" \ - "LD_LIBRARY_PATH=" \ - "GENSRCDIR=$(abs_top_builddir)/generated" \ - "CORE_BUILD=$(ICEDTEA_CORE_BUILD)" \ - "ZERO_BUILD=$(ICEDTEA_ZERO_BUILD)" \ - "ICEDTEA_SHARK_BUILD=$(ICEDTEA_SHARK_BUILD)" \ - "ZERO_LIBARCH=$(ZERO_LIBARCH)" \ - "ZERO_BITSPERWORD=$(ZERO_BITSPERWORD)" \ - "ZERO_ENDIANNESS=$(ZERO_ENDIANNESS)" \ - "ZERO_ARCHDEF=$(ZERO_ARCHDEF)" \ - "ZERO_ARCHFLAG=$(ZERO_ARCHFLAG)" \ - "LIBFFI_CFLAGS=$(LIBFFI_CFLAGS)" \ - "LIBFFI_LIBS=$(LIBFFI_LIBS)" \ - "LLVM_CFLAGS=$(LLVM_CFLAGS)" \ - "LLVM_LDFLAGS=$(LLVM_LDFLAGS)" \ - "LLVM_LIBS=$(LLVM_LIBS)" \ - "FREETYPE2_HEADERS=$(FREETYPE2_CFLAGS)" \ - "FT2_LIB=$(FREETYPE2_LIBS)" \ - "ALT_PARALLEL_COMPILE_JOBS=$(PARALLEL_JOBS)" \ - "HOTSPOT_BUILD_JOBS=$(PARALLEL_JOBS)" \ - "JAVAC=" \ - "RHINO_JAR=$(RHINO_JAR)" \ - "JAR_KNOWS_ATFILE=$(JAR_KNOWS_ATFILE)" \ - "JAR_KNOWS_J_OPTIONS=$(JAR_KNOWS_J_OPTIONS)" \ - "JAR_ACCEPTS_STDIN_LIST=$(JAR_ACCEPTS_STDIN_LIST)" \ - "DISABLE_NIMBUS=true" \ - "ALT_NETX_DIST=$(abs_top_builddir)/netx.build" \ - "ALT_LIVECONNECT_DIST=$(abs_top_builddir)" \ - "DEBUG_CLASSFILES=true" \ - "DEBUG_BINARIES=true" + ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ + ANT_HOME="$(SYSTEM_ANT_DIR)" \ + BUILD_NUMBER="$(OPENJDK_VERSION)" \ + JDK_UPDATE_VERSION="$(JDK_UPDATE_VERSION)" \ + JRE_RELEASE_VERSION="1.7.0_$(COMBINED_VERSION)" \ + MILESTONE="fcs" \ + LANG="C" \ + PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ + ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ + BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ + ICEDTEA_RT="$(ICEDTEA_RT)" \ + ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR_ECJ)" \ + ICEDTEA_CLS_DIR="$(ICEDTEA_CLS_DIR_ECJ)" \ + ICEDTEA_ENDORSED_DIR="$(ICEDTEA_ENDORSED_DIR)" \ + ENDORSED="-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ + BOOTCLASSPATH_CLS_RT="-bootclasspath $(ICEDTEA_CLS_DIR_ECJ):$(ICEDTEA_RT)" \ + BOOTCLASSPATH_CLS="-bootclasspath $(ICEDTEA_CLS_DIR_ECJ)" \ + BOOTCLASSPATH_RT_LIBGCJ="-bootclasspath $(ICEDTEA_RT):$(SYSTEM_JDK_DIR)/jre/lib/rt.jar" \ + CLASSPATH="" \ + LD_LIBRARY_PATH="" \ + GENSRCDIR="$(abs_top_builddir)/generated" \ + CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ + ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ + ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ + ZERO_LIBARCH="$(ZERO_LIBARCH)" \ + ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ + ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ + ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ + ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ + LIBFFI_CFLAGS="$(LIBFFI_CFLAGS)" \ + LIBFFI_LIBS="$(LIBFFI_LIBS)" \ + LLVM_CFLAGS="$(LLVM_CFLAGS)" \ + LLVM_LDFLAGS="$(LLVM_LDFLAGS)" \ + LLVM_LIBS="$(LLVM_LIBS)" \ + FREETYPE2_HEADERS="$(FREETYPE2_CFLAGS)" \ + FT2_LIB="$(FREETYPE2_LIBS)" \ + ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ + HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ + JAVAC="" \ + RHINO_JAR="$(RHINO_JAR)" \ + JAR_KNOWS_ATFILE="$(JAR_KNOWS_ATFILE)" \ + JAR_KNOWS_J_OPTIONS="$(JAR_KNOWS_J_OPTIONS)" \ + JAR_ACCEPTS_STDIN_LIST="$(JAR_ACCEPTS_STDIN_LIST)" \ + DISABLE_NIMBUS="true" \ + ALT_NETX_DIST="$(abs_top_builddir)/netx.build" \ + ALT_LIVECONNECT_DIST="$(abs_top_builddir)" \ + DEBUG_CLASSFILES="true" \ + DEBUG_BINARIES="true" if WITH_CACAO ICEDTEA_ENV_ECJ += \ - "ALT_HOTSPOT_IMPORT_PATH=$(CACAO_IMPORT_PATH)" + ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" endif if DISABLE_OPTIMIZATIONS ICEDTEA_ENV_ECJ += \ - "NO_OPTIMIZATIONS=true" \ - "CC_NO_OPT=-O0 -g" + NO_OPTIMIZATIONS="true" \ + CC_NO_OPT="-O0 -g" endif if !ENABLE_DOCS ICEDTEA_ENV_ECJ += \ - "NO_DOCS=true" + NO_DOCS="true" endif env-ecj: From dbhole at redhat.com Thu Aug 6 07:40:54 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 06 Aug 2009 14:40:54 +0000 Subject: changeset in /hg/icedtea6: Updates to NP plugin. Message-ID: changeset b775cb0d0900 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b775cb0d0900 description: Updates to NP plugin. - Plugin request processor threads now use condition based wait rather than periodic polling - Added support for fetching field information and values, and method invocation from JS -> Java - Added support for static calls (e.g. System.out.println(...)) from JS - Implented a cost-based overloaded method resolver for when JS calls an overloaded Java method with ambiguous types. diffstat: 14 files changed, 2098 insertions(+), 287 deletions(-) ChangeLog | 27 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 640 +++++++++- plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 68 + plugin/icedteanp/IcedTeaNPPlugin.cc | 173 +- plugin/icedteanp/IcedTeaNPPlugin.h | 8 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 28 plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 4 plugin/icedteanp/IcedTeaPluginUtils.cc | 10 plugin/icedteanp/IcedTeaPluginUtils.h | 9 plugin/icedteanp/IcedTeaRunnable.h | 2 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 550 ++++++++ plugin/icedteanp/IcedTeaScriptablePluginObject.h | 104 + plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java | 480 +++++++ plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 282 ++-- diffs (truncated from 3026 to 500 lines): diff -r 8a0ea636a6e5 -r b775cb0d0900 ChangeLog --- a/ChangeLog Wed Aug 05 20:43:00 2009 +0200 +++ b/ChangeLog Thu Aug 06 10:43:31 2009 -0400 @@ -1,3 +1,30 @@ 2009-08-05 Mark Wielaard + + * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc: Handle error messages + from Java side. Add referencing/de-referencing support, and support for + fetching fields, invoking methods, and returning applet instances. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Decrease timeout to 20 + seconds. Declare new functions created in the associated .cc file. + * plugin/icedteanp/IcedTeaNPPlugin.cc: Add support for dynamic NPObject + creation per instance. Add a new global pthread_cond_t for message + availability. + * plugin/icedteanp/IcedTeaNPPlugin.h: Misc. changes related to the above + associated file. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: Use condition based + wait for message availability, rather than periodic poll. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: Make + getInstanceFromMemberPtr and storeInstanceID global. + * plugin/icedteanp/IcedTeaPluginUtils.cc: Force use of file:// src until + security subsystem is implemented. + * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Created skeletons for + Java and JavaPackage NPObjects, and implemented hasProperty, hasMethod, + getProperty and getMethod. + * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Appropriate header + changes associated with the above. + * plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java: New file. + Uses a cost-based approach to resolve overloaded methods when JavaScript + calls Java methods with potentially ambiguous type arguments. + 2009-08-05 Mark Wielaard * patches/icedtea-systemtap.patch: Remove workaround for nmethod.cpp. diff -r 8a0ea636a6e5 -r b775cb0d0900 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Aug 05 20:43:00 2009 +0200 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Thu Aug 06 10:43:31 2009 -0400 @@ -66,9 +66,22 @@ JavaRequestProcessor::newMessageOnBus(co { // Gather the results - // GetStringUTFChars - if (message_parts->at(4) == "GetStringUTFChars" || - message_parts->at(4) == "GetToStringValue") + // Let's get errors out of the way first + if (message_parts->at(4) == "Error") + { + for (int i=5; i < message_parts->size(); i++) + { + result->error_msg->append(message_parts->at(i)); + result->error_msg->append(" "); + } + + printf("Error on Java side: %s\n", result->error_msg->c_str()); + + result->error_occurred = true; + result_ready = true; + } + else if (message_parts->at(4) == "GetStringUTFChars" || + message_parts->at(4) == "GetToStringValue") { // first item is length, and it is radix 10 int length = strtol(message_parts->at(5).c_str(), NULL, 10); @@ -83,30 +96,49 @@ JavaRequestProcessor::newMessageOnBus(co IcedTeaPluginUtilities::getUTF16LEString(length, 6 /* start at */, message_parts, result->return_wstring); result_ready = true; - } else if (message_parts->at(4) == "FindClass") + } else if ((message_parts->at(4) == "FindClass") || + (message_parts->at(4) == "GetClassName") || + (message_parts->at(4) == "GetClassID") || + (message_parts->at(4) == "GetMethodID") || + (message_parts->at(4) == "GetStaticMethodID") || + (message_parts->at(4) == "GetObjectClass") || + (message_parts->at(4) == "NewObject") || + (message_parts->at(4) == "NewStringUTF") || + (message_parts->at(4) == "HasPackage") || + (message_parts->at(4) == "HasMethod") || + (message_parts->at(4) == "HasField") || + (message_parts->at(4) == "GetStaticFieldID") || + (message_parts->at(4) == "GetFieldID") || + (message_parts->at(4) == "GetField") || + (message_parts->at(4) == "GetStaticField") || + (message_parts->at(4) == "GetJavaObject")) { result->return_identifier = atoi(message_parts->at(5).c_str()); result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access result_ready = true; - } else if (message_parts->at(4) == "GetClassName") + } else if ((message_parts->at(4) == "DeleteLocalRef") || + (message_parts->at(4) == "NewGlobalRef")) { - result->return_identifier = atoi(message_parts->at(5).c_str()); - result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access - result_ready = true; - } else if (message_parts->at(4) == "GetMethodID") + result_ready = true; // nothing else to do + } else if ((message_parts->at(4) == "CallMethod") || + + (message_parts->at(4) == "CallStaticMethod")) { - result->return_identifier = atoi(message_parts->at(5).c_str()); - result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access - result_ready = true; - } else if (message_parts->at(4) == "NewObject") - { - result->return_identifier = atoi(message_parts->at(5).c_str()); - result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access - result_ready = true; - } else if (message_parts->at(4) == "NewStringUTF") - { - result->return_identifier = atoi(message_parts->at(5).c_str()); - result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access + + if (message_parts->at(5) == "literalreturn") + { + // literal returns don't have a corresponding jni id + result->return_identifier = 0; + result->return_string->append(message_parts->at(6)); + + } else + { + // Else it is a complex object + + result->return_identifier = atoi(message_parts->at(5).c_str()); + result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access + } + result_ready = true; } @@ -130,9 +162,10 @@ JavaRequestProcessor::JavaRequestProcess // caller frees this result = new JavaResultData(); result->error_msg = new std::string(); + result->return_identifier = 0; result->return_string = new std::string(); result->return_wstring = new std::wstring(); - result->error_occured = false; + result->error_occurred = false; result_ready = false; } @@ -162,6 +195,22 @@ JavaRequestProcessor::~JavaRequestProces } } +/** + * Resets the results + */ +void +JavaRequestProcessor::resetResult() +{ + // caller frees this + result->error_msg->clear(); + result->return_identifier = 0; + result->return_string->clear(); + result->return_wstring->clear(); + result->error_occurred = false; + + result_ready = false; +} + void JavaRequestProcessor::postAndWaitForResponse(std::string* message) { @@ -179,10 +228,14 @@ JavaRequestProcessor::postAndWaitForResp do { clock_gettime(CLOCK_REALTIME, &curr_t); - bool timedout = false; if (!result_ready && (curr_t.tv_sec < t.tv_sec)) - usleep(2000); + { + if (g_main_context_pending(NULL)) + g_main_context_iteration(NULL, false); + else + usleep(2000); + } else break; @@ -190,6 +243,9 @@ JavaRequestProcessor::postAndWaitForResp if (curr_t.tv_sec >= t.tv_sec) { + result->error_occurred = true; + result->error_msg->append("Error: Timed out when waiting for response"); + // Report error PLUGIN_DEBUG_1ARG("Error: Timed out when waiting for response to %s\n", message->c_str()); } @@ -253,6 +309,57 @@ JavaRequestProcessor::getString(std::str return result; } +/** + * Decrements reference count by 1 + * + * @param object_id The ID of the object + */ + +void +JavaRequestProcessor::deleteReference(std::string object_id) +{ + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + + message->append(" DeleteLocalRef "); + message->append(object_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete message; +} + +/** + * Increments reference count by 1 + * + * @param object_id The ID of the object + */ + +void +JavaRequestProcessor::addReference(std::string object_id) +{ + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + + message->append(" NewGlobalRef "); + message->append(object_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete message; + +} + JavaResultData* JavaRequestProcessor::findClass(std::string name) { @@ -274,7 +381,7 @@ JavaRequestProcessor::findClass(std::str } JavaResultData* -JavaRequestProcessor::getClassName(std::string ID) +JavaRequestProcessor::getClassName(std::string objectID) { std::string* message; @@ -284,7 +391,7 @@ JavaRequestProcessor::getClassName(std:: message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); message->append(" GetClassName "); - message->append(ID); + message->append(objectID); postAndWaitForResponse(message); @@ -294,7 +401,139 @@ JavaRequestProcessor::getClassName(std:: } JavaResultData* -JavaRequestProcessor::getMethodID(std::string objectID, NPIdentifier methodName, +JavaRequestProcessor::getClassID(std::string objectID) +{ + std::string* message; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + + message->append(" GetClassID "); + message->append(objectID); + + postAndWaitForResponse(message); + + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::getFieldID(std::string classID, std::string fieldName) +{ + JavaResultData* java_result; + JavaRequestProcessor* java_request = new JavaRequestProcessor(); + std::string* message; + + java_result = java_request->newString(fieldName); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + message->append(" GetFieldID "); + message->append(classID); + message->append(" "); + message->append(java_result->return_string->c_str()); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + delete java_request; + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::getStaticFieldID(std::string classID, std::string fieldName) +{ + JavaResultData* java_result; + JavaRequestProcessor* java_request = new JavaRequestProcessor(); + std::string* message; + + java_result = java_request->newString(fieldName); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + message->append(" GetStaticFieldID "); + message->append(classID); + message->append(" "); + message->append(java_result->return_string->c_str()); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + delete java_request; + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::getField(std::string classID, std::string fieldName) +{ + JavaResultData* java_result; + JavaRequestProcessor* java_request = new JavaRequestProcessor(); + std::string* message; + + java_result = java_request->getFieldID(classID, fieldName); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + message->append(" GetField "); + message->append(classID); + message->append(" "); + message->append(java_result->return_string->c_str()); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + delete java_request; + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::getStaticField(std::string classID, std::string fieldName) +{ + JavaResultData* java_result; + JavaRequestProcessor* java_request = new JavaRequestProcessor(); + std::string* message; + + java_result = java_request->getStaticFieldID(classID, fieldName); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + message->append(" GetStaticField "); + message->append(classID); + message->append(" "); + message->append(java_result->return_string->c_str()); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + delete java_request; + delete message; + + return result; +} + +JavaResultData* +JavaRequestProcessor::getMethodID(std::string classID, NPIdentifier methodName, std::vector args) { JavaRequestProcessor* java_request; @@ -317,7 +556,7 @@ JavaRequestProcessor::getMethodID(std::s message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); *message += " GetMethodID "; - *message += objectID; + *message += classID; *message += " "; *message += browser_functions.utf8fromidentifier(methodName); *message += " "; @@ -330,6 +569,235 @@ JavaRequestProcessor::getMethodID(std::s delete message; return result; +} + +JavaResultData* +JavaRequestProcessor::getStaticMethodID(std::string classID, NPIdentifier methodName, + std::vector args) +{ + JavaRequestProcessor* java_request; + std::string* message; + std::string* signature; + + signature = new std::string(); + *signature += "("; + + // FIXME: Need to determine how to extract array types and complex java objects + for (int i=0; i < args.size(); i++) + { + *signature += args[i]; + } + + *signature += ")"; + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); + *message += " GetStaticMethodID "; + *message += classID; + *message += " "; + *message += browser_functions.utf8fromidentifier(methodName); + *message += " "; + *message += *signature; + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + delete signature; + delete message; + + return result; +} + +int +JavaRequestProcessor::createJavaObjectFromVariant(NPVariant variant) +{ + JavaResultData* java_result; + + std::string className; + std::string jsObjectClassID = std::string(); + std::string jsObjectConstructorID = std::string(); + + std::string stringArg = std::string(); + std::vector args = std::vector(); + + JavaRequestProcessor java_request = JavaRequestProcessor(); + bool alreadyCreated = false; + + if (NPVARIANT_IS_VOID(variant)) + { + PLUGIN_DEBUG_1ARG("VOID %d\n", variant); + } + else if (NPVARIANT_IS_NULL(variant)) + { + PLUGIN_DEBUG_1ARG("NULL\n", variant); + } + else if (NPVARIANT_IS_BOOLEAN(variant)) + { + className = "java.lang.Boolean"; + + if (NPVARIANT_TO_BOOLEAN(variant)) + stringArg = "true"; + else + stringArg = "false"; + + } + else if (NPVARIANT_IS_INT32(variant)) + { + className = "java.lang.Integer"; From ahughes at redhat.com Thu Aug 6 09:26:53 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 06 Aug 2009 16:26:53 +0000 Subject: changeset in /hg/icedtea: Bump to b67. Message-ID: changeset da8d53a6fafd in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=da8d53a6fafd description: Bump to b67. 2009-08-06 Andrew John Hughes * Makefile.am: Bump to b67. diffstat: 2 files changed, 22 insertions(+), 17 deletions(-) ChangeLog | 5 +++++ Makefile.am | 34 +++++++++++++++++----------------- diffs (53 lines): diff -r 2af5ec988144 -r da8d53a6fafd ChangeLog --- a/ChangeLog Thu Aug 06 13:30:06 2009 +0200 +++ b/ChangeLog Thu Aug 06 17:28:47 2009 +0100 @@ -1,3 +1,8 @@ 2009-08-06 Matthias Klose + + * Makefile.am: + Bump to b67. + 2009-08-06 Matthias Klose * Makefile.am (ICEDTEA_ENV, ICEDTEA_ENV_ECJ): Allow passing diff -r 2af5ec988144 -r da8d53a6fafd Makefile.am --- a/Makefile.am Thu Aug 06 13:30:06 2009 +0200 +++ b/Makefile.am Thu Aug 06 17:28:47 2009 +0100 @@ -1,20 +1,20 @@ OPENJDK_VERSION = b66 -OPENJDK_VERSION = b66 - -OPENJDK_CHANGESET = e7eeeda332ec -CORBA_CHANGESET = 1741ea5cb854 -JAXP_CHANGESET = b3d2bf4c255d -JAXWS_CHANGESET = c37936a72332 -JDK_CHANGESET = 51fcc41d8b24 -LANGTOOLS_CHANGESET = 634f519d6f9a -HOTSPOT_CHANGESET = 945fcffdbcab - -OPENJDK_MD5SUM = 8f63dbb0dcd83d905e243c58d0135174 -CORBA_MD5SUM = 06ac898f583fc9eec179fc2d1dcb5c71 -JAXP_MD5SUM = 01118a1882ea1ac5205e232bd7c847f7 -JAXWS_MD5SUM = 8c53573f9f072bb273435ee75c7aaaa3 -JDK_MD5SUM = 5ca832939f80db7c2e836141a9cac98a -LANGTOOLS_MD5SUM = cd1389112baa1b2b24da95555345c1b9 -HOTSPOT_MD5SUM = ce3ab877df030cf4842001918898244e +OPENJDK_VERSION = b67 + +OPENJDK_CHANGESET = f24111620a51 +CORBA_CHANGESET = 1cb0098b53b2 +JAXP_CHANGESET = 45fc86d2aa5c +JAXWS_CHANGESET = 73440eb34fb0 +JDK_CHANGESET = cd7d9265b4e6 +LANGTOOLS_CHANGESET = 14b1a8ede954 +HOTSPOT_CHANGESET = 87c6731ab8d1 + +OPENJDK_MD5SUM = f5cc1b21cf1a805528300bf931aa821e +CORBA_MD5SUM = 00fa00a58b465cad40cab9ac05058c24 +JAXP_MD5SUM = 61230cee4199f91ed5675bcf2acad63d +JAXWS_MD5SUM = fc9d2659fb875ece0e3a5e7894c1bbf8 +JDK_MD5SUM = 8e3fa808fcad7713635a21e127dd0f72 +LANGTOOLS_MD5SUM = a3b15bcf5b76b1639600250fc29c057b +HOTSPOT_MD5SUM = d0632498485808fdf8f97ef1f388722d CACAO_VERSION = 0.99.4 CACAO_MD5SUM = 63220327925ace13756ae334c55a3baa From doko at ubuntu.com Thu Aug 6 09:41:00 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Thu, 06 Aug 2009 16:41:00 +0000 Subject: changeset in /hg/icedtea: 2009-08-06 Matthias Klose changeset 39d2012855a5 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=39d2012855a5 description: 2009-08-06 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Adjust for added/removed configuration options. diffstat: 2 files changed, 9 insertions(+), 6 deletions(-) ChangeLog | 5 +++++ Makefile.am | 10 ++++------ diffs (40 lines): diff -r da8d53a6fafd -r 39d2012855a5 ChangeLog --- a/ChangeLog Thu Aug 06 17:28:47 2009 +0100 +++ b/ChangeLog Thu Aug 06 18:35:39 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-06 Andrew John Hughes + + * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Adjust for added/removed + configuration options. + 2009-08-06 Andrew John Hughes * Makefile.am: diff -r da8d53a6fafd -r 39d2012855a5 Makefile.am --- a/Makefile.am Thu Aug 06 17:28:47 2009 +0100 +++ b/Makefile.am Thu Aug 06 18:35:39 2009 +0200 @@ -3423,20 +3423,18 @@ endif # configure script arguments, quoted in single quotes CONFIGURE_ARGS = @CONFIGURE_ARGS@ ADD_ZERO_CONFIGURE_ARGS = \ - --with-openjdk \ - --with-openjdk-home=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \ - --enable-zero + --with-jdk-home=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \ + --disable-bootstrap --enable-zero if ADD_SHARK_BUILD ADD_ZERO_CONFIGURE_ARGS += \ --enable-shark endif ADD_ZERO_CONFIGURE_ARGS += \ --disable-docs \ - $(filter-out '--with-gcj-home=% '--with-ecj=% \ + $(filter-out '--with-jdk-home=% '--with-ecj=% \ '--with-java=% '--with-javah=% \ '--with-rmic=% '--with-additional-vms=% \ - '--with-icedtea '--with-icedtea-home=% \ - '--with-openjdk '--with-openjdk-home=% , \ + '--disable-bootstrap% '--enable-bootstrap% , \ $(CONFIGURE_ARGS)) ADD_ZERO_EXTRA_BUILD_ENV = \ From langel at redhat.com Thu Aug 6 13:04:21 2009 From: langel at redhat.com (Lillian Angel) Date: Thu, 06 Aug 2009 16:04:21 -0400 Subject: IcedTea7 1.11 (OpenJDK7 Milestone 4) released! In-Reply-To: <17c6771e0908060430t126e58cdvf7f069aafcfb695e@mail.gmail.com> References: <17c6771e0908060430t126e58cdvf7f069aafcfb695e@mail.gmail.com> Message-ID: <4A7B3745.40805@redhat.com> Andrew John Hughes wrote: > We are pleased to announce the release of IcedTea7 1.11. > > The IcedTea project provides a harness to build the source code from > OpenJDK7 using Free Software build tools. It also includes the only > Free Java plugin and Web Start implementation, and support for > additional architectures over and above x86, x86_64 and sparc via the > Zero assembler port and the Shark JIT compiler. > > This release provides a version of IcedTea for producing builds of > OpenJDK7 Milestone 4. Unlike the binaries mentioned by Mark Reinhold > (http://blogs.sun.com/mr/entry/jdk7_m4) and Xiomara Jayasena > (http://blogs.sun.com/xiomara/entry/jdk7_m4u), those produced by > IcedTea are completely Free Software, and include Free implementations > of a Java plugin and Web Start support. You can also build IcedTea on > architectures not supported by OpenJDK as standard e.g. ppc, ppc64, > arm via the Zero assembler port (--enable-zero). There is also > experimental support for a JIT based on LLVM. > > What???s New? > ?????????????????? > - Updated to OpenJDK7 b66 (Milestone 4), including > JSR 308: Annotations on Java types. > - Updates/bug fixes for netx, Shark and the web plugin. > - Zero is now provided in the upstream forest rather than in-tree. > - The options > - --with-openjdk > - --with-icedtea > - --with-openjdk-home > - --with-icedtea-home > - --with-gcj-jdk > have been removed. The JDK is now specified by --with-jdk-home > and whether or not do a full bootstrap or not is now decided > by --disable-bootstrap (the default is yes). This is in preparation > for making the two stages independent of the JDK used, but some > artefacts still remain in this release; the supported behaviour > is still the use of gcj jdk for a full bootstrap and icedtea > for a quick build. > - Added java method tracing using systemtap version 0.9.9+. > - Added latest security fixes. > ?????????????????? > > The tarball can be downloaded here: > http://icedtea.classpath.org/download/source/icedtea-1.11.tar.gz > > The following people helped with this release: > Lillian Angel, Gary Benson, Deepak Bhole, Andrew Haley, Andrew John > Hughes, Matthias Klose, Omair Majid, Xerxes R??nby, Mark Wielaard > > We would also like to thank all the bug reporters and testers! > > To get started: > $ tar xzf icedtea-1.11.tar.gz > $ cd icedtea-1.11 > > Full build requirements and instructions are in INSTALL: > $ ./configure [--enable-visualvm --with-jdk-home --disable-bootstrap > --enable-pulse-java --enable-systemtap ...] > $ make > Fedora 11 i386, srpm and x86_64 rpms here: http://langel.fedorapeople.org/java-1.7.0-openjdk/ Cheers, Lillian From langel at redhat.com Thu Aug 6 13:46:52 2009 From: langel at redhat.com (Lillian Angel) Date: Thu, 06 Aug 2009 16:46:52 -0400 Subject: Proposed IcedTea 6 release Message-ID: <4A7B413C.8010109@redhat.com> Hi, Due to the most recent drop of security patches, the progress on the plugin/netx and system-tap integration, I am wondering if this is a good time to have a release. Any thoughts? Cheers, Lillian From gnu_andrew at member.fsf.org Thu Aug 6 13:48:36 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 6 Aug 2009 21:48:36 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7B413C.8010109@redhat.com> References: <4A7B413C.8010109@redhat.com> Message-ID: <17c6771e0908061348n6728c14bqb471fb9a674d59b6@mail.gmail.com> 2009/8/6 Lillian Angel : > Hi, > > Due to the most recent drop of security patches, the progress on the > plugin/netx and system-tap integration, I am wondering if this is a good > time to have a release. > > Any thoughts? > > > Cheers, > Lillian > Sounds like a good idea to me. -- 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 mark at klomp.org Thu Aug 6 15:15:55 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 07 Aug 2009 00:15:55 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7B413C.8010109@redhat.com> References: <4A7B413C.8010109@redhat.com> Message-ID: <1249596955.3408.59.camel@springer.wildebeest.org> On Thu, 2009-08-06 at 16:46 -0400, Lillian Angel wrote: > Due to the most recent drop of security patches, the progress on the > plugin/netx and system-tap integration, I am wondering if this is a good > time to have a release. > > Any thoughts? It seems a perfect time! Especially with the security fixes in. I believe we already have everything in icedtea6 that would be in the upcoming oj6b17 (updated hotspot and security fixes), but if possible it would be nice if we could sync with that (assuming the current update lock can be broken on that repo). If only to not have any version confusion. Cheers, Mark From Joe.Darcy at Sun.COM Thu Aug 6 17:40:01 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Thu, 06 Aug 2009 17:40:01 -0700 Subject: Proposed IcedTea 6 release In-Reply-To: <1249596955.3408.59.camel@springer.wildebeest.org> References: <4A7B413C.8010109@redhat.com> <1249596955.3408.59.camel@springer.wildebeest.org> Message-ID: <4A7B77E1.7060506@sun.com> Mark Wielaard wrote: > On Thu, 2009-08-06 at 16:46 -0400, Lillian Angel wrote: > >> Due to the most recent drop of security patches, the progress on the >> plugin/netx and system-tap integration, I am wondering if this is a good >> time to have a release. >> >> Any thoughts? >> > > It seems a perfect time! Especially with the security fixes in. > > I believe we already have everything in icedtea6 that would be in the > upcoming oj6b17 (updated hotspot and security fixes), but if possible it > would be nice if we could sync with that (assuming the current update > lock can be broken on that repo). If only to not have any version > confusion. > > Cheers, > > Mark > > Yes, once the HotSpot change get back, I plan to label the OpenJDK 6 repo as "b17." -Joe From Joe.Darcy at Sun.COM Thu Aug 6 17:49:15 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Thu, 06 Aug 2009 17:49:15 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> <4A79F131.7040105@sun.com> <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> Message-ID: <4A7B7A0B.6050804@sun.com> Andrew John Hughes wrote: > 2009/8/5 Tim Bell : > >> Andrew John Hughes wrote: >> >> >>> Thanks Tim, that seems to have fixed the permissions issue. >>> >> Good. >> >> >>> There now seems to be an issue with jcheck, as the merge causes some >>> bugids to be repeated: >>> >> Hmmm - how did these changesets come in through two different paths? >> >> >>> pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >>> searching for changes >>> remote: adding changesets >>> remote: adding manifests >>> remote: adding file changes >>> remote: added 555 changesets with 4771 changes to 1453 files >>> remote: >>> remote: > Changeset: 100:d821d920b465 >>> remote: > Author: kvn >>> remote: > Date: 2008-03-11 11:04 >>> remote: > >>> remote: > 6623167: C2 crashed in StoreCMNode::Value >>> remote: > Summary: C2 crashed in StoreCMNode::Value because >>> n->in(MemNode::OopStore) is 0. >>> remote: > Reviewed-by: rasbold, never >>> remote: >>> remote: Bugid 6623167 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 104:2c106685d6d0 >>> remote: > Author: dcubed >>> remote: > Date: 2008-03-12 18:06 >>> remote: > >>> remote: > 6497639: 4/3 Profiling Swing application caused JVM crash >>> remote: > Summary: Make RedefineClasses() interoperate better with >>> class sharing. >>> remote: > Reviewed-by: sspitsyn, jmasa >>> remote: >>> remote: Bugid 6497639 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 105:d8b3ef7ee3e5 >>> remote: > Author: dcubed >>> remote: > Date: 2008-03-12 18:07 >>> remote: > >>> remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or >>> assert() failure >>> remote: > Summary: Add should_not_be_cached() to markOop and methodOop >>> and query that status inOopMapCache::lookup() >>> remote: > Reviewed-by: coleenp, sspitsyn, jmasa >>> remote: >>> remote: Bugid 6599425 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 240:65fe2bd88839 >>> remote: > Author: never >>> remote: > Date: 2008-06-05 21:44 >>> remote: > >>> remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse >>> with 1.6.0_05-ea >>> remote: > Reviewed-by: kvn, jrose, rasbold >>> remote: >>> remote: Bugid 6614100 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 286:3e82d72933d0 >>> remote: > Author: xlu >>> remote: > Date: 2008-06-26 14:15 >>> remote: > >>> remote: > 6718830: Hotspot fails to build with gcc 4.3 >>> remote: > Summary: Fixed linux make file and couple adlc code to meet >>> the changes of gcc 4.3 >>> remote: > Reviewed-by: kamg, igor >>> remote: >>> remote: Bugid 6718830 already used in this repository, in revision 32 >>> remote: >>> remote: > Changeset: 289:551f4309f476 >>> remote: > Author: ohair >>> remote: > Date: 2008-07-03 10:46 >>> remote: > >>> remote: > 6695777: Queens.class should be built from source, not put >>> in source repo >>> remote: > Reviewed-by: kvn >>> remote: >>> remote: Bugid 6695777 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 314:54499b980c23 >>> remote: > Author: swamyv >>> remote: > Date: 2008-07-29 13:54 >>> remote: > >>> remote: > 6710791: Remove files or build from source:maf-1_0.jar, jlfg-1_0.jar >>> remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. >>> remote: > Reviewed-by: poonam, jjh >>> remote: >>> remote: Bugid 6710791 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 360:fa4d1d240383 >>> remote: > Author: never >>> remote: > Date: 2008-08-26 15:49 >>> remote: > >>> remote: > 6741642: bad enum definition in ciTypeFlow.hpp >>> remote: > Reviewed-by: rasbold, martin >>> remote: > Contributed-by: doko at ubuntu.com >>> remote: >>> remote: Bugid 6741642 already used in this repository, in revision 22 >>> remote: >>> remote: > Changeset: 589:748572b86af6 >>> remote: > Author: never >>> remote: > Date: 2009-04-07 14:46 >>> remote: > >>> remote: > 6636360: compiler/6595044/Main.java test fails with 64bit >>> java on solaris-sparcv9 with SIGSEGV >>> remote: > Reviewed-by: kvn, twisti >>> remote: >>> remote: Bugid 6636360 already used in this repository, in revision 29 >>> remote: >>> remote: abort: pretxnchangegroup.0.jcheck hook failed >>> remote: transaction abort! >>> remote: rollback completed >>> abort: unexpected response: empty string >>> >>> Is there a way of getting it to ignore these for this one push? I >>> don't know of a way to just pull out these nine changesets from the >>> 555 waiting to go... >>> >> I think they would need to be added to the jcheck whitelist for all time- >> but that is more of a question for Mark or Kelly. >> >> Tim >> >> > > The early revisions (20, 32) are from OpenJDK6 which was rebased to > allow HotSpot patches to be applied on top. So what happened here is > that, as the fixes were already applied to OpenJDK6, the new > changesets pulled in by the merge will be no-ops but still exist to > keep the change history accurate. > > I think we just need a way of disabling this check. OpenJDK6 already > has whitespace and comment checks turned to lax. See .jcheck: > http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/0282bf49b0f6. There > may already be an option for this bugid check too, but I have no idea > what the format of that file is. > *grumble* I'll talk to Mark about this when he is available to discuss the best way to get these changes back. -Joe From dbhole at redhat.com Thu Aug 6 20:41:28 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 6 Aug 2009 23:41:28 -0400 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7B413C.8010109@redhat.com> References: <4A7B413C.8010109@redhat.com> Message-ID: <20090807034128.GA13865@redhat.com> * Lillian Angel [2009-08-06 16:47]: > Hi, > > Due to the most recent drop of security patches, the progress on the > plugin/netx and system-tap integration, I am wondering if this is a good > time to have a release. > > Any thoughts? > > Definitely +1 from me. New features for Plugin/WebStart include largely complete 1.5/6.0 jnlp spec support, cookie support rewrite, and numerous other stability and bug fixes. It'll be nice to have a release with it all. Deepak From aph at redhat.com Fri Aug 7 01:36:06 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 07 Aug 2009 09:36:06 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7B413C.8010109@redhat.com> References: <4A7B413C.8010109@redhat.com> Message-ID: <4A7BE776.3040405@redhat.com> Lillian Angel wrote: > Due to the most recent drop of security patches, the progress on the > plugin/netx and system-tap integration, I am wondering if this is a good > time to have a release. > > Any thoughts? There's the ARM work from Ed Nevill too. We need to look at exactly which version of LLVM to target with Shark. I think we should get the ARM changes in ASAP, and then branch with a view to stabilizing over the next couple of weeks. Various people are away on holiday, so this might be a somewhat extended test cycle. Andrew. From mark at klomp.org Fri Aug 7 02:53:14 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 07 Aug 2009 11:53:14 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7BE776.3040405@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> Message-ID: <1249638794.3477.13.camel@springer.wildebeest.org> On Fri, 2009-08-07 at 09:36 +0100, Andrew Haley wrote: > There's the ARM work from Ed Nevill too. We need to look at exactly which > version of LLVM to target with Shark. > > I think we should get the ARM changes in ASAP, and then branch with a view > to stabilizing over the next couple of weeks. Various people are away on > holiday, so this might be a somewhat extended test cycle. If it will take weeks to integrate and test I suggest that it should be done in the next release. Getting out a release with all the security fixes asap will be a good thing. Best to branch now for a release and let those wanting to add new features like this just do it on the trunk imho. Cheers, Mark From doko at ubuntu.com Fri Aug 7 02:58:41 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Fri, 07 Aug 2009 09:58:41 +0000 Subject: changeset in /hg/icedtea: 2009-08-07 Matthias Klose changeset 209e9a326eb9 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=209e9a326eb9 description: 2009-08-07 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options for --with-*-src-zip= if not specified. diffstat: 2 files changed, 8 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 4 +++- diffs (26 lines): diff -r 39d2012855a5 -r 209e9a326eb9 ChangeLog --- a/ChangeLog Thu Aug 06 18:35:39 2009 +0200 +++ b/ChangeLog Fri Aug 07 11:53:17 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-06 Matthias Klose + + * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options + for --with-*-src-zip= if not specified. + 2009-08-06 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Adjust for added/removed diff -r 39d2012855a5 -r 209e9a326eb9 Makefile.am --- a/Makefile.am Thu Aug 06 18:35:39 2009 +0200 +++ b/Makefile.am Fri Aug 07 11:53:17 2009 +0200 @@ -3435,7 +3435,9 @@ ADD_ZERO_CONFIGURE_ARGS += \ '--with-java=% '--with-javah=% \ '--with-rmic=% '--with-additional-vms=% \ '--disable-bootstrap% '--enable-bootstrap% , \ - $(CONFIGURE_ARGS)) + $(CONFIGURE_ARGS)) \ + $(foreach i, openjdk hotspot corba jaxp jaxws jdk langtools, \ + $(if $(findstring --with-$(i)-src-zip=, $(CONFIGURE_ARGS)),, --with-$(i)-src-zip=$(abs_top_builddir)/$(i).tar.gz)) ADD_ZERO_EXTRA_BUILD_ENV = \ BUILD_LANGTOOLS=false ALT_LANGTOOLS_DIST=$(ICEDTEA_BUILD_DIR)/langtools/dist \ From aph at redhat.com Fri Aug 7 03:03:24 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 07 Aug 2009 11:03:24 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <1249638794.3477.13.camel@springer.wildebeest.org> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> Message-ID: <4A7BFBEC.60706@redhat.com> Mark Wielaard wrote: > On Fri, 2009-08-07 at 09:36 +0100, Andrew Haley wrote: >> There's the ARM work from Ed Nevill too. We need to look at exactly which >> version of LLVM to target with Shark. >> >> I think we should get the ARM changes in ASAP, and then branch with a view >> to stabilizing over the next couple of weeks. Various people are away on >> holiday, so this might be a somewhat extended test cycle. > > If it will take weeks to integrate and test I suggest that it should be > done in the next release. Getting out a release with all the security > fixes asap will be a good thing. 1. We need to do a minor release with security patches now, on the previous release branch. 2. We need to get everything together for the next *major* release. This involves committing all major fixes to the trunk, then branching for stabilization. This is not different from the usual procedure. Andrew. From doko at ubuntu.com Fri Aug 7 03:03:48 2009 From: doko at ubuntu.com (doko at ubuntu.com) Date: Fri, 07 Aug 2009 10:03:48 +0000 Subject: changeset in /hg/icedtea6: 2009-08-07 Matthias Klose changeset 9420faca6468 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9420faca6468 description: 2009-08-07 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options for --with-*-src-zip= if not specified. diffstat: 2 files changed, 8 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 4 +++- diffs (26 lines): diff -r b775cb0d0900 -r 9420faca6468 ChangeLog --- a/ChangeLog Thu Aug 06 10:43:31 2009 -0400 +++ b/ChangeLog Fri Aug 07 11:58:27 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-06 Deepak Bhole + + * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options + for --with-*-src-zip= if not specified. + 2009-08-06 Deepak Bhole * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc: Handle error messages diff -r b775cb0d0900 -r 9420faca6468 Makefile.am --- a/Makefile.am Thu Aug 06 10:43:31 2009 -0400 +++ b/Makefile.am Fri Aug 07 11:58:27 2009 +0200 @@ -1841,7 +1841,9 @@ ADD_ZERO_CONFIGURE_ARGS += \ '--with-java=% '--with-javah=% \ '--with-rmic=% '--with-additional-vms=% \ '--with-openjdk '--with-openjdk=% , \ - $(CONFIGURE_ARGS)) + $(CONFIGURE_ARGS)) \ + $(foreach i, openjdk hotspot, \ + $(if $(findstring --with-$(i)-src-zip=, $(CONFIGURE_ARGS)),, --with-$(i)-src-zip=$(abs_top_builddir)/$(i).tar.gz)) ADD_ZERO_EXTRA_BUILD_ENV = \ BUILD_LANGTOOLS=false ALT_LANGTOOLS_DIST=$(ICEDTEA_BUILD_DIR)/langtools/dist \ From mark at klomp.org Fri Aug 7 03:18:11 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 07 Aug 2009 12:18:11 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7BFBEC.60706@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> Message-ID: <1249640291.3477.17.camel@springer.wildebeest.org> On Fri, 2009-08-07 at 11:03 +0100, Andrew Haley wrote: > Mark Wielaard wrote: > > On Fri, 2009-08-07 at 09:36 +0100, Andrew Haley wrote: > >> There's the ARM work from Ed Nevill too. We need to look at exactly which > >> version of LLVM to target with Shark. > >> > >> I think we should get the ARM changes in ASAP, and then branch with a view > >> to stabilizing over the next couple of weeks. Various people are away on > >> holiday, so this might be a somewhat extended test cycle. > > > > If it will take weeks to integrate and test I suggest that it should be > > done in the next release. Getting out a release with all the security > > fixes asap will be a good thing. > > 1. We need to do a minor release with security patches now, on the previous > release branch. > > 2. We need to get everything together for the next *major* release. This > involves committing all major fixes to the trunk, then branching for > stabilization. OK, then I misunderstood. I thought we were at the end of the major release cycle and wanted to do a new release now with the updated hotspot, plugin, webstart stuff, bugfixes and the security releases now. Which seems like a good idea to me. But getting out only those security fixes asap is also fine if we don't feel the current trunk is release worthy (I think it is though). If not, then I also retract my idea to sync with oj6b17 before release since that is obvious too risky also then. Cheers, Mark From langel at redhat.com Fri Aug 7 05:51:43 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 07 Aug 2009 08:51:43 -0400 Subject: Proposed IcedTea 6 release In-Reply-To: <1249640291.3477.17.camel@springer.wildebeest.org> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> Message-ID: <4A7C235F.1030005@redhat.com> Mark Wielaard wrote: > On Fri, 2009-08-07 at 11:03 +0100, Andrew Haley wrote: > >> Mark Wielaard wrote: >> >>> On Fri, 2009-08-07 at 09:36 +0100, Andrew Haley wrote: >>> >>>> There's the ARM work from Ed Nevill too. We need to look at exactly which >>>> version of LLVM to target with Shark. >>>> >>>> I think we should get the ARM changes in ASAP, and then branch with a view >>>> to stabilizing over the next couple of weeks. Various people are away on >>>> holiday, so this might be a somewhat extended test cycle. >>>> >>> If it will take weeks to integrate and test I suggest that it should be >>> done in the next release. Getting out a release with all the security >>> fixes asap will be a good thing. >>> >> 1. We need to do a minor release with security patches now, on the previous >> release branch. >> >> 2. We need to get everything together for the next *major* release. This >> involves committing all major fixes to the trunk, then branching for >> stabilization. >> > > OK, then I misunderstood. I thought we were at the end of the major > release cycle and wanted to do a new release now with the updated > hotspot, plugin, webstart stuff, bugfixes and the security releases now. > That was my understanding. What is the reason to have a minor security release upon the old branch? Cheers, Lillian > Which seems like a good idea to me. But getting out only those security > fixes asap is also fine if we don't feel the current trunk is release > worthy (I think it is though). If not, then I also retract my idea to > sync with oj6b17 before release since that is obvious too risky also > then. > > Cheers, > > Mark > > From gnu_andrew at member.fsf.org Fri Aug 7 05:56:30 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 7 Aug 2009 13:56:30 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7C235F.1030005@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> Message-ID: <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> 2009/8/7 Lillian Angel : > Mark Wielaard wrote: >> >> On Fri, 2009-08-07 at 11:03 +0100, Andrew Haley wrote: >> >>> >>> Mark Wielaard wrote: >>> >>>> >>>> On Fri, 2009-08-07 at 09:36 +0100, Andrew Haley wrote: >>>> >>>>> >>>>> There's the ARM work from Ed Nevill too. ?We need to look at exactly >>>>> which >>>>> version of LLVM to target with Shark. >>>>> >>>>> I think we should get the ARM changes in ASAP, and then branch with a >>>>> view >>>>> to stabilizing over the next couple of weeks. ?Various people are away >>>>> on >>>>> holiday, so this might be a somewhat extended test cycle. >>>>> >>>> >>>> If it will take weeks to integrate and test I suggest that it should be >>>> done in the next release. Getting out a release with all the security >>>> fixes asap will be a good thing. >>>> >>> >>> 1. ?We need to do a minor release with security patches now, on the >>> previous >>> ? ?release branch. >>> >>> 2. ?We need to get everything together for the next *major* release. >>> ?This >>> ? ?involves committing all major fixes to the trunk, then branching for >>> ? ?stabilization. >>> >> >> OK, then I misunderstood. I thought we were at the end of the major >> release cycle and wanted to do a new release now with the updated >> hotspot, plugin, webstart stuff, bugfixes and the security releases now. >> > > That was my understanding. What is the reason to have a minor security > release upon the old branch? > If we're going to delay the new release to get the ARM thing in and then test it, it may be weeks before a release appears with the security fixes. The minor release would fill this gap, ensuring there is a patched release but without a need for extensive testing of new features/changes. All we need to do is apply the security fixes to the 1.5 branch as we did with the main tree and then release the result as 1.5.1. > > Cheers, > Lillian > >> Which seems like a good idea to me. But getting out only those security >> fixes asap is also fine if we don't feel the current trunk is release >> worthy (I think it is though). If not, then I also retract my idea to >> sync with oj6b17 before release since that is obvious too risky also >> then. >> >> Cheers, >> >> Mark >> >> > > -- 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 langel at redhat.com Fri Aug 7 06:01:35 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 07 Aug 2009 09:01:35 -0400 Subject: Proposed IcedTea 6 release In-Reply-To: <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> Message-ID: <4A7C25AF.5010604@redhat.com> Andrew John Hughes wrote: > 2009/8/7 Lillian Angel : > >> Mark Wielaard wrote: >> >>> On Fri, 2009-08-07 at 11:03 +0100, Andrew Haley wrote: >>> >>> >>>> Mark Wielaard wrote: >>>> >>>> >>>>> On Fri, 2009-08-07 at 09:36 +0100, Andrew Haley wrote: >>>>> >>>>> >>>>>> There's the ARM work from Ed Nevill too. We need to look at exactly >>>>>> which >>>>>> version of LLVM to target with Shark. >>>>>> >>>>>> I think we should get the ARM changes in ASAP, and then branch with a >>>>>> view >>>>>> to stabilizing over the next couple of weeks. Various people are away >>>>>> on >>>>>> holiday, so this might be a somewhat extended test cycle. >>>>>> >>>>>> >>>>> If it will take weeks to integrate and test I suggest that it should be >>>>> done in the next release. Getting out a release with all the security >>>>> fixes asap will be a good thing. >>>>> >>>>> >>>> 1. We need to do a minor release with security patches now, on the >>>> previous >>>> release branch. >>>> >>>> 2. We need to get everything together for the next *major* release. >>>> This >>>> involves committing all major fixes to the trunk, then branching for >>>> stabilization. >>>> >>>> >>> OK, then I misunderstood. I thought we were at the end of the major >>> release cycle and wanted to do a new release now with the updated >>> hotspot, plugin, webstart stuff, bugfixes and the security releases now. >>> >>> >> That was my understanding. What is the reason to have a minor security >> release upon the old branch? >> >> > > If we're going to delay the new release to get the ARM thing in and > then test it, it may be weeks before a release appears with the > security fixes. The minor release would fill this gap, ensuring there > is a patched release but without a need for extensive testing of new > features/changes. > Ok, understood. I can do the release today if everyone agrees this is what we want to do. Lillian > All we need to do is apply the security fixes to the 1.5 branch as we > did with the main tree and then release the result as 1.5.1. > > >> Cheers, >> Lillian >> >> >>> Which seems like a good idea to me. But getting out only those security >>> fixes asap is also fine if we don't feel the current trunk is release >>> worthy (I think it is though). If not, then I also retract my idea to >>> sync with oj6b17 before release since that is obvious too risky also >>> then. >>> >>> Cheers, >>> >>> Mark >>> >>> >>> >> > > > > From mark at klomp.org Fri Aug 7 06:14:08 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 07 Aug 2009 15:14:08 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7C25AF.5010604@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> Message-ID: <1249650848.3477.24.camel@springer.wildebeest.org> On Fri, 2009-08-07 at 09:01 -0400, Lillian Angel wrote: > > If we're going to delay the new release to get the ARM thing in and > > then test it, it may be weeks before a release appears with the > > security fixes. The minor release would fill this gap, ensuring there > > is a patched release but without a need for extensive testing of new > > features/changes. > > > Ok, understood. I can do the release today if everyone agrees this is > what we want to do. A rather see a real release with all the new stuff in instead of delaying it for a new release cycle to add even more stuff. But if backporting selected security patches to a minor release is easier for you then go for that. Cheers, Mark From gnu_andrew at member.fsf.org Fri Aug 7 06:21:43 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 7 Aug 2009 14:21:43 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <1249650848.3477.24.camel@springer.wildebeest.org> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> Message-ID: <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> 2009/8/7 Mark Wielaard : > On Fri, 2009-08-07 at 09:01 -0400, Lillian Angel wrote: >> > If we're going to delay the new release to get the ARM thing in and >> > then test it, it may be weeks before a release appears with the >> > security fixes. ?The minor release would fill this gap, ensuring there >> > is a patched release but without a need for extensive testing of new >> > features/changes. >> > >> Ok, understood. I can do the release today if everyone agrees this is >> what we want to do. > > A rather see a real release with all the new stuff in instead of > delaying it for a new release cycle to add even more stuff. But if > backporting selected security patches to a minor release is easier for > you then go for that. > > Cheers, > > Mark > > I agree. I thought we were pretty much ready to go with a 1.6 release including the new plugin/netx/shark fixes and the SystemTap update, and hence could have rolled that out as the security update as well. But if others want the ARM port in 1.6, we need a minor release of the old tree (1.5) to get the security patches out there ASAP. -- 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 langel at redhat.com Fri Aug 7 07:18:24 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 07 Aug 2009 10:18:24 -0400 Subject: IcedTea6 1.5.1 Security Release Message-ID: <4A7C37B0.4010706@redhat.com> We are proud to announce the release of IcedTea6 1.5.1. The IcedTea6 project provides a harness to build the source code from OpenJDK6 (http://openjdk.java.net) using Free Software build tools. What's New? ----------------- - Security fixes from Sun. - Plugin/Netx security fixes ----------------- The tarball and nosrc RPM can be downloaded here: http://icedtea.classpath.org/download/fedora/java-1.6.0-openjdk-1.6.0.0-27.b16.fc11.nosrc.rpm http://icedtea.classpath.org/download/source/icedtea6-1.5.1.tar.gz The following people helped with this release: Gary Benson, Deepak Bhole, Andrew Haley, Andrew John Hughes, Omair Majid, Marc Schoenefeld, Mark Wielaard, Lillian Angel We would also like to thank the bug reporters and testers! To get started: $ hg clone http://icedtea.classpath.org/hg/release/icedtea6-1.5 $ cd icedtea6-1.5 Full build requirements and instructions are in INSTALL: $ ./configure [--enable-visualvm --with-openjdk --enable-pulse-java --enable-systemtap ...] $ make The new package has been built into Fedora 10, Fedora 11 and Fedora 12 (rawhide) and should appear in the yum repositories in a couple of days. From bugzilla-daemon at icedtea.classpath.org Fri Aug 7 10:05:33 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 07 Aug 2009 17:05:33 +0000 Subject: [Bug 377] New: TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 Summary: TimeZone.getOffset() fails for some TZ Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: ptisnovs at redhat.com It seems that the Java code doesn't like something in the TZ data stored in /usr/share/javazi on Fedora and Ubuntu, specifically file Asia/Amman. When that doesn't exist, it uses the data in jre/lib and thus works fine. On RHEL (5.3 i386 and x86_64), there is no problem. -- 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 Aug 7 10:07:08 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 07 Aug 2009 17:07:08 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #1 from ptisnovs at redhat.com 2009-08-07 17:07 ------- Created an attachment (id=252) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=252&action=view) Test Simple test program added. It should not throw any exception. -- 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 ahughes at redhat.com Fri Aug 7 13:44:33 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Fri, 07 Aug 2009 20:44:33 +0000 Subject: changeset in /hg/icedtea: Bump to b68. Add some generated files... Message-ID: changeset 52ca492dae93 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=52ca492dae93 description: Bump to b68. Add some generated files ecj just decided to start complaining about. 2009-08-07 Andrew John Hughes * Makefile.am: Bump to b68, remove additional -source option. * generated/java/nio/channels/AcceptPendingException.java, * generated/java/nio/channels/IllegalChannelGroupException.java, * generated/java/nio/channels/InterruptedByTimeoutException.java, * generated/java/nio/channels/ReadPendingException.java, * generated/java/nio/channels/ShutdownChannelGroupException.java, * generated/java/nio/channels/WritePendingException.java, * generated/sun/nio/fs/UnixConstants.java: Add generated files. * javac.in: Update to build 1.7 code. * patches/ecj/icedtea.patch: Remove patch removing use of 1.6 source and target options. * patches/icedtea-clean-crypto.patch: Regenerated. * patches/xrender/icedtea-007.patch: Remove non-ASCII characters. diffstat: 13 files changed, 468 insertions(+), 105 deletions(-) ChangeLog | 18 + Makefile.am | 41 +-- generated/java/nio/channels/AcceptPendingException.java | 51 ++++ generated/java/nio/channels/IllegalChannelGroupException.java | 51 ++++ generated/java/nio/channels/InterruptedByTimeoutException.java | 51 ++++ generated/java/nio/channels/ReadPendingException.java | 51 ++++ generated/java/nio/channels/ShutdownChannelGroupException.java | 52 +++++ generated/java/nio/channels/WritePendingException.java | 51 ++++ generated/sun/nio/fs/UnixConstants.java | 79 +++++++ javac.in | 6 patches/ecj/icedtea.patch | 14 - patches/icedtea-clean-crypto.patch | 104 ++++------ patches/xrender/icedtea-007.patch | 4 diffs (truncated from 849 to 500 lines): diff -r 209e9a326eb9 -r 52ca492dae93 ChangeLog --- a/ChangeLog Fri Aug 07 11:53:17 2009 +0200 +++ b/ChangeLog Fri Aug 07 21:46:15 2009 +0100 @@ -1,3 +1,21 @@ 2009-08-07 Matthias Klose + + * Makefile.am: + Bump to b68, remove additional -source option. + * generated/java/nio/channels/AcceptPendingException.java, + * generated/java/nio/channels/IllegalChannelGroupException.java, + * generated/java/nio/channels/InterruptedByTimeoutException.java, + * generated/java/nio/channels/ReadPendingException.java, + * generated/java/nio/channels/ShutdownChannelGroupException.java, + * generated/java/nio/channels/WritePendingException.java, + * generated/sun/nio/fs/UnixConstants.java: + Add generated files. + * javac.in: Update to build 1.7 code. + * patches/ecj/icedtea.patch: Remove patch removing use of 1.6 + source and target options. + * patches/icedtea-clean-crypto.patch: Regenerated. + * patches/xrender/icedtea-007.patch: Remove non-ASCII characters. + 2009-08-07 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options diff -r 209e9a326eb9 -r 52ca492dae93 Makefile.am --- a/Makefile.am Fri Aug 07 11:53:17 2009 +0200 +++ b/Makefile.am Fri Aug 07 21:46:15 2009 +0100 @@ -1,20 +1,20 @@ OPENJDK_VERSION = b67 -OPENJDK_VERSION = b67 - -OPENJDK_CHANGESET = f24111620a51 -CORBA_CHANGESET = 1cb0098b53b2 -JAXP_CHANGESET = 45fc86d2aa5c -JAXWS_CHANGESET = 73440eb34fb0 -JDK_CHANGESET = cd7d9265b4e6 -LANGTOOLS_CHANGESET = 14b1a8ede954 -HOTSPOT_CHANGESET = 87c6731ab8d1 - -OPENJDK_MD5SUM = f5cc1b21cf1a805528300bf931aa821e -CORBA_MD5SUM = 00fa00a58b465cad40cab9ac05058c24 -JAXP_MD5SUM = 61230cee4199f91ed5675bcf2acad63d -JAXWS_MD5SUM = fc9d2659fb875ece0e3a5e7894c1bbf8 -JDK_MD5SUM = 8e3fa808fcad7713635a21e127dd0f72 -LANGTOOLS_MD5SUM = a3b15bcf5b76b1639600250fc29c057b -HOTSPOT_MD5SUM = d0632498485808fdf8f97ef1f388722d +OPENJDK_VERSION = b68 + +OPENJDK_CHANGESET = d8f0e9685212 +CORBA_CHANGESET = 4d8317ea0eec +JAXP_CHANGESET = 216517ab5325 +JAXWS_CHANGESET = 4425f7c4fb5b +JDK_CHANGESET = df6fceba2e80 +LANGTOOLS_CHANGESET = 95c1212b07e3 +HOTSPOT_CHANGESET = 91fcd98a5ae1 + +OPENJDK_MD5SUM = 8c3d681d0a90ec9adf00870f5e20d09f +CORBA_MD5SUM = c1c9db96634876b2c522dc387dec3864 +JAXP_MD5SUM = 9a821849b2b9bdf2f8dc32168809a063 +JAXWS_MD5SUM = 2d9fbeb543ee7bcd6621a3f131649db2 +JDK_MD5SUM = 418d860925e69cca57253e62508234b6 +LANGTOOLS_MD5SUM = e29f65271621d80aa8a894fe13325f23 +HOTSPOT_MD5SUM = 88cc373d7d04a2c9c60fd9343a28818c CACAO_VERSION = 0.99.4 CACAO_MD5SUM = 63220327925ace13756ae334c55a3baa @@ -3006,14 +3006,12 @@ stamps/hotspot-tools-class-files.stamp: if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ $(JAVAC) $(MEMORY_LIMIT) -g -d lib/hotspot-tools \ - -source 1.5 \ -sourcepath \ 'hotspot-tools:$(abs_top_srcdir)/netx:$(SOURCEPATH_DIRS)' \ -bootclasspath \'\' @$< ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g \ -d lib/hotspot-tools \ - -source 1.5 \ -sourcepath \ 'hotspot-tools:$(abs_top_srcdir)/netx:$(SOURCEPATH_DIRS)' \ -bootclasspath \'\' @$< ; \ @@ -3058,13 +3056,11 @@ stamps/rt-class-files.stamp: rt-source-f if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ $(JAVAC) $(MEMORY_LIMIT) -g -d lib/rt \ - -source 1.5 \ -classpath $(abs_top_builddir)/lib/hotspot-tools \ -sourcepath '$(SOURCEPATH_DIRS)' \ -bootclasspath \'\' @$< ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d lib/rt \ - -source 1.5 \ -classpath $(abs_top_builddir)/lib/hotspot-tools \ -sourcepath '$(SOURCEPATH_DIRS)' \ -bootclasspath \'\' @$< ; \ @@ -3103,14 +3099,12 @@ stamps/extra-class-files.stamp: extra-so if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ $(JAVAC) $(MEMORY_LIMIT) -g -d extra-lib \ - -source 1.5 \ -classpath $(abs_top_builddir)/lib/hotspot-tools \ -sourcepath $(abs_top_srcdir)/extra:$(SOURCEPATH_DIRS) \ -bootclasspath \'\' \ @extra-source-files.txt ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d extra-lib \ - -source 1.5 \ -classpath $(abs_top_builddir)/lib/hotspot-tools \ -sourcepath $(abs_top_srcdir)/extra:$(SOURCEPATH_DIRS) \ -bootclasspath \'\' \ @@ -3147,7 +3141,6 @@ stamps/netx.stamp: netx-source-files.txt mkdir -p $(abs_top_builddir)/netx.build $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g \ -d $(abs_top_builddir)/netx.build \ - -source 1.5 \ -classpath $(abs_top_builddir)/lib/hotspot-tools \ -sourcepath $(abs_top_srcdir)/netx:$(SOURCEPATH_DIRS): \ -bootclasspath \'\' \ diff -r 209e9a326eb9 -r 52ca492dae93 generated/java/nio/channels/AcceptPendingException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/java/nio/channels/AcceptPendingException.java Fri Aug 07 21:46:15 2009 +0100 @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +// -- This file was mechanically generated: Do not edit! -- // + +package java.nio.channels; + + +/** + * Unchecked exception thrown when an attempt is made to initiate an accept + * operation on a channel and a previous accept operation has not completed. + * + * @since 1.7 + */ + +public class AcceptPendingException + extends IllegalStateException +{ + + private static final long serialVersionUID = 2721339977965416421L; + + /** + * Constructs an instance of this class. + */ + public AcceptPendingException() { } + +} diff -r 209e9a326eb9 -r 52ca492dae93 generated/java/nio/channels/IllegalChannelGroupException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/java/nio/channels/IllegalChannelGroupException.java Fri Aug 07 21:46:15 2009 +0100 @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +// -- This file was mechanically generated: Do not edit! -- // + +package java.nio.channels; + + +/** + * Unchecked exception thrown when an attempt is made to open a channel + * in a group that was not created by the same provider. + * + * @since 1.7 + */ + +public class IllegalChannelGroupException + extends IllegalArgumentException +{ + + private static final long serialVersionUID = -2495041211157744253L; + + /** + * Constructs an instance of this class. + */ + public IllegalChannelGroupException() { } + +} diff -r 209e9a326eb9 -r 52ca492dae93 generated/java/nio/channels/InterruptedByTimeoutException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/java/nio/channels/InterruptedByTimeoutException.java Fri Aug 07 21:46:15 2009 +0100 @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +// -- This file was mechanically generated: Do not edit! -- // + +package java.nio.channels; + + +/** + * Checked exception received by a thread when a timeout elapses before an + * asynchronous operation completes. + * + * @since 1.7 + */ + +public class InterruptedByTimeoutException + extends java.io.IOException +{ + + private static final long serialVersionUID = -4268008601014042947L; + + /** + * Constructs an instance of this class. + */ + public InterruptedByTimeoutException() { } + +} diff -r 209e9a326eb9 -r 52ca492dae93 generated/java/nio/channels/ReadPendingException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/java/nio/channels/ReadPendingException.java Fri Aug 07 21:46:15 2009 +0100 @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +// -- This file was mechanically generated: Do not edit! -- // + +package java.nio.channels; + + +/** + * Unchecked exception thrown when an attempt is made to read from an + * asynchronous socket channel and a previous read has not completed. + * + * @since 1.7 + */ + +public class ReadPendingException + extends IllegalStateException +{ + + private static final long serialVersionUID = 1986315242191227217L; + + /** + * Constructs an instance of this class. + */ + public ReadPendingException() { } + +} diff -r 209e9a326eb9 -r 52ca492dae93 generated/java/nio/channels/ShutdownChannelGroupException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/java/nio/channels/ShutdownChannelGroupException.java Fri Aug 07 21:46:15 2009 +0100 @@ -0,0 +1,52 @@ +/* + * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +// -- This file was mechanically generated: Do not edit! -- // + +package java.nio.channels; + + +/** + * Unchecked exception thrown when an attempt is made to construct a channel in + * a group that is shutdown or the completion handler for an I/O operation + * cannot be invoked because the channel group is shutdown. + * + * @since 1.7 + */ + +public class ShutdownChannelGroupException + extends IllegalStateException +{ + + private static final long serialVersionUID = -3903801676350154157L; + + /** + * Constructs an instance of this class. + */ + public ShutdownChannelGroupException() { } + +} diff -r 209e9a326eb9 -r 52ca492dae93 generated/java/nio/channels/WritePendingException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/java/nio/channels/WritePendingException.java Fri Aug 07 21:46:15 2009 +0100 @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +// -- This file was mechanically generated: Do not edit! -- // + +package java.nio.channels; + + +/** + * Unchecked exception thrown when an attempt is made to write to an + * asynchronous socket channel and a previous write has not completed. + * + * @since 1.7 + */ + +public class WritePendingException + extends IllegalStateException +{ + + private static final long serialVersionUID = 7031871839266032276L; + + /** + * Constructs an instance of this class. + */ + public WritePendingException() { } + +} diff -r 209e9a326eb9 -r 52ca492dae93 generated/sun/nio/fs/UnixConstants.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/sun/nio/fs/UnixConstants.java Fri Aug 07 21:46:15 2009 +0100 @@ -0,0 +1,79 @@ +/* + * Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ +// AUTOMATICALLY GENERATED FILE - DO NOT EDIT +package sun.nio.fs; +class UnixConstants { + private UnixConstants() { } + static final int O_RDONLY = 0; + static final int O_WRONLY = 1; + static final int O_RDWR = 2; + static final int O_APPEND = 0x400; + static final int O_CREAT = 0x40; + static final int O_EXCL = 0x80; + static final int O_TRUNC = 0x200; + static final int O_SYNC = 0x1000; + static final int O_DSYNC = 0x1000; + static final int O_NOFOLLOW = 0x20000; + static final int S_IAMB = 0x1ff; + static final int S_IRUSR = 256; + static final int S_IWUSR = 128; + static final int S_IXUSR = 64; + static final int S_IRGRP = 32; + static final int S_IWGRP = 16; + static final int S_IXGRP = 8; From aph at redhat.com Sat Aug 8 00:56:30 2009 From: aph at redhat.com (Andrew Haley) Date: Sat, 08 Aug 2009 08:56:30 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> Message-ID: <4A7D2FAE.4060309@redhat.com> Andrew John Hughes wrote: > 2009/8/7 Mark Wielaard : >> On Fri, 2009-08-07 at 09:01 -0400, Lillian Angel wrote: >>>> If we're going to delay the new release to get the ARM thing in and >>>> then test it, it may be weeks before a release appears with the >>>> security fixes. The minor release would fill this gap, ensuring there >>>> is a patched release but without a need for extensive testing of new >>>> features/changes. >>>> >>> Ok, understood. I can do the release today if everyone agrees this is >>> what we want to do. >> A rather see a real release with all the new stuff in instead of >> delaying it for a new release cycle to add even more stuff. But if >> backporting selected security patches to a minor release is easier for >> you then go for that. > > I agree. I thought we were pretty much ready to go with a 1.6 release > including the new plugin/netx/shark fixes and the SystemTap update, > and hence could have rolled that out as the security update as well. > But if others want the ARM port in 1.6, we need a minor release of the > old tree (1.5) to get the security patches out there ASAP. We know that testing the major release is going to take a while, even if the branch is cut now, partly because some people are on holiday, and partly because testing just takes time. A lot of the pain we've had has come from rushing through releases. IMO we spend far too much time discussing these issues. We need to make this standard procedure: whenever there are fixes for significant bugs we apply them to the current release branch and make a minor release. Whenever there are significant new features we make a major release. A lot of the discussion in this list is, IMO, a result of confusing these unrelated issues. The ARM port is all ready to go in apart from one minor problem. This can be fixed in the next few days, I hope, and the testing can begin. Andrew. From bugzilla-daemon at icedtea.classpath.org Sat Aug 8 04:35:56 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 08 Aug 2009 11:35:56 +0000 Subject: [Bug 367] Interactive brokers fails / libjpeg7 related? Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=367 ------- Comment #6 from gary4gar at gmail.com 2009-08-08 11:35 ------- any workaround/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. From mark at klomp.org Sat Aug 8 08:25:51 2009 From: mark at klomp.org (Mark Wielaard) Date: Sat, 08 Aug 2009 17:25:51 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7D2FAE.4060309@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> Message-ID: <1249745151.3441.10.camel@springer.wildebeest.org> On Sat, 2009-08-08 at 08:56 +0100, Andrew Haley wrote: > IMO we spend far too much time discussing these issues. We need to make > this standard procedure: whenever there are fixes for significant bugs we > apply them to the current release branch and make a minor release. > Whenever there are significant new features we make a major release. > A lot of the discussion in this list is, IMO, a result of confusing > these unrelated issues. > > The ARM port is all ready to go in apart from one minor problem. This can > be fixed in the next few days, I hope, and the testing can begin. Right. I think the confusion comes from where people think we are in the release cycle. It would be good if we had more timed releases, say every 6 weeks on a Monday (or something similarly random, but consistent). Then it is clear that when the release manager says that a release is coming, you know when you must have had your code in, testing done and that a branch is imminent. Otherwise we get situations where there seems to be lots of discussions because some people believe we are ready and are in testing mode before a final release already and others think we are at the start of a release cycle and new stuff can still be added and additional testing needs to be done afterwards. Cheers, Mark From gnu_andrew at member.fsf.org Sat Aug 8 16:49:41 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 9 Aug 2009 00:49:41 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <1249745151.3441.10.camel@springer.wildebeest.org> References: <4A7B413C.8010109@redhat.com> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> <1249745151.3441.10.camel@springer.wildebeest.org> Message-ID: <17c6771e0908081649r5bace91aue7e23d0d3f5702ea@mail.gmail.com> 2009/8/8 Mark Wielaard : > On Sat, 2009-08-08 at 08:56 +0100, Andrew Haley wrote: >> IMO we spend far too much time discussing these issues. ?We need to make >> this standard procedure: whenever there are fixes for significant bugs we >> apply them to the current release branch and make a minor release. >> Whenever there are significant new features we make a major release. >> A lot of the discussion in this list is, IMO, a result of confusing >> these unrelated issues. >> >> The ARM port is all ready to go in apart from one minor problem. ?This can >> be fixed in the next few days, I hope, and the testing can begin. > > Right. I think the confusion comes from where people think we are in the > release cycle. It would be good if we had more timed releases, say every > 6 weeks on a Monday (or something similarly random, but consistent). > Then it is clear that when the release manager says that a release is > coming, you know when you must have had your code in, testing done and > that a branch is imminent. > > Otherwise we get situations where there seems to be lots of discussions > because some people believe we are ready and are in testing mode before > a final release already and others think we are at the start of a > release cycle and new stuff can still be added and additional testing > needs to be done afterwards. > > Cheers, > > Mark > > +1 It would also be good to coordinate with Sun on this in order to time IcedTea6 releases against upstream OpenJDK6 build drops. There is a known cycle for OpenJDK7 (http://openjdk.java.net/projects/jdk7/calendar/) but none, as far as I know, for OpenJDK6. -- 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 mvfranz at gmail.com Sun Aug 9 09:42:31 2009 From: mvfranz at gmail.com (Michael Franz) Date: Sun, 9 Aug 2009 12:42:31 -0400 Subject: ENABLE_HG appears twice in acinclude.m4 Message-ID: Hi, I was trying to add an option that is similar to ENABLE_HG and found that acinclude.m4 has two different definitions for it. The only difference seems to be the helps string: [AS_HELP_STRING(--enable-hg,download source code from Mercurial [[default=depends on project]])] [AS_HELP_STRING(--enable-hg,download source code from Mercurial [[default=no]])] Is this necessary or a bug? I am using the 1.11 tar ball. Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090809/42ba375e/attachment.html From gnu_andrew at member.fsf.org Sun Aug 9 15:37:16 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 9 Aug 2009 23:37:16 +0100 Subject: ENABLE_HG appears twice in acinclude.m4 In-Reply-To: References: Message-ID: <17c6771e0908091537m6d4345f7w4cbe345765fb1ef2@mail.gmail.com> 2009/8/9 Michael Franz : > Hi, > > I was trying to add an option that is similar to ENABLE_HG and found that > acinclude.m4 has two different definitions for it.? The only difference > seems to be the helps string: > [AS_HELP_STRING(--enable-hg,download source code from Mercurial > [[default=depends on project]])] > [AS_HELP_STRING(--enable-hg,download source code from Mercurial > [[default=no]])] > > Is this necessary or a bug? > > I am using the 1.11 tar ball. > > Michael > It's a merge artefact. The second one is from IcedTea6. Well spotted, this is exactly the reason I don't do blanket merges any more... -- 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 ahughes at redhat.com Sun Aug 9 15:44:38 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Sun, 09 Aug 2009 22:44:38 +0000 Subject: changeset in /hg/icedtea: Remove duplicate ENABLE_HG. Message-ID: changeset fa477700aaf3 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=fa477700aaf3 description: Remove duplicate ENABLE_HG. 2009-08-07 Andrew John Hughes * acinclude.m4: (ENABLE_HG): Remove duplicate from IcedTea6 merge. diffstat: 2 files changed, 6 insertions(+), 22 deletions(-) ChangeLog | 6 ++++++ acinclude.m4 | 22 ---------------------- diffs (45 lines): diff -r 52ca492dae93 -r fa477700aaf3 ChangeLog --- a/ChangeLog Fri Aug 07 21:46:15 2009 +0100 +++ b/ChangeLog Sun Aug 09 23:46:37 2009 +0100 @@ -1,3 +1,9 @@ 2009-08-07 Andrew John Hughes + + * acinclude.m4: + (ENABLE_HG): Remove duplicate from + IcedTea6 merge. + 2009-08-07 Andrew John Hughes * Makefile.am: diff -r 52ca492dae93 -r fa477700aaf3 acinclude.m4 --- a/acinclude.m4 Fri Aug 07 21:46:15 2009 +0100 +++ b/acinclude.m4 Sun Aug 09 23:46:37 2009 +0100 @@ -1109,28 +1109,6 @@ AC_DEFUN([WITH_LANGTOOLS_SRC_ZIP], AC_SUBST(ALT_LANGTOOLS_SRC_ZIP) ]) -AC_DEFUN([ENABLE_HG], -[ - AC_MSG_CHECKING(whether to retrieve the source code from Mercurial) - AC_ARG_ENABLE([hg], - [AS_HELP_STRING(--enable-hg,download source code from Mercurial [[default=no]])], - [ - case "${enableval}" in - no) - enable_hg=no - ;; - *) - enable_hg=yes - ;; - esac - ], - [ - enable_hg=no - ]) - AC_MSG_RESULT([${enable_hg}]) - AM_CONDITIONAL([USE_HG], test x"${enable_hg}" = "xyes") -]) - AC_DEFUN([AC_CHECK_WITH_HG_REVISION], [ AC_MSG_CHECKING([which Mercurial revision to use]) From mvfranz at gmail.com Sun Aug 9 16:07:40 2009 From: mvfranz at gmail.com (Michael Franz) Date: Sun, 9 Aug 2009 19:07:40 -0400 Subject: ENABLE_HG appears twice in acinclude.m4 In-Reply-To: <17c6771e0908091537m6d4345f7w4cbe345765fb1ef2@mail.gmail.com> References: <17c6771e0908091537m6d4345f7w4cbe345765fb1ef2@mail.gmail.com> Message-ID: Great, this should make it easier to add BSD archive downloads. On Sun, Aug 9, 2009 at 6:37 PM, Andrew John Hughes < gnu_andrew at member.fsf.org> wrote: > 2009/8/9 Michael Franz : > > Hi, > > > > I was trying to add an option that is similar to ENABLE_HG and found that > > acinclude.m4 has two different definitions for it. The only difference > > seems to be the helps string: > > [AS_HELP_STRING(--enable-hg,download source code from Mercurial > > [[default=depends on project]])] > > [AS_HELP_STRING(--enable-hg,download source code from Mercurial > > [[default=no]])] > > > > Is this necessary or a bug? > > > > I am using the 1.11 tar ball. > > > > Michael > > > > > It's a merge artefact. The second one is from IcedTea6. Well > spotted, this is exactly the reason I don't do blanket merges any > more... > -- > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090809/0ce58385/attachment.html From aph at redhat.com Mon Aug 10 02:31:37 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 10 Aug 2009 10:31:37 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <1249745151.3441.10.camel@springer.wildebeest.org> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> <1249745151.3441.10.camel@springer.wildebeest.org> Message-ID: <4A7FE8F9.4040508@redhat.com> Mark Wielaard wrote: > On Sat, 2009-08-08 at 08:56 +0100, Andrew Haley wrote: >> IMO we spend far too much time discussing these issues. We need to make >> this standard procedure: whenever there are fixes for significant bugs we >> apply them to the current release branch and make a minor release. >> Whenever there are significant new features we make a major release. >> A lot of the discussion in this list is, IMO, a result of confusing >> these unrelated issues. >> >> The ARM port is all ready to go in apart from one minor problem. This can >> be fixed in the next few days, I hope, and the testing can begin. > > Right. I think the confusion comes from where people think we are in the > release cycle. It would be good if we had more timed releases, say every > 6 weeks on a Monday (or something similarly random, but consistent). At the moment, we release when new features warrant it. By releasing periodically you impose a schedule where none is needed. You also raise the absurd possibility of a new release with no new features. > Then it is clear that when the release manager says that a release is > coming, you know when you must have had your code in, testing done and > that a branch is imminent. A release has been proposed, and we're having that discussion. Rather than saying "A release will be made on Date X and if your code isn't ready, tough", I'm asking "When will your code be ready?" This is a far more sensible approach. > Otherwise we get situations where there seems to be lots of discussions > because some people believe we are ready and are in testing mode before > a final release already and others think we are at the start of a > release cycle and new stuff can still be added and additional testing > needs to be done afterwards. We're discussing it now. This is the notice that a release is proposed. Let's get concrete. As far as I know the trunk is almost in a state where a release branch can be made. Who has work that they want to get in the next release? When can it be readied? Andrew. From mark at klomp.org Mon Aug 10 03:25:45 2009 From: mark at klomp.org (Mark Wielaard) Date: Mon, 10 Aug 2009 12:25:45 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7FE8F9.4040508@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> <1249745151.3441.10.camel@springer.wildebeest.org> <4A7FE8F9.4040508@redhat.com> Message-ID: <1249899945.3606.64.camel@springer.wildebeest.org> Hi Andrew, On Mon, 2009-08-10 at 10:31 +0100, Andrew Haley wrote: > > Right. I think the confusion comes from where people think we are in the > > release cycle. It would be good if we had more timed releases, say every > > 6 weeks on a Monday (or something similarly random, but consistent). > > At the moment, we release when new features warrant it. By releasing > periodically you impose a schedule where none is needed. I think you are mistaken, these recurring "release now?" discussions seem to show a more regular periodic release schedule would make the whole process go more smoothly. > You also raise > the absurd possibility of a new release with no new features. I think that is a fear that isn't very likely. We make improvements, bug fixes, adding features all the time. Even if there are no "major" new features having regular update releases with "just" feature improvements and bug fixes would be really good. IMHO. > > Then it is clear that when the release manager says that a release is > > coming, you know when you must have had your code in, testing done and > > that a branch is imminent. > > A release has been proposed, and we're having that discussion. Rather > than saying "A release will be made on Date X and if your code isn't > ready, tough", I'm asking "When will your code be ready?" This is a > far more sensible approach. I thought the question was more "everybody ready for a release now?" Not about whether or not some new code would be ready in some future. > We're discussing it now. This is the notice that a release is proposed. > > Let's get concrete. As far as I know the trunk is almost in a state where a > release branch can be made. > > Who has work that they want to get in the next release? When can it > be readied? OK, agreed. I believe the following additions are in, tested and ready for release: - Plugin and netx improvements (largely complete 1.5/6.0 jnlp spec support, cookie support rewrite, and numerous other stability and bug fixes) - security updates. - systemtap java method entry/exit tracing. - updated hotspot (hs14b16) - updates to shark for newer LLVM api interface changes. - Build fixes and general bug fixes (execvpe, cacao, gcc 4.4, - Cleaned up configure support for --with-openjdk and --with-additional-vms Not ready yet? but would definitely be nice: - sync with oj6, unknown when/if it can be updated, but icedtea6 already contains the important bits missing from current oj6 (security updates, updated hotspot). - new arm stuff. - new Xorg header updates (currently not certain how to detect, distros patch themselves). Cheers, Mark From aph at redhat.com Mon Aug 10 04:18:49 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 10 Aug 2009 12:18:49 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <1249899945.3606.64.camel@springer.wildebeest.org> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> <1249745151.3441.10.camel@springer.wildebeest.org> <4A7FE8F9.4040508@redhat.com> <1249899945.3606.64.camel@springer.wildebeest.org> Message-ID: <4A800219.4040703@redhat.com> Mark Wielaard wrote: > On Mon, 2009-08-10 at 10:31 +0100, Andrew Haley wrote: >>> Right. I think the confusion comes from where people think we are in the >>> release cycle. It would be good if we had more timed releases, say every >>> 6 weeks on a Monday (or something similarly random, but consistent). >> At the moment, we release when new features warrant it. By releasing >> periodically you impose a schedule where none is needed. > > I think you are mistaken, these recurring "release now?" discussions > seem to show a more regular periodic release schedule would make the > whole process go more smoothly. Maybe. However, it's a big change to make to the way that we work, and it seems a lot simply to avoid pointless discussions. Not that I'm against avoiding pointless discussions, but I doubt that it would work: we'd end up still having the discussions, but with the extra overhead of a fixed release cycle. >> You also raise >> the absurd possibility of a new release with no new features. > > I think that is a fear that isn't very likely. We make improvements, bug > fixes, adding features all the time. Even if there are no "major" new > features having regular update releases with "just" feature improvements > and bug fixes would be really good. IMHO. Well, again maybe. It's a lot of extra work, especially for those with a great many platforms to test. And I doubt the value of it, frankly. I've worked on projects with regular timed releases and with feature-based releases, and the feature-based releases work better. They're much more aligned with what users want: no-one wants Release 1.9, they want Feature X. You are proposing a change that has costs associated with it. For that to work, we would have to have buy-in across the IcedTea community and a commitment to do the work. Without that, releases would not be tested. And if there is one thing that we must not do, it is to make untested releases. >>> Then it is clear that when the release manager says that a release is >>> coming, you know when you must have had your code in, testing done and >>> that a branch is imminent. >> A release has been proposed, and we're having that discussion. Rather >> than saying "A release will be made on Date X and if your code isn't >> ready, tough", I'm asking "When will your code be ready?" This is a >> far more sensible approach. > > I thought the question was more "everybody ready for a release now?" Not > about whether or not some new code would be ready in some future. The question is "Is this a good time to release?" If the answer is "Well, I'll have Feature Y ready in a couple of weeks" then we can talk about it. >> We're discussing it now. This is the notice that a release is proposed. >> >> Let's get concrete. As far as I know the trunk is almost in a state where a >> release branch can be made. >> >> Who has work that they want to get in the next release? When can it >> be readied? > > OK, agreed. > > I believe the following additions are in, tested and ready for release: > - Plugin and netx improvements (largely complete 1.5/6.0 jnlp spec > support, cookie support rewrite, and numerous other stability and bug > fixes) > - security updates. > - systemtap java method entry/exit tracing. > - updated hotspot (hs14b16) > - updates to shark for newer LLVM api interface changes. > - Build fixes and general bug fixes (execvpe, cacao, gcc 4.4, > - Cleaned up configure support for --with-openjdk and > --with-additional-vms > > Not ready yet? but would definitely be nice: > - sync with oj6, unknown when/if it can be updated, but icedtea6 already > contains the important bits missing from current oj6 (security > updates, updated hotspot). > - new arm stuff. > - new Xorg header updates (currently not certain how to detect, distros > patch themselves). Right. So, are any of these worth holding up a release for? I think the ARM interpreter is, particularly as I am assured it is ready to go in. It offers very significant benefits to some users. Andrew. From Joe.Darcy at Sun.COM Mon Aug 10 09:44:54 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Mon, 10 Aug 2009 09:44:54 -0700 Subject: Proposed IcedTea 6 release In-Reply-To: <17c6771e0908081649r5bace91aue7e23d0d3f5702ea@mail.gmail.com> References: <4A7B413C.8010109@redhat.com> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> <1249745151.3441.10.camel@springer.wildebeest.org> <17c6771e0908081649r5bace91aue7e23d0d3f5702ea@mail.gmail.com> Message-ID: <4A804E86.7050907@sun.com> Andrew John Hughes wrote: > 2009/8/8 Mark Wielaard : > >> On Sat, 2009-08-08 at 08:56 +0100, Andrew Haley wrote: >> >>> IMO we spend far too much time discussing these issues. We need to make >>> this standard procedure: whenever there are fixes for significant bugs we >>> apply them to the current release branch and make a minor release. >>> Whenever there are significant new features we make a major release. >>> A lot of the discussion in this list is, IMO, a result of confusing >>> these unrelated issues. >>> >>> The ARM port is all ready to go in apart from one minor problem. This can >>> be fixed in the next few days, I hope, and the testing can begin. >>> >> Right. I think the confusion comes from where people think we are in the >> release cycle. It would be good if we had more timed releases, say every >> 6 weeks on a Monday (or something similarly random, but consistent). >> Then it is clear that when the release manager says that a release is >> coming, you know when you must have had your code in, testing done and >> that a branch is imminent. >> >> Otherwise we get situations where there seems to be lots of discussions >> because some people believe we are ready and are in testing mode before >> a final release already and others think we are at the start of a >> release cycle and new stuff can still be added and additional testing >> needs to be done afterwards. >> >> Cheers, >> >> Mark >> >> >> > > +1 > > It would also be good to coordinate with Sun on this in order to time > IcedTea6 releases against upstream OpenJDK6 build drops. There is a > known cycle for OpenJDK7 > (http://openjdk.java.net/projects/jdk7/calendar/) but none, as far as > I know, for OpenJDK6. > Yes, OpenJDK 6 builds have always been on an as-needed basis and not a fixed schedule, but builds are always needed for security releases. I agree it would be reasonable for OpenJDK 6 and IcedTea 6 to coordinate more. -Joe From mvfranz at gmail.com Mon Aug 10 20:19:01 2009 From: mvfranz at gmail.com (Michael Franz) Date: Mon, 10 Aug 2009 23:19:01 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner Message-ID: Hi, I am trying to build IcedTea 1.11 on Fedora 10 with all the updates. I followed the instructions for building with ecj. autoreconf; ./configure . The configure scripts throws an exception that java.util.Scanner is missing. I think I have all the prerequisites installed. What might be missing? Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090810/b2da26d1/attachment.html From mark at klomp.org Tue Aug 11 01:20:31 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 11 Aug 2009 10:20:31 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A800219.4040703@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A7BE776.3040405@redhat.com> <1249638794.3477.13.camel@springer.wildebeest.org> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> <1249745151.3441.10.camel@springer.wildebeest.org> <4A7FE8F9.4040508@redhat.com> <1249899945.3606.64.camel@springer.wildebeest.org> <4A800219.4040703@redhat.com> Message-ID: <1249978831.2632.32.camel@hermans.wildebeest.org> Hi Andrew, On Mon, 2009-08-10 at 12:18 +0100, Andrew Haley wrote: > I've worked on projects with regular timed releases and with > feature-based releases, and the feature-based releases work better. > They're much more aligned with what users want: no-one wants Release > 1.9, they want Feature X. That is opposite to my experiences. Users and developers seem to prefer a release early, release often approach. It isn't about features, it is about a steadily improving product. It takes away fear of developers that their feature won't make it, since they know there will be just another release 6 weeks from now, when they can polish it up and make ready. It means no arbitrary delays for stuff being released because it "isn't a big enough feature to release now". Users get the bug fixes at regular intervals. And it makes distros happy because they don't have to carry so many backports for bugs that have been fixed upstream already but are still in a holding pattern to be released on an unclear schedule. > You are proposing a change that has costs associated with it. For > that to work, we would have to have buy-in across the IcedTea > community and a commitment to do the work. Without that, releases > would not be tested. And if there is one thing that we must not do, > it is to make untested releases. We should have buy-in indeed. I think we have. You seem to be the only person against more regular releases. But maybe the other people are just too timid to tell me what a crazy idea it is :) But I am happy to defer to the actual release master. If they feel doing regular releases is too much work, then obviously they won't happen. What we have been doing, and should do more, is making IcedTea always releasable. We have setup multiple autobuilders and testers to make sure the build is never broken and no unknown regressions slip in. Cheers, Mark From aph at redhat.com Tue Aug 11 03:33:20 2009 From: aph at redhat.com (Andrew Haley) Date: Tue, 11 Aug 2009 11:33:20 +0100 Subject: ARM Interpreter Message-ID: <4A8148F0.6050601@redhat.com> Ed, The IcedTea release is being held up because I thought that the ARM interpreter update was ready to go in, but it has still not been committed. I think the problem is that you do not have commit access and Xerxes is not around. Is this checkin going to happen this week? If not, we should branch for a release now and save the ARM update for the next release. I think you should have commit access and not depend on others to commit your work. Andrew. From aph at redhat.com Tue Aug 11 03:42:07 2009 From: aph at redhat.com (Andrew Haley) Date: Tue, 11 Aug 2009 11:42:07 +0100 Subject: ARM Interpreter In-Reply-To: <4A8148F0.6050601@redhat.com> References: <4A8148F0.6050601@redhat.com> Message-ID: <4A814AFF.3000704@redhat.com> Andrew Haley wrote: > I think you should have commit access and not depend on others to commit > your work. Sorry, that came out a bit harsher than I intended! I mean, it would be really nice if you had commit access... :-) Andrew. From enevill at arm.com Tue Aug 11 05:37:44 2009 From: enevill at arm.com (Edward Nevill) Date: Tue, 11 Aug 2009 13:37:44 +0100 Subject: ARM Interpreter In-Reply-To: <4A8148F0.6050601@redhat.com> References: <4A8148F0.6050601@redhat.com> Message-ID: <000601ca1a80$86bf71f0$943e55d0$@com> >I think the problem is that you do not have commit access and Xerxes is >not around. Is this checkin going to happen this week? If not, we should >branch for a release now and save the ARM update for the next release. I agree. This will give me some time to ensure it is working with Shark. Incidentally, further to our discussion, the way it will work at the moment if the diffs are checked in without any changes is that the optimised assembler version will become the default build for ARM. The relevant part is the diff to zero.make where it does ifeq ($(ZERO_LIBARCH),arm) Obj_Files += cppInterpreter_arm.o CFLAGS += -DHOTSPOT_ASM -DHW_NULL_PTR_CHECK ... ... endif If you build Shark, it will include the optimised assembler, but it will fall back to the CPP interpreter at runtime. I have put the sources at http://camswl.com/openjdk, however, the source release there is a complete debian package. I will make the diffs to b16 available on the website and post when they are available. >I think you should have commit access and not depend on others to commit >your work. OK. Can you arrange commit access for me please. Regards, Ed. From enevill at arm.com Tue Aug 11 06:22:15 2009 From: enevill at arm.com (Edward Nevill) Date: Tue, 11 Aug 2009 14:22:15 +0100 Subject: ARM Interpreter diffs Message-ID: <000701ca1a86$bed4aff0$3c7e0fd0$@com> Hi all, I have put the diffs for the ARM interpreter at http://camswl.com/b16diffs There is a brief description of each file change and why it is changed Regards, Ed. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090811/8d90ba9b/attachment.html From mark at klomp.org Tue Aug 11 07:47:32 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 11 Aug 2009 16:47:32 +0200 Subject: ARM Interpreter diffs In-Reply-To: <000701ca1a86$bed4aff0$3c7e0fd0$@com> References: <000701ca1a86$bed4aff0$3c7e0fd0$@com> Message-ID: <1250002052.3516.10.camel@springer.wildebeest.org> Hi Ed, On Tue, 2009-08-11 at 14:22 +0100, Edward Nevill wrote: > I have put the diffs for the ARM interpreter at > > http://camswl.com/b16diffs I am getting "404 Not Found" for that URL. From enevill at arm.com Tue Aug 11 08:49:32 2009 From: enevill at arm.com (Edward Nevill) Date: Tue, 11 Aug 2009 16:49:32 +0100 Subject: ARM Interpreter diffs In-Reply-To: <1250002052.3516.10.camel@springer.wildebeest.org> References: <000701ca1a86$bed4aff0$3c7e0fd0$@com> <1250002052.3516.10.camel@springer.wildebeest.org> Message-ID: <001501ca1a9b$518eda50$f4ac8ef0$@com> Apologies, Try http://camswl.com/openjdk/b16diffs Regards, Ed On Tue, 2009-08-11 at 14:22 +0100, Edward Nevill wrote: > I have put the diffs for the ARM interpreter at > > http://camswl.com/b16diffs I am getting "404 Not Found" for that URL. From bugzilla-daemon at icedtea.classpath.org Tue Aug 11 11:02:11 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 11 Aug 2009 18:02:11 +0000 Subject: [Bug 368] Eclipse repeatedly crashes after changing C++ Project Properties Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=368 ------- Comment #2 from matt.bauer at ngc.com 2009-08-11 18:02 ------- Created an attachment (id=253) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=253&action=view) Automatically generated error report produced as Eclipse IDE crashed. The crash screen generated was as follows: # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00002b8a40ec2821, pid=32488, tid=1204967744 # # Java VM: OpenJDK 64-Bit Server VM (1.6.0-b09 mixed mode linux-amd64) # Problematic frame: # V [libjvm.so+0x20a821] # # An error report file with more information is saved as: # /home/user1/hs_err_pid32488.log # # 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. -- 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 mvfranz at gmail.com Tue Aug 11 16:27:04 2009 From: mvfranz at gmail.com (Michael Franz) Date: Tue, 11 Aug 2009 19:27:04 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: Message-ID: It looks like the Makefile logic that adds icedtea-euctw.patch is not working as expected. Since this was an IcedTea 6 patch, was the logic implemented correctly in IcedTea 7? On Mon, Aug 10, 2009 at 11:19 PM, Michael Franz wrote: > Hi, > > I am trying to build IcedTea 1.11 on Fedora 10 with all the updates. I > followed the instructions for building with ecj. autoreconf; ./configure . > The configure scripts throws an exception that java.util.Scanner is > missing. I think I have all the prerequisites installed. What might be > missing? > > Michael > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090811/35df0ff0/attachment.html From gbenson at redhat.com Wed Aug 12 02:59:41 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 12 Aug 2009 10:59:41 +0100 Subject: ARM Interpreter In-Reply-To: <000601ca1a80$86bf71f0$943e55d0$@com> References: <4A8148F0.6050601@redhat.com> <000601ca1a80$86bf71f0$943e55d0$@com> Message-ID: <20090812095940.GC3241@redhat.com> Edward Nevill wrote: > I will make the diffs to b16 available on the website and post when > they are available. Please mail a patch against icedtea to this list for review before committing anything. Cheers, Gary -- http://gbenson.net/ From gbenson at redhat.com Wed Aug 12 03:08:11 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 12 Aug 2009 11:08:11 +0100 Subject: ARM Interpreter In-Reply-To: <20090812095940.GC3241@redhat.com> References: <4A8148F0.6050601@redhat.com> <000601ca1a80$86bf71f0$943e55d0$@com> <20090812095940.GC3241@redhat.com> Message-ID: <20090812100811.GD3241@redhat.com> Gary Benson wrote: > Edward Nevill wrote: > > I will make the diffs to b16 available on the website and post > > when they are available. > > Please mail a patch against icedtea to this list for review before > committing anything. Also, did you see this email? http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-July/006543.html Cheers, Gary -- http://gbenson.net/ From aph at redhat.com Wed Aug 12 03:09:58 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 12 Aug 2009 11:09:58 +0100 Subject: ARM Interpreter In-Reply-To: <20090812095940.GC3241@redhat.com> References: <4A8148F0.6050601@redhat.com> <000601ca1a80$86bf71f0$943e55d0$@com> <20090812095940.GC3241@redhat.com> Message-ID: <4A8294F6.4020207@redhat.com> Gary Benson wrote: > Edward Nevill wrote: >> I will make the diffs to b16 available on the website and post when >> they are available. > > Please mail a patch against icedtea to this list for review before > committing anything. I agree. Unless patches are posted they tend to get lost when web sites are reorganized or even taken down. This list is archived. It can be a bit of a pain to post a very large patch, but it's worth it. Andrew. From gbenson at redhat.com Wed Aug 12 03:17:52 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 12 Aug 2009 11:17:52 +0100 Subject: ARM Interpreter In-Reply-To: <4A8294F6.4020207@redhat.com> References: <4A8148F0.6050601@redhat.com> <000601ca1a80$86bf71f0$943e55d0$@com> <20090812095940.GC3241@redhat.com> <4A8294F6.4020207@redhat.com> Message-ID: <20090812101751.GF3241@redhat.com> Andrew Haley wrote: > Gary Benson wrote: > > Edward Nevill wrote: > > > I will make the diffs to b16 available on the website and post > > > when they are available. > > > > Please mail a patch against icedtea to this list for review before > > committing anything. > > I agree. Unless patches are posted they tend to get lost when web > sites are reorganized or even taken down. This list is archived. > It can be a bit of a pain to post a very large patch, but it's worth > it. I've done it a few times; the only real issue is that the list has an 80kb limit or so, so you'll get a message saying your mail is held for moderation (and nobody will see it until Dalibor unsticks it). FWIW it's best not to compress the patch either, just mail it plain. I think the list's web archive eats binary attachments. Cheers, Gary -- http://gbenson.net/ From aph at redhat.com Wed Aug 12 03:20:58 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 12 Aug 2009 11:20:58 +0100 Subject: ARM Interpreter In-Reply-To: <20090812101751.GF3241@redhat.com> References: <4A8148F0.6050601@redhat.com> <000601ca1a80$86bf71f0$943e55d0$@com> <20090812095940.GC3241@redhat.com> <4A8294F6.4020207@redhat.com> <20090812101751.GF3241@redhat.com> Message-ID: <4A82978A.6090900@redhat.com> Gary Benson wrote: > FWIW it's best not to compress the patch either, just mail it plain. > I think the list's web archive eats binary attachments. IME it's never a good idea to compress patches: anything that needs a special action on the part of the receiver is much less likely to be read. Andrew. From enevill at arm.com Wed Aug 12 03:51:14 2009 From: enevill at arm.com (Edward Nevill) Date: Wed, 12 Aug 2009 11:51:14 +0100 Subject: ARM Interpreter Message-ID: <001601ca1b3a$d020bce0$706236a0$@com> I did not see that email as I was not subscribed to the ML when it was written. >Also, did you see this email? > > http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-July/006543.html >Matthias Klose wrote: >> +#if defined(PRODUCT) && defined(HOTSPOT_ASM) > >So my first question is why is everything conditionalized on PRODUCT? >Not being able to build not-PRODUCT means no assertions, no debug >helpers and no diagnostic options. I'd like to see all these >conditionals replaced with "#ifdef HOTSPOT_ASM". > >> +#endif The reason everything is conditionalised on PRODUCT is that the Asm loop will not work with a non product build. This is because all the offsets in the structures change on a non product build because of the addition of debug info into the structures. You can still do a non PRODUCT build for debug purposes and get all the assertions etc, its just you wont get the Asm loop at the same time, it will revert to the C++ loop. >HotSpot seems to follow the convention that #endifs are annotated: > > #ifdef HOTSPOT_ASM > ... > #endif // HOTSPOT_ASM OK. Will do. >+ifdef ICEDTEA_ZERO_BUILD >+ifeq ($(ZERO_LIBARCH),arm) >+Obj_Files += cppInterpreter_arm.o >+CFLAGS += -DHOTSPOT_ASM -DHW_NULL_PTR_CHECK -g0 -O2 >+%.o: %.S >+ @echo Assembling $< >+ $(QUIETLY) $(REMOVE_TARGET) >+ $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) >+endif >+endif OK. Will do Also. I think there is probably a better place for the .o: .S rule, but I couldn't find any better placed that wasn't in OpenJDK code. >> @@ -29,4 +29,32 @@ >> void Bytecodes::pd_initialize() >> { >> // No zero specific initialization >> +#if defined(PRODUCT) && defined(HOTSPOT_ASM) > >The "// No zero specific initialization" line needs removing, as there >is now some zero specific initialization. OK. Will do. >> diff -r 914f2022b402 ports/hotspot/src/cpu/zero/vm/mkbc.c > >This file isn't part of HotSpot, it's a generator for some other files. >Can it be placed into contrib? I'm not sure where the best place for this is. The mkbc.c generates the mkbc tool which generates the bytecodes.s file from the bc.def file. Ideally this would all be part of the build and the bytecodes.s file would not need to be checked in because it would be generated from bc.def. However, currently I have included the bytecodes.s file manually generated because I am unclear how to handle the mkbc tool in the OpenJDK / IcedTea build. Regards, Ed. From aph at redhat.com Wed Aug 12 03:54:47 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 12 Aug 2009 11:54:47 +0100 Subject: ARM Interpreter In-Reply-To: <001601ca1b3a$d020bce0$706236a0$@com> References: <001601ca1b3a$d020bce0$706236a0$@com> Message-ID: <4A829F77.60501@redhat.com> Edward Nevill wrote: > http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-July/006543.html > >> Matthias Klose wrote: >>> +#if defined(PRODUCT) && defined(HOTSPOT_ASM) >> So my first question is why is everything conditionalized on PRODUCT? >> Not being able to build not-PRODUCT means no assertions, no debug >> helpers and no diagnostic options. I'd like to see all these >> conditionals replaced with "#ifdef HOTSPOT_ASM". >> >>> +#endif > > The reason everything is conditionalised on PRODUCT is that the Asm loop > will not work with a non product build. This is because all the offsets in > the structures change on a non product build because of the addition of > debug info into the structures. > > You can still do a non PRODUCT build for debug purposes and get all the > assertions etc, its just you wont get the Asm loop at the same time, it will > revert to the C++ loop. We should be able to fix this so that it works with non-product builds at some later stage. >>> diff -r 914f2022b402 ports/hotspot/src/cpu/zero/vm/mkbc.c >> This file isn't part of HotSpot, it's a generator for some other files. >> Can it be placed into contrib? > > I'm not sure where the best place for this is. The mkbc.c generates the mkbc > tool which generates the bytecodes.s file from the bc.def file. > > Ideally this would all be part of the build and the bytecodes.s file would > not need to be checked in because it would be generated from bc.def. > > However, currently I have included the bytecodes.s file manually generated > because I am unclear how to handle the mkbc tool in the OpenJDK / IcedTea > build. IMO this is reasonable enough. Andrew. From gbenson at redhat.com Wed Aug 12 05:05:28 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 12 Aug 2009 13:05:28 +0100 Subject: ARM Interpreter In-Reply-To: <001601ca1b3a$d020bce0$706236a0$@com> References: <001601ca1b3a$d020bce0$706236a0$@com> Message-ID: <20090812120528.GH3241@redhat.com> Edward Nevill wrote: > > Matthias Klose wrote: > > > +#if defined(PRODUCT) && defined(HOTSPOT_ASM) > > > > So my first question is why is everything conditionalized on > > PRODUCT? Not being able to build not-PRODUCT means no assertions, > > no debug helpers and no diagnostic options. I'd like to see all > > these conditionals replaced with "#ifdef HOTSPOT_ASM". > > The reason everything is conditionalised on PRODUCT is that the Asm > loop will not work with a non product build. This is because all the > offsets in the structures change on a non product build because of > the addition of debug info into the structures. That's really likely to break. Would it be possible to have a table of all the constants you use, and fill it in at VM startup? The C++ interpreter's init code (bytecodeInterpreter.cpp, around line 560) would be a nice place. I saw you inlined ZeroFrame::SHARK_FRAME too, that sort of thing could go there as well. > > +ifdef ICEDTEA_ZERO_BUILD > > +ifeq ($(ZERO_LIBARCH),arm) > > +Obj_Files += cppInterpreter_arm.o > > +CFLAGS += -DHOTSPOT_ASM -DHW_NULL_PTR_CHECK -g0 -O2 > > +%.o: %.S > > + @echo Assembling $< > > + $(QUIETLY) $(REMOVE_TARGET) > > + $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) > > +endif > > +endif > > OK. Will do > > Also. I think there is probably a better place for the .o: .S rule, > but I couldn't find any better placed that wasn't in OpenJDK code. Maybe wherever it defines the .o: .cpp rule? > > > diff -r 914f2022b402 ports/hotspot/src/cpu/zero/vm/mkbc.c > > > > This file isn't part of HotSpot, it's a generator for some other files. > > Can it be placed into contrib? > > I'm not sure where the best place for this is. The mkbc.c generates > the mkbc tool which generates the bytecodes.s file from the bc.def > file. > > Ideally this would all be part of the build and the bytecodes.s file > would not need to be checked in because it would be generated from > bc.def. > > However, currently I have included the bytecodes.s file manually > generated because I am unclear how to handle the mkbc tool in the > OpenJDK / IcedTea build. Ah, ok. Perhaps put mkbc.c in the top level directory, and build it in the top level Makefile. Have a look at the stamps/ports.stamp rule, that's a decent example of something that needs running before the main OpenJDK build happens. There's also the corresponding stamps/ports-ecj.stamp rule; sadly all this stuff is duplicated :( Cheers, Gary -- http://gbenson.net/ From aph at redhat.com Wed Aug 12 08:01:01 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 12 Aug 2009 16:01:01 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <4A7B413C.8010109@redhat.com> References: <4A7B413C.8010109@redhat.com> Message-ID: <4A82D92D.3050809@redhat.com> Lillian Angel wrote: > Due to the most recent drop of security patches, the progress on the > plugin/netx and system-tap integration, I am wondering if this is a good > time to have a release. > > Any thoughts? I've been talking with Ed Nevill and others, and it looks like the ARM bytecode interpreter patch isn't going to be ready in time for this release. So, we might as well cut the release branch now: there wasn't anything else we were waiting for, IIRC. This time I'd like to do the release myself, if no-one has any objections. This is mostly for my own education, but also because we should spread the load between maintainers. So, I think this is a good time to cut the branch. Is that OK with everyone? Andrew. From aph at redhat.com Wed Aug 12 08:01:55 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 12 Aug 2009 16:01:55 +0100 Subject: ARM Interpreter In-Reply-To: <20090812120528.GH3241@redhat.com> References: <001601ca1b3a$d020bce0$706236a0$@com> <20090812120528.GH3241@redhat.com> Message-ID: <4A82D963.6080100@redhat.com> Gary Benson wrote: > Edward Nevill wrote: >>> Matthias Klose wrote: >>>> +#if defined(PRODUCT) && defined(HOTSPOT_ASM) >>> So my first question is why is everything conditionalized on >>> PRODUCT? Not being able to build not-PRODUCT means no assertions, >>> no debug helpers and no diagnostic options. I'd like to see all >>> these conditionals replaced with "#ifdef HOTSPOT_ASM". >> The reason everything is conditionalised on PRODUCT is that the Asm >> loop will not work with a non product build. This is because all the >> offsets in the structures change on a non product build because of >> the addition of debug info into the structures. > > That's really likely to break. Would it be possible to have a table > of all the constants you use, and fill it in at VM startup? The C++ > interpreter's init code (bytecodeInterpreter.cpp, around line 560) > would be a nice place. I saw you inlined ZeroFrame::SHARK_FRAME too, > that sort of thing could go there as well. I think that such a table can be generated automatically, and I think I know how to do it. Can I suggest that this be treated as a future change, so that the patch can be checked in soon? That'll make it much easier for me and others to work on it. Andrew. From langel at redhat.com Wed Aug 12 08:23:00 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 12 Aug 2009 11:23:00 -0400 Subject: Proposed IcedTea 6 release In-Reply-To: <4A82D92D.3050809@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A82D92D.3050809@redhat.com> Message-ID: <4A82DE54.8040406@redhat.com> Andrew Haley wrote: > Lillian Angel wrote: > > >> Due to the most recent drop of security patches, the progress on the >> plugin/netx and system-tap integration, I am wondering if this is a good >> time to have a release. >> >> Any thoughts? >> > > I've been talking with Ed Nevill and others, and it looks like the ARM > bytecode interpreter patch isn't going to be ready in time for this > release. So, we might as well cut the release branch now: there wasn't > anything else we were waiting for, IIRC. > > This time I'd like to do the release myself, if no-one has any objections. > This is mostly for my own education, but also because we should spread > the load between maintainers. > > So, I think this is a good time to cut the branch. Is that OK with > everyone? Sounds excellent. Lillian From gbenson at redhat.com Wed Aug 12 08:25:33 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 12 Aug 2009 16:25:33 +0100 Subject: ARM Interpreter In-Reply-To: <4A82D963.6080100@redhat.com> References: <001601ca1b3a$d020bce0$706236a0$@com> <20090812120528.GH3241@redhat.com> <4A82D963.6080100@redhat.com> Message-ID: <20090812152533.GI3241@redhat.com> Andrew Haley wrote: > Gary Benson wrote: > > Edward Nevill wrote: > > > > Matthias Klose wrote: > > > > > +#if defined(PRODUCT) && defined(HOTSPOT_ASM) > > > > > > > > So my first question is why is everything conditionalized on > > > > PRODUCT? Not being able to build not-PRODUCT means no > > > > assertions, no debug helpers and no diagnostic options. I'd > > > > like to see all these conditionals replaced with "#ifdef > > > > HOTSPOT_ASM". > > > > > > The reason everything is conditionalised on PRODUCT is that the > > > Asm loop will not work with a non product build. This is because > > > all the offsets in the structures change on a non product build > > > because of the addition of debug info into the structures. > > > > That's really likely to break. Would it be possible to have a > > table of all the constants you use, and fill it in at VM startup? > > The C++ interpreter's init code (bytecodeInterpreter.cpp, around > > line 560) would be a nice place. I saw you inlined > > ZeroFrame::SHARK_FRAME too, that sort of thing could go there as > > well. > > I think that such a table can be generated automatically, and I > think I know how to do it. > > Can I suggest that this be treated as a future change, so that the > patch can be checked in soon? That'll make it much easier for me > and others to work on it. Sure. Cheers, Gary -- http://gbenson.net/ From mark at klomp.org Wed Aug 12 08:29:23 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 12 Aug 2009 17:29:23 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A82D92D.3050809@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A82D92D.3050809@redhat.com> Message-ID: <1250090963.3513.464.camel@springer.wildebeest.org> Hi Andrew, On Wed, 2009-08-12 at 16:01 +0100, Andrew Haley wrote: > I've been talking with Ed Nevill and others, and it looks like the ARM > bytecode interpreter patch isn't going to be ready in time for this > release. So, we might as well cut the release branch now: there wasn't > anything else we were waiting for, IIRC. One other item might have been to sync with oj6. But it is unknown when/if it can be updated and when oj6b17 will actually be released. IcedTea6 already contains the important bits missing from current oj6 (security updates, updated hotspot). It would require extra testing though, very recently some changes to the build were added with respect to the target and source settings of some of the components (6870641: [langtools] update make/build.* for jdk6, 6870591: langtools build sets javac.bootclasspath incorrectly) some similar changes in jdk7 seem to cause some subtle problems bootstrapping icedtea7. So it might actually be a good idea to skip this oj6 update for now and branch IcedTea6 now. Cheers, Mark From aph at redhat.com Wed Aug 12 09:46:41 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 12 Aug 2009 17:46:41 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <4A82D92D.3050809@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A82D92D.3050809@redhat.com> Message-ID: <4A82F1F1.8060509@redhat.com> Andrew Haley wrote: > So, I think this is a good time to cut the branch. Is that OK with > everyone? The release branch is open for checkins: http://icedtea.classpath.org/hg/release/icedtea6-1.6/ Please post all patches for the release branch to this list. Andrew. From mvfranz at gmail.com Wed Aug 12 20:06:31 2009 From: mvfranz at gmail.com (Michael Franz) Date: Wed, 12 Aug 2009 23:06:31 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: Message-ID: I installed a fresh version of Fedora 11 and all is working. I guess Fedora 10 is missing java.util.Scanner from the Java installation. On Tue, Aug 11, 2009 at 7:27 PM, Michael Franz wrote: > It looks like the Makefile logic that adds icedtea-euctw.patch is not > working as expected. Since this was an IcedTea 6 patch, was the logic > implemented correctly in IcedTea 7? > > > On Mon, Aug 10, 2009 at 11:19 PM, Michael Franz wrote: > >> Hi, >> >> I am trying to build IcedTea 1.11 on Fedora 10 with all the updates. I >> followed the instructions for building with ecj. autoreconf; ./configure . >> The configure scripts throws an exception that java.util.Scanner is >> missing. I think I have all the prerequisites installed. What might be >> missing? >> >> Michael >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090812/4a9c1034/attachment.html From enevill at arm.com Thu Aug 13 01:45:59 2009 From: enevill at arm.com (Edward Nevill) Date: Thu, 13 Aug 2009 09:45:59 +0100 Subject: Interpreter Offsets (was RE: ARM Interpreter) In-Reply-To: <20090812120528.GH3241@redhat.com> References: <001601ca1b3a$d020bce0$706236a0$@com> <20090812120528.GH3241@redhat.com> Message-ID: <000001ca1bf2$7b8ec470$72ac4d50$@com> Note: I have cross-posted this to zero-dev which is where this discussion more logically belongs as it is not a packaging issue. I have left distro-pkg-dev on this post so people can see the discussion is moving to zero-dev, but please remove distro-pkg-dev from subsequent posts. >> > So my first question is why is everything conditionalized on >> > PRODUCT? Not being able to build not-PRODUCT means no assertions, >> > no debug helpers and no diagnostic options. I'd like to see all >> > these conditionals replaced with "#ifdef HOTSPOT_ASM". >> >> The reason everything is conditionalised on PRODUCT is that the Asm >> loop will not work with a non product build. This is because all the >> offsets in the structures change on a non product build because of >> the addition of debug info into the structures. > >That's really likely to break. Would it be possible to have a table >of all the constants you use, and fill it in at VM startup? The C++ >interpreter's init code (bytecodeInterpreter.cpp, around line 560) >would be a nice place. I saw you inlined ZeroFrame::SHARK_FRAME too, >that sort of thing could go there as well. That would be too expensive in terms of performance. Every time it needed to access a field it would need to load the offset from a table and then use that offset in another load. Note that there is a possible 2 cycle load use penalty between the two loads so this ends up taking 4 cycles instead of 1. The way to handle this is to write a tool which generates the offsets (called say 'mkoffsets'). You then in the build do something like gcc -o mkoffsets mkoffsets.cpp ./mkoffsets > offsets.s And the #include "offsets.s". As it happens there is an interface in OpenJDK for doing exactly this sort of thing. It is called VMStructs. I have written a version of mkoffsets.cpp using VMStructs (see below). I am not sure of the best way to handle the PRODUCT vs non PRODUCT issue. There are two possible approaches. 1) The first is to generate both sets of offsets in the build and use #ifdef PRODUCT to select the correct offsets. Eg. gcc -o mkoffsets mkoffsets.cpp -DPRODUCT ./mkoffsets > product_offsets.s gcc -o mkoffsets mkoffsets.cpp -DDEBUG ./mkoffsets > debug_offsets.s Then in the asm loop do #ifdef PRODUCT #include "product_offsets.s" #else #include "debug_offsets.s" #endif 2) The 2nd is to ensure that mkoffsets is 'cleaned' for every build so that if you switch between PRODUCT and non PRODUCT builds the offsets.s file always gets regenerated. I am leaning towards the first option as the consequences of the offsets file not being regenerated correctly are horrible. Regards, Ed. --- mkoffsets.cpp ------------------------------------------------- /* * Copyright 2009 Edward Nevill * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). */ #include "incls/_precompiled.incl" class VMStructs { public: static void print_vm_offsets(void); }; #define outfile stdout void print_def(const char *s, int v) { fprintf(outfile, "#define %-40s 0x%02x\n", s, v); } void nl(void) { fputc('\n', outfile); } 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) + ZeroStack::base_offset()); print_def("THREAD_JAVA_SP", offset_of(JavaThread, _zero_stack) + ZeroStack::sp_offset()); print_def("THREAD_TOP_ZERO_FRAME", offset_of(JavaThread, _top_zero_frame)); } int main(void) { print_def("JVM_CONSTANT_Utf8", JVM_CONSTANT_Utf8); print_def("JVM_CONSTANT_Unicode", JVM_CONSTANT_Unicode); print_def("JVM_CONSTANT_Float", JVM_CONSTANT_Float); print_def("JVM_CONSTANT_Long", JVM_CONSTANT_Long); print_def("JVM_CONSTANT_Double", JVM_CONSTANT_Double); print_def("JVM_CONSTANT_Class", JVM_CONSTANT_Class); print_def("JVM_CONSTANT_String", JVM_CONSTANT_String); print_def("JVM_CONSTANT_Fieldref", JVM_CONSTANT_Fieldref); print_def("JVM_CONSTANT_Methodref", JVM_CONSTANT_Methodref); print_def("JVM_CONSTANT_InterfaceMethodref", JVM_CONSTANT_InterfaceMethodref); print_def("JVM_CONSTANT_NameAndType", JVM_CONSTANT_NameAndType); nl(); print_def("JVM_CONSTANT_UnresolvedClass", JVM_CONSTANT_UnresolvedClass); print_def("JVM_CONSTANT_ClassIndex", JVM_CONSTANT_ClassIndex); print_def("JVM_CONSTANT_UnresolvedString", JVM_CONSTANT_UnresolvedString); print_def("JVM_CONSTANT_StringIndex", JVM_CONSTANT_StringIndex); print_def("JVM_CONSTANT_UnresolvedClassInError",JVM_CONSTANT_UnresolvedClass InError); nl(); print_def("T_BOOLEAN", T_BOOLEAN); print_def("T_CHAR", T_CHAR); print_def("T_FLOAT", T_FLOAT); print_def("T_DOUBLE", T_DOUBLE); print_def("T_BYTE", T_BYTE); print_def("T_SHORT", T_SHORT); print_def("T_INT", T_INT); print_def("T_LONG", T_LONG); print_def("T_OBJECT", T_OBJECT); print_def("T_ARRAY", T_ARRAY); print_def("T_VOID", T_VOID); nl(); print_def("_thread_uninitialized", _thread_uninitialized); print_def("_thread_new", _thread_new); print_def("_thread_new_trans", _thread_new_trans); print_def("_thread_in_native", _thread_in_native); print_def("_thread_in_native_trans", _thread_in_native_trans); print_def("_thread_in_vm", _thread_in_vm); print_def("_thread_in_vm_trans", _thread_in_vm_trans); print_def("_thread_in_Java", _thread_in_Java); print_def("_thread_in_Java_trans", _thread_in_Java_trans); print_def("_thread_blocked", _thread_blocked); print_def("_thread_blocked_trans", _thread_blocked_trans); print_def("_thread_max_state", _thread_max_state); nl(); print_def("class_unparsable_by_gc", instanceKlass::unparsable_by_gc); print_def("class_allocated", instanceKlass::allocated); print_def("class_loaded", instanceKlass::loaded); print_def("class_linked", instanceKlass::linked); print_def("class_being_initialized", instanceKlass::being_initialized); print_def("class_fully_initialized", instanceKlass::fully_initialized); print_def("class_init_error", instanceKlass::initialization_error); nl(); print_def("flag_methodInterface", 1 << ConstantPoolCacheEntry::methodInterface); print_def("flag_volatileField", 1 << ConstantPoolCacheEntry::volatileField); print_def("flag_vfinalMethod", 1 << ConstantPoolCacheEntry::vfinalMethod); print_def("flag_finalField", 1 << ConstantPoolCacheEntry::finalField); nl(); VMStructs::print_vm_offsets(); nl(); print_def("VMSYMBOLS_ArithmeticException", vmSymbols::java_lang_ArithmeticException_enum); print_def("VMSYMBOLS_ArrayIndexOutOfBounds", vmSymbols::java_lang_ArrayIndexOutOfBoundsException_enum); print_def("VMSYMBOLS_ArrayStoreException", vmSymbols::java_lang_ArrayStoreException_enum); print_def("VMSYMBOLS_ClassCastException", vmSymbols::java_lang_ClassCastException_enum); print_def("VMSYMBOLS_NullPointerException", vmSymbols::java_lang_NullPointerException_enum); print_def("VMSYMBOLS_AbstractMethodError", vmSymbols::java_lang_AbstractMethodError_enum); print_def("VMSYMBOLS_IncompatibleClassChangeError", vmSymbols::java_lang_IncompatibleClassChangeError_enum); print_def("VMSYMBOLS_InternalError", vmSymbols::java_lang_InternalError_enum); return 0; } From gnu_andrew at member.fsf.org Thu Aug 13 03:08:22 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 13 Aug 2009 11:08:22 +0100 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: Message-ID: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> 2009/8/13 Michael Franz : > I installed a fresh version of Fedora 11 and all is working.? I guess Fedora > 10 is missing java.util.Scanner from the Java installation. > > On Tue, Aug 11, 2009 at 7:27 PM, Michael Franz wrote: >> >> It looks like the Makefile logic that adds icedtea-euctw.patch is not >> working as expected.? Since this was an IcedTea 6 patch, was the logic >> implemented correctly in IcedTea 7? >> >> On Mon, Aug 10, 2009 at 11:19 PM, Michael Franz wrote: >>> >>> Hi, >>> >>> I am trying to build IcedTea 1.11 on Fedora 10 with all the updates.? I >>> followed the instructions for building with ecj.? autoreconf; ./configure . >>> The configure scripts throws an exception that java.util.Scanner is >>> missing.? I think I have all the prerequisites installed.? What might be >>> missing? >>> >>> Michael >>> >> > > The build should still go fine without java.util.Scanner; that check just detects whether patches are needed to work round its absence in gcj 4.3. IcedTea7 builds on boxes using gcj 4.3 (and certainly on F10 as Lillian has produced RPMs for it) so I'm not sure why you had issues and unfortunately you didn't provide enough debug info. to diagnose this; we need to know the exact error, what is being detected on your system, etc. -- 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 Aug 13 01:19:23 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 13 Aug 2009 10:19:23 +0200 Subject: Proposed IcedTea 6 release In-Reply-To: <4A804E86.7050907@sun.com> References: <4A7B413C.8010109@redhat.com> <4A7BFBEC.60706@redhat.com> <1249640291.3477.17.camel@springer.wildebeest.org> <4A7C235F.1030005@redhat.com> <17c6771e0908070556t71a302f9nde414704fb0170bc@mail.gmail.com> <4A7C25AF.5010604@redhat.com> <1249650848.3477.24.camel@springer.wildebeest.org> <17c6771e0908070621j6d7a68bavfe6e4212c9b90352@mail.gmail.com> <4A7D2FAE.4060309@redhat.com> <1249745151.3441.10.camel@springer.wildebeest.org> <17c6771e0908081649r5bace91aue7e23d0d3f5702ea@mail.gmail.com> <4A804E86.7050907@sun.com> Message-ID: <4A83CC8B.1050400@ubuntu.com> On 10.08.2009 18:44, Joseph D. Darcy wrote: > Andrew John Hughes wrote: >> It would also be good to coordinate with Sun on this in order to time >> IcedTea6 releases against upstream OpenJDK6 build drops. There is a >> known cycle for OpenJDK7 >> (http://openjdk.java.net/projects/jdk7/calendar/) but none, as far as >> I know, for OpenJDK6. > > Yes, OpenJDK 6 builds have always been on an as-needed basis and not a > fixed schedule, but builds are always needed for security releases. I > agree it would be reasonable for OpenJDK 6 and IcedTea 6 to coordinate > more. Now that we have a 1.5.1 release, can we have such a build/code drop this week for the 1.6 release? It would be nice to get rid of all the extra patches which did accumulate in the icedtea repository. Matthias From mark at klomp.org Thu Aug 13 04:04:03 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 13 Aug 2009 13:04:03 +0200 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) Message-ID: <1250161443.2798.194.camel@springer.wildebeest.org> Hi, I did some random test builds of IcedTea6 overnight. First the good news, --enable-xrender, --enable-systemtap, --enable-plugin, --enable-pulse-java, --with-parallel-jobs=8 and --enable-additional-vms=cacao all seem to do their job fine. But there seem to be some build issues with some other "non-standard" configure options (this is on x86_64 Fedora 11). When giving --with-additional-vms=cacao,zero (or just --with-additional-vms=zero) all goes well for the standard and cacao builds: $ openjdk/build/linux-amd64/j2sdk-image/bin/java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.5-r9420faca6468) (build 1.6.0_0-b16) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) $ openjdk/build/linux-amd64/j2sdk-image/bin/java -cacao -version java version "1.6.0_0" IcedTea Runtime Environment (IcedTea6 1.5-r9420faca6468) (build 1.6.0_0-b16) CACAO (build 0.99.4, compiled mode) But then the zero part goes wrong while (re)patching the tree: Checking patches/icedtea-version.patch The text leading up to this was: -------------------------- |--- openjdkold/jdk/make/common/shared/Defs.gmk 2008-08-28 04:10:47.000000000 -0400 |+++ openjdk/jdk/make/common/shared/Defs.gmk 2009-02-08 08:30:21.000000000 -0500 -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored The text leading up to this was: -------------------------- |--- openjdk/jdk/src/share/classes/sun/misc/Version-template.java.~1~ 2008-11-25 01:04:53.000000000 -0800 |+++ openjdk/jdk/src/share/classes/sun/misc/Version-template.java 2009-02-20 09:03:25.000000000 -0800 -------------------------- No file to patch. Skipping patch. 2 out of 2 hunks ignored The text leading up to this was: -------------------------- |--- 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 -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored ERROR patch patches/icedtea-version.patch FAILED! WARNING make clean-patch before retrying a fix make[1]: *** [stamps/patch.stamp] Error 2 make[1]: Leaving directory `/usr/local/build/icedtea6-obj/zerovm' make: *** [stamps/add-zero.stamp] Error 2 The --enable-visual-vm option seems not current. It ends with: netbeans: [genlist] Generating information for Auto Update... BUILD SUCCESSFUL Total time: 5 seconds mkdir -p stamps touch stamps/nbplatform.stamp cd visualvm ; \ ln -s /home/mark/src/icedtea6/netbeans/nbbuild/netbeans_visualvm netbeans ; \ JAVA_HOME=/home/mark/build/icedtea6-obj/bootstrap/icedtea /usr/bin/ant build Buildfile: build.xml BUILD FAILED /usr/local/build/icedtea6-obj/visualvm/build.xml:7: The following error occurred while executing this line: /usr/local/build/icedtea6-obj/visualvm/nbproject/build-impl.xml:19: You must define 'nbplatform.NetBeans_Platform_6.5_(Build_081204).harness.dir' Total time: 0 seconds make: *** [stamps/visualvm.stamp] Error 1 --enable-npplugin doesn't work because configure doesn't detect that the correct header files aren't there: cd /home/mark/src/icedtea6/plugin/icedteanp; \ if [ -e /home/mark/src/icedtea6/.hg ] && which /usr/bin/hg >/dev/null; then \ revision="-r`(cd /home/mark/src/icedtea6; /usr/bin/hg tip --template '{rev}')`" ; \ fi ; \ if [ -n "" ]; then plugin_version=" ()"; fi; \ plugin_version=" 1.5$revision$plugin_version"; \ g++ -g -O2 \ -DPACKAGE_VERSION="\"1.5\"" \ -DPLUGIN_VERSION="\"$plugin_version\"" \ -DMOZILLA_VERSION_COLLAPSED="1090102" \ -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include \ -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 \ -DXP_UNIX -DOJI -fshort-wchar -I/usr/include/xulrunner-sdk-1.9.1/stable -I/usr/include/xulrunner-sdk-1.9.1/java -I/usr/include/xulrunner-sdk-1.9.1/plugin -I/usr/include/nspr4 -I/usr/include/xulrunner-sdk-1.9.1/unstable \ -fPIC -c IcedTeaNPPlugin.cc IcedTeaScriptablePluginObject.cc IcedTeaJavaRequestProcessor.cc IcedTeaPluginRequestProcessor.cc IcedTeaPluginUtils.cc; \ cd ../ In file included from IcedTeaNPPlugin.cc:71: IcedTeaScriptablePluginObject.h:42:19: error: npupp.h: No such file or directory In file included from IcedTeaNPPlugin.h:54, from IcedTeaJavaRequestProcessor.h:46, from IcedTeaScriptablePluginObject.h:44, from IcedTeaNPPlugin.cc:71: What provides npupp.h? From aph at redhat.com Thu Aug 13 04:08:33 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 12:08:33 +0100 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) In-Reply-To: <1250161443.2798.194.camel@springer.wildebeest.org> References: <1250161443.2798.194.camel@springer.wildebeest.org> Message-ID: <4A83F431.8060201@redhat.com> Mark Wielaard wrote: > Hi, > > I did some random test builds of IcedTea6 overnight. > > First the good news, --enable-xrender, --enable-systemtap, > --enable-plugin, --enable-pulse-java, --with-parallel-jobs=8 and > --enable-additional-vms=cacao all seem to do their job fine. > > But there seem to be some build issues with some other "non-standard" > configure options (this is on x86_64 Fedora 11). > > When giving --with-additional-vms=cacao,zero (or just > --with-additional-vms=zero) all goes well for the standard and cacao > builds: > > $ openjdk/build/linux-amd64/j2sdk-image/bin/java -version > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.5-r9420faca6468) (build 1.6.0_0-b16) > OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) > > $ openjdk/build/linux-amd64/j2sdk-image/bin/java -cacao -version > java version "1.6.0_0" > IcedTea Runtime Environment (IcedTea6 1.5-r9420faca6468) (build 1.6.0_0-b16) > CACAO (build 0.99.4, compiled mode) > > But then the zero part goes wrong while (re)patching the tree: > > Checking patches/icedtea-version.patch > The text leading up to this was: > -------------------------- > |--- openjdkold/jdk/make/common/shared/Defs.gmk 2008-08-28 04:10:47.000000000 -0400 > |+++ openjdk/jdk/make/common/shared/Defs.gmk 2009-02-08 08:30:21.000000000 -0500 > -------------------------- > No file to patch. Skipping patch. > 1 out of 1 hunk ignored > The text leading up to this was: > -------------------------- > |--- openjdk/jdk/src/share/classes/sun/misc/Version-template.java.~1~ 2008-11-25 01:04:53.000000000 -0800 > |+++ openjdk/jdk/src/share/classes/sun/misc/Version-template.java 2009-02-20 09:03:25.000000000 -0800 > -------------------------- > No file to patch. Skipping patch. > 2 out of 2 hunks ignored > The text leading up to this was: > -------------------------- > |--- 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 > -------------------------- > No file to patch. Skipping patch. > 1 out of 1 hunk ignored > ERROR patch patches/icedtea-version.patch FAILED! > WARNING make clean-patch before retrying a fix > make[1]: *** [stamps/patch.stamp] Error 2 > make[1]: Leaving directory `/usr/local/build/icedtea6-obj/zerovm' > make: *** [stamps/add-zero.stamp] Error 2 Eww, this is horrible. > --enable-npplugin doesn't work because configure doesn't detect that the > correct header files aren't there: > > cd /home/mark/src/icedtea6/plugin/icedteanp; \ > if [ -e /home/mark/src/icedtea6/.hg ] && which /usr/bin/hg >/dev/null; then \ > revision="-r`(cd /home/mark/src/icedtea6; /usr/bin/hg tip --template '{rev}')`" ; \ > fi ; \ > if [ -n "" ]; then plugin_version=" ()"; fi; \ > plugin_version=" 1.5$revision$plugin_version"; \ > g++ -g -O2 \ > -DPACKAGE_VERSION="\"1.5\"" \ > -DPLUGIN_VERSION="\"$plugin_version\"" \ > -DMOZILLA_VERSION_COLLAPSED="1090102" \ > -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include \ > -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 \ > -DXP_UNIX -DOJI -fshort-wchar -I/usr/include/xulrunner-sdk-1.9.1/stable -I/usr/include/xulrunner-sdk-1.9.1/java -I/usr/include/xulrunner-sdk-1.9.1/plugin -I/usr/include/nspr4 -I/usr/include/xulrunner-sdk-1.9.1/unstable \ > -fPIC -c IcedTeaNPPlugin.cc IcedTeaScriptablePluginObject.cc IcedTeaJavaRequestProcessor.cc IcedTeaPluginRequestProcessor.cc IcedTeaPluginUtils.cc; \ > cd ../ > In file included from IcedTeaNPPlugin.cc:71: > IcedTeaScriptablePluginObject.h:42:19: error: npupp.h: No such file or directory > In file included from IcedTeaNPPlugin.h:54, > from IcedTeaJavaRequestProcessor.h:46, > from IcedTeaScriptablePluginObject.h:44, > from IcedTeaNPPlugin.cc:71: > > What provides npupp.h? xulrunner-devel Andrew. From mvfranz at gmail.com Thu Aug 13 04:29:09 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 13 Aug 2009 07:29:09 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> Message-ID: I still have the Fedora 10 install (I run the installs in VMWare). The error happened after the build runs for a while and fails with a class not found exception - No java.util.Scanner. I can send the full error later. On Thu, Aug 13, 2009 at 6:08 AM, Andrew John Hughes < gnu_andrew at member.fsf.org> wrote: > 2009/8/13 Michael Franz : > > I installed a fresh version of Fedora 11 and all is working. I guess > Fedora > > 10 is missing java.util.Scanner from the Java installation. > > > > On Tue, Aug 11, 2009 at 7:27 PM, Michael Franz > wrote: > >> > >> It looks like the Makefile logic that adds icedtea-euctw.patch is not > >> working as expected. Since this was an IcedTea 6 patch, was the logic > >> implemented correctly in IcedTea 7? > >> > >> On Mon, Aug 10, 2009 at 11:19 PM, Michael Franz > wrote: > >>> > >>> Hi, > >>> > >>> I am trying to build IcedTea 1.11 on Fedora 10 with all the updates. I > >>> followed the instructions for building with ecj. autoreconf; > ./configure . > >>> The configure scripts throws an exception that java.util.Scanner is > >>> missing. I think I have all the prerequisites installed. What might > be > >>> missing? > >>> > >>> Michael > >>> > >> > > > > > > The build should still go fine without java.util.Scanner; that check > just detects whether patches are needed to work round its absence in > gcj 4.3. IcedTea7 builds on boxes using gcj 4.3 (and certainly on F10 > as Lillian has produced RPMs for it) so I'm not sure why you had > issues and unfortunately you didn't provide enough debug info. to > diagnose this; we need to know the exact error, what is being detected > on your system, etc. > -- > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090813/8c93172e/attachment.html From gnu_andrew at member.fsf.org Thu Aug 13 04:37:16 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 13 Aug 2009 12:37:16 +0100 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> Message-ID: <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> 2009/8/13 Michael Franz : > I still have the Fedora 10 install (I run the installs in VMWare).? The > error happened after the build runs for a while and fails with a class not > found exception - No java.util.Scanner.? I can send the full error later. > > On Thu, Aug 13, 2009 at 6:08 AM, Andrew John Hughes > wrote: >> >> 2009/8/13 Michael Franz : >> > I installed a fresh version of Fedora 11 and all is working.? I guess >> > Fedora >> > 10 is missing java.util.Scanner from the Java installation. >> > >> > On Tue, Aug 11, 2009 at 7:27 PM, Michael Franz >> > wrote: >> >> >> >> It looks like the Makefile logic that adds icedtea-euctw.patch is not >> >> working as expected.? Since this was an IcedTea 6 patch, was the logic >> >> implemented correctly in IcedTea 7? >> >> >> >> On Mon, Aug 10, 2009 at 11:19 PM, Michael Franz >> >> wrote: >> >>> >> >>> Hi, >> >>> >> >>> I am trying to build IcedTea 1.11 on Fedora 10 with all the updates. >> >>> I >> >>> followed the instructions for building with ecj.? autoreconf; >> >>> ./configure . >> >>> The configure scripts throws an exception that java.util.Scanner is >> >>> missing.? I think I have all the prerequisites installed.? What might >> >>> be >> >>> missing? >> >>> >> >>> Michael >> >>> >> >> >> > >> > >> >> The build should still go fine without java.util.Scanner; that check >> just detects whether patches are needed to work round its absence in >> gcj 4.3. ?IcedTea7 builds on boxes using gcj 4.3 (and certainly on F10 >> as Lillian has produced RPMs for it) so I'm not sure why you had >> issues and unfortunately you didn't provide enough debug info. to >> diagnose this; we need to know the exact error, what is being detected >> on your system, etc. >> -- >> 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, that's interesting. That means there's a case that's not being patched. -- 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 mark at klomp.org Thu Aug 13 05:02:36 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 13 Aug 2009 14:02:36 +0200 Subject: Some 1.6 build results In-Reply-To: <1250161443.2798.194.camel@springer.wildebeest.org> References: <1250161443.2798.194.camel@springer.wildebeest.org> Message-ID: <1250164956.2798.206.camel@springer.wildebeest.org> On Thu, 2009-08-13 at 13:04 +0200, Mark Wielaard wrote: > I did some random test builds of IcedTea6 overnight. > > First the good news, --enable-xrender, --enable-systemtap, > --enable-plugin, --enable-pulse-java, --with-parallel-jobs=8 and > --enable-additional-vms=cacao all seem to do their job fine. And my make check finally finished for a configure --enable-xrender --enable-systemtap --enable-plugin --enable-pulse-java --with-parallel-jobs=8 --with-additional-vms=cacao build (the make check doesn't test the cacao part though). The results look pretty promising: --------------- jtreg console summary for hotspot --------------- Test results: passed: 24 --------------- jtreg console summary for langtools --------------- Test results: passed: 1,352 --------------- jtreg console summary for jdk --------------- FAILED: com/sun/net/httpserver/bugs/B6361557.java FAILED: java/awt/event/MouseEvent/EventTimeInFuture/EventTimeInFuture.java FAILED: java/awt/Frame/DynamicLayout/DynamicLayout.java FAILED: java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html FAILED: java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.html FAILED: java/awt/Window/AlwaysOnTop/AlwaysOnTopEvenOfWindow.java FAILED: java/beans/XMLEncoder/javax_swing_tree_TreePath.java FAILED: java/net/MulticastSocket/SetLoopbackMode.java FAILED: java/net/MulticastSocket/Test.java FAILED: javax/xml/crypto/dsig/GenerationTests.java FAILED: javax/xml/crypto/dsig/ValidationTests.java Error: sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html FAILED: sun/java2d/cmm/ColorConvertOp/ColConvCCMTest.java FAILED: sun/java2d/cmm/ColorConvertOp/ColConvDCMTest.java FAILED: sun/java2d/cmm/ColorConvertOp/MTColConvTest.java Error: sun/java2d/OpenGL/GradientPaints.java Test results: passed: 3,340; failed: 14; error: 2 I haven't had time to analyze the failures, but except for the two javax/xml/crypto/dsig failures (which seem to have appeared after the security update) I don't believe there are any other regressions. Cheers, Mark From gbenson at redhat.com Thu Aug 13 05:05:49 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 13 Aug 2009 12:05:49 +0000 Subject: changeset in /hg/icedtea6: 2009-08-13 Gary Benson changeset 84a63387e544 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=84a63387e544 description: 2009-08-13 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (SharkEntry::_function): New field. (SharkEntry::function): New method. (SharkEntry::set_function): Likewise. * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp (SharkCompiler::free_compiled_method): New method. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::free_compiled_method): New method. (SharkCompiler::compile_method): Store a pointer to the LLVM function in the method's SharkEntry. * patches/hotspot/default/icedtea-shark.patch (nmethod::flush): Add code to free Shark methods. * ports/hotspot/src/share/vm/includeDB_shark: Updated. diffstat: 6 files changed, 57 insertions(+), 5 deletions(-) ChangeLog | 19 +++++++++++++++++++ patches/hotspot/default/icedtea-shark.patch | 14 ++++++++++++++ ports/hotspot/src/share/vm/includeDB_shark | 2 +- ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 8 ++++++++ ports/hotspot/src/share/vm/shark/sharkCompiler.hpp | 3 +++ ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 16 ++++++++++++---- diffs (133 lines): diff -r 9420faca6468 -r 84a63387e544 ChangeLog --- a/ChangeLog Fri Aug 07 11:58:27 2009 +0200 +++ b/ChangeLog Thu Aug 13 08:01:04 2009 -0400 @@ -1,3 +1,22 @@ 2009-08-07 Matthias Klose + + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::_function): New field. + (SharkEntry::function): New method. + (SharkEntry::set_function): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp + (SharkCompiler::free_compiled_method): New method. + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::free_compiled_method): New method. + (SharkCompiler::compile_method): Store a pointer to + the LLVM function in the method's SharkEntry. + + * patches/hotspot/default/icedtea-shark.patch + (nmethod::flush): Add code to free Shark methods. + + * ports/hotspot/src/share/vm/includeDB_shark: Updated. + 2009-08-07 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options diff -r 9420faca6468 -r 84a63387e544 patches/hotspot/default/icedtea-shark.patch --- a/patches/hotspot/default/icedtea-shark.patch Fri Aug 07 11:58:27 2009 +0200 +++ b/patches/hotspot/default/icedtea-shark.patch Thu Aug 13 08:01:04 2009 -0400 @@ -374,3 +374,17 @@ diff -r 12c97e7e55eb -r e6fef2ef2fea ope address native_entry(); address interpreter_entry(); +diff -r 0d80af392e67 openjdk/hotspot/src/share/vm/code/nmethod.cpp +--- openjdk/hotspot/src/share/vm/code/nmethod.cpp Thu Jul 30 10:00:04 2009 +0100 ++++ openjdk/hotspot/src/share/vm/code/nmethod.cpp Fri Jul 31 15:39:43 2009 +0100 +@@ -1296,6 +1296,10 @@ + ec = next; + } + ++#ifdef SHARK ++ ((SharkCompiler *) compiler())->free_compiled_method(instructions_begin()); ++#endif // SHARK ++ + ((CodeBlob*)(this))->flush(); + + CodeCache::free(this); diff -r 9420faca6468 -r 84a63387e544 ports/hotspot/src/share/vm/includeDB_shark --- a/ports/hotspot/src/share/vm/includeDB_shark Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/includeDB_shark Thu Aug 13 08:01:04 2009 -0400 @@ -57,7 +57,7 @@ llvmValue.hpp llvmValue.hpp llvmHeaders.hpp llvmValue.hpp sharkType.hpp -methodOop.cpp sharkEntry.hpp +nmethod.cpp sharkCompiler.hpp shark_globals.cpp shark_globals.hpp diff -r 9420faca6468 -r 84a63387e544 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Thu Aug 13 08:01:04 2009 -0400 @@ -146,6 +146,7 @@ void SharkCompiler::compile_method(ciEnv if (!fnmatch(SharkPrintBitcodeOf, name, 0)) function->dump(); } + entry->set_function(function); // Compile to native code #ifndef PRODUCT @@ -206,6 +207,13 @@ void SharkCompiler::compile_method(ciEnv } } +void SharkCompiler::free_compiled_method(address code) +{ + Function *function = ((SharkEntry *) code)->function(); + execution_engine()->freeMachineCodeForFunction(function); + function->eraseFromParent(); +} + const char* SharkCompiler::methodname(const ciMethod* target) { const char *klassname = target->holder()->name()->as_utf8(); diff -r 9420faca6468 -r 84a63387e544 ports/hotspot/src/share/vm/shark/sharkCompiler.hpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Thu Aug 13 08:01:04 2009 -0400 @@ -45,6 +45,9 @@ class SharkCompiler : public AbstractCom // Compilation entry point for methods void compile_method(ciEnv* env, ciMethod* target, int entry_bci); + // Free compiled methods + void free_compiled_method(address code); + // LLVM interface private: llvm::Module* _module; diff -r 9420faca6468 -r 84a63387e544 ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Thu Aug 13 08:01:04 2009 -0400 @@ -24,10 +24,9 @@ */ class SharkEntry : public ZeroEntry { - friend class SharkMemoryManager; - private: - address _code_limit; + address _code_limit; + llvm::Function* _function; public: address code_start() const @@ -38,9 +37,18 @@ class SharkEntry : public ZeroEntry { { return _code_limit; } - protected: + llvm::Function* function() const + { + return _function; + } + + public: void set_code_limit(address code_limit) { _code_limit = code_limit; } + void set_function(llvm::Function* function) + { + _function = function; + } }; From gbenson at redhat.com Thu Aug 13 05:11:04 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 13 Aug 2009 13:11:04 +0100 Subject: Make Shark free compiled methods Message-ID: <20090813121104.GC3770@redhat.com> Hi all, This commit makes Shark free the bitcode and native code for compiled methods when they are removed from the VM. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 9420faca6468 ChangeLog --- a/ChangeLog Fri Aug 07 11:58:27 2009 +0200 +++ b/ChangeLog Thu Aug 13 08:00:49 2009 -0400 @@ -1,3 +1,22 @@ +2009-08-13 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::_function): New field. + (SharkEntry::function): New method. + (SharkEntry::set_function): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp + (SharkCompiler::free_compiled_method): New method. + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::free_compiled_method): New method. + (SharkCompiler::compile_method): Store a pointer to + the LLVM function in the method's SharkEntry. + + * patches/hotspot/default/icedtea-shark.patch + (nmethod::flush): Add code to free Shark methods. + + * ports/hotspot/src/share/vm/includeDB_shark: Updated. + 2009-08-07 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options diff -r 9420faca6468 patches/hotspot/default/icedtea-shark.patch --- a/patches/hotspot/default/icedtea-shark.patch Fri Aug 07 11:58:27 2009 +0200 +++ b/patches/hotspot/default/icedtea-shark.patch Thu Aug 13 08:00:49 2009 -0400 @@ -374,3 +374,17 @@ address native_entry(); address interpreter_entry(); +diff -r 0d80af392e67 openjdk/hotspot/src/share/vm/code/nmethod.cpp +--- openjdk/hotspot/src/share/vm/code/nmethod.cpp Thu Jul 30 10:00:04 2009 +0100 ++++ openjdk/hotspot/src/share/vm/code/nmethod.cpp Fri Jul 31 15:39:43 2009 +0100 +@@ -1296,6 +1296,10 @@ + ec = next; + } + ++#ifdef SHARK ++ ((SharkCompiler *) compiler())->free_compiled_method(instructions_begin()); ++#endif // SHARK ++ + ((CodeBlob*)(this))->flush(); + + CodeCache::free(this); diff -r 9420faca6468 ports/hotspot/src/share/vm/includeDB_shark --- a/ports/hotspot/src/share/vm/includeDB_shark Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/includeDB_shark Thu Aug 13 08:00:49 2009 -0400 @@ -57,7 +57,7 @@ llvmValue.hpp llvmHeaders.hpp llvmValue.hpp sharkType.hpp -methodOop.cpp sharkEntry.hpp +nmethod.cpp sharkCompiler.hpp shark_globals.cpp shark_globals.hpp diff -r 9420faca6468 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Thu Aug 13 08:00:49 2009 -0400 @@ -146,6 +146,7 @@ if (!fnmatch(SharkPrintBitcodeOf, name, 0)) function->dump(); } + entry->set_function(function); // Compile to native code #ifndef PRODUCT @@ -206,6 +207,13 @@ } } +void SharkCompiler::free_compiled_method(address code) +{ + Function *function = ((SharkEntry *) code)->function(); + execution_engine()->freeMachineCodeForFunction(function); + function->eraseFromParent(); +} + const char* SharkCompiler::methodname(const ciMethod* target) { const char *klassname = target->holder()->name()->as_utf8(); diff -r 9420faca6468 ports/hotspot/src/share/vm/shark/sharkCompiler.hpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Thu Aug 13 08:00:49 2009 -0400 @@ -45,6 +45,9 @@ // Compilation entry point for methods void compile_method(ciEnv* env, ciMethod* target, int entry_bci); + // Free compiled methods + void free_compiled_method(address code); + // LLVM interface private: llvm::Module* _module; diff -r 9420faca6468 ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Aug 07 11:58:27 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Thu Aug 13 08:00:49 2009 -0400 @@ -24,10 +24,9 @@ */ class SharkEntry : public ZeroEntry { - friend class SharkMemoryManager; - private: - address _code_limit; + address _code_limit; + llvm::Function* _function; public: address code_start() const @@ -38,9 +37,18 @@ { return _code_limit; } - protected: + llvm::Function* function() const + { + return _function; + } + + public: void set_code_limit(address code_limit) { _code_limit = code_limit; } + void set_function(llvm::Function* function) + { + _function = function; + } }; From gbenson at redhat.com Thu Aug 13 05:16:46 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 13 Aug 2009 13:16:46 +0100 Subject: ARM interpreter In-Reply-To: <96016C56224DF441A7F553FDC19DA976B0F320@ZIPPY.Emea.Arm.com> References: <4A83E17F.8060904@redhat.com> <20090813103429.GB3770@redhat.com> <96016C56224DF441A7F553FDC19DA976B0F320@ZIPPY.Emea.Arm.com> Message-ID: <20090813121646.GD3770@redhat.com> Edward Nevill wrote: > OK. I will make an initial checkin, based on the diffs I posted > on camswl.com > (I will post the patch here before making the actual checkin). Cool. > I will make the changes raised by Gary, re comments and ifdefs Thank you. > I will leave the hardcoded constants. > > Gary: If it is OK I will leave the defined(PRODUCT) for the moment, > until the offsets are generated properly. Then the defined(PRODUCT) > can be removed. Sure. Cheers, Gary -- http://gbenson.net/ From doko at ubuntu.com Thu Aug 13 03:56:06 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 13 Aug 2009 12:56:06 +0200 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) In-Reply-To: <1250161443.2798.194.camel@springer.wildebeest.org> References: <1250161443.2798.194.camel@springer.wildebeest.org> Message-ID: <4A83F146.4000700@ubuntu.com> On 13.08.2009 13:04, Mark Wielaard wrote: > Hi, > > I did some random test builds of IcedTea6 overnight. > > First the good news, --enable-xrender, --enable-systemtap, > --enable-plugin, --enable-pulse-java, --with-parallel-jobs=8 and > --enable-additional-vms=cacao all seem to do their job fine. should --enable-xrender be enabled by default now? > But there seem to be some build issues with some other "non-standard" > configure options (this is on x86_64 Fedora 11). > > When giving --with-additional-vms=cacao,zero (or just > --with-additional-vms=zero) all goes well for the standard and cacao > builds: > > $ openjdk/build/linux-amd64/j2sdk-image/bin/java -version > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.5-r9420faca6468) (build 1.6.0_0-b16) > OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) > > $ openjdk/build/linux-amd64/j2sdk-image/bin/java -cacao -version > java version "1.6.0_0" > IcedTea Runtime Environment (IcedTea6 1.5-r9420faca6468) (build 1.6.0_0-b16) > CACAO (build 0.99.4, compiled mode) > > But then the zero part goes wrong while (re)patching the tree: > > Checking patches/icedtea-version.patch > The text leading up to this was: > -------------------------- > |--- openjdkold/jdk/make/common/shared/Defs.gmk 2008-08-28 04:10:47.000000000 -0400 > |+++ openjdk/jdk/make/common/shared/Defs.gmk 2009-02-08 08:30:21.000000000 -0500 > -------------------------- > No file to patch. Skipping patch. > 1 out of 1 hunk ignored > The text leading up to this was: > -------------------------- > |--- openjdk/jdk/src/share/classes/sun/misc/Version-template.java.~1~ 2008-11-25 01:04:53.000000000 -0800 > |+++ openjdk/jdk/src/share/classes/sun/misc/Version-template.java 2009-02-20 09:03:25.000000000 -0800 > -------------------------- > No file to patch. Skipping patch. > 2 out of 2 hunks ignored > The text leading up to this was: > -------------------------- > |--- 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 > -------------------------- > No file to patch. Skipping patch. > 1 out of 1 hunk ignored > ERROR patch patches/icedtea-version.patch FAILED! > WARNING make clean-patch before retrying a fix > make[1]: *** [stamps/patch.stamp] Error 2 > make[1]: Leaving directory `/usr/local/build/icedtea6-obj/zerovm' > make: *** [stamps/add-zero.stamp] Error 2 I don't see this with a recent build. Matthias From mark at klomp.org Thu Aug 13 06:03:44 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 13 Aug 2009 15:03:44 +0200 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) In-Reply-To: <4A83F146.4000700@ubuntu.com> References: <1250161443.2798.194.camel@springer.wildebeest.org> <4A83F146.4000700@ubuntu.com> Message-ID: <1250168624.2798.207.camel@springer.wildebeest.org> Hi Matthias, On Thu, 2009-08-13 at 12:56 +0200, Matthias Klose wrote: > should --enable-xrender be enabled by default now? O, yes, you are right, so that is just testing the default. > > ERROR patch patches/icedtea-version.patch FAILED! > > WARNING make clean-patch before retrying a fix > > make[1]: *** [stamps/patch.stamp] Error 2 > > make[1]: Leaving directory `/usr/local/build/icedtea6-obj/zerovm' > > make: *** [stamps/add-zero.stamp] Error 2 > > I don't see this with a recent build. How did you configure? Thanks, Mark From doko at ubuntu.com Thu Aug 13 04:34:52 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 13 Aug 2009 13:34:52 +0200 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) In-Reply-To: <1250168624.2798.207.camel@springer.wildebeest.org> References: <1250161443.2798.194.camel@springer.wildebeest.org> <4A83F146.4000700@ubuntu.com> <1250168624.2798.207.camel@springer.wildebeest.org> Message-ID: <4A83FA5C.501@ubuntu.com> On 13.08.2009 15:03, Mark Wielaard wrote: > Hi Matthias, > > On Thu, 2009-08-13 at 12:56 +0200, Matthias Klose wrote: >> should --enable-xrender be enabled by default now? > > O, yes, you are right, so that is just testing the default. > >>> ERROR patch patches/icedtea-version.patch FAILED! >>> WARNING make clean-patch before retrying a fix >>> make[1]: *** [stamps/patch.stamp] Error 2 >>> make[1]: Leaving directory `/usr/local/build/icedtea6-obj/zerovm' >>> make: *** [stamps/add-zero.stamp] Error 2 >> >> I don't see this with a recent build. > > How did you configure? ../configure --with-openjdk=/usr/lib/jvm/java-6-openjdk --with-pkgversion="6b16~pre5-0ubuntu2" --with-xalan2-jar=/usr/share/java/xalan2.jar --with-xalan2-serializer-jar=/usr/share/java/serializer.jar --with-rhino=/usr/share/java/js.jar --with-hotspot-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/hotspot-20090803.tar.gz --with-openjdk-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/openjdk-6-src-b16-24_apr_2009-dfsg.tar.gz --with-cacao-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/cacao-0.99.4.tar.bz2 --with-hotspot-build --with-parallel-jobs=4 --enable-liveconnect --enable-pulse-java --with-additional-vms=cacao,shark --host=i686-linux-gnulp --build=i686-linux-gnulp From mark at klomp.org Thu Aug 13 06:39:06 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 13 Aug 2009 15:39:06 +0200 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) In-Reply-To: <4A83FA5C.501@ubuntu.com> References: <1250161443.2798.194.camel@springer.wildebeest.org> <4A83F146.4000700@ubuntu.com> <1250168624.2798.207.camel@springer.wildebeest.org> <4A83FA5C.501@ubuntu.com> Message-ID: <1250170746.2798.210.camel@springer.wildebeest.org> On Thu, 2009-08-13 at 13:34 +0200, Matthias Klose wrote: > On 13.08.2009 15:03, Mark Wielaard wrote: > >>> ERROR patch patches/icedtea-version.patch FAILED! > >>> WARNING make clean-patch before retrying a fix > >>> make[1]: *** [stamps/patch.stamp] Error 2 > >>> make[1]: Leaving directory `/usr/local/build/icedtea6-obj/zerovm' > >>> make: *** [stamps/add-zero.stamp] Error 2 > >> > >> I don't see this with a recent build. > > > > How did you configure? > > ../configure --with-openjdk=/usr/lib/jvm/java-6-openjdk > --with-pkgversion="6b16~pre5-0ubuntu2" > --with-xalan2-jar=/usr/share/java/xalan2.jar > --with-xalan2-serializer-jar=/usr/share/java/serializer.jar > --with-rhino=/usr/share/java/js.jar > --with-hotspot-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/hotspot-20090803.tar.gz > --with-openjdk-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/openjdk-6-src-b16-24_apr_2009-dfsg.tar.gz > --with-cacao-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/cacao-0.99.4.tar.bz2 > --with-hotspot-build --with-parallel-jobs=4 --enable-liveconnect > --enable-pulse-java --with-additional-vms=cacao,shark --host=i686-linux-gnulp > --build=i686-linux-gnulp Thanks. What happens if you don't add the --with-*-src-zip options? From aph at redhat.com Thu Aug 13 07:03:57 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 15:03:57 +0100 Subject: ARM interpreter In-Reply-To: <96016C56224DF441A7F553FDC19DA976B0F320@ZIPPY.Emea.Arm.com> References: <001601ca1b3a$d020bce0$706236a0$@com><20090812120528.GH3241@redhat.com><000001ca1bf2$7b8ec470$72ac4d50$@com> <4A83D975.7050602@redhat.com><20090813094211.GA3770@redhat.com> <4A83E17F.8060904@redhat.com> <20090813103429.GB3770@redhat.com> <96016C56224DF441A7F553FDC19DA976B0F320@ZIPPY.Emea.Arm.com> Message-ID: <4A841D4D.9060602@redhat.com> Edward Nevill wrote: > OK. I will make an initial checkin, based on the diffs I posted on > camswl.com > (I will post the patch here before making the actual checkin). > > I will make the changes raised by Gary, re comments and ifdefs > > I will leave the hardcoded constants. > > Gary: If it is OK I will leave the defined(PRODUCT) for the moment, > until the offsets are generated properly. Then the defined(PRODUCT) can > be removed. Sounds perfect. > I expect to have the patches ready to submit Tues/Weds next week. > > Please be patient if this takes slightly longer than you would like. It > is the first time I have submitted patches to IcedTea and I want to make > sure I get it right. Until yesterday I had never build IcedTea on its > own (I had only built it as part of the OpenJDK Debian package), so > there is some learning curve. OK. I'll be glad to help in whatever way I can. Andrew. From doko at ubuntu.com Thu Aug 13 05:19:44 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 13 Aug 2009 14:19:44 +0200 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) In-Reply-To: <1250170746.2798.210.camel@springer.wildebeest.org> References: <1250161443.2798.194.camel@springer.wildebeest.org> <4A83F146.4000700@ubuntu.com> <1250168624.2798.207.camel@springer.wildebeest.org> <4A83FA5C.501@ubuntu.com> <1250170746.2798.210.camel@springer.wildebeest.org> Message-ID: <4A8404E0.6040003@ubuntu.com> On 13.08.2009 15:39, Mark Wielaard wrote: > On Thu, 2009-08-13 at 13:34 +0200, Matthias Klose wrote: >> On 13.08.2009 15:03, Mark Wielaard wrote: >>>>> ERROR patch patches/icedtea-version.patch FAILED! >>>>> WARNING make clean-patch before retrying a fix >>>>> make[1]: *** [stamps/patch.stamp] Error 2 >>>>> make[1]: Leaving directory `/usr/local/build/icedtea6-obj/zerovm' >>>>> make: *** [stamps/add-zero.stamp] Error 2 >>>> >>>> I don't see this with a recent build. >>> >>> How did you configure? >> >> ../configure --with-openjdk=/usr/lib/jvm/java-6-openjdk >> --with-pkgversion="6b16~pre5-0ubuntu2" >> --with-xalan2-jar=/usr/share/java/xalan2.jar >> --with-xalan2-serializer-jar=/usr/share/java/serializer.jar >> --with-rhino=/usr/share/java/js.jar >> --with-hotspot-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/hotspot-20090803.tar.gz >> --with-openjdk-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/openjdk-6-src-b16-24_apr_2009-dfsg.tar.gz >> --with-cacao-src-zip=/scratch/packages/openjdk/u/openjdk-6-6b16~pre5/cacao-0.99.4.tar.bz2 >> --with-hotspot-build --with-parallel-jobs=4 --enable-liveconnect >> --enable-pulse-java --with-additional-vms=cacao,shark --host=i686-linux-gnulp >> --build=i686-linux-gnulp > > Thanks. What happens if you don't add the --with-*-src-zip options? the build will fail, because the buildd doesn't have network access. From aph at redhat.com Thu Aug 13 07:26:33 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 15:26:33 +0100 Subject: Version number on trunk Message-ID: <4A842299.70509@redhat.com> I've bumped the branch to 1.6, and now want to bump the trunk. I think the version on the trunk should be something like "1.7pre", since it's after 1.6 branched but before 1.7 branched. gcc trunk immediately becomes 4.5.0 (experimental) once the 4.4 branch has been made. I think this is a sensible thing to imitate. Andrew. From langel at redhat.com Thu Aug 13 07:29:39 2009 From: langel at redhat.com (Lillian Angel) Date: Thu, 13 Aug 2009 10:29:39 -0400 Subject: Version number on trunk In-Reply-To: <4A842299.70509@redhat.com> References: <4A842299.70509@redhat.com> Message-ID: <4A842353.3090502@redhat.com> Andrew Haley wrote: > I've bumped the branch to 1.6, and now want to bump the trunk. I think > the version on the trunk should be something like "1.7pre", since it's > after 1.6 branched but before 1.7 branched. > I agree with this. Question: When 1.7 is branched, is the repo tagged with 1.7 or 1.8pre? Or is it tagged with 1.7 right before the new 1.7 branch is created? > gcc trunk immediately becomes 4.5.0 (experimental) once the 4.4 branch > has been made. I think this is a sensible thing to imitate. > Cheers, Lillian From aph at redhat.com Thu Aug 13 07:37:14 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 15:37:14 +0100 Subject: Version number on trunk In-Reply-To: <4A842353.3090502@redhat.com> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> Message-ID: <4A84251A.2030501@redhat.com> Lillian Angel wrote: > Andrew Haley wrote: >> I've bumped the branch to 1.6, and now want to bump the trunk. I think >> the version on the trunk should be something like "1.7pre", since it's >> after 1.6 branched but before 1.7 branched. > > I agree with this. > > Question: When 1.7 is branched, is the repo tagged with 1.7 or 1.8pre? > Or is it tagged with 1.7 right before the new 1.7 branch is created? The trunk should be version 1.8pre immediately after 1.7 branches. Andrew. From langel at redhat.com Thu Aug 13 07:41:33 2009 From: langel at redhat.com (Lillian Angel) Date: Thu, 13 Aug 2009 10:41:33 -0400 Subject: Version number on trunk In-Reply-To: <4A84251A.2030501@redhat.com> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> <4A84251A.2030501@redhat.com> Message-ID: <4A84261D.9060906@redhat.com> Andrew Haley wrote: > Lillian Angel wrote: > >> Andrew Haley wrote: >> >>> I've bumped the branch to 1.6, and now want to bump the trunk. I think >>> the version on the trunk should be something like "1.7pre", since it's >>> after 1.6 branched but before 1.7 branched. >>> >> I agree with this. >> >> Question: When 1.7 is branched, is the repo tagged with 1.7 or 1.8pre? >> Or is it tagged with 1.7 right before the new 1.7 branch is created? >> > > The trunk should be version 1.8pre immediately after 1.7 branches. ok, so the repo will always be tagged with IcedTea6-X.Ypre Thanks for clarifying, Lillian From Edward.Nevill at arm.com Thu Aug 13 03:49:52 2009 From: Edward.Nevill at arm.com (Edward Nevill) Date: Thu, 13 Aug 2009 11:49:52 +0100 Subject: ARM interpreter In-Reply-To: <20090813103429.GB3770@redhat.com> References: <001601ca1b3a$d020bce0$706236a0$@com><20090812120528.GH3241@redhat.com><000001ca1bf2$7b8ec470$72ac4d50$@com> <4A83D975.7050602@redhat.com><20090813094211.GA3770@redhat.com> <4A83E17F.8060904@redhat.com> <20090813103429.GB3770@redhat.com> Message-ID: <96016C56224DF441A7F553FDC19DA976B0F320@ZIPPY.Emea.Arm.com> OK. I will make an initial checkin, based on the diffs I posted on camswl.com (I will post the patch here before making the actual checkin). I will make the changes raised by Gary, re comments and ifdefs I will leave the hardcoded constants. Gary: If it is OK I will leave the defined(PRODUCT) for the moment, until the offsets are generated properly. Then the defined(PRODUCT) can be removed. I expect to have the patches ready to submit Tues/Weds next week. Please be patient if this takes slightly longer than you would like. It is the first time I have submitted patches to IcedTea and I want to make sure I get it right. Until yesterday I had never build IcedTea on its own (I had only built it as part of the OpenJDK Debian package), so there is some learning curve. Regards, Ed. -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. From aph at redhat.com Thu Aug 13 07:57:22 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 15:57:22 +0100 Subject: Version number on trunk In-Reply-To: <4A84261D.9060906@redhat.com> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> <4A84251A.2030501@redhat.com> <4A84261D.9060906@redhat.com> Message-ID: <4A8429D2.7080302@redhat.com> Lillian Angel wrote: > Andrew Haley wrote: >> Lillian Angel wrote: >> >>> Andrew Haley wrote: >>> >>>> I've bumped the branch to 1.6, and now want to bump the trunk. I think >>>> the version on the trunk should be something like "1.7pre", since it's >>>> after 1.6 branched but before 1.7 branched. >>>> >>> I agree with this. >>> >>> Question: When 1.7 is branched, is the repo tagged with 1.7 or 1.8pre? >>> Or is it tagged with 1.7 right before the new 1.7 branch is created? >>> >> >> The trunk should be version 1.8pre immediately after 1.7 branches. > > > ok, so the repo will always be tagged with IcedTea6-X.Ypre The trunk repo, yes. Unfortunately, I can't tag the 1.6 branchpoint. I've done so in my local repo, but when I push the change, $ hg push pushing to ssh://icedtea.classpath.org/hg/icedtea6 searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 1 changes to 1 files remote: error: incoming.notify hook raised an exception: cannot concatenate 'str' and 'NoneType' objects I guess this is a bug on the server side. Andrew. From langel at redhat.com Thu Aug 13 07:59:04 2009 From: langel at redhat.com (Lillian Angel) Date: Thu, 13 Aug 2009 10:59:04 -0400 Subject: Version number on trunk In-Reply-To: <4A8429D2.7080302@redhat.com> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> <4A84251A.2030501@redhat.com> <4A84261D.9060906@redhat.com> <4A8429D2.7080302@redhat.com> Message-ID: <4A842A38.3080804@redhat.com> Andrew Haley wrote: > Lillian Angel wrote: > >> Andrew Haley wrote: >> >>> Lillian Angel wrote: >>> >>> >>>> Andrew Haley wrote: >>>> >>>> >>>>> I've bumped the branch to 1.6, and now want to bump the trunk. I think >>>>> the version on the trunk should be something like "1.7pre", since it's >>>>> after 1.6 branched but before 1.7 branched. >>>>> >>>>> >>>> I agree with this. >>>> >>>> Question: When 1.7 is branched, is the repo tagged with 1.7 or 1.8pre? >>>> Or is it tagged with 1.7 right before the new 1.7 branch is created? >>>> >>>> >>> The trunk should be version 1.8pre immediately after 1.7 branches. >>> >> ok, so the repo will always be tagged with IcedTea6-X.Ypre >> > > The trunk repo, yes. > > Unfortunately, I can't tag the 1.6 branchpoint. I've done so in my local > repo, but when I push the change, > > $ hg push > pushing to ssh://icedtea.classpath.org/hg/icedtea6 > searching for changes > remote: adding changesets > remote: adding manifests > remote: adding file changes > remote: added 1 changesets with 1 changes to 1 files > remote: error: incoming.notify hook raised an exception: cannot concatenate 'str' and 'NoneType' objects > > I guess this is a bug on the server side. As far as I know, the changes still go through with this error. http://icedtea.classpath.org/hg/icedtea6/ Lillian From aph at redhat.com Thu Aug 13 07:59:42 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 15:59:42 +0100 Subject: Version number on trunk In-Reply-To: <4A842A38.3080804@redhat.com> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> <4A84251A.2030501@redhat.com> <4A84261D.9060906@redhat.com> <4A8429D2.7080302@redhat.com> <4A842A38.3080804@redhat.com> Message-ID: <4A842A5E.6020707@redhat.com> Lillian Angel wrote: >> I guess this is a bug on the server side. > > > As far as I know, the changes still go through with this error. > http://icedtea.classpath.org/hg/icedtea6/ Ah, I see. Thanks! Andrew. From mark at klomp.org Thu Aug 13 08:49:33 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 13 Aug 2009 17:49:33 +0200 Subject: Version number on trunk In-Reply-To: <4A842A5E.6020707@redhat.com> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> <4A84251A.2030501@redhat.com> <4A84261D.9060906@redhat.com> <4A8429D2.7080302@redhat.com> <4A842A38.3080804@redhat.com> <4A842A5E.6020707@redhat.com> Message-ID: <1250178573.2798.230.camel@springer.wildebeest.org> On Thu, 2009-08-13 at 15:59 +0100, Andrew Haley wrote: > Lillian Angel wrote: > > >> I guess this is a bug on the server side. > > > > As far as I know, the changes still go through with this error. > > http://icedtea.classpath.org/hg/icedtea6/ > > Ah, I see. Thanks! Yes they go through. But no notification is being send that it did. And you are left with that lame error message :{ The repo on the server has the notify extension installed, so that an email is being send whenever a change to the repo happens. http://mercurial.selenic.com/wiki/NotifyExtension Something tries to sanitize the incoming commit to produce those emails. Most likely you don't have a valid username set in your hgrc. The script expects each commit to have at least an author with a valid email address (and possible full name). Please setup your ~/.hgrc (or icedtea repo .hg/hgrc) to contain your full name and email address, something like: [ui] username = Mark Wielaard That makes the email notifications work nicely. And makes sure each commit from you has a fully identified author associated with it. More background: http://hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html#sec:tour-basic:username Cheers, Mark From aph at redhat.com Thu Aug 13 08:56:43 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 16:56:43 +0100 Subject: Version number on trunk In-Reply-To: <1250178573.2798.230.camel@springer.wildebeest.org> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> <4A84251A.2030501@redhat.com> <4A84261D.9060906@redhat.com> <4A8429D2.7080302@redhat.com> <4A842A38.3080804@redhat.com> <4A842A5E.6020707@redhat.com> <1250178573.2798.230.camel@springer.wildebeest.org> Message-ID: <4A8437BB.10909@redhat.com> Mark Wielaard wrote: > On Thu, 2009-08-13 at 15:59 +0100, Andrew Haley wrote: >> Lillian Angel wrote: >> >>>> I guess this is a bug on the server side. >>> As far as I know, the changes still go through with this error. >>> http://icedtea.classpath.org/hg/icedtea6/ >> Ah, I see. Thanks! > > Yes they go through. But no notification is being send that it did. > And you are left with that lame error message :{ > > The repo on the server has the notify extension installed, so that an > email is being send whenever a change to the repo happens. > http://mercurial.selenic.com/wiki/NotifyExtension > Something tries to sanitize the incoming commit to produce those emails. > Most likely you don't have a valid username set in your hgrc. > The script expects each commit to have at least an author with a valid > email address (and possible full name). > > Please setup your ~/.hgrc (or icedtea repo .hg/hgrc) to contain your > full name and email address, something like: > > [ui] > username = Mark Wielaard In other words, the exact opposite of what Sun require. I don't care either way, I just wish you'd agree. Andrew. From dbhole at redhat.com Thu Aug 13 09:01:49 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 13 Aug 2009 12:01:49 -0400 Subject: Proposed IcedTea 6 release In-Reply-To: <4A82F1F1.8060509@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A82D92D.3050809@redhat.com> <4A82F1F1.8060509@redhat.com> Message-ID: <20090813160149.GA23290@redhat.com> * Andrew Haley [2009-08-12 12:47]: > Andrew Haley wrote: > > > So, I think this is a good time to cut the branch. Is that OK with > > everyone? > > The release branch is open for checkins: > http://icedtea.classpath.org/hg/release/icedtea6-1.6/ > > Please post all patches for the release branch to this list. > There are a couple of things for plugin/webstart I would like to see go in for 1.6. I will try and get them done asap and will post the patches here. Deepak > Andrew. From aph at redhat.com Thu Aug 13 09:02:30 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 13 Aug 2009 17:02:30 +0100 Subject: Proposed IcedTea 6 release In-Reply-To: <20090813160149.GA23290@redhat.com> References: <4A7B413C.8010109@redhat.com> <4A82D92D.3050809@redhat.com> <4A82F1F1.8060509@redhat.com> <20090813160149.GA23290@redhat.com> Message-ID: <4A843916.3090107@redhat.com> Deepak Bhole wrote: > * Andrew Haley [2009-08-12 12:47]: >> Andrew Haley wrote: >> >>> So, I think this is a good time to cut the branch. Is that OK with >>> everyone? >> The release branch is open for checkins: >> http://icedtea.classpath.org/hg/release/icedtea6-1.6/ >> >> Please post all patches for the release branch to this list. >> > > There are a couple of things for plugin/webstart I would like to see go in for > 1.6. I will try and get them done asap and will post the patches here. Don't panic. There are a few jtreg failures, and there's plenty of testing to do before it'll be ready to release. Andrew. From mark at klomp.org Thu Aug 13 09:05:20 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 13 Aug 2009 18:05:20 +0200 Subject: Version number on trunk In-Reply-To: <4A8437BB.10909@redhat.com> References: <4A842299.70509@redhat.com> <4A842353.3090502@redhat.com> <4A84251A.2030501@redhat.com> <4A84261D.9060906@redhat.com> <4A8429D2.7080302@redhat.com> <4A842A38.3080804@redhat.com> <4A842A5E.6020707@redhat.com> <1250178573.2798.230.camel@springer.wildebeest.org> <4A8437BB.10909@redhat.com> Message-ID: <1250179520.2798.234.camel@springer.wildebeest.org> On Thu, 2009-08-13 at 16:56 +0100, Andrew Haley wrote: > The repo on the server has the notify extension installed, so that an > > email is being send whenever a change to the repo happens. > > http://mercurial.selenic.com/wiki/NotifyExtension > > Something tries to sanitize the incoming commit to produce those emails. > > Most likely you don't have a valid username set in your hgrc. > > The script expects each commit to have at least an author with a valid > > email address (and possible full name). > > > > Please setup your ~/.hgrc (or icedtea repo .hg/hgrc) to contain your > > full name and email address, something like: > > > > [ui] > > username = Mark Wielaard > > In other words, the exact opposite of what Sun require. > > I don't care either way, I just wish you'd agree. Agreed :) It is a little strange that they require something opposite to the standard mercurial convention. Currently we cannot adopt Sun's convention since we don't have access to their server script nor user database (they were never published). So there is no way to convert the names they use to standard authors that make sense to the rest of the world. It would be nice if Sun would accept the standard author setup for non-Sun engineers. Cheers, Mark From mark at klomp.org Thu Aug 13 09:06:52 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 13 Aug 2009 18:06:52 +0200 Subject: Some 1.6 build issues (--with-additional-vms=zero, --enable-visual-vm, --enable-npplugin) In-Reply-To: <4A8404E0.6040003@ubuntu.com> References: <1250161443.2798.194.camel@springer.wildebeest.org> <4A83F146.4000700@ubuntu.com> <1250168624.2798.207.camel@springer.wildebeest.org> <4A83FA5C.501@ubuntu.com> <1250170746.2798.210.camel@springer.wildebeest.org> <4A8404E0.6040003@ubuntu.com> Message-ID: <1250179613.2798.236.camel@springer.wildebeest.org> On Thu, 2009-08-13 at 14:19 +0200, Matthias Klose wrote: > > Thanks. What happens if you don't add the --with-*-src-zip options? > > the build will fail, because the buildd doesn't have network access. OK. Then I assume --with-additional-vms=zero is broken unless you add extra --with-*-src configure options. Need to look into why. Cheers, Mark From dbhole at redhat.com Thu Aug 13 11:25:20 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 13 Aug 2009 14:25:20 -0400 Subject: Patch to allow sharing of classloader between extentions Message-ID: <20090813182519.GB23290@redhat.com> JNLP files allow loading of child jnlps via the extension element. Currently, the classloader used by these child jnlps is different than the one used by the parent. When a resource request comes in, the loader and its children are searched. In theory this should work, but many applets don't like it. For example: http://javafx.com/samples/SwirlingSquares/webstart/SwirlingSquares.jnlp Attached patch makes it so that the same loader is shared. This is not an ideal fix, but more of a workaround to let other applets work. It does not break any existing loading mechanism AFAIK, and allows a set of applets that didn't work before, to work. Thoughts? Cheers, Deepak -------------- next part -------------- A non-text attachment was scrubbed... Name: extension-loader.patch Type: text/x-patch Size: 7135 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090813/145797ab/extension-loader.patch From Joe.Darcy at Sun.COM Thu Aug 13 17:36:36 2009 From: Joe.Darcy at Sun.COM (Joe Darcy) Date: Thu, 13 Aug 2009 17:36:36 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A73E58F.9020502@sun.com> <4A751861.2090901@sun.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> <4A79F131.7040105@sun.com> <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> Message-ID: <4A84B194.1070108@sun.com> Andrew John Hughes wrote: > 2009/8/5 Tim Bell : > >> Andrew John Hughes wrote: >> >> >>> Thanks Tim, that seems to have fixed the permissions issue. >>> >> Good. >> >> >>> There now seems to be an issue with jcheck, as the merge causes some >>> bugids to be repeated: >>> >> Hmmm - how did these changesets come in through two different paths? >> >> >>> pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >>> searching for changes >>> remote: adding changesets >>> remote: adding manifests >>> remote: adding file changes >>> remote: added 555 changesets with 4771 changes to 1453 files >>> remote: >>> remote: > Changeset: 100:d821d920b465 >>> remote: > Author: kvn >>> remote: > Date: 2008-03-11 11:04 >>> remote: > >>> remote: > 6623167: C2 crashed in StoreCMNode::Value >>> remote: > Summary: C2 crashed in StoreCMNode::Value because >>> n->in(MemNode::OopStore) is 0. >>> remote: > Reviewed-by: rasbold, never >>> remote: >>> remote: Bugid 6623167 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 104:2c106685d6d0 >>> remote: > Author: dcubed >>> remote: > Date: 2008-03-12 18:06 >>> remote: > >>> remote: > 6497639: 4/3 Profiling Swing application caused JVM crash >>> remote: > Summary: Make RedefineClasses() interoperate better with >>> class sharing. >>> remote: > Reviewed-by: sspitsyn, jmasa >>> remote: >>> remote: Bugid 6497639 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 105:d8b3ef7ee3e5 >>> remote: > Author: dcubed >>> remote: > Date: 2008-03-12 18:07 >>> remote: > >>> remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or >>> assert() failure >>> remote: > Summary: Add should_not_be_cached() to markOop and methodOop >>> and query that status inOopMapCache::lookup() >>> remote: > Reviewed-by: coleenp, sspitsyn, jmasa >>> remote: >>> remote: Bugid 6599425 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 240:65fe2bd88839 >>> remote: > Author: never >>> remote: > Date: 2008-06-05 21:44 >>> remote: > >>> remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse >>> with 1.6.0_05-ea >>> remote: > Reviewed-by: kvn, jrose, rasbold >>> remote: >>> remote: Bugid 6614100 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 286:3e82d72933d0 >>> remote: > Author: xlu >>> remote: > Date: 2008-06-26 14:15 >>> remote: > >>> remote: > 6718830: Hotspot fails to build with gcc 4.3 >>> remote: > Summary: Fixed linux make file and couple adlc code to meet >>> the changes of gcc 4.3 >>> remote: > Reviewed-by: kamg, igor >>> remote: >>> remote: Bugid 6718830 already used in this repository, in revision 32 >>> remote: >>> remote: > Changeset: 289:551f4309f476 >>> remote: > Author: ohair >>> remote: > Date: 2008-07-03 10:46 >>> remote: > >>> remote: > 6695777: Queens.class should be built from source, not put >>> in source repo >>> remote: > Reviewed-by: kvn >>> remote: >>> remote: Bugid 6695777 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 314:54499b980c23 >>> remote: > Author: swamyv >>> remote: > Date: 2008-07-29 13:54 >>> remote: > >>> remote: > 6710791: Remove files or build from source:maf-1_0.jar, jlfg-1_0.jar >>> remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. >>> remote: > Reviewed-by: poonam, jjh >>> remote: >>> remote: Bugid 6710791 already used in this repository, in revision 20 >>> remote: >>> remote: > Changeset: 360:fa4d1d240383 >>> remote: > Author: never >>> remote: > Date: 2008-08-26 15:49 >>> remote: > >>> remote: > 6741642: bad enum definition in ciTypeFlow.hpp >>> remote: > Reviewed-by: rasbold, martin >>> remote: > Contributed-by: doko at ubuntu.com >>> remote: >>> remote: Bugid 6741642 already used in this repository, in revision 22 >>> remote: >>> remote: > Changeset: 589:748572b86af6 >>> remote: > Author: never >>> remote: > Date: 2009-04-07 14:46 >>> remote: > >>> remote: > 6636360: compiler/6595044/Main.java test fails with 64bit >>> java on solaris-sparcv9 with SIGSEGV >>> remote: > Reviewed-by: kvn, twisti >>> remote: >>> remote: Bugid 6636360 already used in this repository, in revision 29 >>> remote: >>> remote: abort: pretxnchangegroup.0.jcheck hook failed >>> remote: transaction abort! >>> remote: rollback completed >>> abort: unexpected response: empty string >>> >>> Is there a way of getting it to ignore these for this one push? I >>> don't know of a way to just pull out these nine changesets from the >>> 555 waiting to go... >>> >> I think they would need to be added to the jcheck whitelist for all time- >> but that is more of a question for Mark or Kelly. >> >> Tim >> >> > > The early revisions (20, 32) are from OpenJDK6 which was rebased to > allow HotSpot patches to be applied on top. So what happened here is > that, as the fixes were already applied to OpenJDK6, the new > changesets pulled in by the merge will be no-ops but still exist to > keep the change history accurate. > > I think we just need a way of disabling this check. OpenJDK6 already > has whitespace and comment checks turned to lax. See .jcheck: > http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/0282bf49b0f6. There > may already be an option for this bugid check too, but I have no idea > what the format of that file is. > Andrew, can you please try your push again? I chatted with Mark and the OpenJDK 6 HotSpot Mercurial repository should be configured to do lax checking on the bug ids. Thanks, -Joe From mvfranz at gmail.com Thu Aug 13 18:36:19 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 13 Aug 2009 21:36:19 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> Message-ID: Hi, Here is the output from my Fedora 10 build with the missing java.util.Scanner. /home/mfranz/linux/icedtea-1.11/bootstrap/jdk1.6.0/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -client -Xmx896m -Xms128m -XX:PermSize=32m -XX:MaxPermSize=160m -jar /home/mfranz/linux/icedtea-1.11/openjdk-ecj/build/linux-i586/btjars/charsetmapping.jar ../../tools/CharsetMapping /home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext euctw \ ../../tools/src/build/tools/charsetmapping/GenerateEUC_TW.java Exception in thread "main" java.lang.NoClassDefFoundError: java.util.Scanner at build.tools.charsetmapping.GenerateEUC_TW.getCopyright(GenerateEUC_TW.java:47) at build.tools.charsetmapping.GenerateEUC_TW.genEUC_TW(GenerateEUC_TW.java:43) at build.tools.charsetmapping.Main.main(Main.java:48) make[5]: *** [/home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext/IBM037.java] Error 1 make[5]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun/nio' make[4]: *** [all] Error 1 make[4]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun' make[3]: *** [all] Error 1 make[3]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make' make[2]: *** [jdk-build] Error 2 make[2]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' make[1]: *** [build_product_image] Error 2 make[1]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' make: *** [stamps/icedtea-ecj.stamp] Error 2 The output from configure for the Scanner check is here: checking if java.util.Scanner is missing... Exception in thread "main" java.lang.NoClassDefFoundError: java.util.Scanner at Test.main(Test.java:7) no checking if java.util.Scanner exhibits Classpath bug 40630... yes I wonder if the Classpath bug is over-riding the Scanner check. Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090813/6198705a/attachment.html From gbenson at redhat.com Fri Aug 14 01:17:18 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 14 Aug 2009 09:17:18 +0100 Subject: Patch to allow sharing of classloader between extentions In-Reply-To: <20090813182519.GB23290@redhat.com> References: <20090813182519.GB23290@redhat.com> Message-ID: <20090814081717.GA3331@redhat.com> Deepak Bhole wrote: > JNLP files allow loading of child jnlps via the extension element. > Currently, the classloader used by these child jnlps is different > than the one used by the parent. When a resource request comes in, > the loader and its children are searched. In theory this should > work, but many applets don't like it. For example: > > http://javafx.com/samples/SwirlingSquares/webstart/SwirlingSquares.jnlp > > Attached patch makes it so that the same loader is shared. This is > not an ideal fix, but more of a workaround to let other applets > work. It does not break any existing loading mechanism AFAIK, and > allows a set of applets that didn't work before, to work. > > Thoughts? Does it allow the classes of one applet to see the classes of another? Cheers, Gary -- http://gbenson.net/ From gbenson at redhat.com Fri Aug 14 03:17:03 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 14 Aug 2009 10:17:03 +0000 Subject: changeset in /hg/icedtea6: 2009-08-14 Gary Benson changeset 9f0b5de9a8eb in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9f0b5de9a8eb description: 2009-08-14 Gary Benson * ports/hotspot/src/share/vm/shark/sharkFunction.hpp (SharkFunction::CreateStoreLastJavaSP): Removed. (SharkFunction::set_last_Java_frame): Likewise. (SharkFunction::reset_last_Java_frame): Likewise. (SharkFunction::CreateGetVMResult): Likewise. (SharkFunction::pending_exception_address): Likewise. (SharkFunction::CreateGetPendingException): Likewise. * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp (SharkTopLevelBlock::pending_exception_address): New method. (SharkTopLevelBlock::get_pending_exception): Likewise. (SharkTopLevelBlock::clear_pending_exception): Likewise. (SharkTopLevelBlock::set_last_Java_frame): Likewise. (SharkTopLevelBlock::reset_last_Java_frame): Likewise. (SharkTopLevelBlock::get_vm_result): Likewise. (SharkTopLevelBlock::call_vm): Updated. * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp (SharkTopLevelBlock::zero_check_value): Updated. (SharkTopLevelBlock::check_bounds): Likewise. (SharkTopLevelBlock::check_pending_exception): Likewise. (SharkTopLevelBlock::handle_return): Likewise. (SharkTopLevelBlock::do_new): Likewise. (SharkTopLevelBlock::do_newarray): Likewise. (SharkTopLevelBlock::do_anewarray): Likewise. (SharkTopLevelBlock::do_multianewarray): Likewise. diffstat: 4 files changed, 105 insertions(+), 71 deletions(-) ChangeLog | 33 +++++++++ ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 53 -------------- ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 35 ++++----- ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp | 55 ++++++++++++++- diffs (314 lines): diff -r 172073e30a2a -r 9f0b5de9a8eb ChangeLog --- a/ChangeLog Thu Aug 13 16:24:01 2009 +0100 +++ b/ChangeLog Fri Aug 14 06:12:14 2009 -0400 @@ -1,3 +1,36 @@ 2009-08-13 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::CreateStoreLastJavaSP): Removed. + (SharkFunction::set_last_Java_frame): Likewise. + (SharkFunction::reset_last_Java_frame): Likewise. + (SharkFunction::CreateGetVMResult): Likewise. + (SharkFunction::pending_exception_address): Likewise. + (SharkFunction::CreateGetPendingException): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp + (SharkTopLevelBlock::pending_exception_address): New method. + (SharkTopLevelBlock::get_pending_exception): Likewise. + (SharkTopLevelBlock::clear_pending_exception): Likewise. + (SharkTopLevelBlock::set_last_Java_frame): Likewise. + (SharkTopLevelBlock::reset_last_Java_frame): Likewise. + (SharkTopLevelBlock::get_vm_result): Likewise. + (SharkTopLevelBlock::call_vm): Updated. + + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp + (SharkTopLevelBlock::zero_check_value): Updated. + (SharkTopLevelBlock::check_bounds): Likewise. + (SharkTopLevelBlock::check_pending_exception): Likewise. + (SharkTopLevelBlock::handle_return): Likewise. + (SharkTopLevelBlock::do_new): Likewise. + (SharkTopLevelBlock::do_newarray): Likewise. + (SharkTopLevelBlock::do_anewarray): Likewise. + (SharkTopLevelBlock::do_multianewarray): Likewise. + +2009-08-13 Andrew Haley + + * configure.ac (AC_INIT): Bumped version to 1.7pre. + 2009-08-13 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp diff -r 172073e30a2a -r 9f0b5de9a8eb ports/hotspot/src/share/vm/shark/sharkFunction.hpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Thu Aug 13 16:24:01 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Fri Aug 14 06:12:14 2009 -0400 @@ -124,12 +124,11 @@ class SharkFunction : public SharkTarget { return builder()->CreateStore(value, zero_stack_pointer_addr()); } - - private: llvm::LoadInst* CreateLoadZeroFramePointer(const char *name = "") { return builder()->CreateLoad(zero_frame_pointer_addr(), name); } + private: llvm::StoreInst* CreateStoreZeroFramePointer(llvm::Value* value) { return builder()->CreateStore(value, zero_frame_pointer_addr()); @@ -235,56 +234,6 @@ class SharkFunction : public SharkTarget "displaced_header_addr"); } - // VM interface - private: - llvm::StoreInst* CreateStoreLastJavaSP(llvm::Value* value) const - { - return builder()->CreateStore( - value, - builder()->CreateAddressOfStructEntry( - thread(), JavaThread::last_Java_sp_offset(), - llvm::PointerType::getUnqual(SharkType::intptr_type()), - "last_Java_sp_addr")); - } - - public: - void set_last_Java_frame() - { - CreateStoreLastJavaSP(CreateLoadZeroFramePointer()); - } - void reset_last_Java_frame() - { - CreateStoreLastJavaSP(LLVMValue::intptr_constant(0)); - } - - public: - llvm::LoadInst* CreateGetVMResult() const - { - llvm::Value *addr = builder()->CreateAddressOfStructEntry( - thread(), JavaThread::vm_result_offset(), - llvm::PointerType::getUnqual(SharkType::jobject_type()), - "vm_result_addr"); - llvm::LoadInst *result = builder()->CreateLoad(addr, "vm_result"); - builder()->CreateStore(LLVMValue::null(), addr); - return result; - } - - public: - llvm::Value* pending_exception_address() const - { - return builder()->CreateAddressOfStructEntry( - thread(), Thread::pending_exception_offset(), - llvm::PointerType::getUnqual(SharkType::jobject_type()), - "pending_exception_addr"); - } - llvm::LoadInst* CreateGetPendingException() const - { - llvm::Value *addr = pending_exception_address(); - llvm::LoadInst *result = builder()->CreateLoad(addr, "pending_exception"); - builder()->CreateStore(LLVMValue::null(), addr); - return result; - } - // Deferred zero checks public: void add_deferred_zero_check(SharkTopLevelBlock* block, diff -r 172073e30a2a -r 9f0b5de9a8eb ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Thu Aug 13 16:24:01 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Fri Aug 14 06:12:14 2009 -0400 @@ -334,7 +334,10 @@ void SharkTopLevelBlock::zero_check_valu else { builder()->CreateUnimplemented(__FILE__, __LINE__); } - handle_exception(function()->CreateGetPendingException(), EX_CHECK_FULL); + + Value *pending_exception = get_pending_exception(); + clear_pending_exception(); + handle_exception(pending_exception, EX_CHECK_FULL); } void SharkTopLevelBlock::check_bounds(SharkValue* array, SharkValue* index) @@ -350,6 +353,7 @@ void SharkTopLevelBlock::check_bounds(Sh builder()->SetInsertPoint(out_of_bounds); SharkState *saved_state = current_state()->copy(); + call_vm( builder()->throw_ArrayIndexOutOfBoundsException(), builder()->CreateIntToPtr( @@ -358,7 +362,11 @@ void SharkTopLevelBlock::check_bounds(Sh LLVMValue::jint_constant(__LINE__), index->jint_value(), EX_CHECK_NONE); - handle_exception(function()->CreateGetPendingException(), EX_CHECK_FULL); + + Value *pending_exception = get_pending_exception(); + clear_pending_exception(); + handle_exception(pending_exception, EX_CHECK_FULL); + set_current_state(saved_state); builder()->SetInsertPoint(in_bounds); @@ -371,16 +379,12 @@ void SharkTopLevelBlock::check_pending_e BasicBlock *exception = function()->CreateBlock("exception"); BasicBlock *no_exception = function()->CreateBlock("no_exception"); - Value *pending_exception_addr = function()->pending_exception_address(); - Value *pending_exception = builder()->CreateLoad( - pending_exception_addr, "pending_exception"); - + Value *pending_exception = get_pending_exception(); builder()->CreateCondBr( builder()->CreateICmpEQ(pending_exception, LLVMValue::null()), no_exception, exception); builder()->SetInsertPoint(exception); - builder()->CreateStore(LLVMValue::null(), pending_exception_addr); SharkState *saved_state = current_state()->copy(); if (action & EAM_MONITOR_FUDGE) { // The top monitor is marked live, but the exception was thrown @@ -389,6 +393,7 @@ void SharkTopLevelBlock::check_pending_e set_num_monitors(num_monitors() - 1); action ^= EAM_MONITOR_FUDGE; } + clear_pending_exception(); handle_exception(pending_exception, action); set_current_state(saved_state); @@ -630,7 +635,7 @@ void SharkTopLevelBlock::handle_return(B } if (exception) { - builder()->CreateStore(exception, function()->pending_exception_address()); + builder()->CreateStore(exception, pending_exception_address()); } Value *result_addr = function()->CreatePopFrame(type2size[type]); @@ -1576,7 +1581,7 @@ void SharkTopLevelBlock::do_new() builder()->new_instance(), LLVMValue::jint_constant(iter()->get_klass_index()), EX_CHECK_FULL); - slow_object = function()->CreateGetVMResult(); + slow_object = get_vm_result(); got_slow = builder()->GetInsertBlock(); // Push the object @@ -1608,10 +1613,8 @@ void SharkTopLevelBlock::do_newarray() pop()->jint_value(), EX_CHECK_FULL); - push(SharkValue::create_generic( - ciArrayKlass::make(ciType::make(type)), - function()->CreateGetVMResult(), - true)); + ciArrayKlass *array_klass = ciArrayKlass::make(ciType::make(type)); + push(SharkValue::create_generic(array_klass, get_vm_result(), true)); } void SharkTopLevelBlock::do_anewarray() @@ -1631,8 +1634,7 @@ void SharkTopLevelBlock::do_anewarray() pop()->jint_value(), EX_CHECK_FULL); - push(SharkValue::create_generic( - array_klass, function()->CreateGetVMResult(), true)); + push(SharkValue::create_generic(array_klass, get_vm_result(), true)); } void SharkTopLevelBlock::do_multianewarray() @@ -1668,8 +1670,7 @@ void SharkTopLevelBlock::do_multianewarr for (int i = 0; i < ndims; i++) pop(); - push(SharkValue::create_generic( - array_klass, function()->CreateGetVMResult(), true)); + push(SharkValue::create_generic(array_klass, get_vm_result(), true)); } void SharkTopLevelBlock::acquire_method_lock() diff -r 172073e30a2a -r 9f0b5de9a8eb ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp Thu Aug 13 16:24:01 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp Fri Aug 14 06:12:14 2009 -0400 @@ -240,6 +240,24 @@ class SharkTopLevelBlock : public SharkB SharkState* saved_state, llvm::BasicBlock* continue_block); // Exceptions + private: + llvm::Value* pending_exception_address() const + { + return builder()->CreateAddressOfStructEntry( + thread(), Thread::pending_exception_offset(), + llvm::PointerType::getUnqual(SharkType::jobject_type()), + "pending_exception_addr"); + } + llvm::LoadInst* get_pending_exception() const + { + return builder()->CreateLoad( + pending_exception_address(), "pending_exception"); + } + void clear_pending_exception() const + { + builder()->CreateStore(LLVMValue::null(), pending_exception_address()); + } + public: enum ExceptionActionMask { // The actual bitmasks that things test against EAM_CHECK = 1, // whether to check for pending exceptions @@ -254,6 +272,26 @@ class SharkTopLevelBlock : public SharkB void check_pending_exception(int action); void handle_exception(llvm::Value* exception, int action); + // Frame anchor + private: + void set_last_Java_frame(llvm::Value* value) const + { + builder()->CreateStore( + value, + builder()->CreateAddressOfStructEntry( + thread(), JavaThread::last_Java_sp_offset(), + llvm::PointerType::getUnqual(SharkType::intptr_type()), + "last_Java_sp_addr")); + } + void set_last_Java_frame() const + { + set_last_Java_frame(function()->CreateLoadZeroFramePointer()); + } + void reset_last_Java_frame() const + { + set_last_Java_frame(LLVMValue::intptr_constant(0)); + } + // VM calls private: llvm::CallInst* call_vm(llvm::Value* callee, @@ -262,9 +300,9 @@ class SharkTopLevelBlock : public SharkB int exception_action) { decache_for_VM_call(); - function()->set_last_Java_frame(); + set_last_Java_frame(); llvm::CallInst *res = builder()->CreateCall(callee, args_start, args_end); - function()->reset_last_Java_frame(); + reset_last_Java_frame(); cache_after_VM_call(); if (exception_action & EAM_CHECK) { check_pending_exception(exception_action); @@ -303,6 +341,19 @@ class SharkTopLevelBlock : public SharkB { llvm::Value *args[] = {thread(), arg1, arg2, arg3}; return call_vm(callee, args, args + 4, exception_action); + } + + // VM call oop return handling + private: + llvm::LoadInst* get_vm_result() const + { + llvm::Value *addr = builder()->CreateAddressOfStructEntry( + thread(), JavaThread::vm_result_offset(), + llvm::PointerType::getUnqual(SharkType::jobject_type()), + "vm_result_addr"); + llvm::LoadInst *result = builder()->CreateLoad(addr, "vm_result"); + builder()->CreateStore(LLVMValue::null(), addr); + return result; } // Synchronization From gbenson at redhat.com Fri Aug 14 03:22:12 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 14 Aug 2009 11:22:12 +0100 Subject: Shark Refactoring Message-ID: <20090814102212.GC3331@redhat.com> Hi all, This commit moves some VM interface code from SharkFunction to SharkTopLevelBlock. It also adds a ChangeLog entry for Andrew Haley's previous commit, which was missing one. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 172073e30a2a ChangeLog --- a/ChangeLog Thu Aug 13 16:24:01 2009 +0100 +++ b/ChangeLog Fri Aug 14 06:11:51 2009 -0400 @@ -1,3 +1,36 @@ +2009-08-14 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::CreateStoreLastJavaSP): Removed. + (SharkFunction::set_last_Java_frame): Likewise. + (SharkFunction::reset_last_Java_frame): Likewise. + (SharkFunction::CreateGetVMResult): Likewise. + (SharkFunction::pending_exception_address): Likewise. + (SharkFunction::CreateGetPendingException): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp + (SharkTopLevelBlock::pending_exception_address): New method. + (SharkTopLevelBlock::get_pending_exception): Likewise. + (SharkTopLevelBlock::clear_pending_exception): Likewise. + (SharkTopLevelBlock::set_last_Java_frame): Likewise. + (SharkTopLevelBlock::reset_last_Java_frame): Likewise. + (SharkTopLevelBlock::get_vm_result): Likewise. + (SharkTopLevelBlock::call_vm): Updated. + + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp + (SharkTopLevelBlock::zero_check_value): Updated. + (SharkTopLevelBlock::check_bounds): Likewise. + (SharkTopLevelBlock::check_pending_exception): Likewise. + (SharkTopLevelBlock::handle_return): Likewise. + (SharkTopLevelBlock::do_new): Likewise. + (SharkTopLevelBlock::do_newarray): Likewise. + (SharkTopLevelBlock::do_anewarray): Likewise. + (SharkTopLevelBlock::do_multianewarray): Likewise. + +2009-08-13 Andrew Haley + + * configure.ac (AC_INIT): Bumped version to 1.7pre. + 2009-08-13 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp diff -r 172073e30a2a ports/hotspot/src/share/vm/shark/sharkFunction.hpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Thu Aug 13 16:24:01 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Fri Aug 14 06:11:51 2009 -0400 @@ -124,12 +124,11 @@ { return builder()->CreateStore(value, zero_stack_pointer_addr()); } - - private: llvm::LoadInst* CreateLoadZeroFramePointer(const char *name = "") { return builder()->CreateLoad(zero_frame_pointer_addr(), name); } + private: llvm::StoreInst* CreateStoreZeroFramePointer(llvm::Value* value) { return builder()->CreateStore(value, zero_frame_pointer_addr()); @@ -235,56 +234,6 @@ "displaced_header_addr"); } - // VM interface - private: - llvm::StoreInst* CreateStoreLastJavaSP(llvm::Value* value) const - { - return builder()->CreateStore( - value, - builder()->CreateAddressOfStructEntry( - thread(), JavaThread::last_Java_sp_offset(), - llvm::PointerType::getUnqual(SharkType::intptr_type()), - "last_Java_sp_addr")); - } - - public: - void set_last_Java_frame() - { - CreateStoreLastJavaSP(CreateLoadZeroFramePointer()); - } - void reset_last_Java_frame() - { - CreateStoreLastJavaSP(LLVMValue::intptr_constant(0)); - } - - public: - llvm::LoadInst* CreateGetVMResult() const - { - llvm::Value *addr = builder()->CreateAddressOfStructEntry( - thread(), JavaThread::vm_result_offset(), - llvm::PointerType::getUnqual(SharkType::jobject_type()), - "vm_result_addr"); - llvm::LoadInst *result = builder()->CreateLoad(addr, "vm_result"); - builder()->CreateStore(LLVMValue::null(), addr); - return result; - } - - public: - llvm::Value* pending_exception_address() const - { - return builder()->CreateAddressOfStructEntry( - thread(), Thread::pending_exception_offset(), - llvm::PointerType::getUnqual(SharkType::jobject_type()), - "pending_exception_addr"); - } - llvm::LoadInst* CreateGetPendingException() const - { - llvm::Value *addr = pending_exception_address(); - llvm::LoadInst *result = builder()->CreateLoad(addr, "pending_exception"); - builder()->CreateStore(LLVMValue::null(), addr); - return result; - } - // Deferred zero checks public: void add_deferred_zero_check(SharkTopLevelBlock* block, diff -r 172073e30a2a ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Thu Aug 13 16:24:01 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Fri Aug 14 06:11:51 2009 -0400 @@ -334,7 +334,10 @@ else { builder()->CreateUnimplemented(__FILE__, __LINE__); } - handle_exception(function()->CreateGetPendingException(), EX_CHECK_FULL); + + Value *pending_exception = get_pending_exception(); + clear_pending_exception(); + handle_exception(pending_exception, EX_CHECK_FULL); } void SharkTopLevelBlock::check_bounds(SharkValue* array, SharkValue* index) @@ -350,6 +353,7 @@ builder()->SetInsertPoint(out_of_bounds); SharkState *saved_state = current_state()->copy(); + call_vm( builder()->throw_ArrayIndexOutOfBoundsException(), builder()->CreateIntToPtr( @@ -358,7 +362,11 @@ LLVMValue::jint_constant(__LINE__), index->jint_value(), EX_CHECK_NONE); - handle_exception(function()->CreateGetPendingException(), EX_CHECK_FULL); + + Value *pending_exception = get_pending_exception(); + clear_pending_exception(); + handle_exception(pending_exception, EX_CHECK_FULL); + set_current_state(saved_state); builder()->SetInsertPoint(in_bounds); @@ -371,16 +379,12 @@ BasicBlock *exception = function()->CreateBlock("exception"); BasicBlock *no_exception = function()->CreateBlock("no_exception"); - Value *pending_exception_addr = function()->pending_exception_address(); - Value *pending_exception = builder()->CreateLoad( - pending_exception_addr, "pending_exception"); - + Value *pending_exception = get_pending_exception(); builder()->CreateCondBr( builder()->CreateICmpEQ(pending_exception, LLVMValue::null()), no_exception, exception); builder()->SetInsertPoint(exception); - builder()->CreateStore(LLVMValue::null(), pending_exception_addr); SharkState *saved_state = current_state()->copy(); if (action & EAM_MONITOR_FUDGE) { // The top monitor is marked live, but the exception was thrown @@ -389,6 +393,7 @@ set_num_monitors(num_monitors() - 1); action ^= EAM_MONITOR_FUDGE; } + clear_pending_exception(); handle_exception(pending_exception, action); set_current_state(saved_state); @@ -630,7 +635,7 @@ } if (exception) { - builder()->CreateStore(exception, function()->pending_exception_address()); + builder()->CreateStore(exception, pending_exception_address()); } Value *result_addr = function()->CreatePopFrame(type2size[type]); @@ -1576,7 +1581,7 @@ builder()->new_instance(), LLVMValue::jint_constant(iter()->get_klass_index()), EX_CHECK_FULL); - slow_object = function()->CreateGetVMResult(); + slow_object = get_vm_result(); got_slow = builder()->GetInsertBlock(); // Push the object @@ -1608,10 +1613,8 @@ pop()->jint_value(), EX_CHECK_FULL); - push(SharkValue::create_generic( - ciArrayKlass::make(ciType::make(type)), - function()->CreateGetVMResult(), - true)); + ciArrayKlass *array_klass = ciArrayKlass::make(ciType::make(type)); + push(SharkValue::create_generic(array_klass, get_vm_result(), true)); } void SharkTopLevelBlock::do_anewarray() @@ -1631,8 +1634,7 @@ pop()->jint_value(), EX_CHECK_FULL); - push(SharkValue::create_generic( - array_klass, function()->CreateGetVMResult(), true)); + push(SharkValue::create_generic(array_klass, get_vm_result(), true)); } void SharkTopLevelBlock::do_multianewarray() @@ -1668,8 +1670,7 @@ for (int i = 0; i < ndims; i++) pop(); - push(SharkValue::create_generic( - array_klass, function()->CreateGetVMResult(), true)); + push(SharkValue::create_generic(array_klass, get_vm_result(), true)); } void SharkTopLevelBlock::acquire_method_lock() diff -r 172073e30a2a ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp Thu Aug 13 16:24:01 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp Fri Aug 14 06:11:51 2009 -0400 @@ -240,6 +240,24 @@ SharkState* saved_state, llvm::BasicBlock* continue_block); // Exceptions + private: + llvm::Value* pending_exception_address() const + { + return builder()->CreateAddressOfStructEntry( + thread(), Thread::pending_exception_offset(), + llvm::PointerType::getUnqual(SharkType::jobject_type()), + "pending_exception_addr"); + } + llvm::LoadInst* get_pending_exception() const + { + return builder()->CreateLoad( + pending_exception_address(), "pending_exception"); + } + void clear_pending_exception() const + { + builder()->CreateStore(LLVMValue::null(), pending_exception_address()); + } + public: enum ExceptionActionMask { // The actual bitmasks that things test against EAM_CHECK = 1, // whether to check for pending exceptions @@ -254,6 +272,26 @@ void check_pending_exception(int action); void handle_exception(llvm::Value* exception, int action); + // Frame anchor + private: + void set_last_Java_frame(llvm::Value* value) const + { + builder()->CreateStore( + value, + builder()->CreateAddressOfStructEntry( + thread(), JavaThread::last_Java_sp_offset(), + llvm::PointerType::getUnqual(SharkType::intptr_type()), + "last_Java_sp_addr")); + } + void set_last_Java_frame() const + { + set_last_Java_frame(function()->CreateLoadZeroFramePointer()); + } + void reset_last_Java_frame() const + { + set_last_Java_frame(LLVMValue::intptr_constant(0)); + } + // VM calls private: llvm::CallInst* call_vm(llvm::Value* callee, @@ -262,9 +300,9 @@ int exception_action) { decache_for_VM_call(); - function()->set_last_Java_frame(); + set_last_Java_frame(); llvm::CallInst *res = builder()->CreateCall(callee, args_start, args_end); - function()->reset_last_Java_frame(); + reset_last_Java_frame(); cache_after_VM_call(); if (exception_action & EAM_CHECK) { check_pending_exception(exception_action); @@ -303,6 +341,19 @@ { llvm::Value *args[] = {thread(), arg1, arg2, arg3}; return call_vm(callee, args, args + 4, exception_action); + } + + // VM call oop return handling + private: + llvm::LoadInst* get_vm_result() const + { + llvm::Value *addr = builder()->CreateAddressOfStructEntry( + thread(), JavaThread::vm_result_offset(), + llvm::PointerType::getUnqual(SharkType::jobject_type()), + "vm_result_addr"); + llvm::LoadInst *result = builder()->CreateLoad(addr, "vm_result"); + builder()->CreateStore(LLVMValue::null(), addr); + return result; } // Synchronization From gnu_andrew at member.fsf.org Fri Aug 14 05:00:13 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 14 Aug 2009 13:00:13 +0100 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> Message-ID: <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> 2009/8/14 Michael Franz : > Hi, > > Here is the output from my Fedora 10 build with the missing > java.util.Scanner. > > /home/mfranz/linux/icedtea-1.11/bootstrap/jdk1.6.0/bin/java > -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -client > -Xmx896m -Xms128m -XX:PermSize=32m -XX:MaxPermSize=160m -jar > /home/mfranz/linux/icedtea-1.11/openjdk-ecj/build/linux-i586/btjars/charsetmapping.jar > ../../tools/CharsetMapping > /home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext euctw \ > ??? ??? ../../tools/src/build/tools/charsetmapping/GenerateEUC_TW.java > Exception in thread "main" java.lang.NoClassDefFoundError: java.util.Scanner > ?? at > build.tools.charsetmapping.GenerateEUC_TW.getCopyright(GenerateEUC_TW.java:47) > ?? at > build.tools.charsetmapping.GenerateEUC_TW.genEUC_TW(GenerateEUC_TW.java:43) > ?? at build.tools.charsetmapping.Main.main(Main.java:48) > make[5]: *** > [/home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext/IBM037.java] Error > 1 > make[5]: Leaving directory > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun/nio' > make[4]: *** [all] Error 1 > make[4]: Leaving directory > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun' > make[3]: *** [all] Error 1 > make[3]: Leaving directory > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make' > make[2]: *** [jdk-build] Error 2 > make[2]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' > make[1]: *** [build_product_image] Error 2 > make[1]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' > make: *** [stamps/icedtea-ecj.stamp] Error 2 > > > The output from configure for the Scanner check is here: > checking if java.util.Scanner is missing... Exception in thread "main" > java.lang.NoClassDefFoundError: java.util.Scanner > ?? at Test.main(Test.java:7) > no > checking if java.util.Scanner exhibits Classpath bug 40630... yes > > I wonder if the Classpath bug is over-riding the Scanner check. > > Michael > Ok, that first check should be saying yes and the second (bug 40630) shouldn't run. Can you check what output is given in config.log for these tests (if any)? It looks like the javac+java you are using with configure is different from what is actually building OpenJDK. -- 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 mvfranz at gmail.com Fri Aug 14 05:05:29 2009 From: mvfranz at gmail.com (Michael Franz) Date: Fri, 14 Aug 2009 08:05:29 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> Message-ID: Here is part of config.log configure:8957: checking if java.io.PrintStream is missing the 1.5 constructors (PR40616) Exception in thread "main" java.lang.NoSuchMethodError: method java.io.PrintStream. with signature (Ljava.io.File;Ljava .lang.String;)V was not found. at Test.main(Test.java:10) configure:8993: result: yes configure:9008: checking if java.util.Scanner is missing configure:9040: result: no configure:9056: checking if java.util.Scanner exhibits Classpath bug 40630 Exception in thread "main" java.lang.NoClassDefFoundError: java.util.Scanner at Test.main(Test.java:9) configure:9093: result: yes On Fri, Aug 14, 2009 at 8:00 AM, Andrew John Hughes < gnu_andrew at member.fsf.org> wrote: > 2009/8/14 Michael Franz : > > Hi, > > > > Here is the output from my Fedora 10 build with the missing > > java.util.Scanner. > > > > /home/mfranz/linux/icedtea-1.11/bootstrap/jdk1.6.0/bin/java > > -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput > -client > > -Xmx896m -Xms128m -XX:PermSize=32m -XX:MaxPermSize=160m -jar > > > /home/mfranz/linux/icedtea-1.11/openjdk-ecj/build/linux-i586/btjars/charsetmapping.jar > > ../../tools/CharsetMapping > > /home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext euctw \ > > ../../tools/src/build/tools/charsetmapping/GenerateEUC_TW.java > > Exception in thread "main" java.lang.NoClassDefFoundError: > java.util.Scanner > > at > > > build.tools.charsetmapping.GenerateEUC_TW.getCopyright(GenerateEUC_TW.java:47) > > at > > > build.tools.charsetmapping.GenerateEUC_TW.genEUC_TW(GenerateEUC_TW.java:43) > > at build.tools.charsetmapping.Main.main(Main.java:48) > > make[5]: *** > > [/home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext/IBM037.java] > Error > > 1 > > make[5]: Leaving directory > > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun/nio' > > make[4]: *** [all] Error 1 > > make[4]: Leaving directory > > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun' > > make[3]: *** [all] Error 1 > > make[3]: Leaving directory > > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make' > > make[2]: *** [jdk-build] Error 2 > > make[2]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' > > make[1]: *** [build_product_image] Error 2 > > make[1]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' > > make: *** [stamps/icedtea-ecj.stamp] Error 2 > > > > > > The output from configure for the Scanner check is here: > > checking if java.util.Scanner is missing... Exception in thread "main" > > java.lang.NoClassDefFoundError: java.util.Scanner > > at Test.main(Test.java:7) > > no > > checking if java.util.Scanner exhibits Classpath bug 40630... yes > > > > I wonder if the Classpath bug is over-riding the Scanner check. > > > > Michael > > > > Ok, that first check should be saying yes and the second (bug 40630) > shouldn't run. > > Can you check what output is given in config.log for these tests (if > any)? It looks like the javac+java you are using with configure is > different from what is actually building OpenJDK. > -- > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090814/2f7c6f97/attachment.html From gnu_andrew at member.fsf.org Fri Aug 14 05:37:29 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 14 Aug 2009 13:37:29 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4A84B194.1070108@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> <4A79F131.7040105@sun.com> <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> <4A84B194.1070108@sun.com> Message-ID: <17c6771e0908140537g6f61faf8h3f912415b2f3e9c3@mail.gmail.com> 2009/8/14 Joe Darcy : > Andrew John Hughes wrote: >> >> 2009/8/5 Tim Bell : >> >>> >>> Andrew John Hughes wrote: >>> >>> >>>> >>>> Thanks Tim, that seems to have fixed the permissions issue. >>>> >>> >>> Good. >>> >>> >>>> >>>> There now seems to be an issue with jcheck, as the merge causes some >>>> bugids to be repeated: >>>> >>> >>> Hmmm - how did these changesets come in through two different paths? >>> >>> >>>> >>>> pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >>>> searching for changes >>>> remote: adding changesets >>>> remote: adding manifests >>>> remote: adding file changes >>>> remote: added 555 changesets with 4771 changes to 1453 files >>>> remote: >>>> remote: > Changeset: 100:d821d920b465 >>>> remote: > Author: ? ?kvn >>>> remote: > Date: ? ? ?2008-03-11 11:04 >>>> remote: > >>>> remote: > 6623167: C2 crashed in StoreCMNode::Value >>>> remote: > Summary: C2 crashed in StoreCMNode::Value because >>>> n->in(MemNode::OopStore) is 0. >>>> remote: > Reviewed-by: rasbold, never >>>> remote: >>>> remote: Bugid 6623167 already used in this repository, in revision 20 >>>> remote: >>>> remote: > Changeset: 104:2c106685d6d0 >>>> remote: > Author: ? ?dcubed >>>> remote: > Date: ? ? ?2008-03-12 18:06 >>>> remote: > >>>> remote: > 6497639: 4/3 Profiling Swing application caused JVM crash >>>> remote: > Summary: Make RedefineClasses() interoperate better with >>>> class sharing. >>>> remote: > Reviewed-by: sspitsyn, jmasa >>>> remote: >>>> remote: Bugid 6497639 already used in this repository, in revision 20 >>>> remote: >>>> remote: > Changeset: 105:d8b3ef7ee3e5 >>>> remote: > Author: ? ?dcubed >>>> remote: > Date: ? ? ?2008-03-12 18:07 >>>> remote: > >>>> remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or >>>> assert() failure >>>> remote: > Summary: Add should_not_be_cached() to markOop and methodOop >>>> and query that status inOopMapCache::lookup() >>>> remote: > Reviewed-by: coleenp, sspitsyn, jmasa >>>> remote: >>>> remote: Bugid 6599425 already used in this repository, in revision 20 >>>> remote: >>>> remote: > Changeset: 240:65fe2bd88839 >>>> remote: > Author: ? ?never >>>> remote: > Date: ? ? ?2008-06-05 21:44 >>>> remote: > >>>> remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse >>>> with 1.6.0_05-ea >>>> remote: > Reviewed-by: kvn, jrose, rasbold >>>> remote: >>>> remote: Bugid 6614100 already used in this repository, in revision 20 >>>> remote: >>>> remote: > Changeset: 286:3e82d72933d0 >>>> remote: > Author: ? ?xlu >>>> remote: > Date: ? ? ?2008-06-26 14:15 >>>> remote: > >>>> remote: > 6718830: Hotspot fails to build with gcc 4.3 >>>> remote: > Summary: Fixed linux make file and couple adlc code to meet >>>> the changes of gcc 4.3 >>>> remote: > Reviewed-by: kamg, igor >>>> remote: >>>> remote: Bugid 6718830 already used in this repository, in revision 32 >>>> remote: >>>> remote: > Changeset: 289:551f4309f476 >>>> remote: > Author: ? ?ohair >>>> remote: > Date: ? ? ?2008-07-03 10:46 >>>> remote: > >>>> remote: > 6695777: Queens.class should be built from source, not put >>>> in source repo >>>> remote: > Reviewed-by: kvn >>>> remote: >>>> remote: Bugid 6695777 already used in this repository, in revision 20 >>>> remote: >>>> remote: > Changeset: 314:54499b980c23 >>>> remote: > Author: ? ?swamyv >>>> remote: > Date: ? ? ?2008-07-29 13:54 >>>> remote: > >>>> remote: > 6710791: Remove files or build from source:maf-1_0.jar, >>>> jlfg-1_0.jar >>>> remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. >>>> remote: > Reviewed-by: poonam, jjh >>>> remote: >>>> remote: Bugid 6710791 already used in this repository, in revision 20 >>>> remote: >>>> remote: > Changeset: 360:fa4d1d240383 >>>> remote: > Author: ? ?never >>>> remote: > Date: ? ? ?2008-08-26 15:49 >>>> remote: > >>>> remote: > 6741642: bad enum definition in ciTypeFlow.hpp >>>> remote: > Reviewed-by: rasbold, martin >>>> remote: > Contributed-by: doko at ubuntu.com >>>> remote: >>>> remote: Bugid 6741642 already used in this repository, in revision 22 >>>> remote: >>>> remote: > Changeset: 589:748572b86af6 >>>> remote: > Author: ? ?never >>>> remote: > Date: ? ? ?2009-04-07 14:46 >>>> remote: > >>>> remote: > 6636360: compiler/6595044/Main.java test fails with 64bit >>>> java on solaris-sparcv9 with SIGSEGV >>>> remote: > Reviewed-by: kvn, twisti >>>> remote: >>>> remote: Bugid 6636360 already used in this repository, in revision 29 >>>> remote: >>>> remote: abort: pretxnchangegroup.0.jcheck hook failed >>>> remote: transaction abort! >>>> remote: rollback completed >>>> abort: unexpected response: empty string >>>> >>>> Is there a way of getting it to ignore these for this one push? ?I >>>> don't know of a way to just pull out these nine changesets from the >>>> 555 waiting to go... >>>> >>> >>> I think they would need to be added to the jcheck whitelist for all time- >>> but that is more of a question for Mark or Kelly. >>> >>> Tim >>> >>> >> >> The early revisions (20, 32) are from OpenJDK6 which was rebased to >> allow HotSpot patches to be applied on top. ?So what happened here is >> that, as the fixes were already applied to OpenJDK6, the new >> changesets pulled in by the merge will be no-ops but still exist to >> keep the change history accurate. >> >> I think we just need a way of disabling this check. ?OpenJDK6 already >> has whitespace and comment checks turned to lax. ?See .jcheck: >> http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/0282bf49b0f6. ?There >> may already be an option for this bugid check too, but I have no idea >> what the format of that file is. >> > > Andrew, can you please try your push again? > > I chatted with Mark and the OpenJDK 6 HotSpot Mercurial repository should be > configured to do lax checking on the bug ids. > > Thanks, > > -Joe > Sorry, same failure still occurs :( I didn't see any changes to .jcheck, which I would assume are needed to fix this (mr added one for the lax comments with the rebase). -- 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 ed at camswl.com Fri Aug 14 06:36:05 2009 From: ed at camswl.com (Edward Nevill) Date: Fri, 14 Aug 2009 14:36:05 +0100 Subject: Request to commit - ARM interpreter changes Message-ID: <200908141336.n7EDa50x031197@parsley.camswl.com> Hi Folks, Attached below are the changes I would like to commit for the ARM interpreter. The following is the ChangeLog entry which lists the files changed. +2009-08-13 Edward Nevill + + Added ARM assembler interpreter + + * openjdk/hotspot/src/share/vm/interpreter.hpp + Allow ARM interpreter to notice safepoints + Changed via patches/icedtea-notice-safepoints.patch + + * ports/hotspot/build/linux/makefiles/zero.make + Add cppInterpreter_arm + Add CFLAGS for ARM asm interpreter + Add rules to build .o from .S + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp + Add initialisation of new bytecodes for asm interpreter + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp + Add definitions of new bytecodes for asm interpreter + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + Add hooks to call asm interpreter + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + Add hooks to allow HW null pointer detection + + [ NEW FILES ] + * ports/hotspot/src/cpu/zero/vm/bc.def + Bytecode templates + * ports/hotspot/src/cpu/zero/vm/bytecodes.s + Bytecode implementations (manually generated from bc.def) + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_asm.S + Complex bytecode implementations, entry points and support code + * ports/hotspot/src/cpu/zero/vm/mkbc.c + Bytecode generator, use to generate bytecodes.s from bc.def + I have performed the following testing on the changes. - Build HotSpot on X86 - Build Zero on X86 - Build Zero + Shark on X86 - Build Zero (+ARM) on ARMv7 - Run JTREG on x86 (HotSpot build) compiler: Test results: passed: 24 lang: Test results: passed: 1,344; failed: 8 jdk: Test results: passed: 3,186; failed: 168; error: 2 - Run JTREG on ARMv7 (Still in progress - will take approx 2 days to complete) (Results so far) compiler: Test results: passed: 24 lang: Test results: passed: 535 (of 535 tests run so far). Regards, Ed. --- CUT HERE -------------------------------------------------------- diff -ruNE icedtea6/ChangeLog icedtea6/ChangeLog --- icedtea6/ChangeLog 2009-08-13 14:17:45.000000000 +0100 +++ icedtea6/ChangeLog 2009-08-13 14:51:28.000000000 +0100 @@ -1,3 +1,38 @@ +2009-08-13 Edward Nevill + + Added ARM assembler interpreter + + * openjdk/hotspot/src/share/vm/interpreter.hpp + Allow ARM interpreter to notice safepoints + Changed via patches/icedtea-notice-safepoints.patch + + * ports/hotspot/build/linux/makefiles/zero.make + Add cppInterpreter_arm + Add CFLAGS for ARM asm interpreter + Add rules to build .o from .S + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp + Add initialisation of new bytecodes for asm interpreter + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp + Add definitions of new bytecodes for asm interpreter + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + Add hooks to call asm interpreter + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + Add hooks to allow HW null pointer detection + + [ NEW FILES ] + * ports/hotspot/src/cpu/zero/vm/bc.def + Bytecode templates + * ports/hotspot/src/cpu/zero/vm/bytecodes.s + Bytecode implementations (manually generated from bc.def) + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_asm.S + Complex bytecode implementations, entry points and support code + * ports/hotspot/src/cpu/zero/vm/mkbc.c + Bytecode generator, use to generate bytecodes.s from bc.def + 2009-08-13 Gary Benson * ports/hotspot/src/share/vm/shark/sharkEntry.hpp diff -ruNE icedtea6/Makefile.am icedtea6/Makefile.am --- icedtea6/Makefile.am 2009-08-13 14:17:45.000000000 +0100 +++ icedtea6/Makefile.am 2009-08-13 14:38:13.000000000 +0100 @@ -503,6 +503,7 @@ ICEDTEA_FSG_PATCHES = ICEDTEA_PATCHES = \ + patches/icedtea-notice-safepoints.patch \ patches/hotspot/$(HSBUILD)/icedtea-bytecodeInterpreter.patch \ patches/icedtea-signature-iterator.patch \ patches/icedtea-test-atomic-operations.patch \ diff -ruNE icedtea6/patches/icedtea-notice-safepoints.patch icedtea6/patches/icedtea-notice-safepoints.patch --- icedtea6/patches/icedtea-notice-safepoints.patch 1970-01-01 01:00:00.000000000 +0100 +++ icedtea6/patches/icedtea-notice-safepoints.patch 2009-08-13 14:36:16.000000000 +0100 @@ -0,0 +1,16 @@ +--- openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.hpp 2009-04-30 23:21:47.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.hpp 2009-06-29 12:30:31.000000000 +0000 +@@ -60,8 +60,13 @@ + + + // No displatch table to switch so no need for these to do anything special ++#if defined(PRODUCT) && defined(HOTSPOT_ASM) ++ static void notice_safepoints(); ++ static void ignore_safepoints(); ++#else + static void notice_safepoints() {} + static void ignore_safepoints() {} ++#endif + + static address native_result_to_tosca() { return (address)_native_abi_to_tosca; } // aka result handler + static address tosca_result_to_stack() { return (address)_tosca_to_stack; } diff -ruNE icedtea6/ports/hotspot/build/linux/makefiles/zero.make icedtea6/ports/hotspot/build/linux/makefiles/zero.make --- icedtea6/ports/hotspot/build/linux/makefiles/zero.make 2009-08-13 14:17:47.000000000 +0100 +++ icedtea6/ports/hotspot/build/linux/makefiles/zero.make 2009-08-13 14:30:21.000000000 +0100 @@ -23,6 +23,15 @@ # # +ifeq ($(ZERO_LIBARCH),arm) +Obj_Files += cppInterpreter_arm.o +CFLAGS += -DHOTSPOT_ASM -DHW_NULL_PTR_CHECK +%.o: %.S + @echo Assembling $< + $(QUIETLY) $(REMOVE_TARGET) + $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) +endif + # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT) # The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized diff -ruNE icedtea6/ports/hotspot/src/cpu/zero/vm/bc.def icedtea6/ports/hotspot/src/cpu/zero/vm/bc.def --- icedtea6/ports/hotspot/src/cpu/zero/vm/bc.def 1970-01-01 01:00:00.000000000 +0100 +++ icedtea6/ports/hotspot/src/cpu/zero/vm/bc.def 2009-08-13 14:24:44.000000000 +0100 @@ -0,0 +1,7863 @@ +nop = 0x00, 1 +aconst_null = 0x01, 1 +iconst_m1 = 0x02, 1 +iconst_0 = 0x03, 1 +iconst_1 = 0x04, 1 +iconst_2 = 0x05, 1 +iconst_3 = 0x06, 1 +iconst_4 = 0x07, 1 +iconst_5 = 0x08, 1 +lconst_0 = 0x09, 1 +lconst_1 = 0x0a, 1 +fconst_0 = 0x0b, 1 +fconst_1 = 0x0c, 1 +fconst_2 = 0x0d, 1 +dconst_0 = 0x0e, 1 +dconst_1 = 0x0f, 1 +bipush = 0x10, 2 +sipush = 0x11, 3 +ldc = 0x12, 2 +ldc_w = 0x13, 3 +ldc2_w = 0x14, 3 +iload = 0x15, 2 +lload = 0x16, 2 +fload = 0x17, 2 +dload = 0x18, 2 +aload = 0x19, 2 +iload_0 = 0x1a, 1 +iload_1 = 0x1b, 1 +iload_2 = 0x1c, 1 +iload_3 = 0x1d, 1 +lload_0 = 0x1e, 1 +lload_1 = 0x1f, 1 +lload_2 = 0x20, 1 +lload_3 = 0x21, 1 +fload_0 = 0x22, 1 +fload_1 = 0x23, 1 +fload_2 = 0x24, 1 +fload_3 = 0x25, 1 +dload_0 = 0x26, 1 +dload_1 = 0x27, 1 +dload_2 = 0x28, 1 +dload_3 = 0x29, 1 +aload_0 = 0x2a, 1 +aload_1 = 0x2b, 1 +aload_2 = 0x2c, 1 +aload_3 = 0x2d, 1 +iaload = 0x2e, 1 +laload = 0x2f, 1 +faload = 0x30, 1 +daload = 0x31, 1 +aaload = 0x32, 1 +baload = 0x33, 1 +caload = 0x34, 1 +saload = 0x35, 1 +istore = 0x36, 2 +lstore = 0x37, 2 +fstore = 0x38, 2 +dstore = 0x39, 2 +astore = 0x3a, 2 +istore_0 = 0x3b, 1 +istore_1 = 0x3c, 1 +istore_2 = 0x3d, 1 +istore_3 = 0x3e, 1 +lstore_0 = 0x3f, 1 +lstore_1 = 0x40, 1 +lstore_2 = 0x41, 1 +lstore_3 = 0x42, 1 +fstore_0 = 0x43, 1 +fstore_1 = 0x44, 1 +fstore_2 = 0x45, 1 +fstore_3 = 0x46, 1 +dstore_0 = 0x47, 1 +dstore_1 = 0x48, 1 +dstore_2 = 0x49, 1 +dstore_3 = 0x4a, 1 +astore_0 = 0x4b, 1 +astore_1 = 0x4c, 1 +astore_2 = 0x4d, 1 +astore_3 = 0x4e, 1 +iastore = 0x4f, 1 +lastore = 0x50, 1 +fastore = 0x51, 1 +dastore = 0x52, 1 +aastore = 0x53, 1 +bastore = 0x54, 1 +castore = 0x55, 1 +sastore = 0x56, 1 +pop = 0x57, 1 +pop2 = 0x58, 1 +dup = 0x59, 1 +dup_x1 = 0x5a, 1 +dup_x2 = 0x5b, 1 +dup2 = 0x5c, 1 +dup2_x1 = 0x5d, 1 +dup2_x2 = 0x5e, 1 +swap = 0x5f, 1 +iadd = 0x60, 1 +ladd = 0x61, 1 +fadd = 0x62, 1 +dadd = 0x63, 1 +isub = 0x64, 1 +lsub = 0x65, 1 +fsub = 0x66, 1 +dsub = 0x67, 1 +imul = 0x68, 1 +lmul = 0x69, 1 +fmul = 0x6a, 1 +dmul = 0x6b, 1 +idiv = 0x6c, 1 +ldiv = 0x6d, 1 +fdiv = 0x6e, 1 +ddiv = 0x6f, 1 +irem = 0x70, 1 +lrem = 0x71, 1 +frem = 0x72, 1 +drem = 0x73, 1 +ineg = 0x74, 1 +lneg = 0x75, 1 +fneg = 0x76, 1 +dneg = 0x77, 1 +ishl = 0x78, 1 +lshl = 0x79, 1 +ishr = 0x7a, 1 +lshr = 0x7b, 1 +iushr = 0x7c, 1 +lushr = 0x7d, 1 +iand = 0x7e, 1 +land = 0x7f, 1 +ior = 0x80, 1 +lor = 0x81, 1 +ixor = 0x82, 1 +lxor = 0x83, 1 +iinc = 0x84, 3 +i2l = 0x85, 1 +i2f = 0x86, 1 +i2d = 0x87, 1 +l2i = 0x88, 1 +l2f = 0x89, 1 +l2d = 0x8a, 1 +f2i = 0x8b, 1 +f2l = 0x8c, 1 +f2d = 0x8d, 1 +d2i = 0x8e, 1 +d2l = 0x8f, 1 +d2f = 0x90, 1 +i2b = 0x91, 1 +i2c = 0x92, 1 +i2s = 0x93, 1 +lcmp = 0x94, 1 +fcmpl = 0x95, 1 +fcmpg = 0x96, 1 +dcmpl = 0x97, 1 +dcmpg = 0x98, 1 +ifeq = 0x99, 0 +ifne = 0x9a, 0 +iflt = 0x9b, 0 +ifge = 0x9c, 0 +ifgt = 0x9d, 0 +ifle = 0x9e, 0 +if_icmpeq = 0x9f, 0 +if_icmpne = 0xa0, 0 +if_icmplt = 0xa1, 0 +if_icmpge = 0xa2, 0 +if_icmpgt = 0xa3, 0 +if_icmple = 0xa4, 0 +if_acmpeq = 0xa5, 0 +if_acmpne = 0xa6, 0 +goto = 0xa7, 0 +jsr = 0xa8, 0 +ret = 0xa9, 0 +tableswitch = 0xaa, 0 +lookupswitch = 0xab, 0 +ireturn = 0xac, 0 +lreturn = 0xad, 0 +freturn = 0xae, 0 +dreturn = 0xaf, 0 +areturn = 0xb0, 0 +return = 0xb1, 0 +getstatic = 0xb2, 3 +putstatic = 0xb3, 3 +getfield = 0xb4, 3 +putfield = 0xb5, 3 +invokevirtual = 0xb6, 3 +invokespecial = 0xb7, 3 +invokestatic = 0xb8, 3 +invokeinterface = 0xb9, 0 +new = 0xbb, 3 +newarray = 0xbc, 2 +anewarray = 0xbd, 3 +arraylength = 0xbe, 1 +athrow = 0xbf, 0 +checkcast = 0xc0, 3 +instanceof = 0xc1, 3 +monitorenter = 0xc2, 1 +monitorexit = 0xc3, 1 +wide = 0xc4, 1 +multianewarray = 0xc5, 4 +ifnull = 0xc6, 0 +ifnonnull = 0xc7, 0 +goto_w = 0xc8, 0 +jsr_w = 0xc9, 0 +breakpoint = 0xca, 0 + +#agetfield = 0xcb, 3 +bgetfield = 0xcc, 3 +cgetfield = 0xcd, 3 +#dgetfield = 0xce, 3 +#fgetfield = 0xcf, 3 +igetfield = 0xd0, 3 +lgetfield = 0xd1, 3 +sgetfield = 0xd2, 3 + +aputfield = 0xd3, 3 +bputfield = 0xd4, 3 +cputfield = 0xd5, 3 +#dputfield = 0xd6, 3 +#fputfield = 0xd7, 3 +iputfield = 0xd8, 3 +lputfield = 0xd9, 3 +#sputfield = 0xda, 3 + +iaccess_0 = 0xdb, 4 +iaccess_1 = 0xdc, 4 +iaccess_2 = 0xdd, 4 +iaccess_3 = 0xde, 4 + +#fast_iload = 0xdf, 2 +#fast_iload2 = 0xe0, 4 +#fast_icaload = 0xe1, 3 + +invokevfinal = 0xe2, 3 +#linearswitch = 0xe3, 0 +#binaryswitch = 0xe4, 0 + +iload_0_iconst_N = 231, 2 +iload_1_iconst_N = 232, 2 +iload_2_iconst_N = 233, 2 +iload_3_iconst_N = 234, 2 +iload_iconst_N = 235, 3 +invokeresolved = 236, 3 +iadd_istore_N = 237, 2 +isub_istore_N = 238, 2 +iand_istore_N = 239, 2 +ior_istore_N = 240, 2 +ixor_istore_N = 241, 2 +iadd_u4store = 242, 3 +isub_u4store = 243, 3 +iand_u4store = 244, 3 +ior_u4store = 245, 3 +ixor_u4store = 246, 3 +invokespecialresolved = 247, 3 +invokestaticresolved = 248, 3 + +return_register_finalizer = 229, 0 + +(nop) { + DISPATCH \seq_len +} + +(aconst_null,fconst_0) u4const_0 { + DISPATCH_START \seq_len + mov lr, #0 + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) iconst_N { + sub lr, r0, #opc_iconst_0 + DISPATCH_START \seq_len + PUSH lr + DISPATCH_FINISH +} + +(lconst_0,dconst_0) u8const_0 { + DISPATCH_START \seq_len + mov tmp1, #0 + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(lconst_1) lconst_1 { + DISPATCH_START \seq_len + mov tmp2, #1 + DISPATCH_NEXT + mov tmp1, #0 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(fconst_1) fconst_1 { + DISPATCH_START \seq_len + mov tmp1, #0x3f800000 + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(fconst_2) fconst_2 { + DISPATCH_START \seq_len + mov r2, #0x40000000 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(dconst_1) dconst_1 { + DISPATCH_START \seq_len + mov tmp1, #0x3f000000 + DISPATCH_NEXT + orr tmp1, tmp1, #0x00f00000 + DISPATCH_NEXT + mov tmp2, #0 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(bipush) bipush { + DISPATCH_START \seq_len + mov tmp1, r2, lsl #24 + DISPATCH_NEXT + mov tmp1, tmp1, asr #24 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +# r1 = [jpc, #2] +(sipush) sipush { + DISPATCH_START \seq_len + mov tmp1, r1 + DISPATCH_NEXT + mov r2, r2, lsl #24 + DISPATCH_NEXT + orr tmp1, tmp1, r2, asr #16 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,fload,aload) u4load { + DISPATCH_START \seq_len + rsb tmp1, r2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(lload,dload) u8load { + DISPATCH_START \seq_len + sub r3, locals, r2, lsl #2 + DISPATCH_NEXT + ldmda r3, {tmp2, tmp1} + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(aload_0,aload_1,aload_2,aload_3) { + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) { + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(fload_0,fload_1,fload_2,fload_3) { + rsb tmp1, r0, #opc_fload_0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(lload_0,dload_0) u8load_0 { + DISPATCH_START \seq_len + ldmda locals, {tmp2-tmp1} + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(lload_1,dload_1) u8load_1 { + DISPATCH_START \seq_len + ldmdb locals, {tmp2-tmp1} + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(lload_2,dload_2) u8load_2 { + DISPATCH_START \seq_len + ldr tmp2, [locals, #-12] + DISPATCH_NEXT + ldr tmp1, [locals, #-8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(lload_3,dload_3) u8load_3 { + DISPATCH_START \seq_len + ldr tmp2, [locals, #-16] + DISPATCH_NEXT + ldr tmp1, [locals, #-12] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(iaload,faload,aaload) u4aload { + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry5: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #2 + DISPATCH_NEXT + ldr tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(laload,daload) u8aload { + POP2 r2, r3 + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry6: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #3 + ldr tmp2, [r3, #16] + DISPATCH_NEXT + ldr tmp1, [r3, #20] + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(baload) baload { + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry7: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + ldrsb tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(caload) caload { + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry8: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + DISPATCH_NEXT + ldrh tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(saload) saload { + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry9: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + DISPATCH_NEXT + ldrsh tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(astore,istore,fstore) u4store { + DISPATCH_START \seq_len + rsb tmp1, r2, #0 + DISPATCH_NEXT + POP r3 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(lstore,dstore) u8store { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub r3, locals, r2, lsl #2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + stmda r3, {tmp2, tmp1} + DISPATCH_FINISH +} + +(astore_0,istore_0,fstore_0) u4store_0 { + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #0] + DISPATCH_FINISH +} + +(astore_1,istore_1,fstore_1) u4store_1 { + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-4] + DISPATCH_FINISH +} + +(astore_2,istore_2,fstore_2) u4store_2 { + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-8] + DISPATCH_FINISH +} + +(astore_3,istore_3,fstore_3) u4store_3 { + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-12] + DISPATCH_FINISH +} + +(lstore_0,dstore_0) u8store_0 { + DISPATCH_START \seq_len + DISPATCH_NEXT + POP2 tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + stmda locals, {tmp2, tmp1} + DISPATCH_FINISH +} + +(lstore_1,dstore_1) u8store_1 { + DISPATCH_START \seq_len + DISPATCH_NEXT + POP2 tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + stmdb locals, {tmp2, tmp1} + DISPATCH_FINISH +} + +(lstore_2,dstore_2) u8store_2 { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + str tmp2, [locals, #-12] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-8] + DISPATCH_FINISH +} + +(lstore_3,dstore_3) u8store_3 { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + str tmp2, [locals, #-16] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-12] + DISPATCH_FINISH +} + +(iastore,fastore) u4astore { + POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry10: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp tmp2, lr + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp1, tmp1, tmp2, lsl #2 + DISPATCH_NEXT + str r3, [tmp1, #12] + DISPATCH_FINISH +} + +(lastore,dastore) u8astore { + POP4 r2, r3, tmp2, tmp1 @ r2,r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry11: + ldr ip, [tmp1, #8] @ ip = limit + cmp tmp2, ip + DISPATCH_NEXT + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2, lsl #3 + str r2, [tmp2, #16] + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [tmp2, #20] + DISPATCH_FINISH +} + +(bastore) bastore { + POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry12: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp tmp2, lr + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp1, tmp1, tmp2 + DISPATCH_NEXT + strb r3, [tmp1, #12] + DISPATCH_FINISH +} + +(castore,sastore) u2astore { + POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry13: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp tmp2, lr + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp1, tmp1, tmp2, lsl #1 + DISPATCH_NEXT + strh r3, [tmp1, #12] + DISPATCH_FINISH +} + +(pop) jpop { + DISPATCH_START \seq_len + add stack, stack, #4 + DISPATCH_FINISH +} + +(pop2) jpop2 { + DISPATCH_START \seq_len + add stack, stack, #8 + DISPATCH_FINISH +} + +(dup) dup { + DISPATCH_START \seq_len + ldr lr, [stack, #4] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(dup_x1) dup_x1 { + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + PUSH r2 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(dup_x2) dup_x2 { + DISPATCH_START \seq_len + POP3 r2, r3, lr + DISPATCH_NEXT + PUSH r2 + DISPATCH_NEXT + PUSH3 r2, r3, lr + DISPATCH_FINISH +} + +(dup2) dup2 { + DISPATCH_START \seq_len + ldmib stack, {r2, r3} + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(dup2_x1) dup2_x1 { + DISPATCH_START \seq_len + POP3 r2, r3, lr + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_NEXT + PUSH3 r2, r3, lr + DISPATCH_FINISH +} + +(dup2_x2) dup2_x2 { + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + PUSH2 r2, r3 + PUSH4 r2, r3, tmp1, lr + DISPATCH_FINISH +} + +(swap) swap { + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + PUSH r2 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + + +(iadd) iadd { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + add tmp2, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(ladd) ladd { + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + adds r2, r2, tmp1 + adc r3, r3, lr + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(fadd) fadd { + POP2 r0, r1 + bl __aeabi_fadd + PUSH r0 + DISPATCH \seq_len +} + +(isub) isub { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(lsub) lsub { + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + subs r2, tmp1, r2 + sbc r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(fsub) fsub { + POP r1 + POP r0 + bl __aeabi_fsub + PUSH r0 + DISPATCH \seq_len +} + +(imul) imul { + DISPATCH_START \seq_len + POP2 r2, tmp1 + DISPATCH_NEXT + mul tmp2, r2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(lmul) lmul { + POP4 r2, tmp1, ip, lr + umull r3, r0, ip, r2 + mla tmp1, ip, tmp1, r0 + DISPATCH_START \seq_len + mla tmp1, lr, r2, tmp1 + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH +} + +(fmul) fmul { + POP2 r0, r1 + bl __aeabi_fmul + PUSH r0 + DISPATCH \seq_len +} + +(ldiv) ldiv { + POP2 r2, r3 + POP2 r0, r1 + orrs lr, r2, r3 + beq .ldiv_0 + bl __aeabi_ldivmod + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(fdiv) fdiv { + POP r1 + POP r0 + bl __aeabi_fdiv + PUSH r0 + DISPATCH \seq_len +} + +(ddiv) ddiv { + POP2 r2, r3 + POP2 r0, r1 + bl __aeabi_ddiv + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(lrem) lrem { + POP2 r2, r3 + POP2 r0, r1 + orrs lr, r2, r3 + beq .lrem_0 + bl __aeabi_ldivmod + PUSH2 r2, r3 + DISPATCH \seq_len +} + +(frem) frem { +@ ECN: It must be possible to do better than this + POP r0 + bl __aeabi_f2d + PUSH2 r0, r1 + GET_STACK 2, r0 + bl __aeabi_f2d + POP2 r2, r3 + bl fmod + bl __aeabi_d2f + PUT_STACK 0, r0 + DISPATCH \seq_len +} + +(drem) drem { + POP2 r2, r3 + POP2 r0, r1 + bl fmod + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(ineg) ineg { + DISPATCH_START \seq_len + POP tmp1 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(lneg) lneg { + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + rsbs r2, r2, #0 + rsc r3, r3, #0 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(fneg) fneg { + DISPATCH_START \seq_len + POP r2 + DISPATCH_NEXT + eor r2, r2, #0x80000000 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(dneg) dneg { + DISPATCH_START \seq_len + GET_STACK 1, r2 + DISPATCH_NEXT + eor r2, r2, #0x80000000 + DISPATCH_NEXT + PUT_STACK 1, r2 + DISPATCH_FINISH +} + +(ishl) ishl { + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + and r2, r2, #31 + mov r2, r3, lsl r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(lshl) lshl { + DISPATCH_START \seq_len + POP3 r2, r3, lr + DISPATCH_NEXT + tst r2, #32 + and r2, r2, #31 + movne tmp1, #0 + movne lr, r3, lsl r2 + moveq tmp1, r3, lsl r2 + moveq lr, lr, lsl r2 + rsbeq r2, r2, #32 + orreq lr, lr, r3, lsr r2 + PUSH2 tmp1, lr + DISPATCH_FINISH +} + +(ishr) ishr { + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + and r2, r2, #31 + mov r2, r3, asr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(lshr) lshr { + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + tst r2, #32 + and r2, r2, #31 + movne lr, tmp1, asr #31 + movne r3, tmp1, asr r2 + moveq lr, tmp1, asr r2 + moveq r3, r3, lsr r2 + rsbeq r2, r2, #32 + orreq r3, r3, tmp1, lsl r2 + PUSH2 r3, lr + DISPATCH_FINISH +} + +(iushr) iushr { + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + and r2, r2, #31 + mov r2, r3, lsr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(lushr) lushr { + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + tst r2, #32 + and r2, r2, #31 + movne lr, #0 + movne r3, tmp1, lsr r2 + moveq lr, tmp1, lsr r2 + moveq r3, r3, lsr r2 + rsbeq r2, r2, #32 + orreq r3, r3, tmp1, lsl r2 + PUSH2 r3, lr + DISPATCH_FINISH +} + +(iand) iand { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(land) land { + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + and r2, tmp1, r2 + and r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(ior) ior { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(lor) lor { + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + orr r2, tmp1, r2 + orr r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(ixor) ixor { + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(lxor) lxor { + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + eor r2, tmp1, r2 + eor r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iinc) iinc { + ldrsb lr, [jpc, #2] + DISPATCH_START \seq_len + rsb tmp1, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + add r3, r3, lr + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(i2l) i2l { + DISPATCH_START \seq_len + POP r2 + DISPATCH_NEXT + mov r3, r2, asr #31 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(i2f) i2f { + POP r0 + bl __aeabi_i2f + PUSH r0 + DISPATCH \seq_len +} + +(i2d) i2d { + POP r0 + bl __aeabi_i2d + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(l2i) l2i { + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + PUT_STACK 0, r3 + DISPATCH_FINISH +} + +(l2f) l2f { + POP2 r0, r1 + bl __aeabi_l2f + PUSH r0 + DISPATCH \seq_len +} + +(l2d) l2d { + POP2 r0, r1 + bl __aeabi_l2d + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(f2i) f2i { + POP r0 + bl _ZN13SharedRuntime3f2iEf + PUSH r0 + DISPATCH \seq_len +} + +(f2l) f2l { + POP r0 + bl _ZN13SharedRuntime3f2lEf + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(f2d) f2d { + POP r0 + bl __aeabi_f2d + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(d2i) d2i { + POP2 r0, r1 + bl _ZN13SharedRuntime3d2iEd + PUSH r0 + DISPATCH \seq_len +} + +(d2l) d2l { + POP2 r0, r1 + bl _ZN13SharedRuntime3d2lEd + PUSH2 r0, r1 + DISPATCH \seq_len +} + +(d2f) d2f { + POP2 r0, r1 + bl __aeabi_d2f + PUSH r0 + DISPATCH \seq_len +} + +(i2b) i2b { + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + mov r3, r3, asl #24 + mov r3, r3, asr #24 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(i2c) i2c { + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + mov r3, r3, asl #16 + mov r3, r3, lsr #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(i2s) i2s { + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + mov r3, r3, asl #16 + mov r3, r3, asr #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(lcmp) lcmp { + POP4 r2, r3, tmp1, lr + DISPATCH_START \seq_len + subs r2, tmp1, r2 + movne r2, #1 + sbcs lr, lr, r3 + DISPATCH_NEXT + movne r2, #1 + rsblt r2, r2, #0 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(fcmpl) fcmpl { + ldmib stack, {r0, r1} + bl __aeabi_fcmpgt + cmp r0, #0 + movne r3, #-1 + bne 3f + ldmib stack, {r0, r1} + bl __aeabi_fcmplt + cmp r0, #0 + movne r3, #1 + bne 3f + ldmib stack, {r0, r1} + bl __aeabi_fcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #-1 +3: + DISPATCH_START \seq_len + add stack, stack, #8 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(fcmpg) fcmpg { + ldmib stack, {r0, r1} + bl __aeabi_fcmpgt + cmp r0, #0 + movne r3, #-1 + bne 4f + ldmib stack, {r0, r1} + bl __aeabi_fcmplt + cmp r0, #0 + movne r3, #1 + bne 4f + ldmib stack, {r0, r1} + bl __aeabi_fcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #1 +4: + DISPATCH_START \seq_len + add stack, stack, #8 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(dcmpl) dcmpl { + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpgt + cmp r0, #0 + movne r3, #-1 + bne 5f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmplt + cmp r0, #0 + movne r3, #1 + bne 5f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #-1 +5: + DISPATCH_START \seq_len + add stack, stack, #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(dcmpg) dcmpg { + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpgt + cmp r0, #0 + movne r3, #-1 + bne 6f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmplt + cmp r0, #0 + movne r3, #1 + bne 6f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #1 +6: + DISPATCH_START \seq_len + add stack, stack, #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +# r1 = [jpc, #2] +(ifeq,ifnull) ifeq_unsafe { + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(ifne,ifnonnull) ifne_unsafe { + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iflt) iflt_unsafe { + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(ifge) ifge_unsafe { + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(ifgt) ifgt_unsafe { + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(ifle) ifle_unsafe { + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(if_icmpeq,if_acmpeq) if_icmpeq_unsafe { + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(if_icmpne,if_acmpne) if_icmpne_unsafe { + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(if_icmplt) if_icmplt_unsafe { + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(if_icmpge) if_icmpge_unsafe { + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(if_icmpgt) if_icmpgt_unsafe { + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(if_icmple) if_icmple_unsafe { + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(goto) goto_unsafe { + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 + DISPATCH_START_REG ip + DISPATCH_BYTECODE +} + +(jsr) jsr { + ldr r3, [istate, #ISTATE_METHOD] + ldr r1, [r3, #8] + rsb r2, r1, jpc + sub r2, r2, #45 + PUSH r2 + b do_goto_safe +} + +# r2 = [jpc, #1] +# r1 = [jpc, #2] +(ret) ret { + ldr r0, [istate, #ISTATE_METHOD] + ldr r3, [r0, #8] + ldr r1, [locals, -r2, lsl #2] + add jpc, r3, r1 + DISPATCH 48 +} + +# ECN: We dont do safe and unsafe versions of tableswitch and lookupswitch +(tableswitch) tableswitch { + POP a2 + bic a1, jpc, #3 + ldr a4,[a1,#8] +@ BYTESEX_REVERSE a3, a4, a3 + + eor a3, a4, a4, ror #16 + bic a3, a3, #0xff0000 + mov a4, a4, ror #8 + eor a3, a4, a3, lsr #8 + + ldr a4,[a1,#12] +@ BYTESEX_REVERSE a4, a4, ip + + eor ip, a4, a4, ror #16 + bic ip, ip, #0xff0000 + mov a4, a4, ror #8 + eor a4, a4, ip, lsr #8 + + sub a2,a2,a3 + sub a4,a4,a3 + cmp a4,a2 + ldrcc a1,[a1,#4] + addcs a1,a1,a2,LSL #2 + ldrcs a1,[a1,#16] +@ BYTESEX_REVERSE a1, a1, a4 + + eor a4, a1, a1, ror #16 + bic a4, a4, #0xff0000 + mov a1, a1, ror #8 + eors ip, a1, a4, lsr #8 + + DISPATCH_START_REG ip + DISPATCH_BYTECODE +} + +(lookupswitch) lookupswitch { + POP a2 + bic a1, jpc, #3 +@ BYTESEX_REVERSE a2, a2, ip + + eor ip, a2, a2, ror #16 + bic ip, ip, #0xff0000 + mov a2, a2, ror #8 + eor a2, a2, ip, lsr #8 + + ldr a3,[a1,#8] +@ BYTESEX_REVERSE a3, a3, ip + + eor ip, a3, a3, ror #16 + bic ip, ip, #0xff0000 + mov a3, a3, ror #8 + eor a3, a3, ip, lsr #8 + + subs a4,a3,#1 + bmi 1f + add a1, a1, #4 +0: + ldr a3,[a1,#8]! + cmp a3,a2 + beq 2f + subs a4,a4,#1 + bpl 0b +1: + bic a1, jpc, #3 +2: + ldr a2,[a1,#4] +@ BYTESEX_REVERSE a2, a2, ip + + eor ip, a2, a2, ror #16 + bic ip, ip, #0xff0000 + mov a2, a2, ror #8 + eors ip, a2, ip, lsr #8 + + DISPATCH_START_REG ip + DISPATCH_BYTECODE +} + +(igetfield) igetfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry78: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(bgetfield) bgetfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry79: + ldrsb tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(cgetfield) cgetfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry80: + ldrh tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(sgetfield) sgetfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry81: + ldrsh tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(lgetfield) lgetfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT +.abortentry82: + ldmia tmp2, {tmp2, tmp1} + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(iputfield) iputfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP2 r3, tmp1 @ r3 = value, tmp1 = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry83: + str r3, [tmp1, tmp2] + DISPATCH_FINISH +} + +(cputfield) cputfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP2 r3, tmp1 @ r3 = value, tmp1 = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry84: + strh r3, [tmp1, tmp2] + DISPATCH_FINISH +} + +(bputfield) bputfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP2 r3, tmp1 @ r3 = value, tmp1 = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry85: + strb r3, [tmp1, tmp2] + DISPATCH_FINISH +} + +(aputfield) aputfield { + GET_STACK 1, r0 @ r0 = object + add tmp2, constpool, r1, lsl #12 + POP r1 @ r1 = value + add tmp2, tmp2, r2, lsl #4 + ldr tmp2, [tmp2, #8] + cmp r0, #0 + beq null_ptr_exception + add r0, r0, tmp2 + 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 +} + +(lputfield) lputfield { + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP3 r3, tmp1, lr @ r3, tmp1 = value, lr = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + add tmp2, lr, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry86: + stm tmp2, {r3, tmp1} + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +# r1 = [jpc, #2] +(getstatic) getstatic { + DISPATCH_START \seq_len + add tmp2, constpool, r1, lsl #12 + ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + DISPATCH_NEXT + and r3, r3, #0x00ff0000 + cmp r3, #178 << 16 + bne resolve_getstatic + ldr r3, [tmp2, #4] + ldr r2, [tmp2, #12] + ldr lr, [tmp2, #8] + movs r2, r2, lsr #29 + bhi getstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 + bcs getstatic_h @ C = 1 => R2 = 1 + beq getstatic_sb @ Z = 1 => R2 = 0 + tst r2, #2 + bne getstatic_dw + b getstatic_sh +} + +# r2 = [jpc, #1] +# r1 = [jpc, #2] +(putstatic) putstatic { + DISPATCH_START \seq_len + add tmp2, constpool, r1, lsl #12 + ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + DISPATCH_NEXT + and r3, r3, #0xff000000 + cmp r3, #179 << 24 + bne resolve_putstatic + ldr r3, [tmp2, #4] @ r3 = object + ldr lr, [tmp2, #12] @ lr = tos_type + ldr r2, [tmp2, #8] @ r2 = offset + movs lr, lr, lsr #29 + bhi putstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 + bcs putstatic_h @ C = 1 => R2 = 1 + beq putstatic_sb @ Z = 1 => R2 = 0 + tst lr, #2 + bne putstatic_dw + b putstatic_sh +} + +(return) return_unsafe { + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + + cmp tmp1, tmp2 + bcc 1f +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] + + ldr istate, [istate, #ISTATE_SAVED_ISTATE] + add stack, r1, r0, lsl #2 + cmp istate, #0 + beq normal_return + + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + bl return_check_monitors + b 2b +} + +(ireturn,areturn,freturn) ireturn_unsafe { + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + + cmp tmp1, tmp2 + bcc 1f +2: + mov r3, #0 + + POP r1 @ pop result before we lose stack + + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + bl return_check_monitors + b 2b +} + +(lreturn,dreturn) lreturn_unsafe { + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + cmp tmp1, tmp2 + bcc 1f +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] + + ldr istate, [istate, #ISTATE_SAVED_ISTATE] + + POP2 r2, r3 + + add stack, r1, r0, lsl #2 + stmdb stack!, {r2, r3} + cmp istate, #0 + beq normal_return + + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + bl return_check_monitors + b 2b +} + +(ldc) ldc { + ldrb lr, [jpc, #1] + ldr r3, [istate, #ISTATE_METHOD] @ method + + DISPATCH_START \seq_len + + ldr r2, [r3, #12] @ constants + ldr r3, [r2, #8] + add r3, r3, #12 + ldrb r3, [r3, lr] + + DISPATCH_NEXT + + cmp r3, #JVM_CONSTANT_Integer + cmpne r3, #JVM_CONSTANT_Float + cmpne r3, #JVM_CONSTANT_String + bne 1f + + DISPATCH_NEXT + + add r3, r2, lr, lsl #2 + ldr lr, [r3, #32] + PUSH lr + DISPATCH_FINISH +1: + cmp r3, #JVM_CONSTANT_Class + bne 2f + add r0, r2, #32 + ldr r0, [r0, lr, lsl #2] + ldr r1, [r0, #60] + PUSH r1 + DISPATCH 0 +2: + sub jpc, jpc, #\seq_len + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + mov r1, #0 + bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb + ldr r0, [istate, #ISTATE_THREAD] @ thread + ldr stack, [istate, #ISTATE_STACK] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr r1, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + add constpool, constpool, #CONST_POOL_OFFSET + cmp r1, #0 + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + ldr r3, [r0, #THREAD_VM_RESULT] + mov r2, #0 + PUSH r3 + str r2, [r0, #THREAD_VM_RESULT] + DISPATCH \seq_len +} + +(ldc_w) ldc_w { + ldrb lr, [jpc, #1] + + ldr r3, [istate, #ISTATE_METHOD] @ method + ldrb ip, [jpc, #2] + ldr r2, [r3, #12] @ constants + + DISPATCH_START \seq_len + + ldr r3, [r2, #8] + orr lr, ip, lr, lsl #8 + add r3, r3, #12 + ldrb r3, [r3, lr] + + DISPATCH_NEXT + + cmp r3, #JVM_CONSTANT_Integer + cmpne r3, #JVM_CONSTANT_Float + cmpne r3, #JVM_CONSTANT_String + bne 1f + + DISPATCH_NEXT + + add r3, r2, lr, lsl #2 + ldr lr, [r3, #32] + PUSH lr + DISPATCH_FINISH +1: + cmp r3, #JVM_CONSTANT_Class + bne 2f + add r0, r2, #32 + ldr r0, [r0, lr, lsl #2] + ldr r1, [r0, #60] + PUSH r1 + DISPATCH 0 +2: + sub jpc, jpc, #\seq_len + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + mov r1, #1 + bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb + ldr r0, [istate, #ISTATE_THREAD] @ thread + ldr stack, [istate, #ISTATE_STACK] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr r1, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + add constpool, constpool, #CONST_POOL_OFFSET + cmp r1, #0 + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + ldr r3, [r0, #THREAD_VM_RESULT] + mov r2, #0 + PUSH r3 + str r2, [r0, #THREAD_VM_RESULT] + DISPATCH \seq_len +} + +(ldc2_w) ldc2_w { + ldrb r3, [jpc, #1] + + ldr tmp1, [istate, #ISTATE_METHOD] @ method + ldrb lr, [jpc, #2] + ldr r2, [tmp1, #12] @ constants + + DISPATCH_START \seq_len + + ldr tmp1, [r2, #8] + orr r3, lr, r3, lsl #8 + add tmp1, tmp1, #12 + ldrb tmp1, [tmp1, r3] + + DISPATCH_NEXT + + cmp tmp1, #JVM_CONSTANT_Long + cmpne tmp1, #JVM_CONSTANT_Double + bne vm_fatal_error + + DISPATCH_NEXT + add tmp1, r2, r3, lsl #2 + add tmp1, tmp1, #32 + ldmia tmp1, {r3, tmp1} + PUSH2 r3, tmp1 + DISPATCH_FINISH +} + +(iadd_u4store) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(isub_u4store) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(iand_u4store) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(ior_u4store) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(ixor_u4store) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(iadd_istore_N) { + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(isub_istore_N) { + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(iand_istore_N) { + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(ior_istore_N) { + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +(ixor_istore_N) { + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload_iconst_N) +{ + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + sub r3, r3, #opc_iconst_0 + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr tmp1, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp2, r2, #opc_iconst_0 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +# (aload_N)(getfield) +(iaccess_0,iaccess_1,iaccess_2,iaccess_3) +{ + ldrb r2, [jpc, #3] + rsb tmp1, r0, #opc_iaccess_0 + ldrb r3, [jpc, #2] + add tmp2, constpool, r2, lsl #12 + DISPATCH_START 4 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry87: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +############################################################################### +# ECN: Optimised bytecode pairs +############################################################################### + +# --- ECN: load; load --------------------------------------------------------- + +(aload_0,aload_1,aload_2,aload_3) +(aload_0,aload_1,aload_2,aload_3) +{ + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_aload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(aload_0,aload_1,aload_2,aload_3) +(iload_0,iload_1,iload_2,iload_3) +{ + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(aload_0,aload_1,aload_2,aload_3) +{ + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_aload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +# 7 cycles +(iload_0,iload_1,iload_2,iload_3) +(iload_0,iload_1,iload_2,iload_3) +{ + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +(aload_0,aload_1,aload_2,aload_3) +(iload,aload,fload) +{ + ldrb r3, [jpc, #2] + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(iload,aload,fload) +{ + ldrb r3, [jpc, #2] + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload) +(aload_0,aload_1,aload_2,aload_3) +{ + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_aload_0 + DISPATCH_NEXT + rsb tmp1, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + rsb tmp1, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(iload,aload,fload) { + ldrb tmp2, [jpc, #3] + rsb tmp1, r2, #0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH +} + +# --- ECN: load; store -------------------------------------------------------- + +(aload_0,aload_1,aload_2,aload_3) +(astore_0,astore_1,astore_2,astore_3) +{ + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_astore_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(istore_0,istore_1,istore_2,istore_3) +{ + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(aload_0,aload_1,aload_2,aload_3) +(astore,istore,fstore) +{ + ldrb tmp2, [jpc, #2] + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(astore,istore,fstore) +{ + ldrb tmp2, [jpc, #2] + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload) +(astore_0,astore_1,astore_2,astore_3) +{ + DISPATCH_START \seq_len + rsb tmp1, r1, #opc_astore_0 + DISPATCH_NEXT + rsb tmp2, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload) +(istore_0,istore_1,istore_2,istore_3) +{ + DISPATCH_START \seq_len + rsb tmp1, r1, #opc_istore_0 + DISPATCH_NEXT + rsb tmp2, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(astore,istore,fstore) { + ldrb tmp1, [jpc, #3] + rsb tmp2, r2, #0 + DISPATCH_START \seq_len + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +# --- ECN: load; const ------------------------------------------------------- + +(aload_0,aload_1,aload_2,aload_3) +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +{ + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + sub tmp2, r1, #opc_iconst_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +{ + add r0, r0, #opc_iload_0_iconst_N-opc_iload_0 + strb r0, [jpc] + b do_iload_0_iconst_N +} + +# r2 = [jpc, #1] +(iload,aload,fload) +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +{ + cmp r0, #opc_iload + DISPATCH_START \seq_len + sub r3, r1, #opc_iconst_0 + DISPATCH_NEXT + ldr tmp2, [locals, -r2, lsl #2] + DISPATCH_NEXT + beq 1f + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +1: + mov tmp1, #opc_iload_iconst_N + strb tmp1, [jpc, #-\seq_len]! + b do_iload_iconst_N +} + +(aload_0,aload_1,aload_2,aload_3) +(bipush) +{ + ldrsb r2, [jpc, #2] + rsb r3, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(bipush) +{ + ldrsb r2, [jpc, #2] + rsb r3, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(aload_0,aload_1,aload_2,aload_3) +(sipush) +{ + ldrsb r2, [jpc, #2] @ zero_extendqisi2 + ldrb lr, [jpc, #3] @ zero_extendqisi2 + rsb r3, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r2, lr, r2, asl #8 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(sipush) +{ + ldrsb r2, [jpc, #2] @ zero_extendqisi2 + ldrb lr, [jpc, #3] @ zero_extendqisi2 + rsb r3, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r2, lr, r2, asl #8 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(bipush) { + ldrsb r3, [jpc, #3] + DISPATCH_START \seq_len + ldr lr, [locals, -r2, lsl #2] + DISPATCH_NEXT + PUSH2 r3, lr + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(sipush) { + ldrsb r3, [jpc, #3] + ldrb lr, [jpc, #4] + DISPATCH_START \seq_len + ldr tmp1, [locals, -r2, lsl #2] + orr r3, lr, r3, asl #8 + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH +} + +# --- ECN: load; Xaload ------------------------------------------------------- + +(iload_0,iload_1,iload_2,iload_3) +(iaload,aaload,faload) +{ + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry19: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #2 + ldr lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(iaload,aaload,faload) { + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry20: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #2 + ldr lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(baload) +{ + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry21: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2 + ldrsb lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(caload) +{ + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry22: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(saload) +{ + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry23: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrsh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(baload) { + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry24: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2 + ldrsb lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(caload) { + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry25: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload,aload,fload)(saload) { + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry26: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrsh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +# --- ECN: load; Xastore ------------------------------------------------------- + +(iload_0,iload_1,iload_2,iload_3) +(iastore,fastore) +{ + POP2 r2, r3 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry27: + 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, #12] + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(bastore) +{ + POP2 r2, r3 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry28: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2 + strb tmp1, [r3, #12] + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(castore,sastore) +{ + POP2 r2, r3 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry29: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + strh tmp1, [r3, #12] + DISPATCH_FINISH +} + +(iload,aload,fload)(iastore,fastore) { + POP2 r3, tmp1 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry30: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp r3, lr + bcs array_bound_exception_jpc_1_r3 + DISPATCH_NEXT + add tmp1, tmp1, r3, lsl #2 + str r2, [tmp1, #12] + DISPATCH_FINISH +} + +(iload,aload,fload)(bastore) { + POP2 r3, tmp1 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry31: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp r3, lr + bcs array_bound_exception_jpc_1_r3 + DISPATCH_NEXT + add tmp1, tmp1, r3 + strb r2, [tmp1, #12] + DISPATCH_FINISH +} + +(iload,aload,fload)(castore,sastore) { + POP2 r3, tmp1 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry32: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp r3, lr + bcs array_bound_exception_jpc_1_r3 + DISPATCH_NEXT + add tmp1, tmp1, r3, lsl #1 + strh r2, [tmp1, #12] + DISPATCH_FINISH +} + +# --- ECN: load; dataop ------------------------------------------------------- + +(iload_0,iload_1,iload_2,iload_3) +(iadd) +{ + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + add tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iload,aload,fload)(iadd) { + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(isub) +{ + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + sub tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iload,aload,fload)(isub) { + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(imul) +{ + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mul r3, r2, lr + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(iload,aload,fload)(imul) { + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mul lr, r3, r2 + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(idiv) +{ + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + add jpc, jpc, #1 + POP r1 + b int_div +} + +(iload,aload,fload)(idiv) { + add jpc, jpc, #2 + POP r1 + ldr r0, [locals, -r2, lsl #2] + b int_div +} + +(iload_0,iload_1,iload_2,iload_3) +(irem) +{ + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + add jpc, jpc, #1 + POP r1 + b int_rem +} + +(iload,aload,fload)(irem) { + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + POP r1 + b int_rem +} + +(iload_0,iload_1,iload_2,iload_3) +(ineg) +{ + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + rsb lr, lr, #0 + PUSH lr + DISPATCH_FINISH +} + +(iload,aload,fload)(ineg) { + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + rsb r2, r2, #0 + PUSH r2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(ishl) +{ + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, r2, lsl lr + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload,aload,fload)(ishl) { + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r3, lsl r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(ishr) +{ + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, r2, asr lr + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload,aload,fload)(ishr) { + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r3, asr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(iushr) +{ + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, r2, lsr lr + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload,aload,fload)(iushr) { + ldrb r2, [jpc, #1] + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r3, lsr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(iand) +{ + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + and tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iload,aload,fload)(iand) { + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(ior) +{ + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + orr tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iload,aload,fload)(ior) { + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(ixor) +{ + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + eor tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iload,aload,fload)(ixor) { + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(i2c) +{ + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, lr, asl #16 + mov lr, lr, lsr #16 + PUSH lr + DISPATCH_FINISH +} + +(iload,aload,fload)(i2c) { + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r2, asl #16 + mov r2, r2, lsr #16 + PUSH r2 + DISPATCH_FINISH +} + +# --- ECN: 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 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(ifeq,ifnull) { + ldrsb r1, [jpc, #3] + 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 +} + +(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 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(ifne,ifnonnull) { + ldrsb r1, [jpc, #3] + 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 +} + +(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 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(iflt) { + ldrsb r1, [jpc, #3] + 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 +} + +(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 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(ifge) { + ldrsb r1, [jpc, #3] + 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 +} + +(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 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(ifgt) { + ldrsb r1, [jpc, #3] + 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 +} + +(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 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(ifle) { + ldrsb r1, [jpc, #3] + 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 +} + +(iload_0,iload_1,iload_2,iload_3) +(if_icmpeq,if_acmpeq) +{ + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(if_icmpeq,if_acmpeq) { + POP r3 + ldrsb r1, [jpc, #3] + 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 +} + +(iload_0,iload_1,iload_2,iload_3) +(if_icmpne,if_acmpne) +{ + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(if_icmpne,if_acmpne) { + POP r3 + ldrsb r1, [jpc, #3] + 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 +} + +(iload_0,iload_1,iload_2,iload_3) +(if_icmplt) +{ + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(if_icmplt) { + POP r3 + ldrsb r1, [jpc, #3] + 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 +} + +(iload_0,iload_1,iload_2,iload_3) +(if_icmpge) +{ + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(if_icmpge) { + POP r3 + ldrsb r1, [jpc, #3] + 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 +} + +(iload_0,iload_1,iload_2,iload_3) +(if_icmpgt) +{ + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(if_icmpgt) { + POP r3 + ldrsb r1, [jpc, #3] + 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 +} + +(iload_0,iload_1,iload_2,iload_3) +(if_icmple) +{ + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload,aload,fload)(if_icmple) { + POP r3 + ldrsb r1, [jpc, #3] + 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 +} + +# --- ECN: load; return/invoke ------------------------------------------------- + +(iload_0,iload_1,iload_2,iload_3) +(ireturn,areturn,freturn) +{ + rsb r0, r0, #opc_iload_0 + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr r1, [locals, r0, lsl #2] + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b +} + +(iload,aload,fload)(ireturn,areturn,freturn) { + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr r1, [locals, -r2, lsl #2] + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #2 + bl return_check_monitors + POP r1 + b 2b +} + +(iload_0,iload_1,iload_2,iload_3) +(invokeresolved) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved +} + +(aload_0,aload_1,aload_2,aload_3) +(invokeresolved) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved +} + +(iload,aload,fload)(invokeresolved) { + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved +} + +(iload_0,iload_1,iload_2,iload_3) +(invokevfinal) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal +} + +(aload_0,aload_1,aload_2,aload_3) +(invokevfinal) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal +} + +(iload,aload,fload)(invokevfinal) { + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal +} + +(iload_0,iload_1,iload_2,iload_3) +(invokespecialresolved) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved +} + +(aload_0,aload_1,aload_2,aload_3) +(invokespecialresolved) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved +} + +(iload,aload,fload)(invokespecialresolved) { + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved +} + +(iload_0,iload_1,iload_2,iload_3) +(invokestaticresolved) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved +} + +(aload_0,aload_1,aload_2,aload_3) +(invokestaticresolved) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved +} + +(iload,aload,fload)(invokestaticresolved) { + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved +} + +(iload_0,iload_1,iload_2,iload_3) +(invokeinterface) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + PUSH r0 + b do_invokeinterface +} + +(aload_0,aload_1,aload_2,aload_3) +(invokeinterface) +{ + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + PUSH r0 + b do_invokeinterface +} + +(iload,aload,fload)(invokeinterface) { + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + PUSH r0 + b do_invokeinterface +} + +(aload_0,aload_1,aload_2,aload_3) +(igetfield) +{ + add r0, r0, #opc_iaccess_0-opc_aload_0 + strb r0, [jpc] + DISPATCH_BYTECODE +} + +# 13 cycles +(iload,aload,fload)(igetfield) { + ldrb ip, [jpc, #4] + rsb tmp1, r2, #0 + ldrb r3, [jpc, #3] + add tmp2, constpool, ip, lsl #12 + DISPATCH_START 5 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry88: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +# --- ECN: iconst; store ------------------------------------------------- + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +(istore_0,istore_1,istore_2,istore_3) +{ + sub r3, r0, #opc_iconst_0 + DISPATCH_START \seq_len + rsb r2, r1, #opc_istore_0 + str r3, [locals, r2, lsl #2] + DISPATCH_BYTECODE +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(astore,istore,fstore) { + ldrb r2, [jpc, #2] + sub r3, r0, #opc_iconst_0 + DISPATCH_START \seq_len + str r3, [locals, -r2, lsl #2] + DISPATCH_BYTECODE +} + +# --- ECN: iconst; dataop ------------------------------------------------- + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(iadd) { + sub tmp1, r0, #opc_iconst_0 + DISPATCH_START \seq_len + POP tmp2 + DISPATCH_NEXT + add tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(isub) { + sub tmp1, r0, #opc_iconst_0 + DISPATCH_START \seq_len + POP tmp2 + DISPATCH_NEXT + sub tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(idiv) { + subs lr, r0, #opc_iconst_2 + DISPATCH_START \seq_len + POP tmp1 + DISPATCH_NEXT + beq 5f + bcc 3f + cmp lr, #(opc_iconst_4-opc_iconst_2) + beq 4f + bcc 2f +@ divide by 5 +1: + mvn lr, #0x198 @ Form 0x66666667 in lr + bic lr, lr, #0x9800 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + mov a3, tmp1, asr #31 + rsb tmp1, a3, a4, asr #1 + b 6f +@ divide by 3 +2: + mvn lr, #0xa9 @ Form 0x55555556 in lr + bic lr, lr, #0xaa00 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + sub tmp1, a4, tmp1, asr #31 + b 6f +3: + cmp lr, #(opc_iconst_0-opc_iconst_2) + beq .iconst_div_rem_0 + rsbcc tmp1, tmp1, #0 @ Divide by -1 or 1 + b 6f +@ divide by 4 +4: movs a4, tmp1 + addmi a4, a4, #3 + mov tmp1, a4, asr #2 + b 6f +@ divide by 2 +5: + add tmp1, tmp1, tmp1, lsr #31 + mov tmp1, tmp1, asr #1 +6: + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(ishl) { + sub tmp1, r0, #opc_iconst_0 + DISPATCH_START \seq_len + POP r2 + DISPATCH_NEXT + mov tmp1, r2, lsl tmp1 + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +# --- ECN: iconst; branch ------------------------------------------------- + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(if_icmpeq) { + 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 +} + +(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 +} + +(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 +} + +(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 +} + +(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 +} + +(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 +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(ireturn) { + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + sub r1, r0, #opc_iconst_0 + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(invokeresolved) { + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(invokevfinal) { + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(invokestaticresolved) { + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved +} + +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(invokespecialresolved) { + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved +} + +## --- Bytecode sequences iaload; xxx ----------------------------------------------- + +(iaload,faload,aaload)(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) { + sub r2, r1, #opc_iconst_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry38: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(bipush) { + ldrsb r2, [jpc, #2] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif +.abortentry39: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_3_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(sipush) { + ldrsb r2, [jpc, #2] + ldrb tmp1, [jpc, #3] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + orr r2, tmp1, r2, lsl #8 +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_4 +#endif +.abortentry40: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_4_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(iload,fload,aload) { + ldrb r2, [jpc, #2] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif +.abortentry41: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_3_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iaload,faload,aaload) +(iload_0,iload_1,iload_2,iload_3) +{ + rsb r2, r1, #opc_iload_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry42: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iaload,faload,aaload) +(aload_0,aload_1,aload_2,aload_3) +{ + rsb r2, r1, #opc_aload_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry42_1: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(iaload,faload,aaload) +{ + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry43: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + POP lr @ r2 = index, lr = arrayref + ldr r2, [r3, #12] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry44: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_1 + add lr, lr, r2, lsl #2 + ldr r2, [lr, #12] + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(astore,istore,fstore) { + ldrb r2, [jpc, #2] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif +.abortentry45: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_3_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + str r3, [locals, -r2, lsl #2] + DISPATCH_FINISH +} + +(iaload,faload,aaload) +(istore_0,istore_1,istore_2,istore_3) { + rsb r2, r1, #opc_istore_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry46: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + str r3, [locals, r2, lsl #2] + DISPATCH_FINISH +} + +(iaload,faload,aaload)(iastore,fastore) { + POP2 r3, lr @ r3 = index, lr = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry47: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr tmp1, [lr, #12] + + POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry48: + 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, #12] + DISPATCH_FINISH +} + +(iaload,faload,aaload)(bastore) { + POP2 r3, lr @ r3 = index, lr = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry49: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr tmp1, [lr, #12] + + POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry50: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2 + strb tmp1, [r3, #12] + DISPATCH_FINISH +} + +(iaload,faload,aaload)(castore,sastore) { + POP2 r3, lr @ r3 = index, lr = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry51: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr tmp1, [lr, #12] + + POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry52: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + strh tmp1, [r3, #12] + DISPATCH_FINISH +} + +(iaload,faload,aaload)(iand) { + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry58: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + ldr tmp1, [r3, #12] @ tmp1 = tos + POP r2 @ r2 = tosm1 + DISPATCH_NEXT + and tmp1, r2, tmp1 @ tosm1 tos + PUSH tmp1 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(ior) { + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry59: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + ldr tmp1, [r3, #12] @ tmp1 = tos + POP r2 @ r2 = tosm1 + DISPATCH_NEXT + orr tmp1, r2, tmp1 @ tosm1 tos + PUSH tmp1 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(ixor) { + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry60: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + ldr tmp1, [r3, #12] @ tmp1 = tos + POP r2 @ r2 = tosm1 + DISPATCH_NEXT + eor tmp1, r2, tmp1 @ tosm1 tos + PUSH tmp1 + DISPATCH_FINISH +} + +(iaload,faload,aaload)(ifeq,ifnull) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ r1 = tos + + 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 +} + +(iaload,faload,aaload)(ifne,ifnonnull) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 +} + +(iaload,faload,aaload)(iflt) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 +} + +(iaload,faload,aaload)(ifge) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 +} + +(iaload,faload,aaload)(ifgt) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 +} + +(iaload,faload,aaload)(ifle) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry66: + ldr r1, [r3, #8] @ r1 = length + cmp r2, r1 + bcs array_bound_exception_jpc_0 + add r3, r3, r2, lsl #2 + ldr r3, [r3, #12] @ 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 +} + +(iaload,faload,aaload)(if_icmpeq,if_acmpeq) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 +} + +(iaload,faload,aaload)(if_icmpne,if_acmpne) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 +} + +(iaload,faload,aaload)(if_icmplt) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iaload,faload,aaload)(if_icmpge) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iaload,faload,aaload)(if_icmpgt) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iaload,faload,aaload)(if_icmple) { + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry72: + ldr r1, [r3, #8] @ r1 = length + cmp r2, r1 + bcs array_bound_exception_jpc_0 + add r3, r3, r2, lsl #2 + ldr r2, [r3, #12] @ 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 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +# ---- iadd; xxx ------------------------------------------------------------ + +(iadd)(iload,fload,aload) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(iadd) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(iadd)(iaload,aaload,faload) { + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + add r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iadd)(istore) { + mov r0, #opc_iadd_u4store + strb r0, [jpc] + b do_iadd_u4store +} + +(iadd) +(istore_0,istore_1,istore_2,istore_3) { + mov r0, #opc_iadd_istore_N + strb r0, [jpc] + b do_iadd_istore_N +} + +(iadd)(iastore,fastore) { + POP2 r2, r3 + DISPATCH_START \seq_len + add tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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 + str tmp1, [r3, #12] + DISPATCH_FINISH +} + +(iadd)(iadd) { + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + add tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iadd)(isub) { + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + add tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iadd)(ifeq,ifnull) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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 + POP2 r2, r3 + add r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(iadd)(ireturn) { + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b +} + +(iadd)(iinc) { + POP2 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 + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(isub) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(isub)(iaload,aaload,faload) { + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + sub r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + 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) { + POP2 r2, r3 + DISPATCH_START \seq_len + sub tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_FINISH +} + +(isub)(iadd) { + DISPATCH_START \seq_len + POP3 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 + POP3 r2, r3, tmp1 + DISPATCH_NEXT + sub tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(isub)(ifeq,ifnull) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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 + POP2 r2, r3 + sub r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(isub)(ireturn) { + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b +} + +(isub)(iinc) { + POP2 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 + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(iand) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(iand)(iaload,aaload,faload) { + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + and r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + 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) { + POP2 r2, r3 + DISPATCH_START \seq_len + and tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_FINISH +} + +(iand)(iadd) { + DISPATCH_START \seq_len + POP3 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 + POP3 r2, r3, tmp1 + DISPATCH_NEXT + and tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iand)(ifeq,ifnull) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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 + POP2 r2, r3 + and r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(iand)(ireturn) { + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b +} + +(iand)(iinc) { + POP2 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 + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(ior) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(ior)(iaload,aaload,faload) { + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + orr r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + 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) { + POP2 r2, r3 + DISPATCH_START \seq_len + orr tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_FINISH +} + +(ior)(iadd) { + DISPATCH_START \seq_len + POP3 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 + POP3 r2, r3, tmp1 + DISPATCH_NEXT + orr tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(ior)(ifeq,ifnull) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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) { + POP3 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 + POP2 r2, r3 + orr r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(ior)(ireturn) { + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b +} + +(ior)(iinc) { + POP2 tmp1, lr + DISPATCH_START \seq_len + orr 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 +} + +# ---- ixor; xxx ------------------------------------------------------------ + +(ixor)(iload,fload,aload) { + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(ixor) +(iload_0,iload_1,iload_2,iload_3) +{ + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(ixor)(iaload,aaload,faload) { + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + eor r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(ixor)(istore) { + mov r0, #opc_ixor_u4store + strb r0, [jpc] + b do_ixor_u4store +} + +(ixor) +(istore_0,istore_1,istore_2,istore_3) { + mov r0, #opc_ixor_istore_N + strb r0, [jpc] + b do_ixor_istore_N +} + +(ixor)(iastore,fastore) { + POP2 r2, r3 + DISPATCH_START \seq_len + eor tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry109: + 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, #12] + DISPATCH_FINISH +} + +(ixor)(iadd) { + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + eor tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(ixor)(isub) { + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + eor tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(ixor)(ifeq,ifnull) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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) { + POP2 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 +} + +(ixor)(if_icmpeq,if_acmpeq) { + POP3 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)(if_icmpne,if_acmpne) { + POP3 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)(if_icmplt) { + POP3 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)(if_icmpge) { + POP3 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)(if_icmpgt) { + POP3 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)(if_icmple) { + POP3 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)(goto) { + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + add jpc, jpc, #1 + orr ip, ip, r1, lsl #8 + DISPATCH_START_REG ip + POP2 r2, r3 + eor r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH +} + +(ixor)(ireturn) { + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b +} + +(ixor)(iinc) { + POP2 tmp1, lr + DISPATCH_START \seq_len + eor 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 +} + +# --- iinc; xxx -------------------------------------------------------------- + +(iinc)(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) { + ldrsb tmp1, [jpc, #2] + sub lr, r1, #opc_iconst_0 + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + ldr r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + PUSH lr + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iinc)(iload,aload,fload) { + ldrb lr, [jpc, #4] + ldrsb tmp1, [jpc, #2] + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + ldr r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + rsb lr, lr, #0 + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + ldr tmp1, [locals, lr, lsl #2] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +(iinc) +(iload_0,iload_1,iload_2,iload_3) +{ + rsb lr, r1, #opc_iload_0 + ldrsb tmp1, [jpc, #2] + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + ldr r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + ldr tmp1, [locals, lr, lsl #2] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +################################################################################ +## ECN: Optimised bytecode triples +################################################################################ + +(iaccess_0,iaccess_1,iaccess_2,iaccess_3) +(iload,fload,aload) { + ldrb r2, [jpc, #3] + rsb tmp1, r0, #opc_iaccess_0 + ldrb r3, [jpc, #2] + add tmp2, constpool, r2, lsl #12 + DISPATCH_START 6 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 + ldrb r3, [jpc, #-1] + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_5 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + rsb r3, r3, #0 +.abortentry89: + ldr tmp2, [tmp1, tmp2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(iaccess_0,iaccess_1,iaccess_2,iaccess_3) +(iload_0,iload_1,iload_2,iload_3) { + ldrb r2, [jpc, #3] + rsb tmp1, r0, #opc_iaccess_0 + ldrb ip, [jpc, #2] + add tmp2, constpool, r2, lsl #12 + DISPATCH_START 5 + rsb r3, r1, #opc_iload_0 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, ip, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_4 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry90: + ldr tmp2, [tmp1, tmp2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +} + +(iaccess_0,iaccess_1,iaccess_2,iaccess_3) +(iadd) { + ldrb r2, [jpc, #3] + 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 +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_4 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + POP r3 +.abortentry91: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + add tmp2, tmp2, r3 + PUSH tmp2 + DISPATCH_FINISH +} + +(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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, ip, lsl #4 + ldrb ip, [jpc, #2] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + POP r3 + orr ip, ip, r0, lsl #8 +.abortentry103: + ldr tmp2, [tmp1, tmp2] + cmp r3, tmp2 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iadd) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(isub) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + sub r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iand) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + and r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ior) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + orr r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ixor) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + eor r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload_iconst_N) +(iadd) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + add r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload_iconst_N) +(isub) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + sub r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload_iconst_N) +(iand) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + and r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload_iconst_N) +(ior) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + orr r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +# r2 = [jpc, #1] +(iload_iconst_N) +(ixor) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + eor r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +# Former quads + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iadd_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(iadd_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iadd_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(iadd_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(isub_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(isub_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(isub_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(isub_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iand_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(iand_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iand_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(iand_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ior_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ior_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ior_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ior_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ixor_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ixor_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ixor_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ixor_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} diff -ruNE icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes.s icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes.s --- icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes.s 1970-01-01 01:00:00.000000000 +0100 +++ icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes.s 2009-08-13 14:24:44.000000000 +0100 @@ -0,0 +1,12797 @@ +#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_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_invokevfinal 0xe2 +#define opc_return_register_finalizer 0xe5 +#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_invokeresolved 0xec +#define opc_iadd_istore_N 0xed +#define opc_isub_istore_N 0xee +#define opc_iand_istore_N 0xef +#define opc_ior_istore_N 0xf0 +#define opc_ixor_istore_N 0xf1 +#define opc_iadd_u4store 0xf2 +#define opc_isub_u4store 0xf3 +#define opc_iand_u4store 0xf4 +#define opc_ior_u4store 0xf5 +#define opc_ixor_u4store 0xf6 +#define opc_invokespecialresolved 0xf7 +#define opc_invokestaticresolved 0xf8 + + at ----------------------------------------------------------------------------- + .macro nop jpc_off=0, seq_len=1 + DISPATCH \seq_len + .endm + + Opcode nop + nop + at ----------------------------------------------------------------------------- + .macro u4const_0 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + mov lr, #0 + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode u4const_0 + u4const_0 + at ----------------------------------------------------------------------------- + .macro iconst_N jpc_off=0, seq_len=1 + sub lr, r0, #opc_iconst_0 + DISPATCH_START \seq_len + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iconst_N + iconst_N + at ----------------------------------------------------------------------------- + .macro u8const_0 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + mov tmp1, #0 + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode u8const_0 + u8const_0 + at ----------------------------------------------------------------------------- + .macro lconst_1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + mov tmp2, #1 + DISPATCH_NEXT + mov tmp1, #0 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode lconst_1 + lconst_1 + at ----------------------------------------------------------------------------- + .macro fconst_1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + mov tmp1, #0x3f800000 + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode fconst_1 + fconst_1 + at ----------------------------------------------------------------------------- + .macro fconst_2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + mov r2, #0x40000000 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode fconst_2 + fconst_2 + at ----------------------------------------------------------------------------- + .macro dconst_1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + mov tmp1, #0x3f000000 + DISPATCH_NEXT + orr tmp1, tmp1, #0x00f00000 + DISPATCH_NEXT + mov tmp2, #0 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode dconst_1 + dconst_1 + at ----------------------------------------------------------------------------- + .macro bipush jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + mov tmp1, r2, lsl #24 + DISPATCH_NEXT + mov tmp1, tmp1, asr #24 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode bipush + bipush + at ----------------------------------------------------------------------------- + .macro sipush jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + mov tmp1, r1 + DISPATCH_NEXT + mov r2, r2, lsl #24 + DISPATCH_NEXT + orr tmp1, tmp1, r2, asr #16 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode sipush + sipush + at ----------------------------------------------------------------------------- + .macro u4load jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + rsb tmp1, r2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode u4load + u4load + at ----------------------------------------------------------------------------- + .macro u8load jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + sub r3, locals, r2, lsl #2 + DISPATCH_NEXT + ldmda r3, {tmp2, tmp1} + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode u8load + u8load + at ----------------------------------------------------------------------------- + .macro aload_0 jpc_off=0, seq_len=1 + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode aload_0 + aload_0 + at ----------------------------------------------------------------------------- + .macro iload_0 jpc_off=0, seq_len=1 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0 + iload_0 + at ----------------------------------------------------------------------------- + .macro fload_0 jpc_off=0, seq_len=1 + rsb tmp1, r0, #opc_fload_0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode fload_0 + fload_0 + at ----------------------------------------------------------------------------- + .macro u8load_0 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + ldmda locals, {tmp2-tmp1} + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode u8load_0 + u8load_0 + at ----------------------------------------------------------------------------- + .macro u8load_1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + ldmdb locals, {tmp2-tmp1} + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode u8load_1 + u8load_1 + at ----------------------------------------------------------------------------- + .macro u8load_2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + ldr tmp2, [locals, #-12] + DISPATCH_NEXT + ldr tmp1, [locals, #-8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode u8load_2 + u8load_2 + at ----------------------------------------------------------------------------- + .macro u8load_3 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + ldr tmp2, [locals, #-16] + DISPATCH_NEXT + ldr tmp1, [locals, #-12] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode u8load_3 + u8load_3 + at ----------------------------------------------------------------------------- + .macro u4aload jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry5: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #2 + DISPATCH_NEXT + ldr tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode u4aload + u4aload + at ----------------------------------------------------------------------------- + .macro u8aload jpc_off=0, seq_len=1 + POP2 r2, r3 + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry6: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #3 + ldr tmp2, [r3, #16] + DISPATCH_NEXT + ldr tmp1, [r3, #20] + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode u8aload + u8aload + at ----------------------------------------------------------------------------- + .macro baload jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry7: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + ldrsb tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode baload + baload + at ----------------------------------------------------------------------------- + .macro caload jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry8: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + DISPATCH_NEXT + ldrh tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode caload + caload + at ----------------------------------------------------------------------------- + .macro saload jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry9: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + DISPATCH_NEXT + ldrsh tmp1, [r3, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode saload + saload + at ----------------------------------------------------------------------------- + .macro u4store jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + rsb tmp1, r2, #0 + DISPATCH_NEXT + POP r3 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode u4store + u4store + at ----------------------------------------------------------------------------- + .macro u8store jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub r3, locals, r2, lsl #2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + stmda r3, {tmp2, tmp1} + DISPATCH_FINISH + .endm + + Opcode u8store + u8store + at ----------------------------------------------------------------------------- + .macro u4store_0 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #0] + DISPATCH_FINISH + .endm + + Opcode u4store_0 + u4store_0 + at ----------------------------------------------------------------------------- + .macro u4store_1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-4] + DISPATCH_FINISH + .endm + + Opcode u4store_1 + u4store_1 + at ----------------------------------------------------------------------------- + .macro u4store_2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-8] + DISPATCH_FINISH + .endm + + Opcode u4store_2 + u4store_2 + at ----------------------------------------------------------------------------- + .macro u4store_3 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + DISPATCH_NEXT + POP tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-12] + DISPATCH_FINISH + .endm + + Opcode u4store_3 + u4store_3 + at ----------------------------------------------------------------------------- + .macro u8store_0 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + DISPATCH_NEXT + POP2 tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + stmda locals, {tmp2, tmp1} + DISPATCH_FINISH + .endm + + Opcode u8store_0 + u8store_0 + at ----------------------------------------------------------------------------- + .macro u8store_1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + DISPATCH_NEXT + POP2 tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + stmdb locals, {tmp2, tmp1} + DISPATCH_FINISH + .endm + + Opcode u8store_1 + u8store_1 + at ----------------------------------------------------------------------------- + .macro u8store_2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + str tmp2, [locals, #-12] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-8] + DISPATCH_FINISH + .endm + + Opcode u8store_2 + u8store_2 + at ----------------------------------------------------------------------------- + .macro u8store_3 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + str tmp2, [locals, #-16] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, #-12] + DISPATCH_FINISH + .endm + + Opcode u8store_3 + u8store_3 + at ----------------------------------------------------------------------------- + .macro u4astore jpc_off=0, seq_len=1 + POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry10: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp tmp2, lr + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp1, tmp1, tmp2, lsl #2 + DISPATCH_NEXT + str r3, [tmp1, #12] + DISPATCH_FINISH + .endm + + Opcode u4astore + u4astore + at ----------------------------------------------------------------------------- + .macro u8astore jpc_off=0, seq_len=1 + POP4 r2, r3, tmp2, tmp1 @ r2,r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry11: + ldr ip, [tmp1, #8] @ ip = limit + cmp tmp2, ip + DISPATCH_NEXT + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2, lsl #3 + str r2, [tmp2, #16] + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [tmp2, #20] + DISPATCH_FINISH + .endm + + Opcode u8astore + u8astore + at ----------------------------------------------------------------------------- + .macro bastore jpc_off=0, seq_len=1 + POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry12: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp tmp2, lr + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp1, tmp1, tmp2 + DISPATCH_NEXT + strb r3, [tmp1, #12] + DISPATCH_FINISH + .endm + + Opcode bastore + bastore + at ----------------------------------------------------------------------------- + .macro u2astore jpc_off=0, seq_len=1 + POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry13: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp tmp2, lr + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp1, tmp1, tmp2, lsl #1 + DISPATCH_NEXT + strh r3, [tmp1, #12] + DISPATCH_FINISH + .endm + + Opcode u2astore + u2astore + at ----------------------------------------------------------------------------- + .macro jpop jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + add stack, stack, #4 + DISPATCH_FINISH + .endm + + Opcode jpop + jpop + at ----------------------------------------------------------------------------- + .macro jpop2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + add stack, stack, #8 + DISPATCH_FINISH + .endm + + Opcode jpop2 + jpop2 + at ----------------------------------------------------------------------------- + .macro dup jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + ldr lr, [stack, #4] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode dup + dup + at ----------------------------------------------------------------------------- + .macro dup_x1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + PUSH r2 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode dup_x1 + dup_x1 + at ----------------------------------------------------------------------------- + .macro dup_x2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP3 r2, r3, lr + DISPATCH_NEXT + PUSH r2 + DISPATCH_NEXT + PUSH3 r2, r3, lr + DISPATCH_FINISH + .endm + + Opcode dup_x2 + dup_x2 + at ----------------------------------------------------------------------------- + .macro dup2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + ldmib stack, {r2, r3} + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode dup2 + dup2 + at ----------------------------------------------------------------------------- + .macro dup2_x1 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP3 r2, r3, lr + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_NEXT + PUSH3 r2, r3, lr + DISPATCH_FINISH + .endm + + Opcode dup2_x1 + dup2_x1 + at ----------------------------------------------------------------------------- + .macro dup2_x2 jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + PUSH2 r2, r3 + PUSH4 r2, r3, tmp1, lr + DISPATCH_FINISH + .endm + + Opcode dup2_x2 + dup2_x2 + at ----------------------------------------------------------------------------- + .macro swap jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + PUSH r2 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode swap + swap + at ----------------------------------------------------------------------------- + .macro iadd jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + add tmp2, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iadd + iadd + at ----------------------------------------------------------------------------- + .macro ladd jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + adds r2, r2, tmp1 + adc r3, r3, lr + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode ladd + ladd + at ----------------------------------------------------------------------------- + .macro fadd jpc_off=0, seq_len=1 + POP2 r0, r1 + bl __aeabi_fadd + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode fadd + fadd + at ----------------------------------------------------------------------------- + .macro isub jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode isub + isub + at ----------------------------------------------------------------------------- + .macro lsub jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + subs r2, tmp1, r2 + sbc r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode lsub + lsub + at ----------------------------------------------------------------------------- + .macro fsub jpc_off=0, seq_len=1 + POP r1 + POP r0 + bl __aeabi_fsub + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode fsub + fsub + at ----------------------------------------------------------------------------- + .macro imul jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 r2, tmp1 + DISPATCH_NEXT + mul tmp2, r2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode imul + imul + at ----------------------------------------------------------------------------- + .macro lmul jpc_off=0, seq_len=1 + POP4 r2, tmp1, ip, lr + umull r3, r0, ip, r2 + mla tmp1, ip, tmp1, r0 + DISPATCH_START \seq_len + mla tmp1, lr, r2, tmp1 + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH + .endm + + Opcode lmul + lmul + at ----------------------------------------------------------------------------- + .macro fmul jpc_off=0, seq_len=1 + POP2 r0, r1 + bl __aeabi_fmul + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode fmul + fmul + at ----------------------------------------------------------------------------- + .macro ldiv jpc_off=0, seq_len=1 + POP2 r2, r3 + POP2 r0, r1 + orrs lr, r2, r3 + beq .ldiv_0 + bl __aeabi_ldivmod + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode ldiv + ldiv + at ----------------------------------------------------------------------------- + .macro fdiv jpc_off=0, seq_len=1 + POP r1 + POP r0 + bl __aeabi_fdiv + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode fdiv + fdiv + at ----------------------------------------------------------------------------- + .macro ddiv jpc_off=0, seq_len=1 + POP2 r2, r3 + POP2 r0, r1 + bl __aeabi_ddiv + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode ddiv + ddiv + at ----------------------------------------------------------------------------- + .macro lrem jpc_off=0, seq_len=1 + POP2 r2, r3 + POP2 r0, r1 + orrs lr, r2, r3 + beq .lrem_0 + bl __aeabi_ldivmod + PUSH2 r2, r3 + DISPATCH \seq_len + .endm + + Opcode lrem + lrem + at ----------------------------------------------------------------------------- + .macro frem jpc_off=0, seq_len=1 +@ ECN: It must be possible to do better than this + POP r0 + bl __aeabi_f2d + PUSH2 r0, r1 + GET_STACK 2, r0 + bl __aeabi_f2d + POP2 r2, r3 + bl fmod + bl __aeabi_d2f + PUT_STACK 0, r0 + DISPATCH \seq_len + .endm + + Opcode frem + frem + at ----------------------------------------------------------------------------- + .macro drem jpc_off=0, seq_len=1 + POP2 r2, r3 + POP2 r0, r1 + bl fmod + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode drem + drem + at ----------------------------------------------------------------------------- + .macro ineg jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP tmp1 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode ineg + ineg + at ----------------------------------------------------------------------------- + .macro lneg jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + rsbs r2, r2, #0 + rsc r3, r3, #0 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode lneg + lneg + at ----------------------------------------------------------------------------- + .macro fneg jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP r2 + DISPATCH_NEXT + eor r2, r2, #0x80000000 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode fneg + fneg + at ----------------------------------------------------------------------------- + .macro dneg jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + GET_STACK 1, r2 + DISPATCH_NEXT + eor r2, r2, #0x80000000 + DISPATCH_NEXT + PUT_STACK 1, r2 + DISPATCH_FINISH + .endm + + Opcode dneg + dneg + at ----------------------------------------------------------------------------- + .macro ishl jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + and r2, r2, #31 + mov r2, r3, lsl r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode ishl + ishl + at ----------------------------------------------------------------------------- + .macro lshl jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP3 r2, r3, lr + DISPATCH_NEXT + tst r2, #32 + and r2, r2, #31 + movne tmp1, #0 + movne lr, r3, lsl r2 + moveq tmp1, r3, lsl r2 + moveq lr, lr, lsl r2 + rsbeq r2, r2, #32 + orreq lr, lr, r3, lsr r2 + PUSH2 tmp1, lr + DISPATCH_FINISH + .endm + + Opcode lshl + lshl + at ----------------------------------------------------------------------------- + .macro ishr jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + and r2, r2, #31 + mov r2, r3, asr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode ishr + ishr + at ----------------------------------------------------------------------------- + .macro lshr jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + tst r2, #32 + and r2, r2, #31 + movne lr, tmp1, asr #31 + movne r3, tmp1, asr r2 + moveq lr, tmp1, asr r2 + moveq r3, r3, lsr r2 + rsbeq r2, r2, #32 + orreq r3, r3, tmp1, lsl r2 + PUSH2 r3, lr + DISPATCH_FINISH + .endm + + Opcode lshr + lshr + at ----------------------------------------------------------------------------- + .macro iushr jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 r2, r3 + DISPATCH_NEXT + and r2, r2, #31 + mov r2, r3, lsr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iushr + iushr + at ----------------------------------------------------------------------------- + .macro lushr jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + tst r2, #32 + and r2, r2, #31 + movne lr, #0 + movne r3, tmp1, lsr r2 + moveq lr, tmp1, lsr r2 + moveq r3, r3, lsr r2 + rsbeq r2, r2, #32 + orreq r3, r3, tmp1, lsl r2 + PUSH2 r3, lr + DISPATCH_FINISH + .endm + + Opcode lushr + lushr + at ----------------------------------------------------------------------------- + .macro iand jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iand + iand + at ----------------------------------------------------------------------------- + .macro land jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + and r2, tmp1, r2 + and r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode land + land + at ----------------------------------------------------------------------------- + .macro ior jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode ior + ior + at ----------------------------------------------------------------------------- + .macro lor jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + orr r2, tmp1, r2 + orr r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode lor + lor + at ----------------------------------------------------------------------------- + .macro ixor jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode ixor + ixor + at ----------------------------------------------------------------------------- + .macro lxor jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP4 r2, r3, tmp1, lr + DISPATCH_NEXT + eor r2, tmp1, r2 + eor r3, lr, r3 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode lxor + lxor + at ----------------------------------------------------------------------------- + .macro iinc jpc_off=0, seq_len=3 + ldrsb lr, [jpc, #2] + DISPATCH_START \seq_len + rsb tmp1, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + add r3, r3, lr + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iinc + iinc + at ----------------------------------------------------------------------------- + .macro i2l jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP r2 + DISPATCH_NEXT + mov r3, r2, asr #31 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode i2l + i2l + at ----------------------------------------------------------------------------- + .macro i2f jpc_off=0, seq_len=1 + POP r0 + bl __aeabi_i2f + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode i2f + i2f + at ----------------------------------------------------------------------------- + .macro i2d jpc_off=0, seq_len=1 + POP r0 + bl __aeabi_i2d + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode i2d + i2d + at ----------------------------------------------------------------------------- + .macro l2i jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + PUT_STACK 0, r3 + DISPATCH_FINISH + .endm + + Opcode l2i + l2i + at ----------------------------------------------------------------------------- + .macro l2f jpc_off=0, seq_len=1 + POP2 r0, r1 + bl __aeabi_l2f + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode l2f + l2f + at ----------------------------------------------------------------------------- + .macro l2d jpc_off=0, seq_len=1 + POP2 r0, r1 + bl __aeabi_l2d + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode l2d + l2d + at ----------------------------------------------------------------------------- + .macro f2i jpc_off=0, seq_len=1 + POP r0 + bl _ZN13SharedRuntime3f2iEf + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode f2i + f2i + at ----------------------------------------------------------------------------- + .macro f2l jpc_off=0, seq_len=1 + POP r0 + bl _ZN13SharedRuntime3f2lEf + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode f2l + f2l + at ----------------------------------------------------------------------------- + .macro f2d jpc_off=0, seq_len=1 + POP r0 + bl __aeabi_f2d + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode f2d + f2d + at ----------------------------------------------------------------------------- + .macro d2i jpc_off=0, seq_len=1 + POP2 r0, r1 + bl _ZN13SharedRuntime3d2iEd + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode d2i + d2i + at ----------------------------------------------------------------------------- + .macro d2l jpc_off=0, seq_len=1 + POP2 r0, r1 + bl _ZN13SharedRuntime3d2lEd + PUSH2 r0, r1 + DISPATCH \seq_len + .endm + + Opcode d2l + d2l + at ----------------------------------------------------------------------------- + .macro d2f jpc_off=0, seq_len=1 + POP2 r0, r1 + bl __aeabi_d2f + PUSH r0 + DISPATCH \seq_len + .endm + + Opcode d2f + d2f + at ----------------------------------------------------------------------------- + .macro i2b jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + mov r3, r3, asl #24 + mov r3, r3, asr #24 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode i2b + i2b + at ----------------------------------------------------------------------------- + .macro i2c jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + mov r3, r3, asl #16 + mov r3, r3, lsr #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode i2c + i2c + at ----------------------------------------------------------------------------- + .macro i2s jpc_off=0, seq_len=1 + DISPATCH_START \seq_len + POP r3 + DISPATCH_NEXT + mov r3, r3, asl #16 + mov r3, r3, asr #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode i2s + i2s + at ----------------------------------------------------------------------------- + .macro lcmp jpc_off=0, seq_len=1 + POP4 r2, r3, tmp1, lr + DISPATCH_START \seq_len + subs r2, tmp1, r2 + movne r2, #1 + sbcs lr, lr, r3 + DISPATCH_NEXT + movne r2, #1 + rsblt r2, r2, #0 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode lcmp + lcmp + at ----------------------------------------------------------------------------- + .macro fcmpl jpc_off=0, seq_len=1 + ldmib stack, {r0, r1} + bl __aeabi_fcmpgt + cmp r0, #0 + movne r3, #-1 + bne 3f + ldmib stack, {r0, r1} + bl __aeabi_fcmplt + cmp r0, #0 + movne r3, #1 + bne 3f + ldmib stack, {r0, r1} + bl __aeabi_fcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #-1 +3: + DISPATCH_START \seq_len + add stack, stack, #8 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode fcmpl + fcmpl + at ----------------------------------------------------------------------------- + .macro fcmpg jpc_off=0, seq_len=1 + ldmib stack, {r0, r1} + bl __aeabi_fcmpgt + cmp r0, #0 + movne r3, #-1 + bne 4f + ldmib stack, {r0, r1} + bl __aeabi_fcmplt + cmp r0, #0 + movne r3, #1 + bne 4f + ldmib stack, {r0, r1} + bl __aeabi_fcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #1 +4: + DISPATCH_START \seq_len + add stack, stack, #8 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode fcmpg + fcmpg + at ----------------------------------------------------------------------------- + .macro dcmpl jpc_off=0, seq_len=1 + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpgt + cmp r0, #0 + movne r3, #-1 + bne 5f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmplt + cmp r0, #0 + movne r3, #1 + bne 5f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #-1 +5: + DISPATCH_START \seq_len + add stack, stack, #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode dcmpl + dcmpl + at ----------------------------------------------------------------------------- + .macro dcmpg jpc_off=0, seq_len=1 + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpgt + cmp r0, #0 + movne r3, #-1 + bne 6f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmplt + cmp r0, #0 + movne r3, #1 + bne 6f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #1 +6: + DISPATCH_START \seq_len + add stack, stack, #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode dcmpg + dcmpg + at ----------------------------------------------------------------------------- + .macro ifeq_unsafe jpc_off=0, seq_len=0 + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode ifeq_unsafe + ifeq_unsafe + at ----------------------------------------------------------------------------- + .macro ifne_unsafe jpc_off=0, seq_len=0 + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode ifne_unsafe + ifne_unsafe + at ----------------------------------------------------------------------------- + .macro iflt_unsafe jpc_off=0, seq_len=0 + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iflt_unsafe + iflt_unsafe + at ----------------------------------------------------------------------------- + .macro ifge_unsafe jpc_off=0, seq_len=0 + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode ifge_unsafe + ifge_unsafe + at ----------------------------------------------------------------------------- + .macro ifgt_unsafe jpc_off=0, seq_len=0 + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode ifgt_unsafe + ifgt_unsafe + at ----------------------------------------------------------------------------- + .macro ifle_unsafe jpc_off=0, seq_len=0 + POP r3 + mov r2, r2, lsl #24 + cmp r3, #0 + orr ip, r1, r2, asr #16 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode ifle_unsafe + ifle_unsafe + at ----------------------------------------------------------------------------- + .macro if_icmpeq_unsafe jpc_off=0, seq_len=0 + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode if_icmpeq_unsafe + if_icmpeq_unsafe + at ----------------------------------------------------------------------------- + .macro if_icmpne_unsafe jpc_off=0, seq_len=0 + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode if_icmpne_unsafe + if_icmpne_unsafe + at ----------------------------------------------------------------------------- + .macro if_icmplt_unsafe jpc_off=0, seq_len=0 + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode if_icmplt_unsafe + if_icmplt_unsafe + at ----------------------------------------------------------------------------- + .macro if_icmpge_unsafe jpc_off=0, seq_len=0 + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode if_icmpge_unsafe + if_icmpge_unsafe + at ----------------------------------------------------------------------------- + .macro if_icmpgt_unsafe jpc_off=0, seq_len=0 + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode if_icmpgt_unsafe + if_icmpgt_unsafe + at ----------------------------------------------------------------------------- + .macro if_icmple_unsafe jpc_off=0, seq_len=0 + POP2 r3, tmp1 + mov r2, r2, lsl #24 + cmp tmp1, r3 + orr ip, r1, r2, asr #16 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode if_icmple_unsafe + if_icmple_unsafe + at ----------------------------------------------------------------------------- + .macro goto_unsafe jpc_off=0, seq_len=0 + mov r2, r2, lsl #24 + orr ip, r1, r2, asr #16 + DISPATCH_START_REG ip + DISPATCH_BYTECODE + .endm + + Opcode goto_unsafe + goto_unsafe + at ----------------------------------------------------------------------------- + .macro jsr jpc_off=0, seq_len=0 + ldr r3, [istate, #ISTATE_METHOD] + ldr r1, [r3, #8] + rsb r2, r1, jpc + sub r2, r2, #45 + PUSH r2 + b do_goto_safe + .endm + + Opcode jsr + jsr + at ----------------------------------------------------------------------------- + .macro ret jpc_off=0, seq_len=0 + ldr r0, [istate, #ISTATE_METHOD] + ldr r3, [r0, #8] + ldr r1, [locals, -r2, lsl #2] + add jpc, r3, r1 + DISPATCH 48 + .endm + + Opcode ret + ret + at ----------------------------------------------------------------------------- + .macro tableswitch jpc_off=0, seq_len=0 + POP a2 + bic a1, jpc, #3 + ldr a4,[a1,#8] +@ BYTESEX_REVERSE a3, a4, a3 + + eor a3, a4, a4, ror #16 + bic a3, a3, #0xff0000 + mov a4, a4, ror #8 + eor a3, a4, a3, lsr #8 + + ldr a4,[a1,#12] +@ BYTESEX_REVERSE a4, a4, ip + + eor ip, a4, a4, ror #16 + bic ip, ip, #0xff0000 + mov a4, a4, ror #8 + eor a4, a4, ip, lsr #8 + + sub a2,a2,a3 + sub a4,a4,a3 + cmp a4,a2 + ldrcc a1,[a1,#4] + addcs a1,a1,a2,LSL #2 + ldrcs a1,[a1,#16] +@ BYTESEX_REVERSE a1, a1, a4 + + eor a4, a1, a1, ror #16 + bic a4, a4, #0xff0000 + mov a1, a1, ror #8 + eors ip, a1, a4, lsr #8 + + DISPATCH_START_REG ip + DISPATCH_BYTECODE + .endm + + Opcode tableswitch + tableswitch + at ----------------------------------------------------------------------------- + .macro lookupswitch jpc_off=0, seq_len=0 + POP a2 + bic a1, jpc, #3 +@ BYTESEX_REVERSE a2, a2, ip + + eor ip, a2, a2, ror #16 + bic ip, ip, #0xff0000 + mov a2, a2, ror #8 + eor a2, a2, ip, lsr #8 + + ldr a3,[a1,#8] +@ BYTESEX_REVERSE a3, a3, ip + + eor ip, a3, a3, ror #16 + bic ip, ip, #0xff0000 + mov a3, a3, ror #8 + eor a3, a3, ip, lsr #8 + + subs a4,a3,#1 + bmi 1f + add a1, a1, #4 +0: + ldr a3,[a1,#8]! + cmp a3,a2 + beq 2f + subs a4,a4,#1 + bpl 0b +1: + bic a1, jpc, #3 +2: + ldr a2,[a1,#4] +@ BYTESEX_REVERSE a2, a2, ip + + eor ip, a2, a2, ror #16 + bic ip, ip, #0xff0000 + mov a2, a2, ror #8 + eors ip, a2, ip, lsr #8 + + DISPATCH_START_REG ip + DISPATCH_BYTECODE + .endm + + Opcode lookupswitch + lookupswitch + at ----------------------------------------------------------------------------- + .macro igetfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry78: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode igetfield + igetfield + at ----------------------------------------------------------------------------- + .macro bgetfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry79: + ldrsb tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode bgetfield + bgetfield + at ----------------------------------------------------------------------------- + .macro cgetfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry80: + ldrh tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode cgetfield + cgetfield + at ----------------------------------------------------------------------------- + .macro sgetfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry81: + ldrsh tmp2, [tmp1, tmp2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode sgetfield + sgetfield + at ----------------------------------------------------------------------------- + .macro lgetfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP tmp1 + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT +.abortentry82: + ldmia tmp2, {tmp2, tmp1} + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode lgetfield + lgetfield + at ----------------------------------------------------------------------------- + .macro iputfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP2 r3, tmp1 @ r3 = value, tmp1 = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry83: + str r3, [tmp1, tmp2] + DISPATCH_FINISH + .endm + + Opcode iputfield + iputfield + at ----------------------------------------------------------------------------- + .macro cputfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP2 r3, tmp1 @ r3 = value, tmp1 = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry84: + strh r3, [tmp1, tmp2] + DISPATCH_FINISH + .endm + + Opcode cputfield + cputfield + at ----------------------------------------------------------------------------- + .macro bputfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP2 r3, tmp1 @ r3 = value, tmp1 = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry85: + strb r3, [tmp1, tmp2] + DISPATCH_FINISH + .endm + + Opcode bputfield + bputfield + at ----------------------------------------------------------------------------- + .macro aputfield jpc_off=0, seq_len=3 + GET_STACK 1, r0 @ r0 = object + add tmp2, constpool, r1, lsl #12 + POP r1 @ r1 = value + add tmp2, tmp2, r2, lsl #4 + ldr tmp2, [tmp2, #8] + cmp r0, #0 + beq null_ptr_exception + add r0, r0, tmp2 + 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 + .endm + + Opcode aputfield + aputfield + at ----------------------------------------------------------------------------- + .macro lputfield jpc_off=0, seq_len=3 + DISPATCH_START 3 + add tmp2, constpool, r1, lsl #12 + POP3 r3, tmp1, lr @ r3, tmp1 = value, lr = object + add tmp2, tmp2, r2, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + add tmp2, lr, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT +.abortentry86: + stm tmp2, {r3, tmp1} + DISPATCH_FINISH + .endm + + Opcode lputfield + lputfield + at ----------------------------------------------------------------------------- + .macro getstatic jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + add tmp2, constpool, r1, lsl #12 + ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + DISPATCH_NEXT + and r3, r3, #0x00ff0000 + cmp r3, #178 << 16 + bne resolve_getstatic + ldr r3, [tmp2, #4] + ldr r2, [tmp2, #12] + ldr lr, [tmp2, #8] + movs r2, r2, lsr #29 + bhi getstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 + bcs getstatic_h @ C = 1 => R2 = 1 + beq getstatic_sb @ Z = 1 => R2 = 0 + tst r2, #2 + bne getstatic_dw + b getstatic_sh + .endm + + Opcode getstatic + getstatic + at ----------------------------------------------------------------------------- + .macro putstatic jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + add tmp2, constpool, r1, lsl #12 + ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + DISPATCH_NEXT + and r3, r3, #0xff000000 + cmp r3, #179 << 24 + bne resolve_putstatic + ldr r3, [tmp2, #4] @ r3 = object + ldr lr, [tmp2, #12] @ lr = tos_type + ldr r2, [tmp2, #8] @ r2 = offset + movs lr, lr, lsr #29 + bhi putstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 + bcs putstatic_h @ C = 1 => R2 = 1 + beq putstatic_sb @ Z = 1 => R2 = 0 + tst lr, #2 + bne putstatic_dw + b putstatic_sh + .endm + + Opcode putstatic + putstatic + at ----------------------------------------------------------------------------- + .macro return_unsafe jpc_off=0, seq_len=0 + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + + cmp tmp1, tmp2 + bcc 1f +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] + + ldr istate, [istate, #ISTATE_SAVED_ISTATE] + add stack, r1, r0, lsl #2 + cmp istate, #0 + beq normal_return + + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + bl return_check_monitors + b 2b + .endm + + Opcode return_unsafe + return_unsafe + at ----------------------------------------------------------------------------- + .macro ireturn_unsafe jpc_off=0, seq_len=0 + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + + cmp tmp1, tmp2 + bcc 1f +2: + mov r3, #0 + + POP r1 @ pop result before we lose stack + + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + bl return_check_monitors + b 2b + .endm + + Opcode ireturn_unsafe + ireturn_unsafe + at ----------------------------------------------------------------------------- + .macro lreturn_unsafe jpc_off=0, seq_len=0 + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + cmp tmp1, tmp2 + bcc 1f +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] + + ldr istate, [istate, #ISTATE_SAVED_ISTATE] + + POP2 r2, r3 + + add stack, r1, r0, lsl #2 + stmdb stack!, {r2, r3} + cmp istate, #0 + beq normal_return + + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + bl return_check_monitors + b 2b + .endm + + Opcode lreturn_unsafe + lreturn_unsafe + at ----------------------------------------------------------------------------- + .macro ldc jpc_off=0, seq_len=2 + ldrb lr, [jpc, #1] + ldr r3, [istate, #ISTATE_METHOD] @ method + + DISPATCH_START \seq_len + + ldr r2, [r3, #12] @ constants + ldr r3, [r2, #8] + add r3, r3, #12 + ldrb r3, [r3, lr] + + DISPATCH_NEXT + + cmp r3, #JVM_CONSTANT_Integer + cmpne r3, #JVM_CONSTANT_Float + cmpne r3, #JVM_CONSTANT_String + bne 1f + + DISPATCH_NEXT + + add r3, r2, lr, lsl #2 + ldr lr, [r3, #32] + PUSH lr + DISPATCH_FINISH +1: + cmp r3, #JVM_CONSTANT_Class + bne 2f + add r0, r2, #32 + ldr r0, [r0, lr, lsl #2] + ldr r1, [r0, #60] + PUSH r1 + DISPATCH 0 +2: + sub jpc, jpc, #\seq_len + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + mov r1, #0 + bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb + ldr r0, [istate, #ISTATE_THREAD] @ thread + ldr stack, [istate, #ISTATE_STACK] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr r1, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + add constpool, constpool, #CONST_POOL_OFFSET + cmp r1, #0 + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + ldr r3, [r0, #THREAD_VM_RESULT] + mov r2, #0 + PUSH r3 + str r2, [r0, #THREAD_VM_RESULT] + DISPATCH \seq_len + .endm + + Opcode ldc + ldc + at ----------------------------------------------------------------------------- + .macro ldc_w jpc_off=0, seq_len=3 + ldrb lr, [jpc, #1] + + ldr r3, [istate, #ISTATE_METHOD] @ method + ldrb ip, [jpc, #2] + ldr r2, [r3, #12] @ constants + + DISPATCH_START \seq_len + + ldr r3, [r2, #8] + orr lr, ip, lr, lsl #8 + add r3, r3, #12 + ldrb r3, [r3, lr] + + DISPATCH_NEXT + + cmp r3, #JVM_CONSTANT_Integer + cmpne r3, #JVM_CONSTANT_Float + cmpne r3, #JVM_CONSTANT_String + bne 1f + + DISPATCH_NEXT + + add r3, r2, lr, lsl #2 + ldr lr, [r3, #32] + PUSH lr + DISPATCH_FINISH +1: + cmp r3, #JVM_CONSTANT_Class + bne 2f + add r0, r2, #32 + ldr r0, [r0, lr, lsl #2] + ldr r1, [r0, #60] + PUSH r1 + DISPATCH 0 +2: + sub jpc, jpc, #\seq_len + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + mov r1, #1 + bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb + ldr r0, [istate, #ISTATE_THREAD] @ thread + ldr stack, [istate, #ISTATE_STACK] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr r1, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + add constpool, constpool, #CONST_POOL_OFFSET + cmp r1, #0 + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + ldr r3, [r0, #THREAD_VM_RESULT] + mov r2, #0 + PUSH r3 + str r2, [r0, #THREAD_VM_RESULT] + DISPATCH \seq_len + .endm + + Opcode ldc_w + ldc_w + at ----------------------------------------------------------------------------- + .macro ldc2_w jpc_off=0, seq_len=3 + ldrb r3, [jpc, #1] + + ldr tmp1, [istate, #ISTATE_METHOD] @ method + ldrb lr, [jpc, #2] + ldr r2, [tmp1, #12] @ constants + + DISPATCH_START \seq_len + + ldr tmp1, [r2, #8] + orr r3, lr, r3, lsl #8 + add tmp1, tmp1, #12 + ldrb tmp1, [tmp1, r3] + + DISPATCH_NEXT + + cmp tmp1, #JVM_CONSTANT_Long + cmpne tmp1, #JVM_CONSTANT_Double + bne vm_fatal_error + + DISPATCH_NEXT + add tmp1, r2, r3, lsl #2 + add tmp1, tmp1, #32 + ldmia tmp1, {r3, tmp1} + PUSH2 r3, tmp1 + DISPATCH_FINISH + .endm + + Opcode ldc2_w + ldc2_w + at ----------------------------------------------------------------------------- + .macro iadd_u4store jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iadd_u4store + iadd_u4store + at ----------------------------------------------------------------------------- + .macro isub_u4store jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode isub_u4store + isub_u4store + at ----------------------------------------------------------------------------- + .macro iand_u4store jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iand_u4store + iand_u4store + at ----------------------------------------------------------------------------- + .macro ior_u4store jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode ior_u4store + ior_u4store + at ----------------------------------------------------------------------------- + .macro ixor_u4store jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode ixor_u4store + ixor_u4store + at ----------------------------------------------------------------------------- + .macro iadd_istore_N jpc_off=0, seq_len=2 + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iadd_istore_N + iadd_istore_N + at ----------------------------------------------------------------------------- + .macro isub_istore_N jpc_off=0, seq_len=2 + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode isub_istore_N + isub_istore_N + at ----------------------------------------------------------------------------- + .macro iand_istore_N jpc_off=0, seq_len=2 + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iand_istore_N + iand_istore_N + at ----------------------------------------------------------------------------- + .macro ior_istore_N jpc_off=0, seq_len=2 + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode ior_istore_N + ior_istore_N + at ----------------------------------------------------------------------------- + .macro ixor_istore_N jpc_off=0, seq_len=2 + ldrb lr, [jpc, #1] + DISPATCH_START \seq_len + DISPATCH_NEXT + rsb r3, lr, #opc_istore_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, r3, lsl #2] + DISPATCH_FINISH + .endm + + Opcode ixor_istore_N + ixor_istore_N + at ----------------------------------------------------------------------------- + .macro iload_iconst_N jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + sub r3, r3, #opc_iconst_0 + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N + iload_iconst_N + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N jpc_off=0, seq_len=2 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr tmp1, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp2, r2, #opc_iconst_0 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N + iload_0_iconst_N + at ----------------------------------------------------------------------------- + .macro iaccess_0 jpc_off=0, seq_len=4 + ldrb r2, [jpc, #3] + rsb tmp1, r0, #opc_iaccess_0 + ldrb r3, [jpc, #2] + add tmp2, constpool, r2, lsl #12 + DISPATCH_START 4 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry87: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iaccess_0 + iaccess_0 + at ----------------------------------------------------------------------------- + .macro aload_0_aload_0 jpc_off=0, seq_len=2 + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_aload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode aload_0_aload_0 + aload_0_aload_0 + at ----------------------------------------------------------------------------- + .macro aload_0_iload_0 jpc_off=0, seq_len=2 + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode aload_0_iload_0 + aload_0_iload_0 + at ----------------------------------------------------------------------------- + .macro iload_0_aload_0 jpc_off=0, seq_len=2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_aload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_aload_0 + iload_0_aload_0 + at ----------------------------------------------------------------------------- + .macro iload_0_iload_0 jpc_off=0, seq_len=2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_iload_0 + iload_0_iload_0 + at ----------------------------------------------------------------------------- + .macro aload_0_iload jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH + .endm + + Opcode aload_0_iload + aload_0_iload + at ----------------------------------------------------------------------------- + .macro iload_0_iload jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_iload + iload_0_iload + at ----------------------------------------------------------------------------- + .macro iload_aload_0 jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_aload_0 + DISPATCH_NEXT + rsb tmp1, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_aload_0 + iload_aload_0 + at ----------------------------------------------------------------------------- + .macro iload_iload_0 jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + rsb tmp1, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_iload_0 + iload_iload_0 + at ----------------------------------------------------------------------------- + .macro iload_iload jpc_off=0, seq_len=4 + ldrb tmp2, [jpc, #3] + rsb tmp1, r2, #0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 tmp2, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_iload + iload_iload + at ----------------------------------------------------------------------------- + .macro aload_0_astore_0 jpc_off=0, seq_len=2 + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_astore_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode aload_0_astore_0 + aload_0_astore_0 + at ----------------------------------------------------------------------------- + .macro iload_0_istore_0 jpc_off=0, seq_len=2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_istore_0 + iload_0_istore_0 + at ----------------------------------------------------------------------------- + .macro aload_0_astore jpc_off=0, seq_len=3 + ldrb tmp2, [jpc, #2] + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode aload_0_astore + aload_0_astore + at ----------------------------------------------------------------------------- + .macro iload_0_astore jpc_off=0, seq_len=3 + ldrb tmp2, [jpc, #2] + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_astore + iload_0_astore + at ----------------------------------------------------------------------------- + .macro iload_astore_0 jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp1, r1, #opc_astore_0 + DISPATCH_NEXT + rsb tmp2, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_astore_0 + iload_astore_0 + at ----------------------------------------------------------------------------- + .macro iload_istore_0 jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp1, r1, #opc_istore_0 + DISPATCH_NEXT + rsb tmp2, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_istore_0 + iload_istore_0 + at ----------------------------------------------------------------------------- + .macro iload_astore jpc_off=0, seq_len=4 + ldrb tmp1, [jpc, #3] + rsb tmp2, r2, #0 + DISPATCH_START \seq_len + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_astore + iload_astore + at ----------------------------------------------------------------------------- + .macro aload_0_iconst_m1 jpc_off=0, seq_len=2 + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + sub tmp2, r1, #opc_iconst_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode aload_0_iconst_m1 + aload_0_iconst_m1 + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_m1 jpc_off=0, seq_len=2 + add r0, r0, #opc_iload_0_iconst_N-opc_iload_0 + strb r0, [jpc] + b do_iload_0_iconst_N + .endm + + Opcode iload_0_iconst_m1 + iload_0_iconst_m1 + at ----------------------------------------------------------------------------- + .macro iload_iconst_m1 jpc_off=0, seq_len=3 + cmp r0, #opc_iload + DISPATCH_START \seq_len + sub r3, r1, #opc_iconst_0 + DISPATCH_NEXT + ldr tmp2, [locals, -r2, lsl #2] + DISPATCH_NEXT + beq 1f + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH +1: + mov tmp1, #opc_iload_iconst_N + strb tmp1, [jpc, #-\seq_len]! + b do_iload_iconst_N + .endm + + Opcode iload_iconst_m1 + iload_iconst_m1 + at ----------------------------------------------------------------------------- + .macro aload_0_bipush jpc_off=0, seq_len=3 + ldrsb r2, [jpc, #2] + rsb r3, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode aload_0_bipush + aload_0_bipush + at ----------------------------------------------------------------------------- + .macro iload_0_bipush jpc_off=0, seq_len=3 + ldrsb r2, [jpc, #2] + rsb r3, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_bipush + iload_0_bipush + at ----------------------------------------------------------------------------- + .macro aload_0_sipush jpc_off=0, seq_len=4 + ldrsb r2, [jpc, #2] @ zero_extendqisi2 + ldrb lr, [jpc, #3] @ zero_extendqisi2 + rsb r3, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r2, lr, r2, asl #8 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode aload_0_sipush + aload_0_sipush + at ----------------------------------------------------------------------------- + .macro iload_0_sipush jpc_off=0, seq_len=4 + ldrsb r2, [jpc, #2] @ zero_extendqisi2 + ldrb lr, [jpc, #3] @ zero_extendqisi2 + rsb r3, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r2, lr, r2, asl #8 + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_sipush + iload_0_sipush + at ----------------------------------------------------------------------------- + .macro iload_bipush jpc_off=0, seq_len=4 + ldrsb r3, [jpc, #3] + DISPATCH_START \seq_len + ldr lr, [locals, -r2, lsl #2] + DISPATCH_NEXT + PUSH2 r3, lr + DISPATCH_FINISH + .endm + + Opcode iload_bipush + iload_bipush + at ----------------------------------------------------------------------------- + .macro iload_sipush jpc_off=0, seq_len=5 + ldrsb r3, [jpc, #3] + ldrb lr, [jpc, #4] + DISPATCH_START \seq_len + ldr tmp1, [locals, -r2, lsl #2] + orr r3, lr, r3, asl #8 + DISPATCH_NEXT + PUSH2 r3, tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_sipush + iload_sipush + at ----------------------------------------------------------------------------- + .macro iload_0_iaload jpc_off=0, seq_len=2 + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry19: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #2 + ldr lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_iaload + iload_0_iaload + at ----------------------------------------------------------------------------- + .macro iload_iaload jpc_off=0, seq_len=3 + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry20: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #2 + ldr lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_iaload + iload_iaload + at ----------------------------------------------------------------------------- + .macro iload_0_baload jpc_off=0, seq_len=2 + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry21: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2 + ldrsb lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_baload + iload_0_baload + at ----------------------------------------------------------------------------- + .macro iload_0_caload jpc_off=0, seq_len=2 + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry22: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_caload + iload_0_caload + at ----------------------------------------------------------------------------- + .macro iload_0_saload jpc_off=0, seq_len=2 + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry23: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrsh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_saload + iload_0_saload + at ----------------------------------------------------------------------------- + .macro iload_baload jpc_off=0, seq_len=3 + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry24: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2 + ldrsb lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_baload + iload_baload + at ----------------------------------------------------------------------------- + .macro iload_caload jpc_off=0, seq_len=3 + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry25: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_caload + iload_caload + at ----------------------------------------------------------------------------- + .macro iload_saload jpc_off=0, seq_len=3 + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry26: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #1 + ldrsh lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_saload + iload_saload + at ----------------------------------------------------------------------------- + .macro iload_0_iastore jpc_off=0, seq_len=2 + POP2 r2, r3 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry27: + 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, #12] + DISPATCH_FINISH + .endm + + Opcode iload_0_iastore + iload_0_iastore + at ----------------------------------------------------------------------------- + .macro iload_0_bastore jpc_off=0, seq_len=2 + POP2 r2, r3 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry28: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2 + strb tmp1, [r3, #12] + DISPATCH_FINISH + .endm + + Opcode iload_0_bastore + iload_0_bastore + at ----------------------------------------------------------------------------- + .macro iload_0_castore jpc_off=0, seq_len=2 + POP2 r2, r3 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry29: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + strh tmp1, [r3, #12] + DISPATCH_FINISH + .endm + + Opcode iload_0_castore + iload_0_castore + at ----------------------------------------------------------------------------- + .macro iload_iastore jpc_off=0, seq_len=3 + POP2 r3, tmp1 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry30: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp r3, lr + bcs array_bound_exception_jpc_1_r3 + DISPATCH_NEXT + add tmp1, tmp1, r3, lsl #2 + str r2, [tmp1, #12] + DISPATCH_FINISH + .endm + + Opcode iload_iastore + iload_iastore + at ----------------------------------------------------------------------------- + .macro iload_bastore jpc_off=0, seq_len=3 + POP2 r3, tmp1 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry31: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp r3, lr + bcs array_bound_exception_jpc_1_r3 + DISPATCH_NEXT + add tmp1, tmp1, r3 + strb r2, [tmp1, #12] + DISPATCH_FINISH + .endm + + Opcode iload_bastore + iload_bastore + at ----------------------------------------------------------------------------- + .macro iload_castore jpc_off=0, seq_len=3 + POP2 r3, tmp1 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry32: + ldr lr, [tmp1, #8] @ lr = limit + DISPATCH_NEXT + cmp r3, lr + bcs array_bound_exception_jpc_1_r3 + DISPATCH_NEXT + add tmp1, tmp1, r3, lsl #1 + strh r2, [tmp1, #12] + DISPATCH_FINISH + .endm + + Opcode iload_castore + iload_castore + at ----------------------------------------------------------------------------- + .macro iload_0_iadd jpc_off=0, seq_len=2 + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + add tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_iadd + iload_0_iadd + at ----------------------------------------------------------------------------- + .macro iload_iadd jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iload_iadd + iload_iadd + at ----------------------------------------------------------------------------- + .macro iload_0_isub jpc_off=0, seq_len=2 + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + sub tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_isub + iload_0_isub + at ----------------------------------------------------------------------------- + .macro iload_isub jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iload_isub + iload_isub + at ----------------------------------------------------------------------------- + .macro iload_0_imul jpc_off=0, seq_len=2 + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mul r3, r2, lr + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_imul + iload_0_imul + at ----------------------------------------------------------------------------- + .macro iload_imul jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mul lr, r3, r2 + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_imul + iload_imul + at ----------------------------------------------------------------------------- + .macro iload_0_idiv jpc_off=0, seq_len=2 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + add jpc, jpc, #1 + POP r1 + b int_div + .endm + + Opcode iload_0_idiv + iload_0_idiv + at ----------------------------------------------------------------------------- + .macro iload_idiv jpc_off=0, seq_len=3 + add jpc, jpc, #2 + POP r1 + ldr r0, [locals, -r2, lsl #2] + b int_div + .endm + + Opcode iload_idiv + iload_idiv + at ----------------------------------------------------------------------------- + .macro iload_0_irem jpc_off=0, seq_len=2 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + add jpc, jpc, #1 + POP r1 + b int_rem + .endm + + Opcode iload_0_irem + iload_0_irem + at ----------------------------------------------------------------------------- + .macro iload_irem jpc_off=0, seq_len=3 + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + POP r1 + b int_rem + .endm + + Opcode iload_irem + iload_irem + at ----------------------------------------------------------------------------- + .macro iload_0_ineg jpc_off=0, seq_len=2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + rsb lr, lr, #0 + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_ineg + iload_0_ineg + at ----------------------------------------------------------------------------- + .macro iload_ineg jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + rsb r2, r2, #0 + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iload_ineg + iload_ineg + at ----------------------------------------------------------------------------- + .macro iload_0_ishl jpc_off=0, seq_len=2 + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, r2, lsl lr + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_ishl + iload_0_ishl + at ----------------------------------------------------------------------------- + .macro iload_ishl jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r3, lsl r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iload_ishl + iload_ishl + at ----------------------------------------------------------------------------- + .macro iload_0_ishr jpc_off=0, seq_len=2 + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, r2, asr lr + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_ishr + iload_0_ishr + at ----------------------------------------------------------------------------- + .macro iload_ishr jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r3, asr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iload_ishr + iload_ishr + at ----------------------------------------------------------------------------- + .macro iload_0_iushr jpc_off=0, seq_len=2 + POP r2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, r2, lsr lr + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_iushr + iload_0_iushr + at ----------------------------------------------------------------------------- + .macro iload_iushr jpc_off=0, seq_len=3 + ldrb r2, [jpc, #1] + DISPATCH_START \seq_len + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r3, lsr r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iload_iushr + iload_iushr + at ----------------------------------------------------------------------------- + .macro iload_0_iand jpc_off=0, seq_len=2 + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + and tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_iand + iload_0_iand + at ----------------------------------------------------------------------------- + .macro iload_iand jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iload_iand + iload_iand + at ----------------------------------------------------------------------------- + .macro iload_0_ior jpc_off=0, seq_len=2 + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + orr tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_ior + iload_0_ior + at ----------------------------------------------------------------------------- + .macro iload_ior jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iload_ior + iload_ior + at ----------------------------------------------------------------------------- + .macro iload_0_ixor jpc_off=0, seq_len=2 + POP tmp2 + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + eor tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iload_0_ixor + iload_0_ixor + at ----------------------------------------------------------------------------- + .macro iload_ixor jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + POP tmp1 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iload_ixor + iload_ixor + at ----------------------------------------------------------------------------- + .macro iload_0_i2c jpc_off=0, seq_len=2 + rsb lr, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr lr, [locals, lr, lsl #2] + DISPATCH_NEXT + mov lr, lr, asl #16 + mov lr, lr, lsr #16 + PUSH lr + DISPATCH_FINISH + .endm + + Opcode iload_0_i2c + iload_0_i2c + at ----------------------------------------------------------------------------- + .macro iload_i2c jpc_off=0, seq_len=3 + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] + DISPATCH_NEXT + mov r2, r2, asl #16 + mov r2, r2, lsr #16 + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iload_i2c + iload_i2c + at ----------------------------------------------------------------------------- + .macro iload_0_ifeq jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + rsb r3, r0, #opc_iload_0 + add jpc, jpc, #1 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_ifeq + iload_0_ifeq + at ----------------------------------------------------------------------------- + .macro iload_ifeq jpc_off=0, seq_len=2 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_ifeq + iload_ifeq + at ----------------------------------------------------------------------------- + .macro iload_0_ifne jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + rsb r3, r0, #opc_iload_0 + add jpc, jpc, #1 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_ifne + iload_0_ifne + at ----------------------------------------------------------------------------- + .macro iload_ifne jpc_off=0, seq_len=2 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_ifne + iload_ifne + at ----------------------------------------------------------------------------- + .macro iload_0_iflt jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + rsb r3, r0, #opc_iload_0 + add jpc, jpc, #1 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_iflt + iload_0_iflt + at ----------------------------------------------------------------------------- + .macro iload_iflt jpc_off=0, seq_len=2 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_iflt + iload_iflt + at ----------------------------------------------------------------------------- + .macro iload_0_ifge jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + rsb r3, r0, #opc_iload_0 + add jpc, jpc, #1 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_ifge + iload_0_ifge + at ----------------------------------------------------------------------------- + .macro iload_ifge jpc_off=0, seq_len=2 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_ifge + iload_ifge + at ----------------------------------------------------------------------------- + .macro iload_0_ifgt jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + rsb r3, r0, #opc_iload_0 + add jpc, jpc, #1 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_ifgt + iload_0_ifgt + at ----------------------------------------------------------------------------- + .macro iload_ifgt jpc_off=0, seq_len=2 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_ifgt + iload_ifgt + at ----------------------------------------------------------------------------- + .macro iload_0_ifle jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + rsb r3, r0, #opc_iload_0 + add jpc, jpc, #1 + ldr r3, [locals, r3, lsl #2] + cmp r3, #0 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_ifle + iload_0_ifle + at ----------------------------------------------------------------------------- + .macro iload_ifle jpc_off=0, seq_len=2 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_ifle + iload_ifle + at ----------------------------------------------------------------------------- + .macro iload_0_if_icmpeq jpc_off=0, seq_len=1 + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_if_icmpeq + iload_0_if_icmpeq + at ----------------------------------------------------------------------------- + .macro iload_if_icmpeq jpc_off=0, seq_len=2 + POP r3 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_if_icmpeq + iload_if_icmpeq + at ----------------------------------------------------------------------------- + .macro iload_0_if_icmpne jpc_off=0, seq_len=1 + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_if_icmpne + iload_0_if_icmpne + at ----------------------------------------------------------------------------- + .macro iload_if_icmpne jpc_off=0, seq_len=2 + POP r3 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_if_icmpne + iload_if_icmpne + at ----------------------------------------------------------------------------- + .macro iload_0_if_icmplt jpc_off=0, seq_len=1 + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_if_icmplt + iload_0_if_icmplt + at ----------------------------------------------------------------------------- + .macro iload_if_icmplt jpc_off=0, seq_len=2 + POP r3 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_if_icmplt + iload_if_icmplt + at ----------------------------------------------------------------------------- + .macro iload_0_if_icmpge jpc_off=0, seq_len=1 + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_if_icmpge + iload_0_if_icmpge + at ----------------------------------------------------------------------------- + .macro iload_if_icmpge jpc_off=0, seq_len=2 + POP r3 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_if_icmpge + iload_if_icmpge + at ----------------------------------------------------------------------------- + .macro iload_0_if_icmpgt jpc_off=0, seq_len=1 + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_if_icmpgt + iload_0_if_icmpgt + at ----------------------------------------------------------------------------- + .macro iload_if_icmpgt jpc_off=0, seq_len=2 + POP r3 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_if_icmpgt + iload_if_icmpgt + at ----------------------------------------------------------------------------- + .macro iload_0_if_icmple jpc_off=0, seq_len=1 + 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 + cmp r3, r2 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iload_0_if_icmple + iload_0_if_icmple + at ----------------------------------------------------------------------------- + .macro iload_if_icmple jpc_off=0, seq_len=2 + POP r3 + ldrsb r1, [jpc, #3] + 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 + .endm + + Opcode iload_if_icmple + iload_if_icmple + at ----------------------------------------------------------------------------- + .macro iload_0_ireturn jpc_off=0, seq_len=1 + rsb r0, r0, #opc_iload_0 + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr r1, [locals, r0, lsl #2] + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode iload_0_ireturn + iload_0_ireturn + at ----------------------------------------------------------------------------- + .macro iload_ireturn jpc_off=0, seq_len=2 + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr r1, [locals, -r2, lsl #2] + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #2 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode iload_ireturn + iload_ireturn + at ----------------------------------------------------------------------------- + .macro iload_0_invokeresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved + .endm + + Opcode iload_0_invokeresolved + iload_0_invokeresolved + at ----------------------------------------------------------------------------- + .macro aload_0_invokeresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved + .endm + + Opcode aload_0_invokeresolved + aload_0_invokeresolved + at ----------------------------------------------------------------------------- + .macro iload_invokeresolved jpc_off=0, seq_len=5 + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved + .endm + + Opcode iload_invokeresolved + iload_invokeresolved + at ----------------------------------------------------------------------------- + .macro iload_0_invokevfinal jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal + .endm + + Opcode iload_0_invokevfinal + iload_0_invokevfinal + at ----------------------------------------------------------------------------- + .macro aload_0_invokevfinal jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal + .endm + + Opcode aload_0_invokevfinal + aload_0_invokevfinal + at ----------------------------------------------------------------------------- + .macro iload_invokevfinal jpc_off=0, seq_len=5 + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal + .endm + + Opcode iload_invokevfinal + iload_invokevfinal + at ----------------------------------------------------------------------------- + .macro iload_0_invokespecialresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved + .endm + + Opcode iload_0_invokespecialresolved + iload_0_invokespecialresolved + at ----------------------------------------------------------------------------- + .macro aload_0_invokespecialresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved + .endm + + Opcode aload_0_invokespecialresolved + aload_0_invokespecialresolved + at ----------------------------------------------------------------------------- + .macro iload_invokespecialresolved jpc_off=0, seq_len=5 + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved + .endm + + Opcode iload_invokespecialresolved + iload_invokespecialresolved + at ----------------------------------------------------------------------------- + .macro iload_0_invokestaticresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved + .endm + + Opcode iload_0_invokestaticresolved + iload_0_invokestaticresolved + at ----------------------------------------------------------------------------- + .macro aload_0_invokestaticresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved + .endm + + Opcode aload_0_invokestaticresolved + aload_0_invokestaticresolved + at ----------------------------------------------------------------------------- + .macro iload_invokestaticresolved jpc_off=0, seq_len=5 + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved + .endm + + Opcode iload_invokestaticresolved + iload_invokestaticresolved + at ----------------------------------------------------------------------------- + .macro iload_0_invokeinterface jpc_off=0, seq_len=1 + add jpc, jpc, #1 + rsb r0, r0, #opc_iload_0 + ldr r0, [locals, r0, lsl #2] + PUSH r0 + b do_invokeinterface + .endm + + Opcode iload_0_invokeinterface + iload_0_invokeinterface + at ----------------------------------------------------------------------------- + .macro aload_0_invokeinterface jpc_off=0, seq_len=1 + add jpc, jpc, #1 + rsb r0, r0, #opc_aload_0 + ldr r0, [locals, r0, lsl #2] + PUSH r0 + b do_invokeinterface + .endm + + Opcode aload_0_invokeinterface + aload_0_invokeinterface + at ----------------------------------------------------------------------------- + .macro iload_invokeinterface jpc_off=0, seq_len=2 + ldr r0, [locals, -r2, lsl #2] + add jpc, jpc, #2 + PUSH r0 + b do_invokeinterface + .endm + + Opcode iload_invokeinterface + iload_invokeinterface + at ----------------------------------------------------------------------------- + .macro aload_0_igetfield jpc_off=0, seq_len=4 + add r0, r0, #opc_iaccess_0-opc_aload_0 + strb r0, [jpc] + DISPATCH_BYTECODE + .endm + + Opcode aload_0_igetfield + aload_0_igetfield + at ----------------------------------------------------------------------------- + .macro iload_igetfield jpc_off=0, seq_len=5 + ldrb ip, [jpc, #4] + rsb tmp1, r2, #0 + ldrb r3, [jpc, #3] + add tmp2, constpool, ip, lsl #12 + DISPATCH_START 5 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry88: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iload_igetfield + iload_igetfield + at ----------------------------------------------------------------------------- + .macro iconst_m1_istore_0 jpc_off=0, seq_len=2 + sub r3, r0, #opc_iconst_0 + DISPATCH_START \seq_len + rsb r2, r1, #opc_istore_0 + str r3, [locals, r2, lsl #2] + DISPATCH_BYTECODE + .endm + + Opcode iconst_m1_istore_0 + iconst_m1_istore_0 + at ----------------------------------------------------------------------------- + .macro iconst_m1_astore jpc_off=0, seq_len=3 + ldrb r2, [jpc, #2] + sub r3, r0, #opc_iconst_0 + DISPATCH_START \seq_len + str r3, [locals, -r2, lsl #2] + DISPATCH_BYTECODE + .endm + + Opcode iconst_m1_astore + iconst_m1_astore + at ----------------------------------------------------------------------------- + .macro iconst_m1_iadd jpc_off=0, seq_len=2 + sub tmp1, r0, #opc_iconst_0 + DISPATCH_START \seq_len + POP tmp2 + DISPATCH_NEXT + add tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iconst_m1_iadd + iconst_m1_iadd + at ----------------------------------------------------------------------------- + .macro iconst_m1_isub jpc_off=0, seq_len=2 + sub tmp1, r0, #opc_iconst_0 + DISPATCH_START \seq_len + POP tmp2 + DISPATCH_NEXT + sub tmp1, tmp2, tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iconst_m1_isub + iconst_m1_isub + at ----------------------------------------------------------------------------- + .macro iconst_m1_idiv jpc_off=0, seq_len=2 + subs lr, r0, #opc_iconst_2 + DISPATCH_START \seq_len + POP tmp1 + DISPATCH_NEXT + beq 5f + bcc 3f + cmp lr, #(opc_iconst_4-opc_iconst_2) + beq 4f + bcc 2f +@ divide by 5 +1: + mvn lr, #0x198 @ Form 0x66666667 in lr + bic lr, lr, #0x9800 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + mov a3, tmp1, asr #31 + rsb tmp1, a3, a4, asr #1 + b 6f +@ divide by 3 +2: + mvn lr, #0xa9 @ Form 0x55555556 in lr + bic lr, lr, #0xaa00 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + sub tmp1, a4, tmp1, asr #31 + b 6f +3: + cmp lr, #(opc_iconst_0-opc_iconst_2) + beq .iconst_div_rem_0 + rsbcc tmp1, tmp1, #0 @ Divide by -1 or 1 + b 6f +@ divide by 4 +4: movs a4, tmp1 + addmi a4, a4, #3 + mov tmp1, a4, asr #2 + b 6f +@ divide by 2 +5: + add tmp1, tmp1, tmp1, lsr #31 + mov tmp1, tmp1, asr #1 +6: + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iconst_m1_idiv + iconst_m1_idiv + at ----------------------------------------------------------------------------- + .macro iconst_m1_ishl jpc_off=0, seq_len=2 + sub tmp1, r0, #opc_iconst_0 + DISPATCH_START \seq_len + POP r2 + DISPATCH_NEXT + mov tmp1, r2, lsl tmp1 + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iconst_m1_ishl + iconst_m1_ishl + at ----------------------------------------------------------------------------- + .macro iconst_m1_if_icmpeq jpc_off=0, seq_len=1 + 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 + .endm + + Opcode iconst_m1_if_icmpeq + iconst_m1_if_icmpeq + at ----------------------------------------------------------------------------- + .macro iconst_m1_if_icmpne jpc_off=0, seq_len=1 + 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 + .endm + + Opcode iconst_m1_if_icmpne + iconst_m1_if_icmpne + at ----------------------------------------------------------------------------- + .macro iconst_m1_if_icmplt jpc_off=0, seq_len=1 + 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 + .endm + + Opcode iconst_m1_if_icmplt + iconst_m1_if_icmplt + at ----------------------------------------------------------------------------- + .macro iconst_m1_if_icmpge jpc_off=0, seq_len=1 + 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 + .endm + + Opcode iconst_m1_if_icmpge + iconst_m1_if_icmpge + at ----------------------------------------------------------------------------- + .macro iconst_m1_if_icmpgt jpc_off=0, seq_len=1 + 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 + .endm + + Opcode iconst_m1_if_icmpgt + iconst_m1_if_icmpgt + at ----------------------------------------------------------------------------- + .macro iconst_m1_if_icmple jpc_off=0, seq_len=1 + 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 + .endm + + Opcode iconst_m1_if_icmple + iconst_m1_if_icmple + at ----------------------------------------------------------------------------- + .macro iconst_m1_ireturn jpc_off=0, seq_len=1 + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + sub r1, r0, #opc_iconst_0 + 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode iconst_m1_ireturn + iconst_m1_ireturn + at ----------------------------------------------------------------------------- + .macro iconst_m1_invokeresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokeresolved + .endm + + Opcode iconst_m1_invokeresolved + iconst_m1_invokeresolved + at ----------------------------------------------------------------------------- + .macro iconst_m1_invokevfinal jpc_off=0, seq_len=4 + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokevfinal + .endm + + Opcode iconst_m1_invokevfinal + iconst_m1_invokevfinal + at ----------------------------------------------------------------------------- + .macro iconst_m1_invokestaticresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokestaticresolved + .endm + + Opcode iconst_m1_invokestaticresolved + iconst_m1_invokestaticresolved + at ----------------------------------------------------------------------------- + .macro iconst_m1_invokespecialresolved jpc_off=0, seq_len=4 + add jpc, jpc, #1 + sub r0, r0, #opc_iconst_0 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + PUSH r0 + b do_invokespecialresolved + .endm + + Opcode iconst_m1_invokespecialresolved + iconst_m1_invokespecialresolved + at ----------------------------------------------------------------------------- + .macro iaload_iconst_m1 jpc_off=0, seq_len=2 + sub r2, r1, #opc_iconst_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry38: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iaload_iconst_m1 + iaload_iconst_m1 + at ----------------------------------------------------------------------------- + .macro iaload_bipush jpc_off=0, seq_len=3 + ldrsb r2, [jpc, #2] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif +.abortentry39: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_3_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iaload_bipush + iaload_bipush + at ----------------------------------------------------------------------------- + .macro iaload_sipush jpc_off=0, seq_len=4 + ldrsb r2, [jpc, #2] + ldrb tmp1, [jpc, #3] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + orr r2, tmp1, r2, lsl #8 +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_4 +#endif +.abortentry40: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_4_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iaload_sipush + iaload_sipush + at ----------------------------------------------------------------------------- + .macro iaload_iload jpc_off=0, seq_len=3 + ldrb r2, [jpc, #2] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + ldr r2, [locals, -r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif +.abortentry41: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_3_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iaload_iload + iaload_iload + at ----------------------------------------------------------------------------- + .macro iaload_iload_0 jpc_off=0, seq_len=2 + rsb r2, r1, #opc_iload_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry42: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iaload_iload_0 + iaload_iload_0 + at ----------------------------------------------------------------------------- + .macro iaload_aload_0 jpc_off=0, seq_len=2 + rsb r2, r1, #opc_aload_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry42_1: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + PUSH2 r2, r3 + DISPATCH_FINISH + .endm + + Opcode iaload_aload_0 + iaload_aload_0 + at ----------------------------------------------------------------------------- + .macro iaload_iaload jpc_off=0, seq_len=2 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry43: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + POP lr @ r2 = index, lr = arrayref + ldr r2, [r3, #12] +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry44: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_1 + add lr, lr, r2, lsl #2 + ldr r2, [lr, #12] + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iaload_iaload + iaload_iaload + at ----------------------------------------------------------------------------- + .macro iaload_astore jpc_off=0, seq_len=3 + ldrb r2, [jpc, #2] + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_3 +#endif +.abortentry45: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_3_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + str r3, [locals, -r2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iaload_astore + iaload_astore + at ----------------------------------------------------------------------------- + .macro iaload_istore_0 jpc_off=0, seq_len=2 + rsb r2, r1, #opc_istore_0 + POP2 r3, lr @ r3 = index, lr = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry46: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr r3, [lr, #12] + DISPATCH_NEXT + str r3, [locals, r2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iaload_istore_0 + iaload_istore_0 + at ----------------------------------------------------------------------------- + .macro iaload_iastore jpc_off=0, seq_len=2 + POP2 r3, lr @ r3 = index, lr = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry47: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr tmp1, [lr, #12] + + POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry48: + 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, #12] + DISPATCH_FINISH + .endm + + Opcode iaload_iastore + iaload_iastore + at ----------------------------------------------------------------------------- + .macro iaload_bastore jpc_off=0, seq_len=2 + POP2 r3, lr @ r3 = index, lr = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry49: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr tmp1, [lr, #12] + + POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry50: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2 + strb tmp1, [r3, #12] + DISPATCH_FINISH + .endm + + Opcode iaload_bastore + iaload_bastore + at ----------------------------------------------------------------------------- + .macro iaload_castore jpc_off=0, seq_len=2 + POP2 r3, lr @ r3 = index, lr = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry51: + ldr tmp1, [lr, #8] @ tmp1 = length + DISPATCH_START \seq_len + cmp r3, tmp1 + bcs array_bound_exception_jpc_2_r3 + add lr, lr, r3, lsl #2 + ldr tmp1, [lr, #12] + + POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry52: + ldr lr, [r3, #8] @ lr = limit + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + DISPATCH_NEXT + add r3, r3, r2, lsl #1 + strh tmp1, [r3, #12] + DISPATCH_FINISH + .endm + + Opcode iaload_castore + iaload_castore + at ----------------------------------------------------------------------------- + .macro iaload_iand jpc_off=0, seq_len=2 + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry58: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + ldr tmp1, [r3, #12] @ tmp1 = tos + POP r2 @ r2 = tosm1 + DISPATCH_NEXT + and tmp1, r2, tmp1 @ tosm1 tos + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iaload_iand + iaload_iand + at ----------------------------------------------------------------------------- + .macro iaload_ior jpc_off=0, seq_len=2 + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry59: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + ldr tmp1, [r3, #12] @ tmp1 = tos + POP r2 @ r2 = tosm1 + DISPATCH_NEXT + orr tmp1, r2, tmp1 @ tosm1 tos + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iaload_ior + iaload_ior + at ----------------------------------------------------------------------------- + .macro iaload_ixor jpc_off=0, seq_len=2 + POP2 r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_2 +#endif +.abortentry60: + ldr tmp1, [r3, #8] @ tmp1 = length + DISPATCH_NEXT + cmp r2, tmp1 + bcs array_bound_exception_jpc_2 + add r3, r3, r2, lsl #2 + ldr tmp1, [r3, #12] @ tmp1 = tos + POP r2 @ r2 = tosm1 + DISPATCH_NEXT + eor tmp1, r2, tmp1 @ tosm1 tos + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iaload_ixor + iaload_ixor + at ----------------------------------------------------------------------------- + .macro iaload_ifeq jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ r1 = tos + + 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 + .endm + + Opcode iaload_ifeq + iaload_ifeq + at ----------------------------------------------------------------------------- + .macro iaload_ifne jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + .endm + + Opcode iaload_ifne + iaload_ifne + at ----------------------------------------------------------------------------- + .macro iaload_iflt jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + .endm + + Opcode iaload_iflt + iaload_iflt + at ----------------------------------------------------------------------------- + .macro iaload_ifge jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + .endm + + Opcode iaload_ifge + iaload_ifge + at ----------------------------------------------------------------------------- + .macro iaload_ifgt jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + .endm + + Opcode iaload_ifgt + iaload_ifgt + at ----------------------------------------------------------------------------- + .macro iaload_ifle jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry66: + ldr r1, [r3, #8] @ r1 = length + cmp r2, r1 + bcs array_bound_exception_jpc_0 + add r3, r3, r2, lsl #2 + ldr r3, [r3, #12] @ 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 + .endm + + Opcode iaload_ifle + iaload_ifle + at ----------------------------------------------------------------------------- + .macro iaload_if_icmpeq jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + .endm + + Opcode iaload_if_icmpeq + iaload_if_icmpeq + at ----------------------------------------------------------------------------- + .macro iaload_if_icmpne jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + .endm + + Opcode iaload_if_icmpne + iaload_if_icmpne + at ----------------------------------------------------------------------------- + .macro iaload_if_icmplt jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iaload_if_icmplt + iaload_if_icmplt + at ----------------------------------------------------------------------------- + .macro iaload_if_icmpge jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iaload_if_icmpge + iaload_if_icmpge + at ----------------------------------------------------------------------------- + .macro iaload_if_icmpgt jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.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, #12] @ 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 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iaload_if_icmpgt + iaload_if_icmpgt + at ----------------------------------------------------------------------------- + .macro iaload_if_icmple jpc_off=0, seq_len=1 + POP2 r2, r3 @ r2 = index, r3 = arrayref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_0 +#endif +.abortentry72: + ldr r1, [r3, #8] @ r1 = length + cmp r2, r1 + bcs array_bound_exception_jpc_0 + add r3, r3, r2, lsl #2 + ldr r2, [r3, #12] @ 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 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iaload_if_icmple + iaload_if_icmple + at ----------------------------------------------------------------------------- + .macro iadd_iload jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode iadd_iload + iadd_iload + at ----------------------------------------------------------------------------- + .macro iadd_iload_0 jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode iadd_iload_0 + iadd_iload_0 + at ----------------------------------------------------------------------------- + .macro iadd_iaload jpc_off=0, seq_len=2 + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + add r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iadd_iaload + iadd_iaload + at ----------------------------------------------------------------------------- + .macro iadd_istore jpc_off=0, seq_len=3 + mov r0, #opc_iadd_u4store + strb r0, [jpc] + b do_iadd_u4store + .endm + + Opcode iadd_istore + iadd_istore + at ----------------------------------------------------------------------------- + .macro iadd_istore_0 jpc_off=0, seq_len=2 + mov r0, #opc_iadd_istore_N + strb r0, [jpc] + b do_iadd_istore_N + .endm + + Opcode iadd_istore_0 + iadd_istore_0 + at ----------------------------------------------------------------------------- + .macro iadd_iastore jpc_off=0, seq_len=2 + POP2 r2, r3 + DISPATCH_START \seq_len + add tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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 + str tmp1, [r3, #12] + DISPATCH_FINISH + .endm + + Opcode iadd_iastore + iadd_iastore + at ----------------------------------------------------------------------------- + .macro iadd_iadd jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + add tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iadd_iadd + iadd_iadd + at ----------------------------------------------------------------------------- + .macro iadd_isub jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + add tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iadd_isub + iadd_isub + at ----------------------------------------------------------------------------- + .macro iadd_ifeq jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iadd_ifeq + iadd_ifeq + at ----------------------------------------------------------------------------- + .macro iadd_ifne jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iadd_ifne + iadd_ifne + at ----------------------------------------------------------------------------- + .macro iadd_iflt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iadd_iflt + iadd_iflt + at ----------------------------------------------------------------------------- + .macro iadd_ifge jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iadd_ifge + iadd_ifge + at ----------------------------------------------------------------------------- + .macro iadd_ifgt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iadd_ifgt + iadd_ifgt + at ----------------------------------------------------------------------------- + .macro iadd_ifle jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iadd_ifle + iadd_ifle + at ----------------------------------------------------------------------------- + .macro iadd_if_icmpeq jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iadd_if_icmpeq + iadd_if_icmpeq + at ----------------------------------------------------------------------------- + .macro iadd_if_icmpne jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iadd_if_icmpne + iadd_if_icmpne + at ----------------------------------------------------------------------------- + .macro iadd_if_icmplt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iadd_if_icmplt + iadd_if_icmplt + at ----------------------------------------------------------------------------- + .macro iadd_if_icmpge jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iadd_if_icmpge + iadd_if_icmpge + at ----------------------------------------------------------------------------- + .macro iadd_if_icmpgt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iadd_if_icmpgt + iadd_if_icmpgt + at ----------------------------------------------------------------------------- + .macro iadd_if_icmple jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iadd_if_icmple + iadd_if_icmple + at ----------------------------------------------------------------------------- + .macro iadd_goto jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + add jpc, jpc, #1 + orr ip, ip, r1, lsl #8 + DISPATCH_START_REG ip + POP2 r2, r3 + add r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iadd_goto + iadd_goto + at ----------------------------------------------------------------------------- + .macro iadd_ireturn jpc_off=0, seq_len=1 + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode iadd_ireturn + iadd_ireturn + at ----------------------------------------------------------------------------- + .macro iadd_iinc jpc_off=0, seq_len=4 + POP2 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 + .endm + + Opcode iadd_iinc + iadd_iinc + at ----------------------------------------------------------------------------- + .macro isub_iload jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode isub_iload + isub_iload + at ----------------------------------------------------------------------------- + .macro isub_iload_0 jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode isub_iload_0 + isub_iload_0 + at ----------------------------------------------------------------------------- + .macro isub_iaload jpc_off=0, seq_len=2 + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + sub r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode isub_iaload + isub_iaload + at ----------------------------------------------------------------------------- + .macro isub_istore jpc_off=0, seq_len=3 + mov r0, #opc_isub_u4store + strb r0, [jpc] + b do_isub_u4store + .endm + + Opcode isub_istore + isub_istore + at ----------------------------------------------------------------------------- + .macro isub_istore_0 jpc_off=0, seq_len=2 + mov r0, #opc_isub_istore_N + strb r0, [jpc] + b do_isub_istore_N + .endm + + Opcode isub_istore_0 + isub_istore_0 + at ----------------------------------------------------------------------------- + .macro isub_iastore jpc_off=0, seq_len=2 + POP2 r2, r3 + DISPATCH_START \seq_len + sub tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_FINISH + .endm + + Opcode isub_iastore + isub_iastore + at ----------------------------------------------------------------------------- + .macro isub_iadd jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + sub tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode isub_iadd + isub_iadd + at ----------------------------------------------------------------------------- + .macro isub_isub jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + sub tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode isub_isub + isub_isub + at ----------------------------------------------------------------------------- + .macro isub_ifeq jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode isub_ifeq + isub_ifeq + at ----------------------------------------------------------------------------- + .macro isub_ifne jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode isub_ifne + isub_ifne + at ----------------------------------------------------------------------------- + .macro isub_iflt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode isub_iflt + isub_iflt + at ----------------------------------------------------------------------------- + .macro isub_ifge jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode isub_ifge + isub_ifge + at ----------------------------------------------------------------------------- + .macro isub_ifgt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode isub_ifgt + isub_ifgt + at ----------------------------------------------------------------------------- + .macro isub_ifle jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode isub_ifle + isub_ifle + at ----------------------------------------------------------------------------- + .macro isub_if_icmpeq jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode isub_if_icmpeq + isub_if_icmpeq + at ----------------------------------------------------------------------------- + .macro isub_if_icmpne jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode isub_if_icmpne + isub_if_icmpne + at ----------------------------------------------------------------------------- + .macro isub_if_icmplt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode isub_if_icmplt + isub_if_icmplt + at ----------------------------------------------------------------------------- + .macro isub_if_icmpge jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode isub_if_icmpge + isub_if_icmpge + at ----------------------------------------------------------------------------- + .macro isub_if_icmpgt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode isub_if_icmpgt + isub_if_icmpgt + at ----------------------------------------------------------------------------- + .macro isub_if_icmple jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode isub_if_icmple + isub_if_icmple + at ----------------------------------------------------------------------------- + .macro isub_goto jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + add jpc, jpc, #1 + orr ip, ip, r1, lsl #8 + DISPATCH_START_REG ip + POP2 r2, r3 + sub r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode isub_goto + isub_goto + at ----------------------------------------------------------------------------- + .macro isub_ireturn jpc_off=0, seq_len=1 + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode isub_ireturn + isub_ireturn + at ----------------------------------------------------------------------------- + .macro isub_iinc jpc_off=0, seq_len=4 + POP2 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 + .endm + + Opcode isub_iinc + isub_iinc + at ----------------------------------------------------------------------------- + .macro iand_iload jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode iand_iload + iand_iload + at ----------------------------------------------------------------------------- + .macro iand_iload_0 jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + and tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode iand_iload_0 + iand_iload_0 + at ----------------------------------------------------------------------------- + .macro iand_iaload jpc_off=0, seq_len=2 + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + and r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iand_iaload + iand_iaload + at ----------------------------------------------------------------------------- + .macro iand_istore jpc_off=0, seq_len=3 + mov r0, #opc_iand_u4store + strb r0, [jpc] + b do_iand_u4store + .endm + + Opcode iand_istore + iand_istore + at ----------------------------------------------------------------------------- + .macro iand_istore_0 jpc_off=0, seq_len=2 + mov r0, #opc_iand_istore_N + strb r0, [jpc] + b do_iand_istore_N + .endm + + Opcode iand_istore_0 + iand_istore_0 + at ----------------------------------------------------------------------------- + .macro iand_iastore jpc_off=0, seq_len=2 + POP2 r2, r3 + DISPATCH_START \seq_len + and tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_FINISH + .endm + + Opcode iand_iastore + iand_iastore + at ----------------------------------------------------------------------------- + .macro iand_iadd jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + and tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iand_iadd + iand_iadd + at ----------------------------------------------------------------------------- + .macro iand_isub jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + and tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iand_isub + iand_isub + at ----------------------------------------------------------------------------- + .macro iand_ifeq jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iand_ifeq + iand_ifeq + at ----------------------------------------------------------------------------- + .macro iand_ifne jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iand_ifne + iand_ifne + at ----------------------------------------------------------------------------- + .macro iand_iflt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iand_iflt + iand_iflt + at ----------------------------------------------------------------------------- + .macro iand_ifge jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iand_ifge + iand_ifge + at ----------------------------------------------------------------------------- + .macro iand_ifgt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iand_ifgt + iand_ifgt + at ----------------------------------------------------------------------------- + .macro iand_ifle jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode iand_ifle + iand_ifle + at ----------------------------------------------------------------------------- + .macro iand_if_icmpeq jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iand_if_icmpeq + iand_if_icmpeq + at ----------------------------------------------------------------------------- + .macro iand_if_icmpne jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iand_if_icmpne + iand_if_icmpne + at ----------------------------------------------------------------------------- + .macro iand_if_icmplt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iand_if_icmplt + iand_if_icmplt + at ----------------------------------------------------------------------------- + .macro iand_if_icmpge jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iand_if_icmpge + iand_if_icmpge + at ----------------------------------------------------------------------------- + .macro iand_if_icmpgt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iand_if_icmpgt + iand_if_icmpgt + at ----------------------------------------------------------------------------- + .macro iand_if_icmple jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode iand_if_icmple + iand_if_icmple + at ----------------------------------------------------------------------------- + .macro iand_goto jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + add jpc, jpc, #1 + orr ip, ip, r1, lsl #8 + DISPATCH_START_REG ip + POP2 r2, r3 + and r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode iand_goto + iand_goto + at ----------------------------------------------------------------------------- + .macro iand_ireturn jpc_off=0, seq_len=1 + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode iand_ireturn + iand_ireturn + at ----------------------------------------------------------------------------- + .macro iand_iinc jpc_off=0, seq_len=4 + POP2 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 + .endm + + Opcode iand_iinc + iand_iinc + at ----------------------------------------------------------------------------- + .macro ior_iload jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode ior_iload + ior_iload + at ----------------------------------------------------------------------------- + .macro ior_iload_0 jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + orr tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode ior_iload_0 + ior_iload_0 + at ----------------------------------------------------------------------------- + .macro ior_iaload jpc_off=0, seq_len=2 + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + orr r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode ior_iaload + ior_iaload + at ----------------------------------------------------------------------------- + .macro ior_istore jpc_off=0, seq_len=3 + mov r0, #opc_ior_u4store + strb r0, [jpc] + b do_ior_u4store + .endm + + Opcode ior_istore + ior_istore + at ----------------------------------------------------------------------------- + .macro ior_istore_0 jpc_off=0, seq_len=2 + mov r0, #opc_ior_istore_N + strb r0, [jpc] + b do_ior_istore_N + .endm + + Opcode ior_istore_0 + ior_istore_0 + at ----------------------------------------------------------------------------- + .macro ior_iastore jpc_off=0, seq_len=2 + POP2 r2, r3 + DISPATCH_START \seq_len + orr tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_FINISH + .endm + + Opcode ior_iastore + ior_iastore + at ----------------------------------------------------------------------------- + .macro ior_iadd jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + orr tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode ior_iadd + ior_iadd + at ----------------------------------------------------------------------------- + .macro ior_isub jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + orr tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode ior_isub + ior_isub + at ----------------------------------------------------------------------------- + .macro ior_ifeq jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ior_ifeq + ior_ifeq + at ----------------------------------------------------------------------------- + .macro ior_ifne jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ior_ifne + ior_ifne + at ----------------------------------------------------------------------------- + .macro ior_iflt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ior_iflt + ior_iflt + at ----------------------------------------------------------------------------- + .macro ior_ifge jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ior_ifge + ior_ifge + at ----------------------------------------------------------------------------- + .macro ior_ifgt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ior_ifgt + ior_ifgt + at ----------------------------------------------------------------------------- + .macro ior_ifle jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ior_ifle + ior_ifle + at ----------------------------------------------------------------------------- + .macro ior_if_icmpeq jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ior_if_icmpeq + ior_if_icmpeq + at ----------------------------------------------------------------------------- + .macro ior_if_icmpne jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ior_if_icmpne + ior_if_icmpne + at ----------------------------------------------------------------------------- + .macro ior_if_icmplt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ior_if_icmplt + ior_if_icmplt + at ----------------------------------------------------------------------------- + .macro ior_if_icmpge jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ior_if_icmpge + ior_if_icmpge + at ----------------------------------------------------------------------------- + .macro ior_if_icmpgt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ior_if_icmpgt + ior_if_icmpgt + at ----------------------------------------------------------------------------- + .macro ior_if_icmple jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ior_if_icmple + ior_if_icmple + at ----------------------------------------------------------------------------- + .macro ior_goto jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + add jpc, jpc, #1 + orr ip, ip, r1, lsl #8 + DISPATCH_START_REG ip + POP2 r2, r3 + orr r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode ior_goto + ior_goto + at ----------------------------------------------------------------------------- + .macro ior_ireturn jpc_off=0, seq_len=1 + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode ior_ireturn + ior_ireturn + at ----------------------------------------------------------------------------- + .macro ior_iinc jpc_off=0, seq_len=4 + POP2 tmp1, lr + DISPATCH_START \seq_len + orr 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 + .endm + + Opcode ior_iinc + ior_iinc + at ----------------------------------------------------------------------------- + .macro ixor_iload jpc_off=0, seq_len=3 + ldrb r3, [jpc, #2] + DISPATCH_START \seq_len + POP2 tmp2, tmp1 + DISPATCH_NEXT + rsb r3, r3, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode ixor_iload + ixor_iload + at ----------------------------------------------------------------------------- + .macro ixor_iload_0 jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + rsb r3, r1, #opc_iload_0 + POP2 tmp2, tmp1 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + eor tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode ixor_iload_0 + ixor_iload_0 + at ----------------------------------------------------------------------------- + .macro ixor_iaload jpc_off=0, seq_len=2 + POP3 r2, r3, lr @ lr = ref + DISPATCH_START \seq_len + eor r2, r3, r2 @ r2 = index +#ifndef HW_NULL_PTR_CHECK + cmp lr, #0 + beq null_ptr_exception_jpc_1 +#endif +.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, #12] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode ixor_iaload + ixor_iaload + at ----------------------------------------------------------------------------- + .macro ixor_istore jpc_off=0, seq_len=3 + mov r0, #opc_ixor_u4store + strb r0, [jpc] + b do_ixor_u4store + .endm + + Opcode ixor_istore + ixor_istore + at ----------------------------------------------------------------------------- + .macro ixor_istore_0 jpc_off=0, seq_len=2 + mov r0, #opc_ixor_istore_N + strb r0, [jpc] + b do_ixor_istore_N + .endm + + Opcode ixor_istore_0 + ixor_istore_0 + at ----------------------------------------------------------------------------- + .macro ixor_iastore jpc_off=0, seq_len=2 + POP2 r2, r3 + DISPATCH_START \seq_len + eor tmp1, r3, r2 @ tmp1 = value + POP2 r2, r3 @ r2, index, r3 = ref +#ifndef HW_NULL_PTR_CHECK + cmp r3, #0 + beq null_ptr_exception_jpc_1 +#endif +.abortentry109: + 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, #12] + DISPATCH_FINISH + .endm + + Opcode ixor_iastore + ixor_iastore + at ----------------------------------------------------------------------------- + .macro ixor_iadd jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + eor tmp2, r3, r2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode ixor_iadd + ixor_iadd + at ----------------------------------------------------------------------------- + .macro ixor_isub jpc_off=0, seq_len=2 + DISPATCH_START \seq_len + POP3 r2, r3, tmp1 + DISPATCH_NEXT + eor tmp2, r3, r2 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode ixor_isub + ixor_isub + at ----------------------------------------------------------------------------- + .macro ixor_ifeq jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ixor_ifeq + ixor_ifeq + at ----------------------------------------------------------------------------- + .macro ixor_ifne jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ixor_ifne + ixor_ifne + at ----------------------------------------------------------------------------- + .macro ixor_iflt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ixor_iflt + ixor_iflt + at ----------------------------------------------------------------------------- + .macro ixor_ifge jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ixor_ifge + ixor_ifge + at ----------------------------------------------------------------------------- + .macro ixor_ifgt jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ixor_ifgt + ixor_ifgt + at ----------------------------------------------------------------------------- + .macro ixor_ifle jpc_off=0, seq_len=1 + POP2 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 + .endm + + Opcode ixor_ifle + ixor_ifle + at ----------------------------------------------------------------------------- + .macro ixor_if_icmpeq jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ixor_if_icmpeq + ixor_if_icmpeq + at ----------------------------------------------------------------------------- + .macro ixor_if_icmpne jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ixor_if_icmpne + ixor_if_icmpne + at ----------------------------------------------------------------------------- + .macro ixor_if_icmplt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ixor_if_icmplt + ixor_if_icmplt + at ----------------------------------------------------------------------------- + .macro ixor_if_icmpge jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ixor_if_icmpge + ixor_if_icmpge + at ----------------------------------------------------------------------------- + .macro ixor_if_icmpgt jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ixor_if_icmpgt + ixor_if_icmpgt + at ----------------------------------------------------------------------------- + .macro ixor_if_icmple jpc_off=0, seq_len=1 + POP3 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 + .endm + + Opcode ixor_if_icmple + ixor_if_icmple + at ----------------------------------------------------------------------------- + .macro ixor_goto jpc_off=0, seq_len=1 + ldrsb r1, [jpc, #2] + ldrb ip, [jpc, #3] + add jpc, jpc, #1 + orr ip, ip, r1, lsl #8 + DISPATCH_START_REG ip + POP2 r2, r3 + eor r2, r3, r2 + DISPATCH_NEXT + PUSH r2 + DISPATCH_FINISH + .endm + + Opcode ixor_goto + ixor_goto + at ----------------------------------------------------------------------------- + .macro ixor_ireturn jpc_off=0, seq_len=1 + POP2 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 istate, [istate, #ISTATE_SAVED_ISTATE] + str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + str r1, [stack, r0, lsl #2]! + cmp istate, #0 + beq normal_return + ldr jpc, [istate, #ISTATE_BCP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT @ ands lr, ip, lr + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_FINISH +1: + PUSH r1 + add jpc, jpc, #1 + bl return_check_monitors + POP r1 + b 2b + .endm + + Opcode ixor_ireturn + ixor_ireturn + at ----------------------------------------------------------------------------- + .macro ixor_iinc jpc_off=0, seq_len=4 + POP2 tmp1, lr + DISPATCH_START \seq_len + eor 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 + .endm + + Opcode ixor_iinc + ixor_iinc + at ----------------------------------------------------------------------------- + .macro iinc_iconst_m1 jpc_off=0, seq_len=4 + ldrsb tmp1, [jpc, #2] + sub lr, r1, #opc_iconst_0 + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + ldr r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + PUSH lr + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iinc_iconst_m1 + iinc_iconst_m1 + at ----------------------------------------------------------------------------- + .macro iinc_iload jpc_off=0, seq_len=5 + ldrb lr, [jpc, #4] + ldrsb tmp1, [jpc, #2] + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + ldr r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + rsb lr, lr, #0 + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + ldr tmp1, [locals, lr, lsl #2] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iinc_iload + iinc_iload + at ----------------------------------------------------------------------------- + .macro iinc_iload_0 jpc_off=0, seq_len=4 + rsb lr, r1, #opc_iload_0 + ldrsb tmp1, [jpc, #2] + DISPATCH_START \seq_len + rsb tmp2, r2, #0 + ldr r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_NEXT + ldr tmp1, [locals, lr, lsl #2] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH + .endm + + Opcode iinc_iload_0 + iinc_iload_0 + at ----------------------------------------------------------------------------- + .macro iaccess_0_iload jpc_off=0, seq_len=6 + ldrb r2, [jpc, #3] + rsb tmp1, r0, #opc_iaccess_0 + ldrb r3, [jpc, #2] + add tmp2, constpool, r2, lsl #12 + DISPATCH_START 6 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 + ldrb r3, [jpc, #-1] + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_5 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + rsb r3, r3, #0 +.abortentry89: + ldr tmp2, [tmp1, tmp2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode iaccess_0_iload + iaccess_0_iload + at ----------------------------------------------------------------------------- + .macro iaccess_0_iload_0 jpc_off=0, seq_len=5 + ldrb r2, [jpc, #3] + rsb tmp1, r0, #opc_iaccess_0 + ldrb ip, [jpc, #2] + add tmp2, constpool, r2, lsl #12 + DISPATCH_START 5 + rsb r3, r1, #opc_iload_0 + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, ip, lsl #4 + DISPATCH_NEXT +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_4 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT +.abortentry90: + ldr tmp2, [tmp1, tmp2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH2 r3, tmp2 + DISPATCH_FINISH + .endm + + Opcode iaccess_0_iload_0 + iaccess_0_iload_0 + at ----------------------------------------------------------------------------- + .macro iaccess_0_iadd jpc_off=0, seq_len=5 + ldrb r2, [jpc, #3] + 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 +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_4 +#endif + DISPATCH_NEXT + ldr tmp2, [tmp2, #8] + DISPATCH_NEXT + POP r3 +.abortentry91: + ldr tmp2, [tmp1, tmp2] + DISPATCH_NEXT + add tmp2, tmp2, r3 + PUSH tmp2 + DISPATCH_FINISH + .endm + + Opcode iaccess_0_iadd + iaccess_0_iadd + at ----------------------------------------------------------------------------- + .macro iaccess_0_ifeq jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_ifeq + iaccess_0_ifeq + at ----------------------------------------------------------------------------- + .macro iaccess_0_ifne jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_ifne + iaccess_0_ifne + at ----------------------------------------------------------------------------- + .macro iaccess_0_iflt jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_iflt + iaccess_0_iflt + at ----------------------------------------------------------------------------- + .macro iaccess_0_ifge jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_ifge + iaccess_0_ifge + at ----------------------------------------------------------------------------- + .macro iaccess_0_ifgt jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_ifgt + iaccess_0_ifgt + at ----------------------------------------------------------------------------- + .macro iaccess_0_ifle jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_ifle + iaccess_0_ifle + at ----------------------------------------------------------------------------- + .macro iaccess_0_if_icmpeq jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_if_icmpeq + iaccess_0_if_icmpeq + at ----------------------------------------------------------------------------- + .macro iaccess_0_if_icmpne jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_if_icmpne + iaccess_0_if_icmpne + at ----------------------------------------------------------------------------- + .macro iaccess_0_if_icmplt jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_if_icmplt + iaccess_0_if_icmplt + at ----------------------------------------------------------------------------- + .macro iaccess_0_if_icmpge jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_if_icmpge + iaccess_0_if_icmpge + at ----------------------------------------------------------------------------- + .macro iaccess_0_if_icmpgt jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #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 + .endm + + Opcode iaccess_0_if_icmpgt + iaccess_0_if_icmpgt + at ----------------------------------------------------------------------------- + .macro iaccess_0_if_icmple jpc_off=0, seq_len=4 + 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] +#ifndef HW_NULL_PTR_CHECK + cmp tmp1, #0 + beq null_ptr_exception_jpc_3 +#endif + ldr tmp2, [tmp2, #8] + POP r3 + orr ip, ip, r0, lsl #8 +.abortentry103: + ldr tmp2, [tmp1, tmp2] + cmp r3, tmp2 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE + .endm + + Opcode iaccess_0_if_icmple + iaccess_0_if_icmple + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_iadd jpc_off=0, seq_len=3 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + add r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_iadd + iload_0_iconst_N_iadd + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_isub jpc_off=0, seq_len=3 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + sub r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_isub + iload_0_iconst_N_isub + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_iand jpc_off=0, seq_len=3 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + and r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_iand + iload_0_iconst_N_iand + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_ior jpc_off=0, seq_len=3 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + orr r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_ior + iload_0_iconst_N_ior + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_ixor jpc_off=0, seq_len=3 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + ldrb r2, [jpc, #1-\seq_len] + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub tmp1, r2, #opc_iconst_0 + DISPATCH_NEXT + eor r3, r3, tmp1 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_ixor + iload_0_iconst_N_ixor + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_iadd jpc_off=0, seq_len=4 + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + add r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_iadd + iload_iconst_N_iadd + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_isub jpc_off=0, seq_len=4 + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + sub r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_isub + iload_iconst_N_isub + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_iand jpc_off=0, seq_len=4 + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + and r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_iand + iload_iconst_N_iand + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_ior jpc_off=0, seq_len=4 + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + orr r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_ior + iload_iconst_N_ior + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_ixor jpc_off=0, seq_len=4 + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + DISPATCH_NEXT + ldr r2, [locals, r2, lsl #2] + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + eor r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_ixor + iload_iconst_N_ixor + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_iadd_u4store jpc_off=0, seq_len=5 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_iadd_u4store + iload_0_iconst_N_iadd_u4store + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_iadd_u4store jpc_off=0, seq_len=6 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_iadd_u4store + iload_iconst_N_iadd_u4store + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_iadd_istore_N jpc_off=0, seq_len=4 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_iadd_istore_N + iload_0_iconst_N_iadd_istore_N + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_iadd_istore_N jpc_off=0, seq_len=5 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_iadd_istore_N + iload_iconst_N_iadd_istore_N + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_isub_u4store jpc_off=0, seq_len=5 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_isub_u4store + iload_0_iconst_N_isub_u4store + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_isub_u4store jpc_off=0, seq_len=6 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_isub_u4store + iload_iconst_N_isub_u4store + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_isub_istore_N jpc_off=0, seq_len=4 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_isub_istore_N + iload_0_iconst_N_isub_istore_N + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_isub_istore_N jpc_off=0, seq_len=5 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_isub_istore_N + iload_iconst_N_isub_istore_N + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_iand_u4store jpc_off=0, seq_len=5 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_iand_u4store + iload_0_iconst_N_iand_u4store + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_iand_u4store jpc_off=0, seq_len=6 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_iand_u4store + iload_iconst_N_iand_u4store + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_iand_istore_N jpc_off=0, seq_len=4 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_iand_istore_N + iload_0_iconst_N_iand_istore_N + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_iand_istore_N jpc_off=0, seq_len=5 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_iand_istore_N + iload_iconst_N_iand_istore_N + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_ior_u4store jpc_off=0, seq_len=5 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_ior_u4store + iload_0_iconst_N_ior_u4store + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_ior_u4store jpc_off=0, seq_len=6 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_ior_u4store + iload_iconst_N_ior_u4store + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_ior_istore_N jpc_off=0, seq_len=4 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_ior_istore_N + iload_0_iconst_N_ior_istore_N + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_ior_istore_N jpc_off=0, seq_len=5 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_ior_istore_N + iload_iconst_N_ior_istore_N + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_ixor_u4store jpc_off=0, seq_len=5 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_ixor_u4store + iload_0_iconst_N_ixor_u4store + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_ixor_u4store jpc_off=0, seq_len=6 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_ixor_u4store + iload_iconst_N_ixor_u4store + at ----------------------------------------------------------------------------- + .macro iload_0_iconst_N_ixor_istore_N jpc_off=0, seq_len=4 + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_0_iconst_N_ixor_istore_N + iload_0_iconst_N_ixor_istore_N + at ----------------------------------------------------------------------------- + .macro iload_iconst_N_ixor_istore_N jpc_off=0, seq_len=5 + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH + .endm + + Opcode iload_iconst_N_ixor_istore_N + iload_iconst_N_ixor_istore_N + .macro MAIN_DISPATCH_TABLE + .word do_nop + .word do_u4const_0 + .word dispatch_iconst_m1+1 + .word dispatch_iconst_0+1 + .word dispatch_iconst_1+1 + .word dispatch_iconst_2+1 + .word dispatch_iconst_3+1 + .word dispatch_iconst_4+1 + .word dispatch_iconst_5+1 + .word do_u8const_0 + .word do_lconst_1 + .word do_u4const_0 + .word do_fconst_1 + .word do_fconst_2 + .word do_u8const_0 + .word do_dconst_1 + .word do_bipush + .word do_sipush + .word do_ldc + .word do_ldc_w + .word do_ldc2_w + .word dispatch_iload+2 + .word do_u8load + .word dispatch_fload+2 + .word do_u8load + .word dispatch_aload+2 + .word dispatch_iload_0+1 + .word dispatch_iload_1+1 + .word dispatch_iload_2+1 + .word dispatch_iload_3+1 + .word do_u8load_0 + .word do_u8load_1 + .word do_u8load_2 + .word do_u8load_3 + .word do_fload_0 + .word do_fload_0 + .word do_fload_0 + .word do_fload_0 + .word do_u8load_0 + .word do_u8load_1 + .word do_u8load_2 + .word do_u8load_3 + .word dispatch_aload_0+1 + .word dispatch_aload_1+1 + .word dispatch_aload_2+1 + .word dispatch_aload_3+1 + .word dispatch_iaload+1 + .word do_u8aload + .word dispatch_faload+1 + .word do_u8aload + .word dispatch_aaload+1 + .word do_baload + .word do_caload + .word do_saload + .word do_u4store + .word do_u8store + .word do_u4store + .word do_u8store + .word do_u4store + .word do_u4store_0 + .word do_u4store_1 + .word do_u4store_2 + .word do_u4store_3 + .word do_u8store_0 + .word do_u8store_1 + .word do_u8store_2 + .word do_u8store_3 + .word do_u4store_0 + .word do_u4store_1 + .word do_u4store_2 + .word do_u4store_3 + .word do_u8store_0 + .word do_u8store_1 + .word do_u8store_2 + .word do_u8store_3 + .word do_u4store_0 + .word do_u4store_1 + .word do_u4store_2 + .word do_u4store_3 + .word do_u4astore + .word do_u8astore + .word do_u4astore + .word do_u8astore + .word do_aastore + .word do_bastore + .word do_u2astore + .word do_u2astore + .word do_jpop + .word do_jpop2 + .word do_dup + .word do_dup_x1 + .word do_dup_x2 + .word do_dup2 + .word do_dup2_x1 + .word do_dup2_x2 + .word do_swap + .word dispatch_iadd+1 + .word do_ladd + .word do_fadd + .word do_dadd + .word dispatch_isub+1 + .word do_lsub + .word do_fsub + .word do_dsub + .word do_imul + .word do_lmul + .word do_fmul + .word do_dmul + .word do_idiv + .word do_ldiv + .word do_fdiv + .word do_ddiv + .word do_irem + .word do_lrem + .word do_frem + .word do_drem + .word do_ineg + .word do_lneg + .word do_fneg + .word do_dneg + .word do_ishl + .word do_lshl + .word do_ishr + .word do_lshr + .word do_iushr + .word do_lushr + .word dispatch_iand+1 + .word do_land + .word dispatch_ior+1 + .word do_lor + .word dispatch_ixor+1 + .word do_lxor + .word dispatch_iinc+3 + .word do_i2l + .word do_i2f + .word do_i2d + .word do_l2i + .word do_l2f + .word do_l2d + .word do_f2i + .word do_f2l + .word do_f2d + .word do_d2i + .word do_d2l + .word do_d2f + .word do_i2b + .word do_i2c + .word do_i2s + .word do_lcmp + .word do_fcmpl + .word do_fcmpg + .word do_dcmpl + .word do_dcmpg + .word do_ifeq_unsafe + .word do_ifne_unsafe + .word do_iflt_unsafe + .word do_ifge_unsafe + .word do_ifgt_unsafe + .word do_ifle_unsafe + .word do_if_icmpeq_unsafe + .word do_if_icmpne_unsafe + .word do_if_icmplt_unsafe + .word do_if_icmpge_unsafe + .word do_if_icmpgt_unsafe + .word do_if_icmple_unsafe + .word do_if_icmpeq_unsafe + .word do_if_icmpne_unsafe + .word do_goto_unsafe + .word do_jsr + .word do_ret + .word do_tableswitch + .word do_lookupswitch + .word do_ireturn_unsafe + .word do_lreturn_unsafe + .word do_ireturn_unsafe + .word do_lreturn_unsafe + .word do_ireturn_unsafe + .word do_return_unsafe + .word do_getstatic + .word do_putstatic + .word do_getfield + .word do_putfield + .word do_invokevirtual + .word do_invokespecial + .word do_invokestatic + .word do_invokeinterface + .word do_undefined + .word do_new + .word do_newarray + .word do_anewarray + .word do_arraylength + .word do_athrow + .word do_checkcast + .word do_instanceof + .word do_monitorenter + .word do_monitorexit + .word do_wide + .word do_multianewarray + .word do_ifeq_unsafe + .word do_ifne_unsafe + .word do_goto_w + .word do_jsr_w + .word do_breakpoint + .word do_undefined + .word do_bgetfield + .word do_cgetfield + .word do_undefined + .word do_undefined + .word do_igetfield + .word do_lgetfield + .word do_sgetfield + .word do_aputfield + .word do_bputfield + .word do_cputfield + .word do_undefined + .word do_undefined + .word do_iputfield + .word do_lputfield + .word do_undefined + .word dispatch_iaccess_0+4 + .word dispatch_iaccess_1+4 + .word dispatch_iaccess_2+4 + .word dispatch_iaccess_3+4 + .word do_undefined + .word do_undefined + .word do_undefined + .word do_invokevfinal + .word do_undefined + .word do_undefined + .word do_return_register_finalizer + .word do_undefined + .word dispatch_iload_0_iconst_N+2 + .word dispatch_iload_1_iconst_N+2 + .word dispatch_iload_2_iconst_N+2 + .word dispatch_iload_3_iconst_N+2 + .word dispatch_iload_iconst_N+3 + .word do_invokeresolved + .word do_iadd_istore_N + .word do_isub_istore_N + .word do_iand_istore_N + .word do_ior_istore_N + .word do_ixor_istore_N + .word do_iadd_u4store + .word do_isub_u4store + .word do_iand_u4store + .word do_ior_u4store + .word do_ixor_u4store + .word do_invokespecialresolved + .word do_invokestaticresolved + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + .endm + .macro SUB_DISPATCH_TABLES +dispatch_iconst_m1: +dispatch_iconst_0: +dispatch_iconst_1: +dispatch_iconst_2: +dispatch_iconst_3: +dispatch_iconst_4: +dispatch_iconst_5: + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_astore + .word do_iconst_N + .word do_iconst_m1_astore + .word do_iconst_N + .word do_iconst_m1_astore + .word do_iconst_m1_istore_0 + .word do_iconst_m1_istore_0 + .word do_iconst_m1_istore_0 + .word do_iconst_m1_istore_0 + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_iadd + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_isub + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_idiv + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_ishl + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_if_icmpeq + .word do_iconst_m1_if_icmpne + .word do_iconst_m1_if_icmplt + .word do_iconst_m1_if_icmpge + .word do_iconst_m1_if_icmpgt + .word do_iconst_m1_if_icmple + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_ireturn + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_invokevfinal + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_invokeresolved + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_m1_invokespecialresolved + .word do_iconst_m1_invokestaticresolved + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N +dispatch_iload: +dispatch_fload: +dispatch_aload: + .word do_u4load + .word do_u4load + .word do_iload_iconst_m1 + .word do_iload_iconst_m1 + .word do_iload_iconst_m1 + .word do_iload_iconst_m1 + .word do_iload_iconst_m1 + .word do_iload_iconst_m1 + .word do_iload_iconst_m1 + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_bipush + .word do_iload_sipush + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_iload + .word do_u4load + .word do_iload_iload + .word do_u4load + .word do_iload_iload + .word do_iload_iload_0 + .word do_iload_iload_0 + .word do_iload_iload_0 + .word do_iload_iload_0 + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_aload_0 + .word do_iload_aload_0 + .word do_iload_aload_0 + .word do_iload_aload_0 + .word do_iload_iaload + .word do_u4load + .word do_iload_iaload + .word do_u4load + .word do_iload_iaload + .word do_iload_baload + .word do_iload_caload + .word do_iload_saload + .word do_iload_astore + .word do_u4load + .word do_iload_astore + .word do_u4load + .word do_iload_astore + .word do_iload_istore_0 + .word do_iload_istore_0 + .word do_iload_istore_0 + .word do_iload_istore_0 + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_astore_0 + .word do_iload_astore_0 + .word do_iload_astore_0 + .word do_iload_astore_0 + .word do_iload_iastore + .word do_u4load + .word do_iload_iastore + .word do_u4load + .word do_u4load + .word do_iload_bastore + .word do_iload_castore + .word do_iload_castore + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_iadd + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_isub + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_imul + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_idiv + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_irem + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_ineg + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_ishl + .word do_u4load + .word do_iload_ishr + .word do_u4load + .word do_iload_iushr + .word do_u4load + .word do_iload_iand + .word do_u4load + .word do_iload_ior + .word do_u4load + .word do_iload_ixor + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_i2c + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_ifeq + .word do_iload_ifne + .word do_iload_iflt + .word do_iload_ifge + .word do_iload_ifgt + .word do_iload_ifle + .word do_iload_if_icmpeq + .word do_iload_if_icmpne + .word do_iload_if_icmplt + .word do_iload_if_icmpge + .word do_iload_if_icmpgt + .word do_iload_if_icmple + .word do_iload_if_icmpeq + .word do_iload_if_icmpne + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_ireturn + .word do_u4load + .word do_iload_ireturn + .word do_u4load + .word do_iload_ireturn + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_invokeinterface + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_ifeq + .word do_iload_ifne + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_igetfield + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_invokevfinal + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_invokeresolved + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_iload_invokespecialresolved + .word do_iload_invokestaticresolved + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load + .word do_u4load +dispatch_iload_0: +dispatch_iload_1: +dispatch_iload_2: +dispatch_iload_3: + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_iconst_m1 + .word do_iload_0_iconst_m1 + .word do_iload_0_iconst_m1 + .word do_iload_0_iconst_m1 + .word do_iload_0_iconst_m1 + .word do_iload_0_iconst_m1 + .word do_iload_0_iconst_m1 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_bipush + .word do_iload_0_sipush + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_iload + .word do_iload_0 + .word do_iload_0_iload + .word do_iload_0 + .word do_iload_0_iload + .word do_iload_0_iload_0 + .word do_iload_0_iload_0 + .word do_iload_0_iload_0 + .word do_iload_0_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_aload_0 + .word do_iload_0_aload_0 + .word do_iload_0_aload_0 + .word do_iload_0_aload_0 + .word do_iload_0_iaload + .word do_iload_0 + .word do_iload_0_iaload + .word do_iload_0 + .word do_iload_0_iaload + .word do_iload_0_baload + .word do_iload_0_caload + .word do_iload_0_saload + .word do_iload_0_astore + .word do_iload_0 + .word do_iload_0_astore + .word do_iload_0 + .word do_iload_0_astore + .word do_iload_0_istore_0 + .word do_iload_0_istore_0 + .word do_iload_0_istore_0 + .word do_iload_0_istore_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_iastore + .word do_iload_0 + .word do_iload_0_iastore + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_bastore + .word do_iload_0_castore + .word do_iload_0_castore + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_iadd + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_isub + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_imul + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_idiv + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_irem + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_ineg + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_ishl + .word do_iload_0 + .word do_iload_0_ishr + .word do_iload_0 + .word do_iload_0_iushr + .word do_iload_0 + .word do_iload_0_iand + .word do_iload_0 + .word do_iload_0_ior + .word do_iload_0 + .word do_iload_0_ixor + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_i2c + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_ifeq + .word do_iload_0_ifne + .word do_iload_0_iflt + .word do_iload_0_ifge + .word do_iload_0_ifgt + .word do_iload_0_ifle + .word do_iload_0_if_icmpeq + .word do_iload_0_if_icmpne + .word do_iload_0_if_icmplt + .word do_iload_0_if_icmpge + .word do_iload_0_if_icmpgt + .word do_iload_0_if_icmple + .word do_iload_0_if_icmpeq + .word do_iload_0_if_icmpne + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_ireturn + .word do_iload_0 + .word do_iload_0_ireturn + .word do_iload_0 + .word do_iload_0_ireturn + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_invokeinterface + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_ifeq + .word do_iload_0_ifne + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_invokevfinal + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_invokeresolved + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0_invokespecialresolved + .word do_iload_0_invokestaticresolved + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 +dispatch_aload_0: +dispatch_aload_1: +dispatch_aload_2: +dispatch_aload_3: + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_iconst_m1 + .word do_aload_0_iconst_m1 + .word do_aload_0_iconst_m1 + .word do_aload_0_iconst_m1 + .word do_aload_0_iconst_m1 + .word do_aload_0_iconst_m1 + .word do_aload_0_iconst_m1 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_bipush + .word do_aload_0_sipush + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_iload + .word do_aload_0 + .word do_aload_0_iload + .word do_aload_0 + .word do_aload_0_iload + .word do_aload_0_iload_0 + .word do_aload_0_iload_0 + .word do_aload_0_iload_0 + .word do_aload_0_iload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_aload_0 + .word do_aload_0_aload_0 + .word do_aload_0_aload_0 + .word do_aload_0_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_astore + .word do_aload_0 + .word do_aload_0_astore + .word do_aload_0 + .word do_aload_0_astore + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_astore_0 + .word do_aload_0_astore_0 + .word do_aload_0_astore_0 + .word do_aload_0_astore_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_invokeinterface + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_igetfield + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_invokevfinal + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_invokeresolved + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0_invokespecialresolved + .word do_aload_0_invokestaticresolved + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 +dispatch_iaload: +dispatch_faload: +dispatch_aaload: + .word do_u4aload + .word do_u4aload + .word do_iaload_iconst_m1 + .word do_iaload_iconst_m1 + .word do_iaload_iconst_m1 + .word do_iaload_iconst_m1 + .word do_iaload_iconst_m1 + .word do_iaload_iconst_m1 + .word do_iaload_iconst_m1 + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_bipush + .word do_iaload_sipush + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_iload + .word do_u4aload + .word do_iaload_iload + .word do_u4aload + .word do_iaload_iload + .word do_iaload_iload_0 + .word do_iaload_iload_0 + .word do_iaload_iload_0 + .word do_iaload_iload_0 + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_aload_0 + .word do_iaload_aload_0 + .word do_iaload_aload_0 + .word do_iaload_aload_0 + .word do_iaload_iaload + .word do_u4aload + .word do_iaload_iaload + .word do_u4aload + .word do_iaload_iaload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_astore + .word do_u4aload + .word do_iaload_astore + .word do_u4aload + .word do_iaload_astore + .word do_iaload_istore_0 + .word do_iaload_istore_0 + .word do_iaload_istore_0 + .word do_iaload_istore_0 + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_iastore + .word do_u4aload + .word do_iaload_iastore + .word do_u4aload + .word do_u4aload + .word do_iaload_bastore + .word do_iaload_castore + .word do_iaload_castore + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_iand + .word do_u4aload + .word do_iaload_ior + .word do_u4aload + .word do_iaload_ixor + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_ifeq + .word do_iaload_ifne + .word do_iaload_iflt + .word do_iaload_ifge + .word do_iaload_ifgt + .word do_iaload_ifle + .word do_iaload_if_icmpeq + .word do_iaload_if_icmpne + .word do_iaload_if_icmplt + .word do_iaload_if_icmpge + .word do_iaload_if_icmpgt + .word do_iaload_if_icmple + .word do_iaload_if_icmpeq + .word do_iaload_if_icmpne + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_iaload_ifeq + .word do_iaload_ifne + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload + .word do_u4aload +dispatch_iadd: + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_iload + .word do_iadd + .word do_iadd_iload + .word do_iadd + .word do_iadd_iload + .word do_iadd_iload_0 + .word do_iadd_iload_0 + .word do_iadd_iload_0 + .word do_iadd_iload_0 + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_iaload + .word do_iadd + .word do_iadd_iaload + .word do_iadd + .word do_iadd_iaload + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_istore + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_istore_0 + .word do_iadd_istore_0 + .word do_iadd_istore_0 + .word do_iadd_istore_0 + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_iastore + .word do_iadd + .word do_iadd_iastore + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_isub + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_iinc + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_ifeq + .word do_iadd_ifne + .word do_iadd_iflt + .word do_iadd_ifge + .word do_iadd_ifgt + .word do_iadd_ifle + .word do_iadd_if_icmpeq + .word do_iadd_if_icmpne + .word do_iadd_if_icmplt + .word do_iadd_if_icmpge + .word do_iadd_if_icmpgt + .word do_iadd_if_icmple + .word do_iadd_if_icmpeq + .word do_iadd_if_icmpne + .word do_iadd_goto + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_ireturn + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd_ifeq + .word do_iadd_ifne + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd + .word do_iadd +dispatch_isub: + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_iload + .word do_isub + .word do_isub_iload + .word do_isub + .word do_isub_iload + .word do_isub_iload_0 + .word do_isub_iload_0 + .word do_isub_iload_0 + .word do_isub_iload_0 + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_iaload + .word do_isub + .word do_isub_iaload + .word do_isub + .word do_isub_iaload + .word do_isub + .word do_isub + .word do_isub + .word do_isub_istore + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_istore_0 + .word do_isub_istore_0 + .word do_isub_istore_0 + .word do_isub_istore_0 + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_iastore + .word do_isub + .word do_isub_iastore + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_iadd + .word do_isub + .word do_isub + .word do_isub + .word do_isub_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_iinc + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_ifeq + .word do_isub_ifne + .word do_isub_iflt + .word do_isub_ifge + .word do_isub_ifgt + .word do_isub_ifle + .word do_isub_if_icmpeq + .word do_isub_if_icmpne + .word do_isub_if_icmplt + .word do_isub_if_icmpge + .word do_isub_if_icmpgt + .word do_isub_if_icmple + .word do_isub_if_icmpeq + .word do_isub_if_icmpne + .word do_isub_goto + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_ireturn + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub_ifeq + .word do_isub_ifne + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub + .word do_isub +dispatch_iand: + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_iload + .word do_iand + .word do_iand_iload + .word do_iand + .word do_iand_iload + .word do_iand_iload_0 + .word do_iand_iload_0 + .word do_iand_iload_0 + .word do_iand_iload_0 + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_iaload + .word do_iand + .word do_iand_iaload + .word do_iand + .word do_iand_iaload + .word do_iand + .word do_iand + .word do_iand + .word do_iand_istore + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_istore_0 + .word do_iand_istore_0 + .word do_iand_istore_0 + .word do_iand_istore_0 + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_iastore + .word do_iand + .word do_iand_iastore + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_iadd + .word do_iand + .word do_iand + .word do_iand + .word do_iand_isub + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_iinc + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_ifeq + .word do_iand_ifne + .word do_iand_iflt + .word do_iand_ifge + .word do_iand_ifgt + .word do_iand_ifle + .word do_iand_if_icmpeq + .word do_iand_if_icmpne + .word do_iand_if_icmplt + .word do_iand_if_icmpge + .word do_iand_if_icmpgt + .word do_iand_if_icmple + .word do_iand_if_icmpeq + .word do_iand_if_icmpne + .word do_iand_goto + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_ireturn + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand_ifeq + .word do_iand_ifne + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand + .word do_iand +dispatch_ior: + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_iload + .word do_ior + .word do_ior_iload + .word do_ior + .word do_ior_iload + .word do_ior_iload_0 + .word do_ior_iload_0 + .word do_ior_iload_0 + .word do_ior_iload_0 + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_iaload + .word do_ior + .word do_ior_iaload + .word do_ior + .word do_ior_iaload + .word do_ior + .word do_ior + .word do_ior + .word do_ior_istore + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_istore_0 + .word do_ior_istore_0 + .word do_ior_istore_0 + .word do_ior_istore_0 + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_iastore + .word do_ior + .word do_ior_iastore + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_iadd + .word do_ior + .word do_ior + .word do_ior + .word do_ior_isub + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_iinc + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_ifeq + .word do_ior_ifne + .word do_ior_iflt + .word do_ior_ifge + .word do_ior_ifgt + .word do_ior_ifle + .word do_ior_if_icmpeq + .word do_ior_if_icmpne + .word do_ior_if_icmplt + .word do_ior_if_icmpge + .word do_ior_if_icmpgt + .word do_ior_if_icmple + .word do_ior_if_icmpeq + .word do_ior_if_icmpne + .word do_ior_goto + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_ireturn + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior_ifeq + .word do_ior_ifne + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior + .word do_ior +dispatch_ixor: + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_iload + .word do_ixor + .word do_ixor_iload + .word do_ixor + .word do_ixor_iload + .word do_ixor_iload_0 + .word do_ixor_iload_0 + .word do_ixor_iload_0 + .word do_ixor_iload_0 + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_iaload + .word do_ixor + .word do_ixor_iaload + .word do_ixor + .word do_ixor_iaload + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_istore + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_istore_0 + .word do_ixor_istore_0 + .word do_ixor_istore_0 + .word do_ixor_istore_0 + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_iastore + .word do_ixor + .word do_ixor_iastore + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_iadd + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_isub + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_iinc + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_ifeq + .word do_ixor_ifne + .word do_ixor_iflt + .word do_ixor_ifge + .word do_ixor_ifgt + .word do_ixor_ifle + .word do_ixor_if_icmpeq + .word do_ixor_if_icmpne + .word do_ixor_if_icmplt + .word do_ixor_if_icmpge + .word do_ixor_if_icmpgt + .word do_ixor_if_icmple + .word do_ixor_if_icmpeq + .word do_ixor_if_icmpne + .word do_ixor_goto + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_ireturn + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor_ifeq + .word do_ixor_ifne + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor + .word do_ixor +dispatch_iinc: + .word do_iinc + .word do_iinc + .word do_iinc_iconst_m1 + .word do_iinc_iconst_m1 + .word do_iinc_iconst_m1 + .word do_iinc_iconst_m1 + .word do_iinc_iconst_m1 + .word do_iinc_iconst_m1 + .word do_iinc_iconst_m1 + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc_iload + .word do_iinc + .word do_iinc_iload + .word do_iinc + .word do_iinc_iload + .word do_iinc_iload_0 + .word do_iinc_iload_0 + .word do_iinc_iload_0 + .word do_iinc_iload_0 + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc + .word do_iinc +dispatch_iaccess_0: +dispatch_iaccess_1: +dispatch_iaccess_2: +dispatch_iaccess_3: + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0_iload + .word do_iaccess_0 + .word do_iaccess_0_iload + .word do_iaccess_0 + .word do_iaccess_0_iload + .word do_iaccess_0_iload_0 + .word do_iaccess_0_iload_0 + .word do_iaccess_0_iload_0 + .word do_iaccess_0_iload_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0_iadd + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0_ifeq + .word do_iaccess_0_ifne + .word do_iaccess_0_iflt + .word do_iaccess_0_ifge + .word do_iaccess_0_ifgt + .word do_iaccess_0_ifle + .word do_iaccess_0_if_icmpeq + .word do_iaccess_0_if_icmpne + .word do_iaccess_0_if_icmplt + .word do_iaccess_0_if_icmpge + .word do_iaccess_0_if_icmpgt + .word do_iaccess_0_if_icmple + .word do_iaccess_0_if_icmpeq + .word do_iaccess_0_if_icmpne + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0_ifeq + .word do_iaccess_0_ifne + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 +dispatch_iload_0_iconst_N: +dispatch_iload_1_iconst_N: +dispatch_iload_2_iconst_N: +dispatch_iload_3_iconst_N: + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N_iadd + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N_isub + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N_iand + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N_ior + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N_ixor + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N_iadd_istore_N + .word do_iload_0_iconst_N_isub_istore_N + .word do_iload_0_iconst_N_iand_istore_N + .word do_iload_0_iconst_N_ior_istore_N + .word do_iload_0_iconst_N_ixor_istore_N + .word do_iload_0_iconst_N_iadd_u4store + .word do_iload_0_iconst_N_isub_u4store + .word do_iload_0_iconst_N_iand_u4store + .word do_iload_0_iconst_N_ior_u4store + .word do_iload_0_iconst_N_ixor_u4store + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N +dispatch_iload_iconst_N: + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N_iadd + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N_isub + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N_iand + .word do_iload_iconst_N + .word do_iload_iconst_N_ior + .word do_iload_iconst_N + .word do_iload_iconst_N_ixor + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N_iadd_istore_N + .word do_iload_iconst_N_isub_istore_N + .word do_iload_iconst_N_iand_istore_N + .word do_iload_iconst_N_ior_istore_N + .word do_iload_iconst_N_ixor_istore_N + .word do_iload_iconst_N_iadd_u4store + .word do_iload_iconst_N_isub_u4store + .word do_iload_iconst_N_iand_u4store + .word do_iload_iconst_N_ior_u4store + .word do_iload_iconst_N_ixor_u4store + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .word do_iload_iconst_N + .endm diff -ruNE icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp --- icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp 2009-08-13 14:17:47.000000000 +0100 +++ icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp 2009-08-13 14:26:56.000000000 +0100 @@ -28,5 +28,32 @@ void Bytecodes::pd_initialize() { - // No zero specific initialization +#if defined(PRODUCT) && defined(HOTSPOT_ASM) + def(_iaccess_0, "_iaccess_0", "b_jj", NULL, T_INT, 1, true, _aload_0); + def(_iaccess_1, "_iaccess_1", "b_jj", NULL, T_INT, 1, true, _aload_1); + def(_iaccess_2, "_iaccess_2", "b_jj", NULL, T_INT, 1, true, _aload_2); + def(_iaccess_3, "_iaccess_3", "b_jj", NULL, T_INT, 1, true, _aload_3); + + def(_iload_0_iconst_N, "iload_0_iconst_N", "b_", NULL, T_INT, 2, false, _iload_0); + def(_iload_1_iconst_N, "iload_1_iconst_N", "b_", NULL, T_INT, 2, false, _iload_1); + def(_iload_2_iconst_N, "iload_2_iconst_N", "b_", NULL, T_INT, 2, false, _iload_2); + def(_iload_3_iconst_N, "iload_3_iconst_N", "b_", NULL, T_INT, 2, false, _iload_3); + def(_iload_iconst_N, "iload_iconst_N", "bi_", NULL, T_INT, 2, false, _iload); + def(_invokeresolved, "invokeresolved", "bjj", NULL, T_ILLEGAL, -1, true, _invokevirtual); + + def(_iadd_istore_N, "iadd_istore_N", "b_", NULL, T_VOID, -2, false, _iadd); + def(_isub_istore_N, "isub_istore_N", "b_", NULL, T_VOID, -2, false, _isub); + def(_iand_istore_N, "iand_istore_N", "b_", NULL, T_VOID, -2, false, _iand); + def(_ior_istore_N, "ior_istore_N", "b_", NULL, T_VOID, -2, false, _ior); + def(_ixor_istore_N, "ixor_istore_N", "b_", NULL, T_VOID, -2, false, _ixor); + + def(_iadd_u4store, "iadd_u4store", "b_i", NULL, T_VOID, -2, false, _iadd); + def(_isub_u4store, "isub_u4store", "b_i", NULL, T_VOID, -2, false, _isub); + def(_iand_u4store, "iand_u4store", "b_i", NULL, T_VOID, -2, false, _iand); + def(_ior_u4store, "ior_u4store", "b_i", NULL, T_VOID, -2, false, _ior); + def(_ixor_u4store, "ixor_u4store", "b_i", NULL, T_VOID, -2, false, _ixor); + + def(_invokespecialresolved, "invokespecialresolved", "bjj", NULL, T_ILLEGAL, -1, true, _invokespecial); + def(_invokestaticresolved, "invokestaticresolved", "bjj", NULL, T_ILLEGAL, 0, true, _invokestatic); +#endif // HOTSPOT_ASM } diff -ruNE icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp 2009-08-13 14:17:47.000000000 +0100 +++ icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp 2009-08-13 14:27:06.000000000 +0100 @@ -0,0 +1,24 @@ +#if defined(PRODUCT) && defined(HOTSPOT_ASM) +#define _iaccess_0 ((Bytecodes::Code)0xdb) +#define _iaccess_1 ((Bytecodes::Code)0xdc) +#define _iaccess_2 ((Bytecodes::Code)0xdd) +#define _iaccess_3 ((Bytecodes::Code)0xde) + _iload_0_iconst_N , // 231 + _iload_1_iconst_N , // 232 + _iload_2_iconst_N , // 233 + _iload_3_iconst_N , // 234 + _iload_iconst_N , // 235 + _invokeresolved , // 236 + _iadd_istore_N , // 237 + _isub_istore_N , // 238 + _iand_istore_N , // 239 + _ior_istore_N , // 240 + _ixor_istore_N , // 241 + _iadd_u4store , // 242 + _isub_u4store , // 243 + _iand_u4store , // 244 + _ior_u4store , // 245 + _ixor_u4store , // 246 + _invokespecialresolved , // 247 + _invokestaticresolved , // 248 +#endif // HOTSPOT_ASM diff -ruNE icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 1970-01-01 01:00:00.000000000 +0100 +++ icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2009-08-13 14:27:44.000000000 +0100 @@ -0,0 +1,5820 @@ +#if defined(PRODUCT) && defined(HOTSPOT_ASM) +//#define HW_NULL_PTR_CHECK +//#define UNALIGNED_ACCESS +//#define B14 + +#define ARMv4 + +#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) + +// ECN: DOH!!! gcc 4.4 has changed the name mangling scheme!!! +#if GCC_VERSION >= 40400 +#define oop_store _Z9oop_storeIP7oopDescEvPT_S1_ +#else +#define oop_store _Z9oop_storeIP7oopDescEvPVT_S1_ +#endif + +#define stack r4 +#define jpc r5 +#define dispatch r6 +#define locals r7 +#define istate r8 +#define constpool r9 +#define arm_sp r13 + +#define CONST_POOL_OFFSET 16 + +#define tmp_xxx r7 +#define tmp_yyy r5 +#define tmp_zzz r8 +#define tmp_vvv r9 + +#define tmp1 r11 +#define tmp2 r10 + +#define regset r4-r11 + +#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 JVM_CONSTANT_Utf8 1 +#define JVM_CONSTANT_Unicode 2 +#define JVM_CONSTANT_Integer 3 +#define JVM_CONSTANT_Float 4 +#define JVM_CONSTANT_Long 5 +#define JVM_CONSTANT_Double 6 +#define JVM_CONSTANT_Class 7 +#define JVM_CONSTANT_String 8 +#define JVM_CONSTANT_Fieldref 9 +#define JVM_CONSTANT_Methodref 10 +#define JVM_CONSTANT_InterfaceMethodref 11 +#define JVM_CONSTANT_NameAndType 12 + +#define JVM_CONSTANT_UnresolvedClass 100 +#define JVM_CONSTANT_ClassIndex 101 +#define JVM_CONSTANT_UnresolvedString 102 +#define JVM_CONSTANT_StringIndex 103 +#define JVM_CONSTANT_UnresolvedClassInError 104 + +#define T_BOOLEAN 4 +#define T_CHAR 5 +#define T_FLOAT 6 +#define T_DOUBLE 7 +#define T_BYTE 8 +#define T_SHORT 9 +#define T_INT 10 +#define T_LONG 11 +#define T_OBJECT 12 +#define T_ARRAY 13 +#define T_VOID 14 + +#define _thread_uninitialized 0 +#define _thread_new 2 +#define _thread_new_trans 3 +#define _thread_in_native 4 +#define _thread_in_native_trans 5 +#define _thread_in_vm 6 +#define _thread_in_vm_trans 7 +#define _thread_in_Java 8 +#define _thread_in_Java_trans 9 +#define _thread_blocked 10 +#define _thread_blocked_trans 11 +#define _thread_max_state 12 + + +#define THREAD_VTABLE 0 +#define THREAD_PENDING_EXC 4 +#define THREAD_SUSPEND_FLAGS 24 +#define THREAD_ACTIVE_HANDLES 32 +#define THREAD_LAST_HANDLE_MARK 40 + +#ifdef B14 +#define THREAD_TLAB_TOP 56 +#define THREAD_TLAB_END 64 +#define THREAD_HANDLE_AREA 152 +#define THREAD_STACK_BASE 156 +#define THREAD_STACK_SIZE 160 +#define THREAD_LAST_JAVA_SP 260 +#define THREAD_JNI_ENVIRONMENT 272 +#define THREAD_VM_RESULT 300 +#define THREAD_STATE 320 +#define THREAD_DO_NOT_UNLOCK 345 +#define THREAD_JAVA_STACK_BASE 476 +#define THREAD_JAVA_SP 484 +#define THREAD_TOP_ZERO_FRAME 488 + +#define THREAD_VTABLE_IS_LOCK_OWNED 56 +#else +#define THREAD_TLAB_TOP 56-4 +#define THREAD_TLAB_END 64-4 +#define THREAD_HANDLE_AREA 152-4 +#define THREAD_STACK_BASE 156-4 +#define THREAD_STACK_SIZE 160-4 +#define THREAD_LAST_JAVA_SP 260-4 +#define THREAD_JNI_ENVIRONMENT 272-4 +#define THREAD_VM_RESULT 300-4 +#define THREAD_STATE 320-4 +#define THREAD_DO_NOT_UNLOCK 345-4 +#define THREAD_JAVA_STACK_BASE 476-4 +#define THREAD_JAVA_SP 484-4 +#define THREAD_TOP_ZERO_FRAME 488-4 + +#define THREAD_VTABLE_IS_LOCK_OWNED 52 +#endif + +#define UNIVERSE_VTABLE 0 +#define UNIVERSE_VTABLE_TOP_ADDR 96 +#define UNIVERSE_VTABLE_END_ADDR 100 + +#ifdef B14 +#define VMSYMBOLS_ArithmeticException 77 +#define VMSYMBOLS_ArrayIndexOutOfBounds 78 +#define VMSYMBOLS_ArrayStoreException 79 +#define VMSYMBOLS_ClassCastException 80 +#define VMSYMBOLS_NullPointerException 95 +#define VMSYMBOLS_AbstractMethodError 103 +#define VMSYMBOLS_IncompatibleClassChangeError 110 +#define VMSYMBOLS_InternalError 111 +#else +#define VMSYMBOLS_ArithmeticException 78 +#define VMSYMBOLS_ArrayIndexOutOfBounds 79 +#define VMSYMBOLS_ArrayStoreException 80 +#define VMSYMBOLS_ClassCastException 81 +#define VMSYMBOLS_NullPointerException 96 +#define VMSYMBOLS_AbstractMethodError 104 +#define VMSYMBOLS_IncompatibleClassChangeError 111 +#define VMSYMBOLS_InternalError 112 +#endif + +#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_SAVED_ISTATE 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_CAFEBABF 68 + +#define last_implemented_bytecode 248 + + .macro ALIGN_CODE + .align 6 + .endm + + .macro ALIGN_DATA + .align 6 + .endm + + .macro ALIGN_OPCODE + .align 6 + .endm + + .macro ALIGN_WORD + .align 2 + .endm + + .macro Opcode label + ALIGN_OPCODE +do_\label: + .endm + + .macro GET_STACK offset, reg + ldr \reg, [stack, #(\offset+1) * 4] + .endm + + .macro PUT_STACK offset, reg + str \reg, [stack, #(\offset+1) * 4] + .endm + + .macro PUSH4 reg1, reg2, reg3, reg4 + stmda stack!, {\reg1, \reg2, \reg3, \reg4} + .endm + + .macro POP4 reg1, reg2, reg3, reg4 + ldmib stack!, {\reg1, \reg2, \reg3, \reg4} + .endm + + .macro PUSH3 reg1, reg2, reg3 + stmda stack!, {\reg1, \reg2, \reg3} + .endm + + .macro POP3 reg1, reg2, reg3 + ldmib stack!, {\reg1, \reg2, \reg3} + .endm + + .macro PUSH2 reg1, reg2 + stmda stack!, {\reg1, \reg2} + .endm + + .macro PUSH reg + str \reg, [stack], #-4 + .endm + + .macro POP2 reg1, reg2 + ldmib stack!, {\reg1, \reg2} + .endm + + .macro POP reg + ldr \reg, [stack, #4]! + .endm + + .set dispatch_state, 0 + + .macro DISPATCH_START step=0 + .set dispatch_state, 1 + ldrb r0, [jpc, #\step]! + .endm + + .macro DISPATCH_START_REG reg + .set dispatch_state, 1 + ldrb r0, [jpc, \reg]! + .endm + + .macro DISPATCH_STATE state + .set dispatch_state, \state + .endm + + .macro DISPATCH_1 + ldrb r1, [jpc, #2] + .endm + + .macro DISPATCH_2 + ldr ip, [dispatch, r0, lsl #2] + .endm + + .macro DISPATCH_3 + ldrb r2, [jpc, #1] + .endm + + .macro DISPATCH_4 + ands lr, ip, #7 + .endm + + .macro DISPATCH_NEXT + .if dispatch_state == 0 + .error "DISPATCH_FINISH without a DISPATCH_START or DISPATCH_STATE" + .elseif dispatch_state == 1 + DISPATCH_1 + .elseif dispatch_state == 2 + DISPATCH_2 + .elseif dispatch_state == 3 + DISPATCH_3 + .elseif dispatch_state == 4 + DISPATCH_4 + .else + .error "Too many DISPATCH_NEXTs" + .endif + .set dispatch_state, dispatch_state + 1 + .endm + + .macro DISPATCH_FINISH + .if dispatch_state == 0 + .error "DISPATCH_FINISH without a DISPATCH_START or DISPATCH_STATE" + .elseif dispatch_state == 1 + DISPATCH_1 + DISPATCH_2 + DISPATCH_3 + DISPATCH_4 + .elseif dispatch_state == 2 + DISPATCH_2 + DISPATCH_3 + DISPATCH_4 + .elseif dispatch_state == 3 + DISPATCH_3 + DISPATCH_4 + .elseif dispatch_state == 4 + DISPATCH_4 + .endif + moveq pc, ip + ldrb r1, [jpc, lr] + bic ip, ip, #7 + ldr ip, [ip, r1, lsl #2] + mov pc, ip + .set dispatch_state, 0 + .endm + + .macro DISPATCH_BYTECODE + 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 + .endm + + .macro DISPATCH step=0 + ldrb r0, [jpc, #\step]! + 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 + .endm + +#define FFI_TYPE_VOID 0 +#define FFI_TYPE_FLOAT 2 +#define FFI_TYPE_DOUBLE 3 +#define FFI_TYPE_BOOL 5 +#define FFI_TYPE_SINT8 6 +#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_SINT16 8 +#define FFI_TYPE_SINT32 10 +#define FFI_TYPE_SINT64 12 +#define FFI_TYPE_POINTER 14 + + .macro _BLX reg +#ifdef ARMv4 + mov lr, pc + mov pc, \reg +#else + blx \reg +#endif + .endm +#define blx _BLX + + .macro _BX reg +#ifdef ARMv4 + mov pc, \reg +#else + bx \reg +#endif + .endm +#define bx _BX + + .macro _BXEQ reg +#ifdef ARMv4 + moveq pc, \reg +#else + bxeq \reg +#endif + .endm +#define bxeq _BXEQ + + .macro _BXNE reg +#ifdef ARMv4 + movne pc, \reg +#else + bxne \reg +#endif + .endm +#define bxne _BXNE + +#ifdef ARMv4 + .arch armv4 +#else + .arch armv7-a +#endif + .fpu softvfp + .eabi_attribute 20, 1 + .eabi_attribute 21, 1 + .eabi_attribute 23, 3 + .eabi_attribute 24, 1 + .eabi_attribute 25, 1 + .eabi_attribute 26, 2 + .eabi_attribute 30, 2 + .eabi_attribute 18, 4 + + .text + + ALIGN_CODE +build_normal: + ldr ip, [r1, #24] + tst ip, #32 + bne build_normal_synchronized +build_normal_unsynchronized: + stmfd sp!, {r4, r5, r6, r7, r8} + ldr r4, [r0, #8] + ldrh r8, [r1, #38] + ldrh ip, [r1, #40] + mov r5, #0 + sub r3, r4, #4 + str r3, [r0, #8] + str r5, [r4, #-4] + ldr r7, [r0, #8] + mov r6, r0 + sub r3, r7, #4 + str r3, [r0, #8] + mvn r0, #0x540 @ form 0xCAFEBABF in r0 + bic r0, r0, #0x14000 + bic r0, r0, #0x35000000 + mov ip, ip, asl #2 + sub ip, ip, #4 + str r0, [r7, #-4] + ldr r3, [r6, #8] + add r4, r4, ip + sub r0, r3, #68 + str r0, [r6, #8] + str r4, [r0, #8] + str r5, [r0, #44] + str r1, [r0, #16] + str r0, [r0, #64] + str r2, [r3, #-68] + ldr r3, [r1, #8] + cmp r8, r5 + add r3, r3, #48 + str r3, [r0, #4] + ldr r2, [r1, #12] + mov r3, #0 + ldr r1, [r2, #12] + str r5, [r0, #32] + str r5, [r0, #48] + str r1, [r0, #12] + str r5, [r0, #20] + str r3, [r0, #28] + ldr r3, [r6, #8] + str r3, [r0, #60] + ldr r2, [r6, #8] + str r2, [r0, #52] + ldr r3, [r6, #8] + sub r3, r3, #4 + str r3, [r0, #24] + ldrne r3, [r6, #8] + ldreq r3, [r6, #8] + subne r3, r3, r8, asl #2 + strne r3, [r6, #8] + sub r3, r3, #4 + str r3, [r0, #56] + mov r0, r7 + ldmfd sp!, {r4, r5, r6, r7, r8} + bx lr + + ALIGN_CODE +build_normal_synchronized: + stmfd sp!, {r4, r5, r6, r7, r8, sl} + ldr r6, [r0, #8] + mov r4, r0 + ldrh sl, [r1, #38] + ldrh r0, [r1, #40] + mov r5, r1 + mov ip, #0 + sub r3, r6, #4 + mvn r1, #0x540 @ form 0xCAFEBABF in r1 + bic r1, r1, #0x14000 + bic r1, r1, #0x35000000 + str r3, [r4, #8] + str ip, [r6, #-4] + ldr r7, [r4, #8] + mov r0, r0, asl #2 + sub r3, r7, #4 + str r3, [r4, #8] + str r1, [r7, #-4] + ldr r3, [r4, #8] + sub r8, r0, #4 + sub r0, r3, #68 + str r0, [r4, #8] + str r5, [r0, #16] + str ip, [r0, #44] + str r0, [r0, #64] + str r2, [r3, #-68] + add r2, r6, r8 + str r2, [r0, #8] + ldr r3, [r5, #8] + add r3, r3, #48 + str r3, [r0, #4] + ldr r2, [r5, #12] + mov r3, #0 + ldr r1, [r2, #12] + str ip, [r0, #32] + str ip, [r0, #48] + str r1, [r0, #12] + str ip, [r0, #20] + str r3, [r0, #28] + ldr r3, [r4, #8] + str r3, [r0, #60] + ldr r2, [r4, #8] + sub ip, r2, #8 + str ip, [r4, #8] + ldr r3, [r5, #24] + tst r3, #8 + ldrne r3, [r5, #12] + ldreq r1, [r6, r8] + ldrne r2, [r3, #16] + ldrne r1, [r2, #60] + cmp sl, #0 + str r1, [ip, #4] + ldr r2, [r4, #8] + str r2, [r0, #52] + ldr r3, [r4, #8] + sub r3, r3, #4 + str r3, [r0, #24] + ldrne r3, [r4, #8] + ldreq r3, [r4, #8] + subne r3, r3, sl, asl #2 + strne r3, [r4, #8] + sub r3, r3, #4 + str r3, [r0, #56] + mov r0, r7 + ldmfd sp!, {r4, r5, r6, r7, r8, sl} + bx lr + + ALIGN_CODE +build_native: + ldr ip, [r1, #24] + tst ip, #32 + bne build_native_synchronized +build_native_unsynchronized: + stmfd sp!, {r4, r5, r6, r7} + ldr r6, [r0, #8] + ldrh r4, [r1, #42] + mov r5, r0 + mov r7, #0 + sub r3, r6, #4 + mvn ip, #0x540 @ form 0xCAFEBABF in ip + bic ip, ip, #0x14000 + bic ip, ip, #0x35000000 + str r3, [r0, #8] + str r7, [r6, #-4] + ldr r0, [r0, #8] + mov r4, r4, asl #2 + sub r3, r0, #4 + str r3, [r5, #8] + str ip, [r0, #-4] + ldr r3, [r5, #8] + sub r4, r4, #4 + sub ip, r3, #68 + add r6, r6, r4 + str ip, [r5, #8] + str r2, [r3, #-68] + str r6, [ip, #8] + str r1, [ip, #16] + str ip, [ip, #64] + str r7, [ip, #44] + str r7, [ip, #4] + ldr r2, [r1, #12] + mov r3, #2 + ldr r1, [r2, #12] + str r3, [ip, #28] + str r7, [ip, #32] + str r1, [ip, #12] + str r7, [ip, #48] + str r7, [ip, #20] + ldr r3, [r5, #8] + str r3, [ip, #60] + ldr r2, [r5, #8] + str r2, [ip, #52] + ldr r3, [r5, #8] + sub r3, r3, #4 + str r3, [ip, #24] + ldr r2, [r5, #8] + sub r2, r2, #4 + str r2, [ip, #56] + ldmfd sp!, {r4, r5, r6, r7} + bx lr + + ALIGN_CODE +build_native_synchronized: + stmfd sp!, {r4, r5, r6, r7, r8} + ldr r7, [r0, #8] + mov r5, r0 + mov ip, #0 + ldrh r0, [r1, #42] + mov r6, r1 + sub r3, r7, #4 + mvn r1, #0x540 @ form 0xCAFEBABF in r1 + bic r1, r1, #0x14000 + bic r1, r1, #0x35000000 + str r3, [r5, #8] + str ip, [r7, #-4] + ldr r8, [r5, #8] + mov r0, r0, asl #2 + sub r3, r8, #4 + str r3, [r5, #8] + str r1, [r8, #-4] + ldr r3, [r5, #8] + sub r0, r0, #4 + sub r4, r3, #68 + str r4, [r5, #8] + str r6, [r4, #16] + str r4, [r4, #64] + str ip, [r4, #44] + str ip, [r4, #4] + str r2, [r3, #-68] + add r3, r7, r0 + str r3, [r4, #8] + ldr r2, [r6, #12] + mov r3, #2 + ldr r1, [r2, #12] + str r3, [r4, #28] + str ip, [r4, #32] + str r1, [r4, #12] + str ip, [r4, #48] + str ip, [r4, #20] + ldr r3, [r5, #8] + str r3, [r4, #60] + ldr r2, [r5, #8] + sub r1, r2, #8 + str r1, [r5, #8] + ldr r3, [r6, #24] + tst r3, #8 + ldrne r3, [r6, #12] + ldreq r0, [r7, r0] + ldrne r2, [r3, #16] + ldrne r0, [r2, #60] + str r0, [r1, #4] + ldr r3, [r5, #8] + mov r0, r8 + str r3, [r4, #52] + ldr r2, [r5, #8] + sub r2, r2, #4 + str r2, [r4, #24] + ldr r3, [r5, #8] + sub r3, r3, #4 + str r3, [r4, #56] + ldmfd sp!, {r4, r5, r6, r7, r8} + bx lr + + ALIGN_CODE + .global asm_generate_method_entry +asm_generate_method_entry: + cmp r0, #6 + movcs r0, #0 + adrcc ip, asm_method_table + ldrcc r0, [ip, r0, lsl #2] + bx lr +asm_method_table: + .word normal_entry + .word normal_entry_synchronized + .word native_entry + .word native_entry_synchronized + .word empty_entry + .word accessor_entry + + ALIGN_CODE + .global native_entry_synchronized +native_entry_synchronized: + stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + mov r1, r0 + sub sp, sp, #60 + add r0, r2, #THREAD_JAVA_STACK_BASE + mov r7, r2 + bl build_native + ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] + add r1, sp, #52 + str r1, [sp, #0] + ldr sl, .L306native_entry_synchronized +.LPIC19native_entry_synchronized: + add sl, pc, sl + str r3, [r0, #0] + ldr r2, [r7, #THREAD_STACK_SIZE] + ldr r3, [r7, #THREAD_STACK_BASE] + sub r9, r0, #72 + rsb r3, r2, r3 + str r0, [r7, #THREAD_TOP_ZERO_FRAME] + rsb r3, r3, r1 + ldr r2, [r9, #8] + cmp r3, #3072 + str r2, [sp, #4] + blt .L294native_entry_synchronized + ldr ip, [r9, #16] + ldr r3, [ip, #24] + ands r0, r3, #32 + moveq r8, r0 + bne .L295native_entry_synchronized +.L243native_entry_synchronized: + ldr r4, [ip, #84] + cmp r4, #0 + beq .L296native_entry_synchronized +.L248native_entry_synchronized: + ldr r3, .L306native_entry_synchronized+4 + ldr r2, [sl, r3] + cmp r4, r2 + beq .L297native_entry_synchronized +.L249native_entry_synchronized: + ldr r2, [r4, #4] + ldr ip, [ip, #80] + ldr r1, [r7, #THREAD_JAVA_SP] + mov r2, r2, asl #2 + rsb r2, r2, #0 + str ip, [sp, #8] + add r5, r1, r2 + str r5, [r7, #THREAD_JAVA_SP] + add r3, r7, #THREAD_JNI_ENVIRONMENT + str r3, [sp, #52] + ldr r3, [sp, #0] + add lr, r5, #4 + str r3, [r1, r2] + mov r3, #0 + str r3, [sp, #48] + ldr r2, [r9, #16] + ldr r3, [r2, #24] + tst r3, #8 + bne .L298native_entry_synchronized +.L250native_entry_synchronized: + rsb r3, r5, lr + ldr r2, [r4, #4] + mov ip, r3, asr #2 + cmp ip, r2 + bge .L299native_entry_synchronized + ldr fp, .L306native_entry_synchronized+8 + add r3, ip, #6 + add r1, r4, #24 + mov r3, r3, asl #2 + str r1, [sp, #12] + ldr r6, [sl, fp] + add r1, r4, r3 + ldr r0, [sp, #4] + b .L258native_entry_synchronized +.L257native_entry_synchronized: + cmp r3, #8 + subeq r3, r0, #4 + streq r3, [lr], #4 + ldreq r2, [r4, #4] + add ip, ip, #1 + subeq r0, r3, #4 + cmp ip, r2 + add r1, r1, #4 + bge .L252native_entry_synchronized +.L258native_entry_synchronized: + ldr r3, [r1, #0] + cmp r3, r6 + beq .L300native_entry_synchronized + ldr r3, [r3, #0] + cmp r3, #4 + bne .L257native_entry_synchronized +.L293native_entry_synchronized: + str r0, [lr], #4 +.L291native_entry_synchronized: + ldr r2, [r4, #4] + add ip, ip, #1 + cmp ip, r2 + sub r0, r0, #4 + add r1, r1, #4 + blt .L258native_entry_synchronized +.L252native_entry_synchronized: + ldr r0, [r7, #THREAD_TOP_ZERO_FRAME] + ldr r1, [sp, #8] + mov r3, r5 + str r0, [r7, #THREAD_LAST_JAVA_SP] + mov r2, #_thread_in_native + mov r0, r4 + str r2, [r7, #THREAD_STATE] + add r2, sp, #40 + bl ffi_call + ldr r2, .L306native_entry_synchronized+12 + mov r3, #_thread_in_native_trans + str r3, [r7, #THREAD_STATE] + ldr r3, [sl, r2] + ldr r1, [r3, #0] + cmp r1, #1 + ble .L259native_entry_synchronized + ldr r3, .L306native_entry_synchronized+16 + ldr r2, [sl, r3] + ldrb r1, [r2, #0] @ zero_extendqisi2 + cmp r1, #0 + bne .L301native_entry_synchronized + ldr r3, .L306native_entry_synchronized+20 + ldr r2, .L306native_entry_synchronized+24 + ldr r0, [sl, r3] + ldr r1, [sl, r2] + mov r2, #1 + ldr r3, [r0, #0] + ldr ip, [r1, #0] + and r3, r3, r7, lsr #3 + str r2, [ip, r3] +.L259native_entry_synchronized: + ldr r3, .L306native_entry_synchronized+28 + ldr r2, [sl, r3] + ldr r1, [r2, #0] + cmp r1, #0 + beq .L302native_entry_synchronized +.L261native_entry_synchronized: + mov r0, r7 + bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ + .p2align 3 +.L262native_entry_synchronized: + mov r3, #_thread_in_Java + mov r2, #0 + str r3, [r7, #THREAD_STATE] + str r2, [r7, #THREAD_LAST_JAVA_SP] + ldr r0, [sp, #12] + ldr r1, [r4, #4] + ldr r2, [sl, fp] + ldr r3, [r0, r1, asl #2] + cmp r3, r2 + beq .L303native_entry_synchronized +.L263native_entry_synchronized: + ldr r2, [r7, #THREAD_ACTIVE_HANDLES] + cmp r8, #0 + mov r3, #0 + str r3, [r2, #128] + beq .L292native_entry_synchronized + ldr r1, [r7, #THREAD_PENDING_EXC] + cmp r1, #0 + beq .L304native_entry_synchronized +.L241native_entry_synchronized: + ldr r2, [r7, #THREAD_TOP_ZERO_FRAME] + cmp r1, #0 + add r1, r2, #4 + str r1, [r7, #THREAD_JAVA_SP] + ldr r3, [r2, #0] + str r3, [r7, #THREAD_TOP_ZERO_FRAME] + ldr r2, [r9, #16] + ldrh r3, [r2, #42] + mov r3, r3, asl #2 + add r4, r1, r3 + str r4, [r7, #THREAD_JAVA_SP] + beq .L305native_entry_synchronized +.L279native_entry_synchronized: + add sp, sp, #60 + ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} +.L300native_entry_synchronized: + ldr r3, [r0, #0] + cmp r3, #0 + beq .L293native_entry_synchronized + ldr r3, [r7, #THREAD_JAVA_SP] + sub r2, r3, #4 + str r2, [r7, #THREAD_JAVA_SP] + str r0, [r3, #-4] + ldr r2, [r7, #THREAD_JAVA_SP] + str r2, [lr], #4 + b .L291native_entry_synchronized +.L302native_entry_synchronized: + ldr r3, [r7, #THREAD_SUSPEND_FLAGS] + cmp r3, #0 + beq .L262native_entry_synchronized + mov r0, r7 + bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ + b .L262native_entry_synchronized +.L298native_entry_synchronized: + ldr r1, [r2, #12] + add r3, sp, #56 + mov r2, r9 + ldr r0, [r1, #16] + add lr, lr, #4 + ldr r1, [r0, #60] + str r1, [r2, #48]! + str r2, [r3, #-8]! + str r3, [r5, #4] + b .L250native_entry_synchronized +.L295native_entry_synchronized: + ldr r8, [r9, #52] + ldr fp, .L306native_entry_synchronized+32 + ldr r5, [r8, #4] + ldr r3, [r5, #0] + orr r4, r3, #1 + str r4, [r8, #0] + .p2align 3 +.L245native_entry_synchronized: + ldr r6, [r5, #0] + mov r0, r4 + cmp r4, r6 + mov r1, r8 + mov r2, r5 + bne .L244native_entry_synchronized + blx fp + cmp r0, #0 + bne .L245native_entry_synchronized +.L244native_entry_synchronized: + cmp r4, r6 + beq .L290native_entry_synchronized + bic r1, r4, #3 + ldr r3, [r7, #0] + mov r0, r7 + ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] + blx ip + subs r4, r0, #0 + beq .L247native_entry_synchronized + mov r3, #0 + str r3, [r8, #0] + ldr ip, [r9, #16] + b .L243native_entry_synchronized +.L304native_entry_synchronized: + ldr r6, [r8, #0] + ldr r5, [r8, #4] + cmp r6, #0 + str r1, [r8, #4] + ldrne fp, .L306native_entry_synchronized+32 + beq .L292native_entry_synchronized + .p2align 3 +.L283native_entry_synchronized: + ldr r4, [r5, #0] + mov r0, r8 + cmp r8, r4 + mov r1, r6 + mov r2, r5 + bne .L265native_entry_synchronized + blx fp + cmp r0, #0 + bne .L283native_entry_synchronized +.L265native_entry_synchronized: + cmp r8, r4 + beq .L292native_entry_synchronized + add r4, sp, #16 + mov r0, r4 + mov r1, r7 + str r5, [r8, #4] + bl _ZN10HandleMark10initializeEP6Thread + ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] + mov r0, r7 + mov r1, r8 + str r3, [r7, #THREAD_LAST_JAVA_SP] + bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock + mov r3, #0 + mov r0, r4 + str r3, [r7, #THREAD_LAST_JAVA_SP] + bl _ZN10HandleMarkD1Ev +.L292native_entry_synchronized: + ldr r1, [r7, #4] + b .L241native_entry_synchronized +.L294native_entry_synchronized: + str r0, [r7, #THREAD_LAST_JAVA_SP] + mov r0, r7 + bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread + mov r3, #0 + ldr r1, [r7, #THREAD_PENDING_EXC] + str r3, [r7, #THREAD_LAST_JAVA_SP] + b .L241native_entry_synchronized +.L247native_entry_synchronized: + ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] + mov r1, r8 + mov r0, r7 + str r3, [r7, #THREAD_LAST_JAVA_SP] + bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock + ldr r1, [r7, #THREAD_PENDING_EXC] + str r4, [r7, #THREAD_LAST_JAVA_SP] + cmp r1, #0 + bne .L241native_entry_synchronized + .p2align 3 +.L290native_entry_synchronized: + ldr ip, [r9, #16] + b .L243native_entry_synchronized +.L301native_entry_synchronized: + ldr r3, .L306native_entry_synchronized+28 + ldr r2, [sl, r3] + ldr r1, [r2, #0] + cmp r1, #0 + bne .L261native_entry_synchronized + b .L302native_entry_synchronized +.L303native_entry_synchronized: + ldr r3, [sp, #40] + cmp r3, #0 + streq r3, [r9, #48] + ldrne r3, [r3, #0] + strne r3, [r9, #48] + b .L263native_entry_synchronized +.L305native_entry_synchronized: + ldr r0, [r9, #16] + bl _ZNK13methodOopDesc11result_typeEv + ldr r2, .L306native_entry_synchronized+36 + ldr r1, [sl, r2] + ldr r3, [r1, r0, asl #2] + sub r3, r4, r3, asl #2 + str r3, [r7, #THREAD_JAVA_SP] + ldr r0, [r9, #16] + bl _ZNK13methodOopDesc11result_typeEv + sub r0, r0, #4 + cmp r0, #9 + addls pc, pc, r0, asl #2 + b .L279native_entry_synchronized +.L278native_entry_synchronized: + b .L269native_entry_synchronized + b .L270native_entry_synchronized + b .L271native_entry_synchronized + b .L272native_entry_synchronized + b .L273native_entry_synchronized + b .L274native_entry_synchronized + b .L275native_entry_synchronized + b .L276native_entry_synchronized + b .L277native_entry_synchronized + b .L277native_entry_synchronized +.L299native_entry_synchronized: + add r0, r4, #24 + ldr fp, .L306native_entry_synchronized+8 + str r0, [sp, #12] + b .L252native_entry_synchronized +.L277native_entry_synchronized: + ldr r3, [r9, #48] + ldr r0, [sp, #4] + str r3, [r0, #0] + b .L279native_entry_synchronized +.L276native_entry_synchronized: + add r3, sp, #40 + ldmia r3, {r3-r4} + ldr r0, [sp, #4] + stmda r0, {r3-r4} + b .L279native_entry_synchronized +.L275native_entry_synchronized: + ldr r3, [sp, #40] + ldr r2, [sp, #4] + str r3, [r2, #0] + b .L279native_entry_synchronized +.L274native_entry_synchronized: + ldrsh r3, [sp, #40] + ldr r1, [sp, #4] + str r3, [r1, #0] + b .L279native_entry_synchronized +.L273native_entry_synchronized: + ldrsb r3, [sp, #40] + ldr r0, [sp, #4] + str r3, [r0, #0] + b .L279native_entry_synchronized +.L272native_entry_synchronized: + add r3, sp, #40 + ldmia r3, {r3-r4} + ldr r2, [sp, #4] + stmda r2, {r3-r4} + b .L279native_entry_synchronized +.L271native_entry_synchronized: + ldr r3, [sp, #40] @ float + ldr r1, [sp, #4] + str r3, [r1, #0] @ float + b .L279native_entry_synchronized +.L270native_entry_synchronized: + ldrh r3, [sp, #40] + ldr r2, [sp, #4] + str r3, [r2, #0] + b .L279native_entry_synchronized +.L269native_entry_synchronized: + ldr r1, [sp, #4] + ldrb r3, [sp, #40] @ zero_extendqisi2 + subs r3, r3, #0 + movne r3, #1 + str r3, [r1, #0] + b .L279native_entry_synchronized +.L296native_entry_synchronized: + ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] + mov r0, r7 + str r3, [r7, #THREAD_LAST_JAVA_SP] + ldr r1, [r9, #16] + bl _ZN18InterpreterRuntime19prepare_native_callEP10JavaThreadP13methodOopDesc + ldr r1, [r7, #THREAD_PENDING_EXC] + str r4, [r7, #THREAD_LAST_JAVA_SP] + cmp r1, #0 + bne .L241native_entry_synchronized + ldr ip, [r9, #16] + ldr r4, [ip, #84] + b .L248native_entry_synchronized +.L297native_entry_synchronized: + ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] + mov r2, #0 + mov r0, r7 + str r3, [r7, #THREAD_LAST_JAVA_SP] + mov r3, r2 + ldr r1, [r9, #16] + bl _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_ + ldr r1, [r7, #THREAD_PENDING_EXC] + mov r3, #0 + cmp r1, #0 + str r3, [r7, #THREAD_LAST_JAVA_SP] + mov r4, r0 + bne .L241native_entry_synchronized + ldr ip, [r9, #16] + b .L249native_entry_synchronized +.L307native_entry_synchronized: + ALIGN_DATA +.L306native_entry_synchronized: + .word _GLOBAL_OFFSET_TABLE_-(.LPIC19native_entry_synchronized+8) + .word _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_(GOT) + .word ffi_type_pointer(GOT) + .word _ZN2os16_processor_countE(GOT) + .word UseMembar(GOT) + .word _ZN2os20_serialize_page_maskE(GOT) + .word _ZN2os19_mem_serialize_pageE(GOT) + .word _ZN20SafepointSynchronize6_stateE(GOT) + .word -61504 + .word type2size(GOT) + + ALIGN_CODE + .global empty_entry +empty_entry: + ldr r3, .L1359 + ldr r1, .L1359+4 +.LPIC19: + add r3, pc, r3 + + ldr ip, [r3, r1] + ldr r3, [ip, #0] + cmp r3, #0 + bne normal_entry_synchronized + + ldrh r3, [r0, #42] + ldr r1, [r2, #THREAD_JAVA_SP] + add r1, r1, r3, lsl #2 + str r1, [r2, #THREAD_JAVA_SP] + bx lr +.L1359: + .word _GLOBAL_OFFSET_TABLE_-(.LPIC19+8) + .word _ZN20SafepointSynchronize6_stateE(GOT) + +@ ---- START execute.s --------------------------------------------------------------------- + +#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], #4 + cmp r2, #0 + moveq r0, #0 + bxeq lr + cmp r2, r1 + bne abort_loop + + adr r3, abort_table+4 + sub r3, ip, r3 + + adr ip, jpc_correction_table + ldrb r3, [ip, r3, lsr #2] + + ldr ip, [r0, #5*4] + sub ip, ip, r3 + str ip, [r0, #5*4] + + adrl r3, null_ptr_exception + str r3, [r0, #15*4] +do_setcontext: + mov r0, #1 + bx lr +abort_table: + .word .abortentry5 + .word .abortentry6 + .word .abortentry7 + .word .abortentry8 + .word .abortentry9 + .word .abortentry10 + .word .abortentry11 + .word .abortentry12 + .word .abortentry13 + + .word .abortentry19 + .word .abortentry20 + .word .abortentry21 + .word .abortentry22 + .word .abortentry23 + .word .abortentry24 + .word .abortentry25 + .word .abortentry26 + .word .abortentry27 + .word .abortentry28 + .word .abortentry29 + .word .abortentry30 + .word .abortentry31 + .word .abortentry32 + + .word .abortentry38 + .word .abortentry39 + .word .abortentry40 + .word .abortentry41 + .word .abortentry42 + .word .abortentry42_1 + .word .abortentry43 + .word .abortentry44 + .word .abortentry45 + .word .abortentry46 + .word .abortentry47 + .word .abortentry48 + .word .abortentry49 + .word .abortentry50 + .word .abortentry51 + .word .abortentry52 + + .word .abortentry58 + .word .abortentry59 + .word .abortentry60 + + .word .abortentry61 + .word .abortentry62 + .word .abortentry63 + .word .abortentry64 + .word .abortentry65 + .word .abortentry66 + .word .abortentry67 + .word .abortentry68 + .word .abortentry69 + .word .abortentry70 + .word .abortentry71 + .word .abortentry72 + + .word .abortentry73 + .word .abortentry74 + .word .abortentry75 + .word .abortentry76 + .word .abortentry77 + + .word .abortentry78 + .word .abortentry79 + .word .abortentry80 + .word .abortentry81 + .word .abortentry82 + .word .abortentry83 + .word .abortentry84 + .word .abortentry85 + .word .abortentry86 + .word .abortentry87 + + .word .abortentry88 + .word .abortentry89 + .word .abortentry90 + .word .abortentry91 + .word .abortentry92 + .word .abortentry93 + .word .abortentry94 + .word .abortentry95 + .word .abortentry96 + .word .abortentry97 + .word .abortentry98 + .word .abortentry99 + .word .abortentry100 + .word .abortentry101 + .word .abortentry102 + .word .abortentry103 + .word .abortentry104 + .word .abortentry105 + .word .abortentry106 + .word .abortentry107 + .word .abortentry108 + .word .abortentry109 + .word 0 +jpc_correction_table: + .byte 1, 1, 1, 1, 1, 1, 1, 1, 1 + .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + .byte 2, 3, 4, 3, 2, 2, 0, 1, 3, 2, 0, 1, 0, 1, 0, 1 + .byte 2, 2, 2 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 1, 1, 1, 1, 1 + .byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 + .byte 3, 5, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1 + ALIGN_WORD + +#else + .global asm_check_null_ptr +asm_check_null_ptr: + mov r0, #0 + bx lr + +#endif + + ALIGN_CODE +fast_native_entry: + ldr r2, [istate, #ISTATE_THREAD] + mov r11, tmp2 + ldrh r1, [r11, #42] + ldr r4, [r2, #THREAD_JAVA_SP] + ldr ip, [r2, #THREAD_TOP_ZERO_FRAME] + mov r0, #0 + mvn r10, #0x540 @ form 0xCAFEBABF in r10 + bic r10, r10, #0x14000 + bic r10, r10, #0x35000000 + sub r9, r4, #76 + mov r7, r9 + str r9, [r2, #THREAD_JAVA_SP] @ drop stack + sub r5, r9, #4 @ stack limit = r9 - 4 + mov r3, r9 + stmdb r4, {r0, r3, r5, r7, r9, r10, ip} + str r0, [r9, #ISTATE_CALLEE] + str r0, [r9, #ISTATE_PREV_LINK] + str r0, [r9, #ISTATE_MSG] + str r0, [r9, #ISTATE_MDX] + sub r7, r4, #4 + add r7, r7, r1, lsl #2 + mov r5, #0 + ldr r10, [r11, #12] + ldr r10, [r10, #12] + stmia r9, {r2, r5, r7, r10, r11} + add r0, r9, #72 + mov r9, r2 +.LPIC18_fast_native_entry: + ldr r2, [r9, #THREAD_STACK_SIZE] + ldr r3, [r9, #THREAD_STACK_BASE] + rsb r3, r2, r3 + rsb r3, r3, sp + cmp r3, #4096 + str r0, [r9, #THREAD_TOP_ZERO_FRAME] + blt .fast_native_entry_throw_stack_overflow + ldr r5, [r11, #84] + cmp r5, #0 + bne .fast_native_entry_got_handleraddr + str r0, [r9, #THREAD_LAST_JAVA_SP] + mov r0, r9 + mov r1, r11 + bl _ZN18InterpreterRuntime19prepare_native_callEP10JavaThreadP13methodOopDesc + ldr r11, [r9, #THREAD_TOP_ZERO_FRAME] + ldr r1, [r9, #THREAD_PENDING_EXC] + str r5, [r9, #THREAD_LAST_JAVA_SP] + ldr r11, [r11, #-72 + ISTATE_METHOD] + cmp r1, #0 + bne .fast_native_entry_exception + ldr r5, [r11, #84] +.fast_native_entry_got_handleraddr: + ldr r2, [dispatch, #InterpreterRuntime_slow_signature_handler_Address-XXX] + cmp r5, r2 + bne .fast_native_entry_get_handler + ldr r3, [r9, #THREAD_TOP_ZERO_FRAME] + mov r2, #0 + mov r0, r9 + str r3, [r9, #THREAD_LAST_JAVA_SP] + mov r3, r2 + mov r1, r11 + bl _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_ + ldr r11, [r9, #THREAD_TOP_ZERO_FRAME] + ldr r1, [r9, #THREAD_PENDING_EXC] + mov r3, #0 + ldr r11, [r11, #-72 + ISTATE_METHOD] + cmp r1, #0 + str r3, [r9, #THREAD_LAST_JAVA_SP] + mov r5, r0 + bne .fast_native_entry_exception +.fast_native_entry_get_handler: + + sub ip, r7, r4 + mov ip, ip, asr #2 + add lr, ip, #4 + bic lr, lr, #1 + + add r3, r4, #ISTATE_OOP_TEMP-76 + + mov r4, arm_sp + sub arm_sp, arm_sp, #16 + sub arm_sp, arm_sp, lr, lsl #2 + mov lr, arm_sp + + add r1, r5, #24 + + add r2, r9, #THREAD_JNI_ENVIRONMENT + str r2, [lr], #4 + add r1, r1, #4 + + ldr r2, [r11, #24] + tst r2, #8 + beq .do_fast_copy_args + + ldr r2, [r11, #12] + ldr r2, [r2, #16] + ldr r2, [r2, #60] + str r2, [r3] + + str r3, [lr], #4 + add r1, r1, #4 + +.do_fast_copy_args: + cmp ip, #0 + blt .fast_no_args + +.fast_copy_args: + ldr r0, [r1], #4 + ldrh r3, [r0, #6] + cmp r3, #FFI_TYPE_DOUBLE + cmpne r3, #FFI_TYPE_SINT64 + beq .fast_copy_long + + cmp r3, #FFI_TYPE_POINTER + beq .fast_copy_ptr + + ldr r2, [r7], #-4 + str r2, [lr], #4 + subs ip, ip, #1 + bge .fast_copy_args + b .fast_no_args + +.fast_copy_long: + tst lr, #4 + addne lr, lr, #4 + ldmda r7!, {r2, r3} + stmia lr!, {r2, r3} + subs ip, ip, #2 + bge .fast_copy_args + b .fast_no_args + +.fast_copy_ptr: + ldr r2, [r7], #-4 + cmp r2, #0 + addne r2, r7, #4 + str r2, [lr], #4 + subs ip, ip, #1 + bge .fast_copy_args + +.fast_no_args: + ldr r0, [r9, #THREAD_TOP_ZERO_FRAME] + str r0, [r9, #THREAD_LAST_JAVA_SP] + + mov r2, #_thread_in_native + str r2, [r9, #THREAD_STATE] + + ldr ip, [r11, #80] + ldrh r11, [r11, #42] + ldmia arm_sp!, {r0, r1, r2, r3} + blx ip + + mov arm_sp, r4 + + mov r3, #_thread_in_native_trans + str r3, [r9, #THREAD_STATE] + + ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] + + ldr r3, [r3, #0] + cmp r3, #0 + ldreq r3, [r9, #THREAD_SUSPEND_FLAGS] + cmpeq r3, #0 + bne .fast_native_entry_do_special + +.fast_native_entry_do_return: + mov r3, #_thread_in_Java + mov r2, #0 + str r3, [r9, #THREAD_STATE] + str r2, [r9, #THREAD_LAST_JAVA_SP] + + add r2, r5, #24 + ldr r3, [r5, #4] + + ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] +@ ldr r11, [r5, #-72 + ISTATE_METHOD] + + ldr lr, [r5], #4 + + add r5, r5, r11, lsl #2 + + ldr ip, [r2, r3, asl #2] + ldrh r2, [ip, #6] + + cmp r2, #FFI_TYPE_POINTER + beq .fast_native_return_obj + + str lr, [r9, #THREAD_TOP_ZERO_FRAME] @ Defer dropping frame until after we have dealt with + @ objects + + ldr ip, [r9, #THREAD_ACTIVE_HANDLES] + mov r3, #0 @ ECN: OK, not an obj, save to clear handles + str r3, [ip, #128] + + cmp r2, #FFI_TYPE_VOID + beq .fast_native_return_void + cmp r2, #FFI_TYPE_FLOAT + cmpne r2, #FFI_TYPE_SINT32 + beq .fast_native_return_w + cmp r2, #FFI_TYPE_DOUBLE + cmpne r2, #FFI_TYPE_SINT64 + beq .fast_native_return_dw + + cmp r2, #FFI_TYPE_UINT16 + beq .fast_native_return_char + cmp r2, #FFI_TYPE_SINT16 + beq .fast_native_return_short + cmp r2, #FFI_TYPE_BOOL + beq .fast_native_return_bool + cmp r2, #FFI_TYPE_SINT8 + beq .fast_native_return_byte + + str r0, [r0, -r0] + +.fast_native_return_dw: + stmdb r5!, {r0, r1} + str r5, [r9, #THREAD_JAVA_SP] + b .fast_native_exit +.fast_native_return_byte: + mov r0, r0, lsl #24 + mov r0, r0, asr #24 + str r0, [r5, #-4]! + str r5, [r9, #THREAD_JAVA_SP] + b .fast_native_exit +.fast_native_return_char: + mov r0, r0, lsl #16 + mov r0, r0, lsr #16 + str r0, [r5, #-4]! + str r5, [r9, #THREAD_JAVA_SP] + b .fast_native_exit +.fast_native_return_bool: + ands r0, r0, #255 + movne r0, #1 + str r0, [r5, #-4]! + str r5, [r9, #THREAD_JAVA_SP] + b .fast_native_exit + +.fast_native_entry_throw_stack_overflow: + str r0, [r9, #THREAD_LAST_JAVA_SP] + mov r0, r9 + bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread + mov r3, #0 + ldr r1, [r9, #THREAD_PENDING_EXC] + str r3, [r9, #THREAD_LAST_JAVA_SP] +.fast_native_entry_exception: + ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] + ldr r3, [r5], #4 + str r3, [r9, #THREAD_TOP_ZERO_FRAME] + + ldrh r3, [r11, #42] + add r5, r5, r3, lsl #2 + str r5, [r9, #THREAD_JAVA_SP] + b .fast_native_exit + +.fast_native_entry_do_special: + stmdb sp!, {r0, r1} + mov r0, r9 + bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ + ldmia sp!, {r0, r1} + b .fast_native_entry_do_return + +.fast_native_return_obj: + cmp r0, #0 + ldrne r0, [r0] + str r0, [r5, #-4]! + + str lr, [r9, #THREAD_TOP_ZERO_FRAME] @ Defer dropping frame until after we have dealt with + @ objects + + str r5, [r9, #THREAD_JAVA_SP] + ldr r2, [r9, #THREAD_ACTIVE_HANDLES] + mov r3, #0 @ ECN: Now that the object is safe on the Java stack + str r3, [r2, #128] @ stack, with the Thread SP updated, clear the active_handles. + b .fast_native_exit +.fast_native_return_short: + mov r0, r0, lsl #16 + mov r0, r0, asr #16 +.fast_native_return_w: + str r0, [r5, #-4]! +.fast_native_return_void: + str r5, [r9, #THREAD_JAVA_SP] +.fast_native_exit: + 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] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #THREAD_PENDING_EXC] + DISPATCH_START 3 + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_NEXT + cmp r3, #0 + DISPATCH_NEXT + bne invokespecial_exception_fix + DISPATCH_FINISH + +#include "bytecodes.s" + + Opcode idiv + + POP2 r0, r1 +int_div: + cmp r0, #0 + beq .divc_0 + + ands a4, a1, #0x80000000 + rsbmi a1, a1, #0 + eors ip, a4, a2, ASR #32 + rsbcs a2, a2, #0 + movs a3, a1 +.s_loop: + cmp a3, a2, LSR #8 + movls a3, a3, LSL #8 + blo .s_loop + cmp a3, a2, LSR #1 + bhi .s_jump7 + cmp a3, a2, LSR #2 + bhi .s_jump6 + cmp a3, a2, LSR #3 + bhi .s_jump5 + cmp a3, a2, LSR #4 + bhi .s_jump4 + cmp a3, a2, LSR #5 + bhi .s_jump3 + cmp a3, a2, LSR #6 + bhi .s_jump2 + cmp a3, a2, LSR #7 + bhi .s_jump1 +.s_loop2: +@ not executed when falling into .s_loop2 + movhi a3, a3, LSR #8 + cmp a2, a3, LSL #7 + adc a4, a4, a4 + subcs a2, a2, a3, LSL #7 + cmp a2, a3, LSL #6 +.s_jump1: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #6 + cmp a2, a3, LSL #5 +.s_jump2: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #5 + cmp a2, a3, LSL #4 +.s_jump3: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #4 + cmp a2, a3, LSL #3 +.s_jump4: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #3 + cmp a2, a3, LSL #2 +.s_jump5: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #2 + cmp a2, a3, LSL #1 +.s_jump6: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #1 +.s_jump7: + cmp a2, a3 + adc a4, a4, a4 + subcs a2, a2, a3 + cmp a3, a1 + bne .s_loop2 + DISPATCH_START 1 + movs ip, ip, lsl #1 + DISPATCH_NEXT + rsbcs a4, a4, #0 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH a4 + DISPATCH_FINISH + + Opcode irem + + POP2 r0, r1 +int_rem: + cmp r0, #0 + beq .remc_0 + + ands a4, a1, #0x80000000 + rsbmi a1, a1, #0 + eors ip, a4, a2, ASR #32 + rsbcs a2, a2, #0 + movs a3, a1 +.r_loop: + cmp a3, a2, LSR #8 + movls a3, a3, LSL #8 + blo .r_loop + cmp a3, a2, LSR #1 + bhi .r_jump7 + cmp a3, a2, LSR #2 + bhi .r_jump6 + cmp a3, a2, LSR #3 + bhi .r_jump5 + cmp a3, a2, LSR #4 + bhi .r_jump4 + cmp a3, a2, LSR #5 + bhi .r_jump3 + cmp a3, a2, LSR #6 + bhi .r_jump2 + cmp a3, a2, LSR #7 + bhi .r_jump1 +.r_loop2: +@ not executed when falling into .r_loop2 + movhi a3, a3, LSR #8 + cmp a2, a3, LSL #7 + adc a4, a4, a4 + subcs a2, a2, a3, LSL #7 + cmp a2, a3, LSL #6 +.r_jump1: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #6 + cmp a2, a3, LSL #5 +.r_jump2: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #5 + cmp a2, a3, LSL #4 +.r_jump3: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #4 + cmp a2, a3, LSL #3 +.r_jump4: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #3 + cmp a2, a3, LSL #2 +.r_jump5: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #2 + cmp a2, a3, LSL #1 +.r_jump6: + adc a4, a4, a4 + subcs a2, a2, a3, LSL #1 +.r_jump7: + cmp a2, a3 + adc a4, a4, a4 + subcs a2, a2, a3 + cmp a3, a1 + bne .r_loop2 + DISPATCH_START 1 + movs ip, ip, lsl #1 + rsbmi a2, a2, #0 + PUSH a2 + DISPATCH_FINISH + +@ ip = branch offset +@ r0 = 1st bytecode +@ jpc has been updated + Opcode goto_safe + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + orr ip, ip, r1, lsl #8 + DISPATCH_START_REG ip +branch_taken: + cmp ip, #0 + bgt branch_no_check + + ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] + ldr r1, [r3] + cmp r1, #1 + bne branch_no_check + + ldr r3, [istate, #ISTATE_THREAD] + mov r0, sp + str r3, [sp] + bl _ZN17HandleMarkCleanerD1Ev + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN20SafepointSynchronize5blockEP10JavaThread + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + DISPATCH_START 0 +branch_no_check: + DISPATCH_BYTECODE + + Opcode ifeq_safe + Opcode ifnull_safe + POP r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, #0 + orreq ip, ip, r1, lsl #8 + ldreqb r0, [jpc, ip]! + ldrneb r0, [jpc, #3]! + beq branch_taken + DISPATCH_BYTECODE + + Opcode ifne_safe + Opcode ifnonnull_safe + POP r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, #0 + orrne ip, ip, r1, lsl #8 + ldrneb r0, [jpc, ip]! + ldreqb r0, [jpc, #3]! + bne branch_taken + DISPATCH_BYTECODE + + Opcode iflt_safe + POP r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, #0 + orrlt ip, ip, r1, lsl #8 + ldrltb r0, [jpc, ip]! + ldrgeb r0, [jpc, #3]! + blt branch_taken + DISPATCH_BYTECODE + + Opcode ifge_safe + POP r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, #0 + orrge ip, ip, r1, lsl #8 + ldrgeb r0, [jpc, ip]! + ldrltb r0, [jpc, #3]! + bge branch_taken + DISPATCH_BYTECODE + + Opcode ifgt_safe + POP r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, #0 + orrgt ip, ip, r1, lsl #8 + ldrgtb r0, [jpc, ip]! + ldrleb r0, [jpc, #3]! + bgt branch_taken + DISPATCH_BYTECODE + + Opcode ifle_safe + POP r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, #0 + orrle ip, ip, r1, lsl #8 + ldrleb r0, [jpc, ip]! + ldrgtb r0, [jpc, #3]! + ble branch_taken + DISPATCH_BYTECODE + + Opcode if_icmpeq_safe + Opcode if_acmpeq_safe + POP2 r2, r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, r2 + orreq ip, ip, r1, lsl #8 + ldreqb r0, [jpc, ip]! + ldrneb r0, [jpc, #3]! + beq branch_taken + DISPATCH_BYTECODE + + Opcode if_icmpne_safe + Opcode if_acmpne_safe + POP2 r2, r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, r2 + orrne ip, ip, r1, lsl #8 + ldrneb r0, [jpc, ip]! + ldreqb r0, [jpc, #3]! + bne branch_taken + DISPATCH_BYTECODE + + Opcode if_icmplt_safe + POP2 r2, r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, r2 + orrlt ip, ip, r1, lsl #8 + ldrltb r0, [jpc, ip]! + ldrgeb r0, [jpc, #3]! + blt branch_taken + DISPATCH_BYTECODE + + Opcode if_icmpge_safe + POP2 r2, r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, r2 + orrge ip, ip, r1, lsl #8 + ldrgeb r0, [jpc, ip]! + ldrltb r0, [jpc, #3]! + bge branch_taken + DISPATCH_BYTECODE + + Opcode if_icmpgt_safe + POP2 r2, r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, r2 + orrgt ip, ip, r1, lsl #8 + ldrgtb r0, [jpc, ip]! + ldrleb r0, [jpc, #3]! + bgt branch_taken + DISPATCH_BYTECODE + + Opcode if_icmple_safe + POP2 r2, r3 + ldrsb r1, [jpc, #1] + ldrb ip, [jpc, #2] + cmp r3, r2 + orrle ip, ip, r1, lsl #8 + ldrleb r0, [jpc, ip]! + ldrgtb r0, [jpc, #3]! + ble branch_taken + DISPATCH_BYTECODE + + Opcode ireturn_safe + Opcode freturn_safe + Opcode lreturn_safe + Opcode dreturn_safe + Opcode areturn_safe + Opcode return_safe + ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] + ldr r1, [r3] + cmp r1, #1 + bne handle_return + ldr r3, [istate, #ISTATE_THREAD] + mov r0, sp + str r3, [sp] + bl _ZN17HandleMarkCleanerD1Ev + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN20SafepointSynchronize5blockEP10JavaThread + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr locals, [istate, #ISTATE_LOCALS] + cmp r3, #0 + beq handle_return + b handle_exception + +resolve_putstatic: + mov r1, #179 + sub jpc, jpc, #3 + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne getfield_exception + ldrb r3, [jpc, #1] + ldrb r2, [jpc, #2] + DISPATCH_START 3 + orr r3, r3, r2, lsl #8 @ r3 = index + add tmp2, constpool, r3, lsl #4 @ tmp2 = cache + DISPATCH_NEXT + ldr r3, [tmp2, #4] @ r3 = object + ldr lr, [tmp2, #12] @ lr = tos_type + ldr r2, [tmp2, #8] @ r2 = offset + movs lr, lr, lsr #29 + bhi putstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 + bcs putstatic_h @ C = 1 => R2 = 1 + beq putstatic_sb @ Z = 1 => R2 = 0 + tst lr, #2 + bne putstatic_dw + b putstatic_sh + +resolve_getstatic: + mov r1, #178 + sub jpc, jpc, #3 + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne getfield_exception + ldrb r3, [jpc, #1] + ldrb r2, [jpc, #2] + DISPATCH_START 3 + orr r3, r3, r2, lsl #8 @ r3 = index + add tmp2, constpool, r3, lsl #4 @ tmp2 = cache + DISPATCH_NEXT + ldr r3, [tmp2, #4] + ldr r2, [tmp2, #12] + ldr lr, [tmp2, #8] + movs r2, r2, lsr #29 + bhi getstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 + bcs getstatic_h @ C = 1 => R2 = 1 + beq getstatic_sb @ Z = 1 => R2 = 0 + tst r2, #2 + bne getstatic_dw + b getstatic_sh + +resolve_putfield: + mov r1, #181 + b resolve_get_put +resolve_getfield: + mov r1, #180 +resolve_get_put: + mov tmp1, lr + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne getfield_exception +@ Now restart the getfield + ldrb r3, [jpc, #1] + ldrb r2, [jpc, #2] + orr r3, r3, r2, lsl #8 @ r3 = index + add tmp2, constpool, r3, lsl #4 @ tmp2 = cache + bx tmp1 + +accessor_non_w: + bcs accessor_h + beq accessor_sb + tst r0, #2 + bne accessor_dw +accessor_sh: + ldrsh r0, [r3, r1] + str r0, [ip, #0] + bx lr +accessor_h: + ldrh r0, [r3, r1] + str r0, [ip, #0] + bx lr +accessor_sb: + ldrsb r0, [r3, r1] + str r0, [ip, #0] + bx lr +accessor_dw: + add r0, r3, r1 + ldm r0, {r0, r1} + sub ip, ip, #4 + str ip, [r2, #THREAD_JAVA_SP] + stmia ip, {r0, r1} + bx lr + + Opcode getfield + add tmp2, constpool, r1, lsl #12 + ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + and r3, r3, #0x00ff0000 + cmp r3, #180 << 16 + blne resolve_getfield + + ldr r2, [tmp2, #12] + movs r2, r2, lsr #29 + movhi r0, #opc_igetfield + bls getfield_non_w +rewrite_bytecode: + strb r0, [jpc] + DISPATCH_BYTECODE + +getfield_non_w: + bcs getfield_h @ C = 1 => R2 = 1 + beq getfield_sb @ Z = 1 => R2 = 0 + tst r2, #2 + bne getfield_dw +getfield_sh: + mov r0, #opc_sgetfield + b rewrite_bytecode +getfield_h: + mov r0, #opc_cgetfield + b rewrite_bytecode +getfield_sb: + mov r0, #opc_bgetfield + b rewrite_bytecode +getfield_dw: + mov r0, #opc_lgetfield + b rewrite_bytecode + + Opcode putfield + add tmp2, constpool, r1, lsl #12 + ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + and r3, r3, #0xff000000 + cmp r3, #181 << 24 + blne resolve_putfield + + ldr r2, [tmp2, #12] + movs r2, r2, lsr #29 + bls putfield_non_w + mov r0, #opc_iputfield + cmp r2, #tos_atos >> 1 + moveq r0, #opc_aputfield + b rewrite_bytecode + +putfield_non_w: + bcs putfield_h + beq putfield_sb + tst r2, #2 + bne putfield_dw +putfield_sh: +putfield_h: + mov r0, #opc_cputfield + b rewrite_bytecode +putfield_sb: + mov r0, #opc_bputfield + b rewrite_bytecode +putfield_dw: + mov r0, #opc_lputfield + b rewrite_bytecode +putfield_a: + mov r0, #opc_aputfield + b rewrite_bytecode + +getstatic_sh: + DISPATCH_STATE 2 + ldrsh tmp2, [r3, lr] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +getstatic_h: + DISPATCH_STATE 2 + ldrh tmp2, [r3, lr] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +getstatic_sb: + DISPATCH_STATE 2 + ldrsb tmp2, [r3, lr] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +getstatic_dw: + DISPATCH_STATE 2 + add r3, r3, lr + ldm r3, {r2, tmp2} + DISPATCH_NEXT + PUSH2 r2, tmp2 + DISPATCH_FINISH +getstatic_w: + DISPATCH_STATE 2 + ldr tmp2, [r3, lr] + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + +putstatic_sh: +putstatic_h: + DISPATCH_STATE 2 + POP tmp2 + DISPATCH_NEXT + strh tmp2, [r3, r2] + DISPATCH_FINISH +putstatic_w: + DISPATCH_STATE 2 + cmp lr, #tos_atos >> 1 @ >> 1 due to lsr #29 above + beq putstatic_a + POP tmp2 + DISPATCH_NEXT + str tmp2, [r3, r2] + DISPATCH_FINISH +putstatic_sb: + DISPATCH_STATE 2 + POP tmp2 + DISPATCH_NEXT + strb tmp2, [r3, r2] + DISPATCH_FINISH +putstatic_dw: + DISPATCH_STATE 2 + add r2, r2, r3 + POP2 r3, tmp2 + DISPATCH_NEXT + stm r2, {r3, tmp2} + DISPATCH_FINISH +putstatic_a: + POP r1 @ r1 = value + add r0, r3, r2 + PUSH r3 + bl oop_store + ldr r3, [dispatch, #Universe_collectedHeap_Address-XXX] + DISPATCH_START 0 + 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 + + +resolve_invokevirtual: + mov tmp1, lr + mov r1, #182 + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne invokevirtual_exception + + ldrb r3, [jpc, #1] + ldrb r2, [jpc, #2] + orr r3, r3, r2, lsl #8 @ r3 = index + add r0, constpool, r3, lsl #4 @ r1 = cache + bx tmp1 + +resolve_invokestatic: + mov tmp1, lr + mov r1, #184 + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #4] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne invokestatic_exception + + ldrb r3, [jpc, #1] + ldrb r2, [jpc, #2] + orr r3, r3, r2, lsl #8 @ r3 = index + add r0, constpool, r3, lsl #4 @ r1 = cache + bx tmp1 + +resolve_invokespecial: + mov tmp1, lr + mov r1, #183 + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne invokespecial_exception + + ldrb r3, [jpc, #1] + ldrb r2, [jpc, #2] + orr r3, r3, r2, lsl #8 @ r3 = index + add r0, constpool, r3, lsl #4 @ r1 = cache + bx tmp1 + + Opcode invokeinterface + ldrb r1, [jpc, #2] @ zero_extendqisi2 + ldrb r3, [jpc, #1] @ zero_extendqisi2 + mov r0, constpool + orr r3, r3, r1, asl #8 + ldr r2, [r0, r3, asl #4] + mov tmp1, r3, asl #4 + add r0, r0, tmp1 + mov r2, r2, asr #16 + and r2, r2, #255 + cmp r2, #185 + beq .invokeinterface_1 + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + ldr r0, [istate, #ISTATE_THREAD] + mov r1, #185 + bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE + ldr r0, [istate, #ISTATE_THREAD] + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + mov r3, constpool + add r0, r3, tmp1 +.invokeinterface_1: + ldr r3, [r0, #12] + ands tmp_vvv, r3, #16777216 + bne .invokeinterface_6 + ldr lr, [r0, #4] + ldr r3, [r0, #12] + and r3, r3, #255 + ldr r3, [stack, r3, asl #2] + cmp r3, #0 + beq null_ptr_exception + ldr sl, [r3, #4] + add r3, sl, #8 + add tmp1, sl, #304 + ldr r2, [r3, #224] + ldr ip, [r3, #228] + add r2, r2, #1 + bic r2, r2, #1 + cmp ip, #0 + mov r3, r2, asl #2 + add r1, tmp1, r3 + movle r2, tmp_vvv + ble .invokeinterface_4 + ldr r3, [tmp1, r2, asl #2] + cmp lr, r3 + movne r2, tmp_vvv + bne .invokeinterface_3 + b .invokeinterface_5 +.invokeinterface_2: + ldr r3, [r1, #0] + cmp lr, r3 + beq .invokeinterface_5 +.invokeinterface_3: + add r2, r2, #1 + cmp r2, ip + add r1, r1, #8 + blt .invokeinterface_2 +.invokeinterface_4: + cmp r2, ip + beq incompatibleclass_exception +.invokeinterface_5: + ldr r3, [r0, #8] + ldr r2, [r1, #4] + mov r3, r3, asl #2 + add r3, sl, r3 + ldr r0, [r3, r2] + cmp r0, #0 + bne .invokeinterface_7 +abstractmethod_exception: + mov r0, #VMSYMBOLS_AbstractMethodError + b raise_exception +incompatibleclass_exception: + mov r0, #VMSYMBOLS_IncompatibleClassChangeError + b raise_exception + +.invokeinterface_6: + ldr r3, [r0, #12] + mov r1, stack + and r3, r3, #255 + ldr r2, [stack, r3, asl #2] + cmp r2, #0 + beq null_ptr_exception + ldr r3, [r0, #12] + tst r3, #67108864 + ldreq r3, [r0, #12] + ldreq r2, [r0, #8] + andeq r3, r3, #255 + ldrne r0, [r0, #8] + ldreq r1, [stack, r3, asl #2] + moveq r2, r2, asl #2 + ldreq r3, [r1, #4] + addeq r3, r3, r2 + ldreq r0, [r3, #304] +.invokeinterface_7: + str r0, [istate, #ISTATE_CALLEE] + ldr r3, [r0, #76] + mov r1, #0 + str r3, [istate, #36] + str stack, [istate, #ISTATE_STACK] + str jpc, [istate, #ISTATE_BCP] + ldr lr, [istate, #ISTATE_THREAD] + str r1, [lr, #THREAD_LAST_JAVA_SP] + ldr r3, [istate, #ISTATE_STACK] + add r3, r3, #4 + str r3, [lr, #THREAD_JAVA_SP] + ldr ip, [istate, #36] + ldr r2, [istate, #ISTATE_THREAD] + mov r1, ip + ldr ip, [ip] + blx ip + ldr ip, [istate, #ISTATE_THREAD] + ldr r3, [ip, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + sub r3, r3, #4 + str r3, [istate, #ISTATE_STACK] + ldr r1, [ip, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [ip, #THREAD_JAVA_SP] + str r1, [ip, #THREAD_LAST_JAVA_SP] + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr locals, [istate, #ISTATE_LOCALS] + cmp r3, #0 + bne handle_exception +invokeinterface_exit: + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 5 + + Opcode new + ldrb ip, [jpc, #1] @ zero_extendqisi2 + ldrb r2, [jpc, #2] @ zero_extendqisi2 + ldr r3, [istate, #ISTATE_METHOD] + orr r2, r2, ip, asl #8 + ldr lr, [r3, #12] + mov r2, r2, asl #16 + ldr r1, [lr, #8] + add r1, r1, #12 + ldrb r3, [r1, r2, lsr #16] @ zero_extendqisi2 + mov r2, r2, lsr #16 + and r3, r3, #255 + str r2, [sp, #52] + cmp r3, #104 + cmpne r3, #100 + beq .new_1 + mov r3, r2, asl #2 + add r3, lr, r3 + ldr r3, [r3, #32] + add r1, r3, #8 + str r3, [sp, #84] + str r1, [sp, #88] + ldr r3, [r1, #216] + cmp r3, #5 + beq .new_2 +.new_1: + ldr r3, [istate, #ISTATE_METHOD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + ldr r0, [istate, #ISTATE_THREAD] + ldr r1, [r3, #12] + ldr r2, [sp, #52] + bl _ZN18InterpreterRuntime4_newEP10JavaThreadP19constantPoolOopDesci + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr ip, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp ip, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + beq new_exit + b handle_exception +.new_2: + ldr r3, [r1, #4] + tst r3, #1 + bne .new_1 + mov fp, r3, asr #2 + ldr r3, [dispatch, #UseTLAB_Address-XXX] + ldr r2, [dispatch, #ZeroTLAB_Address-XXX] + ldrb r1, [r3] + cmp r1, #0 + ldrb r0, [r2] + bne .new_9 +.new_3: + mov tmp_vvv, fp, asl #2 +.new_4: + ldr r2, [dispatch, #Universe_collectedHeap_Address-XXX] + str r2, [sp, #20] +.new_5: + ldr r1, [sp, #20] + ldr r2, [r1, #0] + mov r0, r2 + ldr r3, [r2, #UNIVERSE_VTABLE] + ldr ip, [r3, #UNIVERSE_VTABLE_TOP_ADDR] + blx ip + ldr r3, [sp, #20] + ldr r2, [r3, #0] + ldr r3, [r2, #UNIVERSE_VTABLE] + ldr tmp_xxx, [r0, #0] + mov r0, r2 + ldr ip, [r3, #UNIVERSE_VTABLE_END_ADDR] + blx ip + add sl, tmp_xxx, tmp_vvv + ldr r3, [r0, #0] + cmp sl, r3 + bhi .new_1 + ldr ip, [sp, #20] + ldr r3, [ip, #0] + mov r0, r3 + ldr r2, [r3, #UNIVERSE_VTABLE] + ldr ip, [r2, #UNIVERSE_VTABLE_TOP_ADDR] + blx ip + mov r2, tmp_xxx + mov r1, r0 + mov r0, sl + bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + cmp r0, tmp_xxx + bne .new_5 + subs tmp_xxx, r0, #0 + beq .new_1 +.new_6: + subs r2, fp, #2 + bne .new_10 +.new_7: + ldr r3, [dispatch, #UseBiasedLocking_Address-XXX] + ldrb r1, [r3] + cmp r1, #0 + moveq r3, #1 + ldrne r0, [sp, #88] + streq r3, [tmp_xxx, #0] + ldrne r3, [r0, #96] + add r0, tmp_xxx, #4 + strne r3, [tmp_xxx, #0] + ldr r3, [dispatch, #always_do_update_barrier_Address-XXX] + ldrb r1, [r3] @ zero_extendqisi2 + cmp r1, #0 + ldreq r2, [sp, #84] + streq r2, [tmp_xxx, #4] + beq .new_8 + ldr r1, [sp, #84] + bl oop_store +.new_8: + str tmp_xxx, [stack], #-4 + b new_exit_1 +.new_9: + ldr r1, [istate, #ISTATE_THREAD] + ldr r2, [r1, #THREAD_TLAB_TOP] + ldr r3, [r1, #THREAD_TLAB_END] + rsb r3, r2, r3 + cmp fp, r3, lsr #2 + bhi .new_3 + cmp r2, #0 + mov tmp_vvv, fp, asl #2 + add r3, r2, tmp_vvv + mov tmp_xxx, r2 + str r3, [r1, #THREAD_TLAB_TOP] + beq .new_4 + cmp r0, #0 + bne .new_7 + b .new_6 +.new_10: + mov r2, r2, asl #2 + add r0, tmp_xxx, #8 + mov r1, #0 + bl memset + b .new_7 +new_exit: + ldr r2, [r0, #THREAD_VM_RESULT] + str r2, [stack], #-4 + ldr r3, [istate, #ISTATE_THREAD] + str ip, [r3, #THREAD_VM_RESULT] +new_exit_1: + ldr locals, [istate, #ISTATE_LOCALS] + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 3 + +bytecode_interpreter_str: + .ascii "[Bytecode Interpreter]\000" + ALIGN_WORD + + Opcode newarray + ldrb r1, [jpc, #1] @ zero_extendqisi2 + ldr r2, [stack, #4] + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime8newarrayEP10JavaThread9BasicTypei + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr ip, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp ip, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_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 2 + + Opcode anewarray + ldrb r0, [jpc, #1] @ zero_extendqisi2 + ldr r3, [stack, #4] + ldr lr, [istate, #ISTATE_METHOD] + ldrb r2, [jpc, #2] @ zero_extendqisi2 + orr r2, r2, r0, asl #8 + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + ldr r1, [lr, #12] + ldr r0, [istate, #ISTATE_THREAD] + bl _ZN18InterpreterRuntime9anewarrayEP10JavaThreadP19constantPoolOopDescii + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr ip, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp ip, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_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 + + Opcode arraylength + ldr r3, [stack, #4] + cmp r3, #0 + beq null_ptr_exception + ldr r1, [r3, #8] + str r1, [stack, #4] + DISPATCH 1 + + Opcode athrow + ldr r1, [stack, #4] + cmp r1, #0 + beq null_ptr_exception + mov r2, #0 + ldr r0, [istate, #ISTATE_THREAD] + mov r3, r2 + bl _ZN12ThreadShadow21set_pending_exceptionEP7oopDescPKci + b handle_exception + + Opcode checkcast + ldr r3, [stack, #4] + cmp r3, #0 + beq .checkcast_exit + ldrb sl, [jpc, #2] @ zero_extendqisi2 + ldrb tmp_xxx, [jpc, #1] @ zero_extendqisi2 + orr r1, sl, tmp_xxx, asl #8 + ldr r3, [istate, #ISTATE_METHOD] + mov r1, r1, asl #16 + ldr r0, [r3, #12] + mov tmp_xxx, r1, lsr #16 + ldr r2, [r0, #8] + add r2, r2, #12 + ldrb r3, [r2, r1, lsr #16] @ zero_extendqisi2 + and r3, r3, #255 + cmp r3, #104 + cmpne r3, #100 + beq .checkcast_2 +.checkcast_1: + mov r1, tmp_xxx, asl #2 + ldr r0, [stack, #4] + ldr r2, [istate, #ISTATE_METHOD] + ldr r0, [r0, #4] + ldr r3, [r2, #12] + add r3, r3, r1 + ldr tmp_vvv, [r3, #32] + cmp tmp_vvv, r0 + beq .checkcast_exit + add tmp_xxx, r0, #8 + mov r0, tmp_xxx + mov r1, tmp_vvv + bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + cmp r0, #0 + bne .checkcast_exit + mov r0, tmp_xxx + add sl, sp, #216 + ldr r3, [istate, #ISTATE_THREAD] + ldr fp, [r3, #144] @ THREAD_RESOURCE_AREA + ldr r1, [fp, #4] + str r1, [sp, #112] + ldr r2, [fp, #8] + str r2, [sp, #116] + ldr r3, [fp, #12] + str r3, [sp, #120] + bl _ZNK5Klass13external_nameEv + mov tmp_xxx, r0 + add r0, tmp_vvv, #8 + bl _ZNK5Klass13external_nameEv + mov r1, r0 + mov r0, tmp_xxx + bl _ZN13SharedRuntime27generate_class_cast_messageEPKcS1_ + ldr tmp_xxx, [dispatch, #VmSymbols_symbols_Address-XXX] + ldr ip, [istate, #ISTATE_THREAD] + adrl r1, bytecode_interpreter_str + mov r2, #99 + mov r3, #_thread_in_vm + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + str ip, [sl, #-72]! + str r3, [ip, #THREAD_STATE] + ldr r3, [tmp_xxx, #VMSYMBOLS_ClassCastException * 4] + ldr ip, [istate, #ISTATE_THREAD] + str r0, [sp, #0] + mov r0, ip + bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ + mov r0, sl + bl _ZN18ThreadInVMfromJavaD1Ev + ldr r0, [sp, #112] + ldr r3, [r0, #0] + ldr stack, [istate, #ISTATE_STACK] + cmp r3, #0 + ldr jpc, [istate, #ISTATE_BCP] + beq 1f + bl _ZN5Chunk9next_chopEv +1: + ldr r2, [sp, #120] + str r2, [fp, #12] + ldr r3, [sp, #112] + str r3, [fp, #4] + ldr ip, [sp, #116] + str ip, [fp, #8] + b handle_exception +.checkcast_2: + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime13quicken_io_ccEP10JavaThread + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + beq .checkcast_1 + b handle_exception +.checkcast_exit: + ldr locals, [istate, #ISTATE_LOCALS] + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 3 + + Opcode instanceof + ldr r3, [stack, #4] + cmp r3, #0 + beq .instanceof_exit + ldrb tmp1, [jpc, #1] @ zero_extendqisi2 + ldr r3, [istate, #ISTATE_METHOD] + ldrb r2, [jpc, #2] @ zero_extendqisi2 + ldr ip, [r3, #12] + orr r2, r2, tmp1, asl #8 + ldr r1, [ip, #8] + mov r2, r2, asl #16 + add r1, r1, #12 + mov tmp1, r2, lsr #16 + ldrb r3, [r1, r2, lsr #16] @ zero_extendqisi2 + and r3, r3, #255 + cmp r3, #104 + cmpne r3, #100 + bne .instanceof_1 + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime13quicken_io_ccEP10JavaThread + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception +.instanceof_1: + mov r1, tmp1, asl #2 + ldr r0, [stack, #4] + ldr r2, [istate, #ISTATE_METHOD] + ldr r0, [r0, #4] + ldr r3, [r2, #12] + add r3, r3, r1 + ldr r1, [r3, #32] + cmp r1, r0 + beq .instanceof_2 + add r0, r0, #8 + bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + cmp r0, #0 + streq r0, [stack, #4] + beq .instanceof_exit +.instanceof_2: + mov r3, #1 + str r3, [stack, #4] +.instanceof_exit: + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 3 + + Opcode monitorenter + ldr r1, [stack, #4] + cmp r1, #0 + beq .monitorenter_4 + ldr r0, [istate, #ISTATE_MONITOR_BASE] + ldr r2, [istate, #ISTATE_STACK_BASE] + cmp r2, r0 + beq .monitorenter_5 + mov sl, #0 +.monitorenter_1: + ldr r3, [r2, #4] + cmp r3, #0 + moveq sl, r2 + beq .monitorenter_2 + cmp r1, r3 + beq .monitorenter_3 +.monitorenter_2: + add r2, r2, #8 + cmp r2, r0 + bne .monitorenter_1 +.monitorenter_3: + cmp sl, #0 + beq .monitorenter_5 + str r1, [sl, #4] + ldr r3, [r1, #0] + mov r0, sl + orr tmp1, r3, #1 + mov r2, tmp1 + str tmp1, [sl, #0] + bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + cmp r0, tmp1 + beq .monitorenter_exit + bic r1, tmp1, #3 + ldr r2, [istate, #ISTATE_THREAD] + mov r0, r2 + ldr r3, [r2, #0] + ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] + blx ip + cmp r0, #0 + movne lr, #0 + strne lr, [sl, #0] + bne .monitorenter_exit + mov r1, sl + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + ldr r0, [istate, #ISTATE_THREAD] + bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #THREAD_PENDING_EXC] + cmp r3, #0 + ldr locals, [istate, #ISTATE_LOCALS] + beq .monitorenter_exit + b handle_exception +.monitorenter_4: + b null_ptr_exception +.monitorenter_5: + mov lr, #0 + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + ldr r3, [istate, #ISTATE_THREAD] + ldr ip, [istate, #ISTATE_THREAD] + ldr r1, [r3, #THREAD_JAVA_SP] + ldr r3, [r3, #THREAD_JAVA_STACK_BASE] + str lr, [ip, #THREAD_LAST_JAVA_SP] + rsb r3, r3, r1 + cmp r3, #7 + ble vm_fatal_error + sub r3, r1, #8 + ldr r1, [istate, #ISTATE_THREAD] + str r3, [r1, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK] + ldr r1, [istate, #ISTATE_STACK_BASE] + add r3, r2, #4 + cmp r1, r3 + bls .monitorenter_7 + add r0, r2, #8 +.monitorenter_6: + ldr r3, [r0, #-4] + mov r2, r0 + str r3, [r0, #-12] + add r0, r0, #4 + ldr r1, [istate, #ISTATE_STACK_BASE] + cmp r1, r2 + bhi .monitorenter_6 + ldr r2, [istate, #ISTATE_STACK] +.monitorenter_7: + sub r1, r1, #8 + sub r2, r2, #8 + ldr r3, [istate, #ISTATE_STACK_LIMIT] + str r1, [istate, #ISTATE_STACK_BASE] + str r2, [istate, #ISTATE_STACK] + sub r3, r3, #8 + mov r0, #0 + str r3, [istate, #ISTATE_STACK_LIMIT] + str r0, [r1, #4] + ldr r1, [istate, #ISTATE_THREAD] + ldr r3, [r1, #THREAD_TOP_ZERO_FRAME] + str r3, [r1, #THREAD_LAST_JAVA_SP] + ldr stack, [istate, #ISTATE_STACK] + ldr sl, [istate, #ISTATE_STACK_BASE] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [stack, #4] + ldr locals, [istate, #ISTATE_LOCALS] + mov r1, r3 + str r3, [sl, #4] + ldr r2, [r3, #0] + mov r0, sl + orr tmp1, r2, #1 + mov r2, tmp1 + str tmp1, [sl, #0] + bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + cmp r0, tmp1 + beq .monitorenter_exit + bic r1, tmp1, #3 + ldr r2, [istate, #ISTATE_THREAD] + mov r0, r2 + ldr r3, [r2, #0] + ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] + blx ip + cmp r0, #0 + movne ip, #0 + strne ip, [sl, #0] + bne .monitorenter_exit + mov r1, sl + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr locals, [istate, #ISTATE_LOCALS] + beq .monitorenter_exit + b handle_exception +.monitorenter_exit: + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + add stack, stack, #4 + DISPATCH 1 + + Opcode monitorexit + ldr sl, [stack, #4] + cmp sl, #0 + beq .monitorexit_3 + ldr r2, [istate, #ISTATE_MONITOR_BASE] + ldr tmp1, [istate, #ISTATE_STACK_BASE] + cmp tmp1, r2 + bne .monitorexit_2 + b .monitorexit_4 +.monitorexit_1: + add tmp1, tmp1, #8 + cmp tmp1, r2 + beq .monitorexit_4 +.monitorexit_2: + ldr r3, [tmp1, #4] + cmp sl, r3 + bne .monitorexit_1 + ldr r0, [tmp1, #0] + mov lr, #0 + cmp r0, lr + str lr, [tmp1, #4] + beq .monitorexit_exit + mov r1, sl + mov r2, tmp1 + bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + cmp tmp1, r0 + beq .monitorexit_exit + str sl, [tmp1, #4] + mov r1, tmp1 + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + ldr r0, [istate, #ISTATE_THREAD] + bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #THREAD_PENDING_EXC] + cmp r3, #0 + ldr locals, [istate, #ISTATE_LOCALS] + beq .monitorexit_exit + b handle_exception +.monitorexit_3: + b null_ptr_exception +.monitorexit_4: + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread + b handle_exception_with_bcp +.monitorexit_exit: + add stack, stack, #4 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 1 + +vm_fatal_error: + adr r0, .fatal_filename + mov r1, #99 + bl _Z28report_should_not_reach_herePKci + b breakpoint +.fatal_filename: + .ascii "[Optimsed Assembler Interpreter Loop]\000" + ALIGN_WORD + + Opcode aastore + ldr tmp1, [stack, #12] + ldr tmp_vvv, [stack, #8] + cmp tmp1, #0 + ldr sl, [stack, #4] + beq null_ptr_exception + ldr r3, [tmp1, #8] + cmp tmp_vvv, r3 + bcs array_bounds_exception + cmp sl, #0 + beq .aastore_exit + ldr r3, [tmp1, #4] + ldr r0, [sl, #4] + ldr r1, [r3, #136] + cmp r0, r1 + beq .aastore_exit + add r0, r0, #8 + bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + cmp r0, #0 + moveq r0, #VMSYMBOLS_ArrayStoreException + beq raise_exception +.aastore_exit: + ldr r2, [dispatch, #Universe_collectedHeap_Address-XXX] + add r1, tmp1, #12 + 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] + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 1 + + Opcode wide + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] @ zero_extendqisi2 + ldrb r3, [jpc, #3] @ zero_extendqisi2 + + sub lr, r2, #opc_aload+1 + cmp lr, #opc_istore - (opc_aload+1) + bcc wide_undef_opc_exception + + sub lr, r2, #opc_iload + cmp r2, #opc_istore + subcs lr, lr, #opc_istore - (opc_aload+1) + cmp r2, #opc_astore+1 + + orr r1, r3, r1, asl #8 + adr r3, wide_case_table + ldrcc pc, [r3, lr, lsl #2] + + cmp r2, #opc_ret + beq do_wide_ret + cmp r2, #opc_iinc + beq do_wide_iinc +wide_undef_opc_exception: + mov r0, #VMSYMBOLS_InternalError + adr r1, undef_opcode_msg + b raise_exception_with_msg +undef_opcode_msg: + .ascii "undefined opcode\000" + ALIGN_WORD + +wide_case_table: + .word case_wide_iload + .word case_wide_lload + .word case_wide_fload + .word case_wide_dload + .word case_wide_aload + .word case_wide_istore + .word case_wide_lstore + .word case_wide_fstore + .word case_wide_dstore + .word case_wide_astore + +case_wide_iload: +case_wide_fload: +case_wide_aload: + ldr r2, [locals, -r1, lsl #2] + PUSH r2 + DISPATCH 4 +case_wide_istore: +case_wide_fstore: + POP r2 + str r2, [locals, -r1, lsl #2] + DISPATCH 4 +case_wide_dload: +case_wide_lload: + sub r1, locals, r1, lsl #2 + ldmda r1, {r1, r2} + PUSH2 r1, r2 + DISPATCH 4 +case_wide_dstore: +case_wide_lstore: + POP2 r2, r3 + sub r1, locals, r1, lsl #2 + stmda r1, {r2, r3} + DISPATCH 4 +case_wide_astore: + mov r3, r1 + mov r0, stack + mvn r1, #0 + mov r2, locals + bl _ZN19BytecodeInterpreter6astoreEPiiS0_i + DISPATCH 4 +do_wide_ret: + ldr r2, [istate, #ISTATE_METHOD] + ldr r2, [r2, #8] + ldr r1, [locals, -r1, lsl #2] + add jpc, r2, r1 + DISPATCH 48 +do_wide_iinc: + ldrsb r2, [jpc, #4] + ldrb r3, [jpc, #5] + orr r2, r3, r2, lsl #8 + ldr r3, [locals, -r1, lsl #2] + add r3, r3, r2 + str r3, [locals, -r1, lsl #2] + DISPATCH 6 + + Opcode multianewarray + ldrb tmp1, [jpc, #3] @ zero_extendqisi2 + ldr r0, [istate, #ISTATE_THREAD] + add r1, stack, tmp1, lsl #2 + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime14multianewarrayEP10JavaThreadPi + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r1, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r1, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + ldr r3, [r0, #THREAD_VM_RESULT] + str r3, [stack, tmp1, asl #2] + ldr r2, [istate, #ISTATE_THREAD] + mov r3, tmp1, asl #2 + sub r3, r3, #4 + str r1, [r2, #THREAD_VM_RESULT] + add stack, stack, r3 + DISPATCH 4 + + Opcode jsr_w + ldr r3, [istate, #ISTATE_METHOD] + ldr r1, [r3, #8] + rsb r2, r1, jpc + sub r2, r2, #43 + str r2, [stack], #-4 + b do_goto_w + + Opcode goto_w + add r2, jpc, #1 + ldrb tmp1, [jpc, #1] @ zero_extendqisi2 + ldrb r3, [r2, #3] @ zero_extendqisi2 + ldrb r0, [r2, #1] @ zero_extendqisi2 + ldrb ip, [r2, #2] @ zero_extendqisi2 + orr r3, r3, tmp1, asl #24 + orr r3, r3, r0, asl #16 + orr r3, r3, ip, asl #8 + cmp r3, #0 + add jpc, jpc, r3 + bgt 1f + + ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] + ldr r1, [r3] + cmp r1, #1 + bne 1f + ldr r3, [istate, #ISTATE_THREAD] + mov r0, sp + str r3, [sp] + bl _ZN17HandleMarkCleanerD1Ev + ldr r0, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN20SafepointSynchronize5blockEP10JavaThread + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception +1: + DISPATCH 0 + + Opcode breakpoint + mov r2, jpc + str stack, [istate, #ISTATE_STACK] + str jpc, [istate, #ISTATE_BCP] + ldr r0, [istate, #ISTATE_THREAD] + ldr r1, [istate, #ISTATE_METHOD] + bl _ZN18InterpreterRuntime24get_original_bytecode_atEP10JavaThreadP13methodOopDescPh + ldr stack, [istate, #ISTATE_STACK] + ldmib istate, {jpc, locals} @ phole ldm + mov tmp1, r0 + ldr r0, [istate, #ISTATE_THREAD] + ldr r3, [r0, #THREAD_PENDING_EXC] + cmp r3, #0 + bne handle_exception + str stack, [istate, #ISTATE_STACK] + str jpc, [istate, #ISTATE_BCP] + mov r2, jpc + ldr r1, [istate, #ISTATE_METHOD] + bl _ZN18InterpreterRuntime11_breakpointEP10JavaThreadP13methodOopDescPh + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr jpc, [istate, #ISTATE_BCP] + cmp r3, #0 + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + ldr locals, [istate, #ISTATE_LOCALS] + bne handle_exception + and r0, tmp1, #255 + DISPATCH_BYTECODE + + Opcode undefined + ldr r2, [dispatch, #Bytecodes_name_Address-XXX] + ldrb r3, [jpc, #0] @ zero_extendqisi2 + adrl r0, bytecode_interpreter_str + cmp r3, #last_implemented_bytecode+1 + adrcs ip, unknown_bytecode + ldrcc ip, [r2, r3, asl #2] + adr r2, unimplemented_opcode_msg + mov r1, #99 + str ip, [sp, #0] + bl _Z19report_fatal_varargPKciS0_z + b breakpoint +unimplemented_opcode_msg: + .ascii "\011*** Unimplemented opcode: %d = %s\012\000" +unknown_bytecode: + .ascii "\000" + ALIGN_WORD + + Opcode return_register_finalizer + ldr r1, [locals, #0] + ldr r3, [r1, #4] + ldr r2, [r3, #84] + tst r2, #1073741824 + beq handle_return + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + ldr r0, [istate, #ISTATE_THREAD] + bl _ZN18InterpreterRuntime18register_finalizerEP10JavaThreadP7oopDesc + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #THREAD_PENDING_EXC] + ldr locals, [istate, #ISTATE_LOCALS] + cmp r3, #0 + 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. +normal_entry_synchronized: + stmfd sp!, {regset, lr} + sub sp, sp, #220 + mov sl, r0 + mov tmp1, r2 + ldrh r2, [sl, #40] + ldrh r3, [sl, #42] + rsb tmp_zzz, r3, r2 + cmp tmp_zzz, #0 + ble .normal_entry_synchronized_no_locals + + mov r2, #0 + ldr r1, [tmp1, #THREAD_JAVA_SP] +.zero_locals_synchronized: + subs tmp_zzz, tmp_zzz, #1 + str r2, [r1, #-4]! + bgt .zero_locals_synchronized + str r1, [tmp1, #THREAD_JAVA_SP] + +.normal_entry_synchronized_no_locals: + mov r2, tmp1 + mov r1, sl + add r0, tmp1, #THREAD_JAVA_STACK_BASE + bl build_normal +@ add lr, sp, #192 +@ str r0, [sp, #56] + mov tmp_vvv, r0 + ldr r3, [tmp1, #THREAD_TOP_ZERO_FRAME] + sub r0, r0, #72 +@ str lr, [sp, #32] + mov istate, r0 +@ str r0, [sp, #60] + str r3, [tmp_vvv, #0] + ldr r0, [tmp1, #THREAD_STACK_SIZE] + ldr r3, [tmp1, #THREAD_STACK_BASE] + ldr r2, [tmp1, #THREAD_JAVA_SP] + ldr r1, [tmp1, #THREAD_JAVA_STACK_BASE] + adrl ip, dispatch_init_adcon + rsb r3, r0, r3 + rsb r2, r1, r2 + ldmia ip, {r0, r1} + rsb r3, r3, sp + cmp r2, #4096 + cmpge r3, #32768 + add r0, r0, ip + str tmp_vvv, [tmp1, #THREAD_TOP_ZERO_FRAME] + str tmp_vvv, [tmp1, #THREAD_LAST_JAVA_SP] + add dispatch, r1, r0 + blt .throw_stack_overflow + ldr stack, [istate, #ISTATE_STACK] + ldmib istate, {jpc, locals} @ phole ldm + ldr r0, [istate, #ISTATE_METHOD] + ldr r3, [r0, #24] + tst r3, #32 + bne normal_do_synchronization + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 0 + +do_execute_java_bytecodes_restore_locals_and_jpc: + ldr jpc, [istate, #ISTATE_BCP] +do_execute_java_bytecodes_restore_locals: + ldr locals, [istate, #ISTATE_LOCALS] + ldr constpool, [istate, #ISTATE_CONSTANTS] + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH 0 + +normal_do_synchronization: + tst r3, #8 + ldrne r3, [r0, #12] + ldreq sl, [locals, #0] + ldrne r2, [r3, #16] + ldr r3, [dispatch, #UseBiasedLocking_Address-XXX] + ldr ip, [istate, #ISTATE_MONITOR_BASE] + ldrne sl, [r2, #60] + str ip, [sp, #100] + ldrb r1, [r3] + cmp r1, #0 + beq .normal_do_synchronisation_1 + ldr tmp_xxx, [sl, #0] + and r3, tmp_xxx, #7 + cmp r3, #5 + beq .normal_do_synchronisation_4 +.normal_do_synchronisation_1: + ldr r0, [sp, #100] + ldr r3, [sl, #0] + sub fp, r0, #8 + orr tmp_xxx, r3, #1 + str tmp_xxx, [r0, #-8] +.normal_do_synchronisation_2: + ldr tmp_vvv, [sl, #0] + cmp tmp_xxx, tmp_vvv + bne .normal_do_synchronisation_3 + mov r0, tmp_xxx + mov r1, fp + mov r2, sl + mov r3, #0xffffffc0 + bic r3, r3, #0xf000 + blx r3 + cmp r0, #0 + bne .normal_do_synchronisation_2 +.normal_do_synchronisation_3: + cmp tmp_xxx, tmp_vvv + beq do_execute_java_bytecodes_restore_locals + bic r1, tmp_xxx, #3 + ldr r2, [istate, #ISTATE_THREAD] + mov r0, r2 + ldr r3, [r2, #0] + ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] + blx ip + cmp r0, #0 + beq .handle_exception_28 + ldr r0, [sp, #100] + mov r3, #0 + str r3, [r0, #-8] + b do_execute_java_bytecodes_restore_locals +.normal_do_synchronisation_4: + ldr r2, [sl, #4] + ldr r2, [r2, #104] + ldr r0, [istate, #ISTATE_THREAD] + eor r3, r2, r0 + eor r3, r3, tmp_xxx + bics ip, r3, #120 + beq do_execute_java_bytecodes_restore_locals + mov r0, r2 + mov r1, sl + mov r2, tmp_xxx + bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + cmp tmp_xxx, r0 + beq .normal_do_synchronisation_1 + b do_execute_java_bytecodes_restore_locals + +# r2 = [jpc, #1] +# r1 = [jpc, #2] + Opcode invokevirtual + add r0, constpool, r1, lsl #12 + ldr r2, [r0, r2, asl #4]! @ r0 = cache + and r2, r2, #0xff000000 + cmp r2, #182 << 24 + blne resolve_invokevirtual + ldr r3, [r0, #12] + mov r0, #opc_invokeresolved + tst r3, #67108864 + movne r0, #opc_invokevfinal + b rewrite_bytecode + + Opcode invokespecial + add r0, constpool, r1, lsl #12 + ldr r2, [r0, r2, asl #4]! @ r0 = cache + and r2, r2, #0x00ff0000 + cmp r2, #183 << 16 + blne resolve_invokespecial + mov r0, #opc_invokespecialresolved + b rewrite_bytecode + + Opcode invokestatic + add r0, constpool, r1, lsl #12 + ldr r2, [r0, r2, asl #4]! @ r0 = cache + and r2, r2, #0x00ff0000 + cmp r2, #184 << 16 + blne resolve_invokestatic + mov r0, #opc_invokestaticresolved + b rewrite_bytecode + +# r2 = [jpc, #1] +# r1 = [jpc, #2] + Opcode invokevfinal + str stack, [istate, #ISTATE_STACK] + add r0, constpool, r1, lsl #12 + str jpc, [istate, #ISTATE_BCP] + add r0, r2, asl #4 + ldr r3, [r0, #12] + ldr tmp1, [istate, #ISTATE_THREAD] + and r1, r3, #255 + ldr r2, [stack, r1, asl #2] + mov r1, #0 + cmp r2, #0 + beq null_ptr_exception + + ldr tmp2, [r0, #8] + + str tmp2, [istate, #ISTATE_CALLEE] + ldr ip, [tmp2, #76] + str r1, [tmp1, #THREAD_LAST_JAVA_SP] + str ip, [istate, #36] + + add stack, stack, #4 + str stack, [tmp1, #THREAD_JAVA_SP] + + ldr r3, [ip, #0] + adr lr, normal_entry + cmp r3, lr + beq fast_normal_entry + adr lr, native_entry + cmp r3, lr + beq fast_native_entry + adr lr, accessor_entry + cmp r3, lr + beq fast_accessor_entry + b normal_dispatch_and_return + +# r2 = [jpc, #1] +# r1 = [jpc, #2] + Opcode invokeresolved + str stack, [istate, #ISTATE_STACK] + add r0, constpool, r1, lsl #12 + str jpc, [istate, #ISTATE_BCP] + add r0, r0, r2, asl #4 + ldr r3, [r0, #12] + ldr tmp1, [istate, #ISTATE_THREAD] + and r1, r3, #255 + ldr r2, [stack, r1, asl #2] + mov r1, #0 +#ifndef HW_NULL_PTR_CHECK + cmp r2, #0 + beq null_ptr_exception_jpc_0 +#endif + + ldr tmp2, [r0, #8] +.abortentry104: + ldr r3, [r2, #4] + add r3, r3, tmp2, lsl #2 + ldr tmp2, [r3, #304] + + str tmp2, [istate, #ISTATE_CALLEE] + ldr ip, [tmp2, #76] + str r1, [tmp1, #THREAD_LAST_JAVA_SP] + str ip, [istate, #36] + + add stack, stack, #4 + str stack, [tmp1, #THREAD_JAVA_SP] + + ldr r3, [ip, #0] + adr lr, normal_entry + cmp r3, lr + beq fast_normal_entry + adr lr, native_entry + cmp r3, lr + beq fast_native_entry + adr lr, accessor_entry + cmp r3, lr + beq fast_accessor_entry + +normal_dispatch_and_return: + mov r0, tmp2 + mov r1, ip + ldr r2, [istate, #ISTATE_THREAD] + blx r3 + + ldr ip, [istate, #ISTATE_THREAD] + ldr r3, [ip, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + sub r3, r3, #4 + str r3, [istate, #ISTATE_STACK] + + ldr r1, [ip, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [ip, #THREAD_JAVA_SP] + str r1, [ip, #THREAD_LAST_JAVA_SP] + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #4] + DISPATCH_START 3 + ldr locals, [istate, #ISTATE_LOCALS] + ldr constpool, [istate, #ISTATE_CONSTANTS] + DISPATCH_NEXT + DISPATCH_NEXT + add constpool, constpool, #CONST_POOL_OFFSET + cmp r3, #0 + DISPATCH_NEXT + bne invokespecial_exception_fix + DISPATCH_FINISH + + Opcode invokestaticresolved + str stack, [istate, #ISTATE_STACK] + add r0, constpool, r1, lsl #12 + str jpc, [istate, #ISTATE_BCP] + add r0, r2, asl #4 + + ldr tmp2, [r0, #4] + mov r1, #0 + str tmp2, [istate, #ISTATE_CALLEE] + ldr r3, [tmp2, #76] + ldr tmp1, [istate, #ISTATE_THREAD] + str r3, [istate, #36] + str r1, [tmp1, #THREAD_LAST_JAVA_SP] + + add stack, stack, #4 + str stack, [tmp1, #THREAD_JAVA_SP] + + ldr ip, [istate, #36] + ldr r3, [ip, #0] + adr lr, normal_entry + cmp r3, lr + beq fast_normal_entry + adr lr, native_entry + cmp r3, lr + beq fast_native_entry + adr lr, accessor_entry + cmp r3, lr + beq fast_accessor_entry + b normal_dispatch_and_return + + Opcode invokespecialresolved + str stack, [istate, #ISTATE_STACK] + add r0, constpool, r1, lsl #12 + str jpc, [istate, #ISTATE_BCP] + add r0, r2, asl #4 + + ldr r3, [r0, #12] + ldr tmp1, [istate, #ISTATE_THREAD] + and r3, r3, #255 + ldr r2, [stack, r3, asl #2] + mov r1, #0 + cmp r2, #0 + beq null_ptr_exception + + ldr tmp2, [r0, #4] + + str tmp2, [istate, #ISTATE_CALLEE] + ldr ip, [tmp2, #76] + str r1, [tmp1, #THREAD_LAST_JAVA_SP] + str ip, [istate, #36] + + add stack, stack, #4 + str stack, [tmp1, #THREAD_JAVA_SP] + + ldr r3, [ip, #0] + adr lr, normal_entry + cmp r3, lr + beq fast_normal_entry + adr lr, native_entry + cmp r3, lr + beq fast_native_entry + adr lr, accessor_entry + cmp r3, lr + beq fast_accessor_entry + 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, #180 << 16 + ldr r3, [ip, #0] + bne normal_entry + + cmp r3, #0 + beq normal_entry + + ldr r0, [r1, #12] + ldr r1, [r1, #8] + movs r0, r0, lsr #29 + bls accessor_non_w + + ldr r0, [r3, r1] + str r0, [ip, #0] + bx lr + + ALIGN_CODE +normal_entry: + adrl ip, dispatch_init_adcon + stmfd sp!, {regset, lr} + mov tmp2, r0 + ldmia ip, {r0, r1} + sub sp, sp, #220 + + mov istate, #ISTATE_THREAD + add dispatch, ip, r3 + + add r0, r0, ip + add dispatch, r1, r0 + + ldrh r1, [tmp2, #40] + ldrh r3, [tmp2, #42] + mov tmp1, r2 + + rsb tmp_xxx, r3, r1 + ldr stack, [tmp1, #THREAD_JAVA_SP] + movs tmp_xxx, tmp_xxx, asr #1 + mov r0, #0 + mov ip, #0 + strcs r0, [stack, #-4]! +.zero_locals: + subs tmp_xxx, tmp_xxx, #1 + stmgedb stack!, {r0, ip} + bgt .zero_locals + +@ r11 = thread +@ r10 = method + ldrh r2, [r10, #38] + mvn tmp_vvv, #0x540 @ form 0xCAFEBABF + bic tmp_vvv, tmp_vvv, #0x14000 + bic tmp_vvv, tmp_vvv, #0x35000000 + str istate, [stack, #-76 + ISTATE_SAVED_ISTATE] + sub istate, stack, #76 @ istate == istate + mov r7, istate @ monitor_base == istate + sub r5, istate, r2, lsl #2 + str r5, [tmp1, #THREAD_JAVA_SP] @ drop stack now + sub r5, r5, #4 @ stack limit = istate - stackwords - 4 + mov r3, istate + stmdb stack, {r0, r3, r5, r7, istate, tmp_vvv, ip} @ + + str ip, [istate, #ISTATE_CALLEE] + str ip, [istate, #ISTATE_MDX] + str ip, [istate, #ISTATE_PREV_LINK] + + sub locals, stack, #4 + add locals, locals, r1, lsl #2 @ locals == r7 + + ldr jpc, [r10, #8] @ jpc == r5 + ldr constpool, [r10, #12] @ + + sub stack, istate, #ISTATE_BCP @ stack == r4 + str stack, [istate, #ISTATE_STACK] + + add jpc, jpc, #48 + + ldr constpool, [constpool, #12] + + str tmp1, [istate, #ISTATE_THREAD] + stmib istate, {jpc, locals, constpool, r10} + + add constpool, constpool, #CONST_POOL_OFFSET + + str stack, [istate, #ISTATE_STACK] + + add tmp2, istate, #72 + + ldr r3, [tmp1, #THREAD_TOP_ZERO_FRAME] + str r3, [istate, #72] @ Fill in prev_link + ldr r0, [tmp1, #THREAD_STACK_SIZE] + ldr r3, [tmp1, #THREAD_STACK_BASE] + ldr r2, [tmp1, #THREAD_JAVA_SP] + ldr r1, [tmp1, #THREAD_JAVA_STACK_BASE] + rsb r3, r0, r3 + DISPATCH_START 0 + rsb r2, r1, r2 + rsb r3, r3, sp + DISPATCH_NEXT + cmp r2, #4096 + cmpge r3, #32768 + DISPATCH_NEXT + str tmp2, [tmp1, #THREAD_TOP_ZERO_FRAME] + str tmp2, [tmp1, #THREAD_LAST_JAVA_SP] + DISPATCH_NEXT + blt .throw_stack_overflow + DISPATCH_FINISH + + ALIGN_CODE +native_entry: + adrl ip, dispatch_init_adcon + stmfd sp!, {r3, r4, r5, r7, r9, r10, r11, lr} + at --- + ldmia ip, {dispatch, r7} + mov r11, r0 + ldrh r1, [r11, #42] + add dispatch, dispatch, ip + ldr r4, [r2, #THREAD_JAVA_SP] + add dispatch, dispatch, r7 + ldr ip, [r2, #THREAD_TOP_ZERO_FRAME] + mov r0, #0 + mvn r10, #0x540 @ form 0xCAFEBABF in r10 + bic r10, r10, #0x14000 + bic r10, r10, #0x35000000 + sub r9, r4, #76 + mov r7, r9 + str r9, [r2, #THREAD_JAVA_SP] @ drop stack + sub r5, r9, #4 @ stack limit = r9 - 4 + mov r3, r9 + stmdb r4, {r0, r3, r5, r7, r9, r10, ip} + str r0, [r9, #ISTATE_CALLEE] + str r0, [r9, #ISTATE_PREV_LINK] + str r0, [r9, #ISTATE_MSG] + str r0, [r9, #ISTATE_MDX] + sub r7, r4, #4 + add r7, r7, r1, lsl #2 + mov r5, #0 + ldr r10, [r11, #12] + ldr r10, [r10, #12] + stmia r9, {r2, r5, r7, r10, r11} + add r0, r9, #72 + mov r9, r2 + at --- +.LPIC18_native_entry: + ldr r2, [r9, #THREAD_STACK_SIZE] + ldr r3, [r9, #THREAD_STACK_BASE] + rsb r3, r2, r3 + rsb r3, r3, sp + cmp r3, #4096 + str r0, [r9, #THREAD_TOP_ZERO_FRAME] + blt .native_entry_throw_stack_overflow + ldr r5, [r11, #84] + cmp r5, #0 + bne .native_entry_got_handleraddr + str r0, [r9, #THREAD_LAST_JAVA_SP] + mov r0, r9 + mov r1, r11 + bl _ZN18InterpreterRuntime19prepare_native_callEP10JavaThreadP13methodOopDesc + ldr r1, [r9, #THREAD_PENDING_EXC] + str r5, [r9, #THREAD_LAST_JAVA_SP] + cmp r1, #0 + bne .native_entry_exception + ldr r5, [r11, #84] +.native_entry_got_handleraddr: + ldr r2, [dispatch, #InterpreterRuntime_slow_signature_handler_Address-XXX] + cmp r5, r2 + bne .native_entry_get_handler + ldr r3, [r9, #THREAD_TOP_ZERO_FRAME] + mov r2, #0 + mov r0, r9 + str r3, [r9, #THREAD_LAST_JAVA_SP] + mov r3, r2 + mov r1, r11 + bl _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_ + ldr r1, [r9, #THREAD_PENDING_EXC] + mov r3, #0 + cmp r1, #0 + str r3, [r9, #THREAD_LAST_JAVA_SP] + mov r5, r0 + bne .native_entry_exception +.native_entry_get_handler: + + sub ip, r7, r4 + mov ip, ip, asr #2 + add lr, ip, #4 + bic lr, lr, #1 + + add r3, r4, #ISTATE_OOP_TEMP-76 + + mov r4, sp + sub sp, sp, #16 + sub sp, sp, lr, lsl #2 + mov lr, sp + + add r1, r5, #24 + + add r2, r9, #THREAD_JNI_ENVIRONMENT + str r2, [lr], #4 + add r1, r1, #4 + + ldr r2, [r11, #24] + tst r2, #8 + beq .do_copy_args + + ldr r2, [r11, #12] + ldr r2, [r2, #16] + ldr r2, [r2, #60] + str r2, [r3] + + str r3, [lr], #4 + add r1, r1, #4 + +.do_copy_args: + cmp ip, #0 + blt .no_args + +.copy_args: + ldr r0, [r1], #4 + ldrh r3, [r0, #6] + cmp r3, #FFI_TYPE_DOUBLE + cmpne r3, #FFI_TYPE_SINT64 + beq .copy_long + + cmp r3, #FFI_TYPE_POINTER + beq .copy_ptr + + ldr r2, [r7], #-4 + str r2, [lr], #4 + subs ip, ip, #1 + bge .copy_args + b .no_args + +.copy_long: + tst lr, #4 + addne lr, lr, #4 + ldmda r7!, {r2, r3} + stmia lr!, {r2, r3} + subs ip, ip, #2 + bge .copy_args + b .no_args + +.copy_ptr: + ldr r2, [r7], #-4 + cmp r2, #0 + addne r2, r7, #4 + str r2, [lr], #4 + subs ip, ip, #1 + bge .copy_args + +.no_args: + ldr r0, [r9, #THREAD_TOP_ZERO_FRAME] + str r0, [r9, #THREAD_LAST_JAVA_SP] + + mov r2, #_thread_in_native + str r2, [r9, #THREAD_STATE] + + ldr ip, [r11, #80] + ldrh r11, [r11, #42] + ldmia sp!, {r0, r1, r2, r3} + blx ip + + mov sp, r4 + + mov r3, #_thread_in_native_trans + str r3, [r9, #THREAD_STATE] + +.L206_native_entry: + ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] + ldr r3, [r3, #0] + cmp r3, #0 + ldreq r3, [r9, #THREAD_SUSPEND_FLAGS] + cmpeq r3, #0 + bne .native_entry_do_special + +.native_entry_do_return: + mov r3, #_thread_in_Java + mov r2, #0 + str r3, [r9, #THREAD_STATE] + str r2, [r9, #THREAD_LAST_JAVA_SP] + + add r2, r5, #24 + ldr r3, [r5, #4] + + ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] + ldr ip, [r5], #4 + str ip, [r9, #THREAD_TOP_ZERO_FRAME] + + add r5, r5, r11, lsl #2 + + ldr ip, [r2, r3, asl #2] + ldrh r2, [ip, #6] + + cmp r2, #FFI_TYPE_POINTER + beq .native_return_obj + + ldr ip, [r9, #THREAD_ACTIVE_HANDLES] + mov r3, #0 @ ECN: OK, not an obj, save to clear handles + str r3, [ip, #128] + + cmp r2, #FFI_TYPE_VOID + beq .native_return_void + cmp r2, #FFI_TYPE_FLOAT + cmpne r2, #FFI_TYPE_SINT32 + beq .native_return_w + cmp r2, #FFI_TYPE_DOUBLE + cmpne r2, #FFI_TYPE_SINT64 + beq .native_return_dw + + cmp r2, #FFI_TYPE_UINT16 + beq .native_return_char + cmp r2, #FFI_TYPE_SINT16 + beq .native_return_short + cmp r2, #FFI_TYPE_BOOL + beq .native_return_bool + cmp r2, #FFI_TYPE_SINT8 + beq .native_return_byte + + str r0, [r0, -r0] + +.native_return_obj: + cmp r0, #0 + ldrne r0, [r0] + str r0, [r5, #-4]! + str r5, [r9, #THREAD_JAVA_SP] + ldr r2, [r9, #THREAD_ACTIVE_HANDLES] + mov r3, #0 @ ECN: Now that the object is safe on the Java stack + str r3, [r2, #128] @ stack, with the Thread SP updated, clear the active_handles. + ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} +.native_return_short: + mov r0, r0, lsl #16 + mov r0, r0, asr #16 +.native_return_w: + str r0, [r5, #-4]! +.native_return_void: + str r5, [r9, #THREAD_JAVA_SP] + ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} +.native_return_dw: + stmdb r5!, {r0, r1} + str r5, [r9, #THREAD_JAVA_SP] + ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} +.native_return_byte: + mov r0, r0, lsl #24 + mov r0, r0, asr #24 + str r0, [r5, #-4]! + str r5, [r9, #THREAD_JAVA_SP] + ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} +.native_return_char: + mov r0, r0, lsl #16 + mov r0, r0, lsr #16 + str r0, [r5, #-4]! + str r5, [r9, #THREAD_JAVA_SP] + ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} +.native_return_bool: + ands r0, r0, #255 + movne r0, #1 + str r0, [r5, #-4]! + str r5, [r9, #THREAD_JAVA_SP] + ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + +.native_entry_throw_stack_overflow: + str r0, [r9, #THREAD_LAST_JAVA_SP] + mov r0, r9 + bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread + mov r3, #0 + ldr r1, [r9, #THREAD_PENDING_EXC] + str r3, [r9, #THREAD_LAST_JAVA_SP] +.native_entry_exception: + ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] + ldr r3, [r5], #4 + str r3, [r9, #THREAD_TOP_ZERO_FRAME] + + ldrh r3, [r11, #42] + add r5, r5, r3, lsl #2 + str r5, [r9, #THREAD_JAVA_SP] + + ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} +.native_entry_do_special: + stmdb sp!, {r0, r1} + mov r0, r9 + bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ + ldmia sp!, {r0, r1} + b .native_entry_do_return + + ALIGN_CODE +fast_normal_entry: + ldrh r0, [tmp2, #40] + mov r1, #0 + ldrh r3, [tmp2, #42] + mvn ip, #0x540 @ form 0xCAFEBABF in ip + ldrh r2, [tmp2, #38] + bic ip, ip, #0x35000000 + sub r7, r0, r3 + subs r5, r7, #2 + tst r7, #1 + bic ip, ip, #0x14000 + strne r1, [stack, #-4]! + bcc 3f +1: + str r1, [stack, #-4] + str r1, [stack, #-8]! + subs r5, r5, #2 + bcs 1b +3: + ldr lr, [tmp1, #THREAD_TOP_ZERO_FRAME] + str istate, [stack, #-76 + ISTATE_SAVED_ISTATE] + sub istate, stack, #76 @ istate == istate + sub r2, istate, r2, lsl #2 + str r1, [stack, #-76 + ISTATE_MDX] + mov r7, istate @ monitor_base == istate + str r2, [tmp1, #THREAD_JAVA_SP] + sub r5, r2, #4 @ stack limit = istate - stackwords - 4 + mov r3, istate + stmdb stack, {r1, r3, r5, r7, istate, ip, lr} @ + sub locals, stack, #4 + add locals, locals, r0, lsl #2 @ locals == r7 + ldr r3, [tmp1, #THREAD_JAVA_STACK_BASE] + sub stack, istate, #4 @ stack == r4 + ldr jpc, [tmp2, #8] + ldr constpool, [tmp2, #12] @ + str stack, [istate, #ISTATE_STACK] + add ip, istate, #72 + DISPATCH_START 48 + mov lr, #0 @ ECN: FIXME - r1 already 0 + ldr constpool, [constpool, #12] + str ip, [tmp1, #THREAD_TOP_ZERO_FRAME] + rsb r2, r3, r2 + str ip, [tmp1, #THREAD_LAST_JAVA_SP] + DISPATCH_NEXT + str tmp1, [istate, #ISTATE_THREAD] + stmib istate, {jpc, locals, constpool, r10} + DISPATCH_NEXT + cmp r2, #4096 + add constpool, constpool, #CONST_POOL_OFFSET + str lr, [istate, #ISTATE_PREV_LINK] + blt .throw_stack_overflow + DISPATCH_NEXT + str lr, [istate, #ISTATE_CALLEE] + DISPATCH_FINISH + +handle_return: + + ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base + + ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end + ldr tmp_xxx, [istate, #ISTATE_THREAD] + + cmp tmp1, tmp2 + blcc return_check_monitors + + mov r3, #0 + ldrb ip, [jpc, #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 + + cmp ip, #opc_lreturn + cmpne ip, #opc_dreturn + ldreq r0, [stack, #8] + streq r0, [r1, #-4]! + cmpne ip, #opc_ireturn + cmpne ip, #opc_freturn + cmpne ip, #opc_areturn + ldreq r0, [stack, #4] + streq r0, [r1, #-4]! + + ldr istate, [istate, #ISTATE_SAVED_ISTATE] + + str r1, [tmp_xxx, #THREAD_JAVA_SP] + + cmp istate, #ISTATE_THREAD + + addeq sp, sp, #220 + ldmeqfd sp!, {regset, pc} + +fast_handle_return: + ldr ip, [istate, #ISTATE_THREAD] + ldr r3, [ip, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + sub r3, r3, #4 + str r3, [istate, #ISTATE_STACK] + + ldr r1, [ip, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [ip, #THREAD_JAVA_SP] + str r1, [ip, #THREAD_LAST_JAVA_SP] + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + ldr r3, [r0, #THREAD_PENDING_EXC] + DISPATCH_START 3 + ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr locals, [istate, #ISTATE_LOCALS] + DISPATCH_NEXT + add constpool, constpool, #CONST_POOL_OFFSET + DISPATCH_NEXT + cmp r3, #0 + DISPATCH_NEXT + bne return_exception + DISPATCH_FINISH + +normal_return: + add sp, sp, #220 + str stack, [tmp_xxx, #THREAD_JAVA_SP] + ldmfd 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 + +.return_unlock: + tst r0, #1<<5 + bxeq lr + + ldr tmp1, [tmp2, #4] @ base->obj == NULL + cmp tmp1, #0 + beq return_throw_illegal_monitor_state + + 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 _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + cmp tmp2, r0 + bxeq tmp_vvv + + str tmp1, [tmp2, #4] + add r0, sp, #144 + mov r1, tmp_xxx + bl _ZN10HandleMark10initializeEP6Thread + mov r1, tmp2 + mov r0, tmp_xxx + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock + ldr stack, [istate, #ISTATE_STACK] + ldr jpc, [istate, #ISTATE_BCP] + add r0, sp, #144 + bl _ZN10HandleMarkD1Ev + ldr r3, [tmp_xxx, #THREAD_PENDING_EXC] + cmp r3, #0 + bne handle_exception + bx tmp_vvv + +return_throw_illegal_monitor_state: + add r0, sp, #144 + mov r1, tmp_xxx + bl _ZN10HandleMark10initializeEP6Thread + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + mov r0, tmp_xxx + bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread + add r0, sp, #144 + bl _ZN10HandleMarkD1Ev + b handle_exception_with_bcp + +@ ---------------------------------------------------------------------------------------- +.throw_stack_overflow: + ldr r0, [istate, #ISTATE_THREAD] + bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread + ldr r3, [istate, #ISTATE_THREAD] + ldr ip, [istate, #ISTATE_THREAD] + ldr r2, [r3, #THREAD_TOP_ZERO_FRAME] + mov r3, #0 + add r1, r2, #4 + str r3, [ip, #THREAD_LAST_JAVA_SP] + str r1, [ip, #THREAD_JAVA_SP] + ldr r3, [r2, #0] + str r3, [ip, #THREAD_TOP_ZERO_FRAME] + ldr r2, [istate, #ISTATE_METHOD] + ldrh r3, [r2, #40] + mov r3, r3, asl #2 + add r1, r1, r3 + str r1, [ip, #THREAD_JAVA_SP] + ldr istate, [istate, #ISTATE_SAVED_ISTATE] + cmp istate, #ISTATE_THREAD + addeq sp, sp, #220 + ldmeqfd sp!, {regset, pc} + b fast_handle_return + +handle_exception_do_not_unlock: + mov r3, #1 + strb r3, [r2, #THREAD_DO_NOT_UNLOCK] + b handle_exception + +raise_exception: + adr r1, null_str +raise_exception_with_msg: + str r1, [sp] + ldr r3, [dispatch, #VmSymbols_symbols_Address-XXX] + ldr r3, [r3, r0, lsl #2] + ldr tmp1, [istate, #ISTATE_THREAD] + str jpc, [istate, #ISTATE_BCP] + str stack, [istate, #ISTATE_STACK] + mov ip, #_thread_in_vm + str ip, [tmp1, #THREAD_STATE] + mov r2, #99 + ldr r0, [istate, #ISTATE_THREAD] + adrl r1, bytecode_interpreter_str + bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ + mov r0, sp + str tmp1, [sp] + bl _ZN18ThreadInVMfromJavaD1Ev + b handle_exception_with_bcp +null_str: + .byte 0 + ALIGN_WORD + +invokespecial_exception_fix: +invokestatic_exception_fix: +invokevirtual_exception_fix: +return_exception: + sub jpc, jpc, #3 +invokespecial_exception: +invokestatic_exception: +invokevirtual_exception: +putfield_exception: +getfield_exception: +handle_exception: + str jpc, [istate, #ISTATE_BCP] +handle_exception_with_bcp: + ldr stack, [istate, #ISTATE_STACK_BASE] + sub stack, stack, #4 + str stack, [istate, #ISTATE_STACK] + add r1, sp, #168 + str r1, [sp, #36] + ldr r0, [istate, #ISTATE_THREAD] +handle_exception_1: + ldr sl, [r0, #4] + str r0, [sp, #124] + 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 + ldr r0, [sp, #36] + 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 + str stack, [istate, #ISTATE_STACK] + ldrne r1, [tmp_yyy, #0] + bl _ZN18InterpreterRuntime31exception_handler_for_exceptionEP10JavaThreadP7oopDesc + ldr stack, [istate, #ISTATE_STACK] + mov sl, r0 + ldr r0, [istate, #ISTATE_THREAD] + ldr r3, [r0, #THREAD_PENDING_EXC] + cmp r3, #0 + beq .handle_exception_5 + ldr r0, [sp, #36] + bl _ZN10HandleMarkD1Ev + ldr r1, [sp, #124] + 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] + ldr r0, [sp, #36] + ldr r2, [r3, #8] + add r2, r2, #48 + add ip, r2, sl + str ip, [istate, #ISTATE_BCP] + bl _ZN10HandleMarkD1Ev + ldr r1, [sp, #124] + 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] + 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, [sp, #48] + 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, [sp, #48] +.handle_exception_11: + bl _ZN12ThreadShadow23clear_pending_exceptionEv + mov r1, #0 + ldr r0, [istate, #ISTATE_THREAD] + str r1, [sp, #44] + 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, [sp, #48] + cmp r1, #0 + movne r2, r1 + ldrne r1, [r2, #0] +.handle_exception_13: + mov r2, #0 + mov r3, r2 + bl _ZN12ThreadShadow21set_pending_exceptionEP7oopDescPKci + mov r3, #0 + ldr r2, [istate, #ISTATE_BCP] + ldrb r2, [r2, #0] @ zero_extendqisi2 + str stack, [istate, #ISTATE_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] + ldr r0, [sp, #36] + mov r3, r3, asl #2 + add r2, r2, r3 + str r2, [lr, #THREAD_JAVA_SP] + bl _ZN10HandleMarkD1Ev + ldr r0, [sp, #124] + 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] + ldr istate, [istate, #ISTATE_SAVED_ISTATE] + cmp istate, #ISTATE_THREAD + bne fast_handle_return + add sp, sp, #220 + ldmfd sp!, {regset, pc} +.handle_exception_15: + ldr ip, [istate, #ISTATE_MONITOR_BASE] + ldr r2, [istate, #ISTATE_METHOD] + str ip, [sp, #92] + 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, [sp, #92] + ldr lr, [sp, #92] + str r3, [sp, #96] + cmp tmp_vvv, lr + bcs .handle_exception_21 + add r0, sp, #144 + add r1, sp, #212 + str r0, [sp, #28] + str r1, [sp, #24] + .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 + cmp r0, #0 + bne .handle_exception_17 +.handle_exception_18: + cmp tmp_vvv, sl + beq .handle_exception_19 + str tmp_yyy, [tmp_vvv, #4] + ldr r0, [sp, #28] + ldr r1, [istate, #ISTATE_THREAD] + bl _ZN10HandleMark10initializeEP6Thread + mov r1, tmp_vvv + ldr r0, [istate, #ISTATE_THREAD] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock + ldr stack, [istate, #ISTATE_STACK] + ldr r0, [sp, #28] + bl _ZN10HandleMarkD1Ev +.handle_exception_19: + ldr r1, [sp, #44] + cmp r1, #0 + beq .handle_exception_27 + ldr r3, [r1, #0] + cmp r3, #0 + beq .handle_exception_27 +.handle_exception_20: + ldr r3, [sp, #92] + add tmp_vvv, tmp_vvv, #8 + cmp tmp_vvv, r3 + bcc .handle_exception_16 +.handle_exception_21: + ldr ip, [sp, #96] + cmp ip, #0 + beq .handle_exception_23 + ldr r0, [sp, #92] + ldr sl, [r0, #4] + cmp sl, #0 + beq .handle_exception_26 + mov ip, r0 + ldr r0, [r0, #0] + mov r3, #0 + cmp r0, #0 + str r3, [ip, #4] + beq .handle_exception_23 + mov r1, sl + ldr r2, [sp, #92] + bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + ldr r1, [sp, #92] + cmp r1, r0 + beq .handle_exception_22 + ldr r3, [sp, #92] + add tmp_yyy, sp, #144 + mov r0, tmp_yyy + str sl, [r3, #4] + ldr r1, [istate, #ISTATE_THREAD] + bl _ZN10HandleMark10initializeEP6Thread + ldr r1, [sp, #92] + ldr r0, [istate, #ISTATE_THREAD] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock + mov r0, tmp_yyy + ldr stack, [istate, #ISTATE_STACK] + bl _ZN10HandleMarkD1Ev + ldr r0, [istate, #ISTATE_THREAD] + ldr r1, [r0, #4] + cmp r1, #0 + beq .handle_exception_24 + add r0, sp, #204 + bl _ZN6HandleC1EP7oopDesc + ldr r1, [sp, #204] + ldr r0, [istate, #ISTATE_THREAD] + str r1, [sp, #44] + 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, [sp, #44] + cmp r3, #0 + beq .handle_exception_12 +.handle_exception_25: + ldr lr, [sp, #44] + ldr r1, [lr, #0] + cmp r1, #0 + bne .handle_exception_13 + b .handle_exception_12 +.handle_exception_26: + ldr r1, [sp, #44] + 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 + +.handle_exception_27: + ldr r0, [sp, #28] + ldr r1, [istate, #ISTATE_THREAD] + bl _ZN10HandleMark10initializeEP6Thread + ldr r0, [istate, #ISTATE_THREAD] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread + ldr r0, [sp, #28] + ldr stack, [istate, #ISTATE_STACK] + bl _ZN10HandleMarkD1Ev + ldr r0, [sp, #24] + ldr r3, [istate, #ISTATE_THREAD] + ldr r1, [r3, #4] + bl _ZN6HandleC1EP7oopDesc + ldr r2, [sp, #212] + ldr r0, [istate, #ISTATE_THREAD] + str r2, [sp, #44] + bl _ZN12ThreadShadow23clear_pending_exceptionEv + b .handle_exception_20 +.handle_exception_28: + mov r1, fp + str stack, [istate, #ISTATE_STACK] + ldr r0, [istate, #ISTATE_THREAD] + bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock + ldr r0, [istate, #ISTATE_THREAD] + ldr stack, [istate, #ISTATE_STACK] + 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 +.handle_exception_29: + add tmp_yyy, sp, #144 + mov r0, tmp_yyy + ldr r1, [istate, #ISTATE_THREAD] + bl _ZN10HandleMark10initializeEP6Thread + ldr r0, [istate, #ISTATE_THREAD] + str stack, [istate, #ISTATE_STACK] + bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread + mov r0, tmp_yyy + ldr stack, [istate, #ISTATE_STACK] + bl _ZN10HandleMarkD1Ev + ldr r3, [istate, #ISTATE_THREAD] + add r0, sp, #208 + ldr r1, [r3, #4] + bl _ZN6HandleC1EP7oopDesc + ldr r2, [sp, #208] + ldr r0, [istate, #ISTATE_THREAD] + str r2, [sp, #44] + bl _ZN12ThreadShadow23clear_pending_exceptionEv + ldr r0, [istate, #ISTATE_THREAD] + b .handle_exception_24 +opclabels_data_adcon: + .word opclabels_data(GOTOFF) + + ALIGN_CODE +fast_accessor_entry: + ldr ip, [dispatch, #SafePointSynchronize_state_Address-XXX] + ldr r3, [tmp2, #8] + ldr ip, [ip, #0] + ldrb lr, [r3, #50] + ldrb r3, [r3, #51] + cmp ip, #0 + ldr ip, [tmp2, #12] + bne fast_normal_entry + ldr ip, [ip, #12] + + DISPATCH_START 3 + + orr lr, lr, r3, lsl #8 @ lr = index + add r3, ip, #16 + ldr lr, [r3, lr, lsl #4]! @ r3 = cache, lr = flags + + DISPATCH_NEXT + + cmp lr, #180 << 16 + GET_STACK 0, lr + bne fast_normal_entry + + cmp lr, #0 + beq fast_normal_entry + + + ldr r2, [r3, #12] + ldr r3, [r3, #8] + movs r2, r2, lsr #29 + bls .fast_accessor_non_w + + DISPATCH_NEXT + + ldr tmp1, [lr, r3] + + DISPATCH_NEXT + DISPATCH_NEXT + + PUT_STACK 0, tmp1 + + DISPATCH_FINISH + +.fast_accessor_non_w: + bcs .fast_accessor_h + beq .fast_accessor_sb + tst r2, #2 + bne .fast_accessor_dw +.fast_accessor_sh: + DISPATCH_STATE 2 + DISPATCH_NEXT + ldrsh tmp1, [lr, r3] + DISPATCH_NEXT + DISPATCH_NEXT + PUT_STACK 0, tmp1 + DISPATCH_FINISH +.fast_accessor_h: + DISPATCH_STATE 2 + DISPATCH_NEXT + ldrh tmp1, [lr, r3] + DISPATCH_NEXT + DISPATCH_NEXT + PUT_STACK 0, tmp1 + DISPATCH_FINISH +.fast_accessor_sb: + DISPATCH_STATE 2 + DISPATCH_NEXT + ldrsb tmp1, [lr, r3] + DISPATCH_NEXT + DISPATCH_NEXT + PUT_STACK 0, tmp1 + DISPATCH_FINISH +.fast_accessor_dw: + DISPATCH_STATE 2 + add tmp1, lr, r3 + DISPATCH_NEXT + ldm tmp1, {tmp2, tmp1} + DISPATCH_NEXT + PUT_STACK 0, tmp1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH + +.iconst_div_rem_0: + sub jpc, jpc, #1 @ Point to idiv +.lrem_0: +.ldiv_0: +.remc_0: +.divc_0: +divide_by_zero_exception: + mov r0, #VMSYMBOLS_ArithmeticException + adr r1, div_zero_msg + b raise_exception_with_msg +div_zero_msg: + .ascii "/ by int zero\000" + ALIGN_WORD + +array_bound_exception_jpc_4_r3: + sub jpc, jpc, #1 +array_bound_exception_jpc_3_r3: + sub jpc, jpc, #1 +array_bound_exception_jpc_2_r3: + sub jpc, jpc, #1 +array_bound_exception_jpc_1_r3: + sub jpc, jpc, #1 +array_bound_exception_jpc_0_r3: + mov r2, r3 + b array_bounds_exception +array_bound_exception_jpc_1_tmp2: + sub jpc, jpc, #1 +array_bound_exception_jpc_0_tmp2: + mov r2, tmp2 + b array_bounds_exception +array_bound_exception_jpc_3: + sub jpc, jpc, #1 +array_bound_exception_jpc_2: + sub jpc, jpc, #1 +array_bound_exception_jpc_1: + sub jpc, jpc, #1 +array_bound_exception_jpc_0: +array_bounds_exception: + adr r1, percent_d_str + add r0, sp, #168 + bl sprintf + add r1, sp, #168 + mov r0, #VMSYMBOLS_ArrayIndexOutOfBounds + b raise_exception_with_msg +percent_d_str: + .ascii "%d\000" + ALIGN_WORD + +#ifndef HW_NULL_PTR_CHECK +null_ptr_exception_jpc_5: + sub jpc, jpc, #1 +null_ptr_exception_jpc_4: + sub jpc, jpc, #1 +null_ptr_exception_jpc_3: + sub jpc, jpc, #1 +null_ptr_exception_jpc_2: + sub jpc, jpc, #1 +null_ptr_exception_jpc_1: + sub jpc, jpc, #1 +null_ptr_exception_jpc_0: +#endif +null_ptr_exception: + mov r0, #VMSYMBOLS_NullPointerException + b raise_exception + +@ ==== Fast SW FP emulation =============================================================== + +#define al r0 +#define ah r1 +#define bl r2 +#define bh r3 +#define tmp tmp1 +#define sh r12 +#define ex_add r14 + +@ TOS = TOSM1 + TOS +@ What we actually do is TOS = TOS + TOSM1 +@ --- do_dadd_vtos ------------------------------------------------- + Opcode dadd + POP4 al, ah, bl, bh + mov tmp, #0xff000000 + orr tmp, tmp, #0x00e00000 + bics ex_add, tmp, ah, LSL #1 + bicnes ex_add, tmp, bh, LSL #1 + beq .dadd_naninf + teq ah, bh + eormi bh, bh, #1 << 31 + bmi ._dsub1 +._dadd1: + subs ex_add, al, bl + sbcs sh, ah, bh + bhs .dadd_swapped + adds bl, bl, ex_add + adc bh, bh, sh + subs al, al, ex_add + sbc ah, ah, sh +.dadd_swapped: + mov ex_add, ah, LSR #20 + sub sh, ex_add, bh, LSR #20 + tst tmp, bh, LSL #1 + beq .dadd_uncommon + bic ah, ah, ex_add, LSL #20 + bic bh, bh, tmp + orr bh, bh, #1 << 20 +.dadd_doadd: + rsbs tmp, sh, #32 + blo .dadd_bigshift +.dadd_smallshift: + adds al, al, bl, LSR sh + adc ah, ah, bh, LSR sh + adds al, al, bh, LSL tmp + adcs ah, ah, #0 + cmp ah, #1 << 20 + bhs .dadd_carry + add ah, ah, ex_add, LSL #20 @ add exponent +.dadd_nocarry: + movs bl, bl, LSL tmp @ round and sticky bits + bpl .dadd_exit + adds al, al, #1 + movccs bl, bl, LSL #1 @ is sticky bit zero? + bne .dadd_exit +.dadd_roundeven: + cmp al, #0 + bicne al, al, #1 @ RTE if carry didn't occur + adceq ah, ah, #0 @ increment high word if it did +.dadd_check_overflow_inx: + mov bh, ah, LSL #1 + cmp bh, #0xFFE00000 + blo .dadd_exit + subhs ah, ah, #3<<29 @ bias exponent + b .return_double_Inf +.dadd_bigshift: + cmp bl, #1 + adc bl, bh, bh + sub sh, sh, #32 @ nonzero + rsbs tmp, sh, #31 @ sets C if within a word + movlo tmp, #0 @ C clear if sh > 31 + addhss al, al, bh, LSR sh + adc ah, ah, ex_add, LSL #20 + cmp ex_add, ah, LSR #20 + beq .dadd_nocarry + sub ah, ah, ex_add, LSL #20 +.dadd_carry: + add ah, ah, #1 << 20 + movs ah, ah, LSR #1 + add ah, ah, ex_add, LSL #20 + movs al, al, RRX + bcc .dadd_check_overflow_exact + adcs al, al, #0 + movccs tmp, bl, LSL tmp @EQ = round to even + bne .dadd_check_overflow_exact + b .dadd_roundeven +.dadd_rnearup_carry: + adds al, al, #1 + movccs bl, bl, LSL #1 @ is sticky bit zero? + bne .dadd_check_overflow_inx + b .dadd_roundeven +.dadd_check_overflow_exact: + mov bh, ah, LSL #1 + cmp bh, #0xFFE00000 + blo .dadd_exit + sub ah, ah, #3<<29 @ bias exponent + +.return_double_Inf: + and a3, ah, #0x80000000 +.return_double_Inf_1: + mov al, #0 + mov ah, #0x7f000000 + orr ah, ah, #0x00f00000 + orr ah,ah,a3 +.dadd_exit: + PUSH2 al, ah + DISPATCH 1 + +.dadd_uncommon: + orrs tmp, bl, bh, LSL #1 @ Is b zero or denormal? + beq .dadd_bzero + movs tmp, ex_add, LSL #21 + bic ah, ah, ex_add, LSL #20 + bicne bh, bh, #1 << 31 + subne sh, sh, #1 @ adjust exponent to fake exp_b = 1 + bne .dadd_doadd + adds al, al, bl + adc ah, ah, bh + b .daddsub_denorm +.dadd_bzero: + movs tmp, ex_add, LSL #21 @ is a denormal? + bne .dadd_exit + orrs tmp, al, ah, LSL #1 @ a zero? + beq .dadd_exit + b .daddsub_denorm + +.dadd_naninf: + cmp al, #1 @ sets C if al!=0 + adc ex_add, ah, ah + cmp bl, #1 + adc sh, bh, bh + cmp ex_add, tmp @ HI if a is NaN + cmpls sh, tmp @ HI if either is NaN + bhi .return_double_NaN + cmp ex_add, sh + beq .dadd_twoinf + cmp ex_add, tmp @ EQ if a is Inf + movne ah, bh + movne al, bl + b .dadd_exit +.dadd_twoinf: + teq ah, bh + 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 + POP4 al, ah, bl, bh + mov tmp, #0xff000000 + orr tmp, tmp, #0x00e00000 + bics ex_add, tmp, ah, LSL #1 + bicnes ex_add, tmp, bh, LSL #1 + beq .drsb_naninf + teq ah, bh + eor ah, ah, #1 << 31 + bmi ._dadd1 + eor bh, bh, #1 << 31 +._dsub1: + subs ex_add, al, bl + sbcs sh, ah, bh + bhs .dsub_swapped +.dsub_do_swap: + eor sh, sh, #1 << 31 @ negate a and b as a - b == -b - -a + adds bl, bl, ex_add + adc bh, bh, sh + subs al, al, ex_add + sbc ah, ah, sh +.dsub_swapped: + mov ex_add, ah, LSR #20 + sub sh, ex_add, bh, LSR #20 + tst tmp, bh, LSL #1 + beq .dsub_uncommon + bic ah, ah, ex_add, LSL #20 + bic bh, bh, tmp, ASR #1 + rsbs bl, bl, #0 + rsc bh, bh, tmp, ASR #1 @ 0xffe00000 >> 1 = -(1 << 20) +.dsub_dosub: + rsbs tmp, sh, #32 + blo .dsub_bigshift +.dsub_smallshift: + adds al, al, bl, LSR sh + adc ah, ah, bh, ASR sh + adds al, al, bh, LSL tmp + adcs ah, ah, #0 + bmi .dsub_borrow +.dsub_noborrow: + add ah, ah, ex_add, LSL #20 + movs bl, bl, LSL tmp +.dsub_dorounding: + bpl .dsub_exit + adds al, al, #1 @ Z flag set if carry to high word + cmpne bl, #0x80000000 @ check we don't have to round to even + bne .dsub_exit + cmp al, #0 + addeq ah, ah, #1 + bicne al, al, #1 + b .dsub_exit +.dsub_bigshift: + cmp bl, #1 + adc bl, bh, bh + sub sh, sh, #32 + rsbs tmp, sh, #31 + blo .dsub_hugeshift + adds al, al, bh, ASR sh + adcs ah, ah, #-1 + bpl .dsub_noborrow +.dsub_borrow: + add tmp, tmp, #1 + movs tmp, bl, LSL tmp + adcs al, al, al @ shift al,ah left including guard bit + adc ah, ah, ah + add sh, ah, ex_add, LSL #21 @ ah = 0xFFE00000 + fraction. Adding + movs sh, sh, LSR #21 @ C-bit is clear if bit 20 of ah + bls .dsub_renormalize @ clear, so 2 bits or more + add ah, ah, ex_add, LSL #20 + adds al, al, tmp, LSR #31 @ C and Z flag are set if carry over + cmpcc tmp, #0x80000000 @ check that we don't have to round + bne .dsub_exit + cmp al, #0 + addeq ah, ah, #1 + bicne al, al, #1 + b .dsub_exit +.dsub_renormalize: + bcs .dsub_ex_one + adds ah, ah, #1 << 21 + cmpeq al, #0 + beq .dsub_retzero @ go and deal with it, if so + mov sh, ex_add, LSR #11 + bic ex_add, ex_add, #1 << 11 + sub ex_add, ex_add, #2 @ for leading bit +.dsub_renormloop: @ TODO: add loop for 8 bit per cycle renorm + adds al, al, al + adc ah, ah, ah + sub ex_add, ex_add, #1 + tst ah, #1 << 20 + beq .dsub_renormloop + add ah, ah, sh, LSL #31 + add ah, ah, ex_add, LSL #20 + cmp ex_add, #0 + bgt .dsub_exit + add ah, ah, #3 << 29 @ bias exponent + @ Rounding direction indicator is zero (denormal results are exact) + mov ip, #0 + b .__dunder +.dsub_hugeshift: +.dsub_return: + add ah, ah, ex_add, LSL #20 +.dsub_return1: +.dsub_exit: + PUSH2 al, ah + DISPATCH 1 +.dsub_ex_one: @ underflow when ex = 1 - shift back to denorm + movs ah, ah, ASR #1 + mov al, al, RRX + add ah, ah, ex_add, LSL #20 + b .dsub_denorm +.dsub_uncommon: + orrs tmp, bl, bh, LSL #12 @ is b zero or denorm? + beq .dsub_bzero + movs tmp, ex_add, LSL #21 + bic ah, ah, ex_add, LSL #20 + beq .dsub_both_denorm + bic bh, bh, #1 << 31 + sub sh, sh, #1 + rsbs bl, bl,#0 + rsc bh, bh,#0 + b .dsub_dosub +.dsub_both_denorm: + subs al, al, bl + sbc ah, ah, bh + b .dsub_denorm +.dsub_bzero: + orrs tmp, al, ah, LSL #1 + bne .dsub_denorm @ return a@ but it might be denormal +.dsub_retzero: + mov ah, #0 @ clear sign bit (al is already 0) + b .dsub_exit +.dsub_denorm: +.daddsub_denorm: + movs bl, ah, LSL #1 @ discard sign bit + tsteq al, al @ do we have a zero? + beq .dsub_retzero @ yes@ go and ensure the right sign + b .dsub_exit +.drsb_naninf: + @ Handle NaNs and infinities in reverse subtraction. We + @ just swap the operands and go to dsub_naninf. + eor ah, ah, bh + eor al, al, bl + eor bh, bh, ah + eor bl, bl, al + eor ah, ah, bh + eor al, al, bl +.dsub_naninf: + cmp al, #1 @ sets C if al!=0 + adc ex_add, ah, ah + cmp bl, #1 + adc sh, bh, bh + cmp ex_add, tmp @ HI if a is NaN + cmpls sh, tmp @ HI if either is NaN + bhi .return_double_NaN + cmp ex_add, sh + beq .dsub_twoinf + cmp ex_add, tmp @ EQ if a is Inf + eorne ah, bh, #0x80000000 + movne al, bl + b .dsub_exit +.dsub_twoinf: + teq ah, bh + bmi .dsub_exit + +.return_double_NaN: + and a3, ah, #0x80000000 + mov al, #0 + mov ah, #0x7f000000 + orr ah, ah, #0x00f80000 + orr ah,ah,a3 + b .dsub_exit + +@ === underflow handler ================================================ + +#define INX_pos 30 +#define INX_bit (1<<30) + +#define exp r2 +#define temp r3 + +.__dunder: + tst ah, ah + orrmi ip, ip, #1<<16 + mov temp, #0x600 + mov exp, ah, LSR #20 @ find the exponent + add temp, temp, #1 + bic ah, ah, exp, LSL #20 @ remove exponent from mantissa + bic exp, exp, #0x800 @ lose the sign bit + sub exp, temp, exp + orr ah, ah, #1<<20 @ put on mantissa leading bit + cmp exp, #53 + bhi .dunder_stickyonly + beq .dunder_roundbit + cmp exp, #21 + blo .dunder_hiword + subs exp, exp, #32 + bls .dunder_hiloword +.dunder_loloword: + rsb temp, exp, #32 + cmp al, #0 + mov al, ah, LSR exp + mov exp, ah, LSL temp + orrne exp, exp, #1 + mov ah, #0 + b .dunder_round +.dunder_hiloword: + rsb temp, exp, #0 + add exp, exp, #32 + mov ah, ah, LSL temp + orr ah, ah, al, LSR exp + mov exp, al, LSL temp + mov al, ah + mov ah, #0 + b .dunder_round +.dunder_hiword: + rsb temp, exp, #32 + mov tmp, al, LSL temp + mov temp, ah, LSL temp + orr al, temp, al, LSR exp + mov ah, ah, LSR exp + mov exp, tmp + b .dunder_round +.dunder_roundbit: + orrs exp, al, ah, LSL #12 + mov al, #0 + mov ah, #0 + mov exp, #0x80000000 + addne exp, exp, #1 + b .dunder_round +.dunder_stickyonly: + mov exp, #1 + mov ah, #0 + mov al, #0 +.dunder_round: + tst ip, #1<<16 + bic ip, ip, #1<<16 + orrne ah, ah, #0x80000000 + tst exp, exp + beq .dsub_exit + movs exp, exp, LSL #1 @ round bit in C, sticky in ~Z + bcc .dunder_rerounded @ if no round bit, we're done + beq .dunder_roundeven @ RTE is tricky due to rerounding +.dunder_roundup: + adds al, al, #1 @ round up + adc ah, ah, #0 +.dunder_rerounded: + b .dsub_exit +.dunder_roundeven: + movs exp, ip, ASR #INX_pos @ get -1, 0, +1 from direction bits + bmi .dunder_roundup @ if -1, round up unconditionally + bne .dunder_rerounded @ if +1, round down unconditionally + adds al, al, #1 @ round up ... + adc ah, ah, #0 + bic al, al, #1 @ ... and then to even + b .dunder_rerounded + +@ === MULTIPLY Double =================================================== + +#define ex_m r14 +#define uh r12 +#define ul r4 +#define rs r4 +#define th r5 +#define tl r11 + +@ --- do_dmul_itos ------------------------------------------------- + Opcode dmul + POP4 al, ah, bl, bh + stmdb sp!, {r4, r5} + mov tmp, #0x7f00000 + orr tmp, tmp, #0x00f0000 + bics ex_m, tmp, ah, LSR #4 @ test for Infs or NaNs + bicnes ex_m, tmp, bh, LSR #4 + beq .dmul_naninf + and ex_m, tmp, ah, LSR #4 @ get exponent of a + eor th, ah, bh @ compute sign of result + orr ex_m, ex_m, th, LSR #31 @ and save it at bottom of ex + ands th, tmp, bh, LSR #4 @ get exponent of b, and test + tstne ah, tmp, LSL #4 @ for zeros/denorms ... + beq .dmul_zerodenorm @ go and renormalise if we got any +.dmul_normalised: + add ex_m, ex_m, th @ calculate exponent of result + sub ex_m, ex_m, #0x3FC0000 @ rebias exponent mostly + bic ah, ah, tmp, LSL #5 @ clear sign and all but lo bit of exp + bic bh, bh, tmp, LSL #5 + orr ah, ah, #1<<20 @ set leading bit on mantissa + orr bh, bh, #1<<20 @ set leading bit on mantissa +.dmul_mantmul: + umull ul, uh, ah, bl + umull tl, th, al, bh + adds tl, tl, ul + adcs th, th, uh @ carry from here is used below + umull ul, uh, ah, bh @ uh:ul is top part + adc bh, uh, #0 @ get carry from above addition + umull ah, uh, al, bl @ uh:ah is bottom part + adds tl, tl, uh + adcs th, th, ul + adcs bh, bh, #0 + tst ah, ah + orrne tl, tl, #1 @ don't lose sticky bit + mov bl, #-4 + mov uh, #32-12 @ uh will be corresponding right shift + cmp bh, #0x200 @ C set if it's 11 bits + adc uh, uh, #0 + adc bl, bl, ex_m, ASR #16 @ increment exponent correspondingly + rsb ul, uh, #32 @ ul is left shift + mov ah, bh, LSL ul + mov al, th, LSL ul + orr ah, ah, th, LSR uh + orr al, al, tl, LSR uh + add ah, ah, bl, LSL #20 @ put exponent back on (may wrap + eor ah, ah, ex_m, LSL #31 @ put sign back on (with EOR so that + movs rs, tl, LSL ul @ compute the round word + beq .dmul_exact + movs uh, rs, LSL #1 @ rs is already in place + movcc rs, #-INX_bit @ direction indicator: rounded down + bcc .dmul_rounded + orreq bh, bh, #1<<31 @ save the round-to-even bit + adcs al, al, #0 @ round up if necessary + adc ah, ah, #0 + mov rs, #INX_bit @ direction indicator: rounded up + tst al, bh, LSR #31 @ does RTE do anything? + bic al, al, bh, LSR #31 @ perform RTE + movne rs, #-INX_bit @ if RTE had effect, we rounded down +.dmul_exact: +.dmul_rounded: + teq ah, ex_m, LSL #31 @ do the signs agree? + mov uh, #0x70000000 @ even if so, need to test exp 0/7FF + orr uh, uh, #0x0ff00000 + bmi .dmul_outflow @ if not, UFL or OFL + tst ah, uh + bicnes uh, uh, ah @ is exp 0 or 7FF? + beq .dmul_outflow +.dmul_exit: + ldmia sp!, {r4, r5} + PUSH2 al, ah + DISPATCH 1 + +.dmul_rdirect: + movs ul, ex_m, LSL #31 @ put sign bit in N + tstpl uh, #2 << 22 @ if +ve: EQ iff round up. Keeps PL + tstmi uh, #1 << 22 @ if -ve: EQ iff round up. + moveq rs, #INX_bit @ rounded up + movne rs, #-INX_bit @ rounded down + addeqs al, al, #1 @ may set C + adc ah, ah, #0 + b .dmul_rounded + +.dmul_outflow: + cmp ex_m, #0x400<<16 @ Which ballpark are we in? + addle ah, ah, #0x60000000 @ Bias up if underflow + subge ah, ah, #0x60000000 @ Bias down if overflow + mov ip, rs + ldmia sp!, {r4, r5} + ble .__dunder @ underflow + b .return_double_Inf + +.dmul_zerodenorm: + orrs ul, al, ah, LSL #1 @ is a zero? + orrnes ul, bl, bh, LSL #1 @ or is b zero? + beq .dmul_zero @ Return zero if so + + tst th, th @ is b denormal? + beq .dmul_renorm_op2 +.dmul_done_op2: + bics ul, ex_m, #1 @ is a denormal? (careful of sign bit) + beq .dmul_renorm_op1 + b .dmul_normalised +.dmul_zero: + mov al, #0 @ clear low word + mov ah, ex_m, LSL #31 @ get sign of result and clear hi word + b .dmul_exit + +.dmul_renorm_op1: + add ex_m, ex_m, #1<<16 @ correct the exponent + bic ah, ah, #0x80000000 @ this will get in our way + orrs tl, ah, al, LSR #12 @ is highest set bit in low twelve? + moveq al, al, LSL #20 @ if so, move it up + subeq ex_m, ex_m, #20<<16 @ and adjust exponent + tst ah, ah @ is highest set bit in low word? + moveq ah, al, LSR #12 @ if so, move up by 20 + moveq al, al, LSL #20 + subeq ex_m, ex_m, #20<<16 @ and adjust exponent + mov ul, #0 @ shift of top word + movs tl, ah, LSR #(21-16) @ is highest set bit within 16 of top? + moveq ah, ah, LSL #16 @ if not, move up + addeq ul, ul, #16 @ and adjust exponent + movs tl, ah, LSR #(21-8) @ is highest set bit within 8 of top? + moveq ah, ah, LSL #8 @ if not, move up + addeq ul, ul, #8 @ and adjust exponent + movs tl, ah, LSR #(21-4) @ is highest set bit within 4 of top? + moveq ah, ah, LSL #4 @ if not, move up + addeq ul, ul, #4 @ and adjust exponent + movs tl, ah, LSR #(21-2) @ is highest set bit within 2 of top? + moveq ah, ah, LSL #2 @ if not, move up + addeq ul, ul, #2 @ and adjust exponent + movs tl, ah, LSR #(21-1) @ is highest set bit within 1 of top? + moveq ah, ah, LSL #1 @ if not, move up + addeq ul, ul, #1 @ and adjust exponent + + sub ex_m, ex_m, ul, LSL #16 @ calculate final pseudo exponent + mov tl, al, LSL ul @ shift low word up by same amout + rsb ul, ul, #32 @ compute reverse shift for al + 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 + + b .dmul_normalised + +.dmul_renorm_op2: + add th, th, #1<<16 @ correct the exponent + bic bh, bh, #0x80000000 @ this will get in our way + orrs tl, bh, bl, LSR #12 @ is highest set bit in low twelve? + moveq bl, bl, LSL #20 @ if so, move it up + subeq th, th, #20<<16 @ and adjust exponent + tst bh, bh @ is highest set bit in low word? + moveq bh, bl, LSR #12 @ if so, move up by 20 + moveq bl, bl, LSL #20 + subeq th, th, #20<<16 @ and adjust exponent + mov ul, #0 @ shift of top word + movs tl, bh, LSR #(21-16) @ is highest set bit within 16 of top? + moveq bh, bh, LSL #16 @ if not, move up + addeq ul, ul, #16 @ and adjust exponent + movs tl, bh, LSR #(21-8) @ is highest set bit within 8 of top? + moveq bh, bh, LSL #8 @ if not, move up + addeq ul, ul, #8 @ and adjust exponent + movs tl, bh, LSR #(21-4) @ is highest set bit within 4 of top? + moveq bh, bh, LSL #4 @ if not, move up + addeq ul, ul, #4 @ and adjust exponent + movs tl, bh, LSR #(21-2) @ is highest set bit within 2 of top? + moveq bh, bh, LSL #2 @ if not, move up + addeq ul, ul, #2 @ and adjust exponent + movs tl, bh, LSR #(21-1) @ is highest set bit within 1 of top? + moveq bh, bh, LSL #1 @ if not, move up + addeq ul, ul, #1 @ and adjust exponent + + sub th, th, ul, LSL #16 @ calculate final pseudo exponent + mov tl, bl, LSL ul @ shift low word up by same amout + rsb ul, ul, #32 @ compute reverse shift for bl + 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 + + b .dmul_done_op2 + +.dmul_naninf: + mov uh, ah, LSL #1 @ discard sign bit on a + mov ul, bh, LSL #1 @ and on b + cmp uh, tmp, LSL #5 @ HI if ah shows a to be NaN + cmpeq al, #0 @ now HI if a is NaN + cmpls ul, tmp, LSL #5 @ another chance to set HI ... + cmpeq bl, #0 @ ... if b is NaN + bhi .dmul_ivo + orrs ul, al, ah, LSL #1 @ is a zero? + orrnes ul, bl, bh, LSL #1 @ or is b zero? + beq .dmul_ivo + eor ah, ah, bh + mov al, #0 + and ah, ah, #0x80000000 + orr ah, ah, tmp, LSL #4 + b .dmul_exit + +.dmul_ivo: + ldmia sp!, {r4, r5} + b .return_double_NaN + +#undef al +#undef ah +#undef bl +#undef bh +#undef tmp +#undef sh +#undef ex_add + +#undef INX_pos +#undef INX_bit + +#undef exp +#undef temp + +#undef ex_m +#undef uh +#undef ul +#undef rs +#undef th +#undef tl + +@ --- ignore_safepoints --------------------------------------------------------------------------- + .global _ZN14CppInterpreter17ignore_safepointsEv + .type _ZN14CppInterpreter17ignore_safepointsEv, %function +_ZN14CppInterpreter17ignore_safepointsEv: + adrl ip, dispatch_init_adcon + ldmia ip, {r2, r3} + add r2, r2, ip + add ip, r3, r2 + ldr r2, [ip, #AbstractInterpreter_notice_safepoints-XXX] + ldrb r1, [r2, #0] @ zero_extendqisi2 + cmp r1, #0 + bxeq lr + mov r3, #0 + strb r3, [r2, #0] + adrl r3, main_dispatch_table + mov r2, #256 +1: + ldr r1, [r3], #4 + str r1, [ip], #4 + subs r2, r2, #1 + bne 1b + + bx lr + +@ --- notice_safepoints --------------------------------------------------------------------------- + .global _ZN14CppInterpreter17notice_safepointsEv + .type _ZN14CppInterpreter17notice_safepointsEv, %function +_ZN14CppInterpreter17notice_safepointsEv: + adrl ip, dispatch_init_adcon + ldmia ip, {r2, r3} + add r2, r2, ip + add ip, r3, r2 + ldr r2, [ip, #AbstractInterpreter_notice_safepoints-XXX] + ldrb r1, [r2, #0] @ zero_extendqisi2 + cmp r1, #0 + bxne lr + mov r3, #1 + strb r3, [r2, #0] + adrl r3, safe_dispatch_table + mov r2, #256 +1: + ldr r1, [r3], #4 + str r1, [ip], #4 + subs r2, r2, #1 + bne 1b + + bx lr + +@ --- END execute.s ---------------------------------------------------------------------------- + +bci_init: + adr r3, dispatch_init_adcon + ldmia r3, {r0, r1} + add r0, r0, r3 + add r1, r1, r0 + adr r2, adcon_init_table + mov r3, r1 +1: + ldr ip, [r2], #4 + cmp ip, #0 + ldrne ip, [r0, ip] + strne ip, [r1, #-4]! + bne 1b + adr r2, main_dispatch_table + mov r1, #256 +2: + ldr ip, [r2], #4 + str ip, [r3], #4 + subs r1, r1, #1 + bne 2b + + bx lr + + ALIGN_DATA +dispatch_init_adcon: + .word _GLOBAL_OFFSET_TABLE_-dispatch_init_adcon, opclabels_data(GOTOFF) +adcon_init_table: + .word _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_(GOT) + .word _ZN20SafepointSynchronize6_stateE(GOT) + .word _ZN9vmSymbols8_symbolsE(GOT) + .word always_do_update_barrier(GOT) + .word UseBiasedLocking(GOT) + .word _ZN8Universe14_collectedHeapE(GOT) + .word ZeroTLAB(GOT) + .word UseTLAB(GOT) + .word _ZN9Bytecodes5_nameE(GOT) + .word _ZN19AbstractInterpreter18_notice_safepointsE(GOT) + .word _ZN18ThreadLocalStorage13_thread_indexE(GOT) + .word 0 + + ALIGN_DATA +main_dispatch_table: + MAIN_DISPATCH_TABLE +safe_dispatch_table: + .word do_nop + .word do_u4const_0 + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_iconst_N + .word do_u8const_0 + .word do_lconst_1 + .word do_u4const_0 + .word do_fconst_1 + .word do_fconst_2 + .word do_u8const_0 + .word do_dconst_1 + .word do_bipush + .word do_sipush + .word do_ldc + .word do_ldc_w + .word do_ldc2_w + .word do_u4load + .word do_u8load + .word do_u4load + .word do_u8load + .word do_u4load + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_iload_0 + .word do_u8load_0 + .word do_u8load_1 + .word do_u8load_2 + .word do_u8load_3 + .word do_fload_0 + .word do_fload_0 + .word do_fload_0 + .word do_fload_0 + .word do_u8load_0 + .word do_u8load_1 + .word do_u8load_2 + .word do_u8load_3 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_aload_0 + .word do_u4aload + .word do_u8aload + .word do_u4aload + .word do_u8aload + .word do_u4aload + .word do_baload + .word do_caload + .word do_saload + .word do_u4store + .word do_u8store + .word do_u4store + .word do_u8store + .word do_u4store + .word do_u4store_0 + .word do_u4store_1 + .word do_u4store_2 + .word do_u4store_3 + .word do_u8store_0 + .word do_u8store_1 + .word do_u8store_2 + .word do_u8store_3 + .word do_u4store_0 + .word do_u4store_1 + .word do_u4store_2 + .word do_u4store_3 + .word do_u8store_0 + .word do_u8store_1 + .word do_u8store_2 + .word do_u8store_3 + .word do_u4store_0 + .word do_u4store_1 + .word do_u4store_2 + .word do_u4store_3 + .word do_u4astore + .word do_u8astore + .word do_u4astore + .word do_u8astore + .word do_aastore + .word do_bastore + .word do_u2astore + .word do_u2astore + .word do_jpop + .word do_jpop2 + .word do_dup + .word do_dup_x1 + .word do_dup_x2 + .word do_dup2 + .word do_dup2_x1 + .word do_dup2_x2 + .word do_swap + .word do_iadd + .word do_ladd + .word do_fadd + .word do_dadd + .word do_isub + .word do_lsub + .word do_fsub + .word do_dsub + .word do_imul + .word do_lmul + .word do_fmul + .word do_dmul + .word do_idiv + .word do_ldiv + .word do_fdiv + .word do_ddiv + .word do_irem + .word do_lrem + .word do_frem + .word do_drem + .word do_ineg + .word do_lneg + .word do_fneg + .word do_dneg + .word do_ishl + .word do_lshl + .word do_ishr + .word do_lshr + .word do_iushr + .word do_lushr + .word do_iand + .word do_land + .word do_ior + .word do_lor + .word do_ixor + .word do_lxor + .word do_iinc + .word do_i2l + .word do_i2f + .word do_i2d + .word do_l2i + .word do_l2f + .word do_l2d + .word do_f2i + .word do_f2l + .word do_f2d + .word do_d2i + .word do_d2l + .word do_d2f + .word do_i2b + .word do_i2c + .word do_i2s + .word do_lcmp + .word do_fcmpl + .word do_fcmpg + .word do_dcmpl + .word do_dcmpg + .word do_ifeq_safe + .word do_ifne_safe + .word do_iflt_safe + .word do_ifge_safe + .word do_ifgt_safe + .word do_ifle_safe + .word do_if_icmpeq_safe + .word do_if_icmpne_safe + .word do_if_icmplt_safe + .word do_if_icmpge_safe + .word do_if_icmpgt_safe + .word do_if_icmple_safe + .word do_if_icmpeq_safe + .word do_if_icmpne_safe + .word do_goto_safe + .word do_jsr + .word do_ret + .word do_tableswitch + .word do_lookupswitch + .word do_ireturn_safe + .word do_lreturn_safe + .word do_ireturn_safe + .word do_lreturn_safe + .word do_ireturn_safe + .word do_return_safe + .word do_getstatic + .word do_putstatic + .word do_getfield + .word do_putfield + .word do_invokevirtual + .word do_invokespecial + .word do_invokestatic + .word do_invokeinterface + .word do_undefined + .word do_new + .word do_newarray + .word do_anewarray + .word do_arraylength + .word do_athrow + .word do_checkcast + .word do_instanceof + .word do_monitorenter + .word do_monitorexit + .word do_wide + .word do_multianewarray + .word do_ifeq_safe + .word do_ifne_safe + .word do_goto_w + .word do_jsr_w + .word do_breakpoint + .word do_undefined + .word do_bgetfield + .word do_cgetfield + .word do_undefined + .word do_undefined + .word do_igetfield + .word do_lgetfield + .word do_sgetfield + .word do_aputfield + .word do_bputfield + .word do_cputfield + .word do_undefined + .word do_undefined + .word do_iputfield + .word do_lputfield + .word do_undefined + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_iaccess_0 + .word do_undefined + .word do_undefined + .word do_undefined + .word do_invokevfinal + .word do_undefined + .word do_undefined + .word do_return_register_finalizer + .word do_undefined + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_0_iconst_N + .word do_iload_iconst_N + .word do_invokeresolved + .word do_iadd_istore_N + .word do_isub_istore_N + .word do_iand_istore_N + .word do_ior_istore_N + .word do_ixor_istore_N + .word do_iadd_u4store + .word do_isub_u4store + .word do_iand_u4store + .word do_ior_u4store + .word do_ixor_u4store + .word do_invokespecialresolved + .word do_invokestaticresolved + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + .word do_undefined + + SUB_DISPATCH_TABLES + + .section .init_array,"aw",%init_array + .word bci_init(target1) + + .data + ALIGN_DATA + .word 0, 0, 0, 0, 0 +ThreadLocalStorage_thread_index: .word 0 +AbstractInterpreter_notice_safepoints: .word 0 +Bytecodes_name_Address: .word 0 +UseTLAB_Address: .word 0 +ZeroTLAB_Address: .word 0 +Universe_collectedHeap_Address: .word 0 +UseBiasedLocking_Address: .word 0 +always_do_update_barrier_Address: .word 0 +VmSymbols_symbols_Address: .word 0 +SafePointSynchronize_state_Address: .word 0 +InterpreterRuntime_slow_signature_handler_Address: .word 0 +XXX: +opclabels_data: + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +#endif // HOTSPOT_ASM diff -ruNE icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp 2009-08-13 14:17:47.000000000 +0100 +++ icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp 2009-08-13 14:28:11.000000000 +0100 @@ -721,11 +721,25 @@ return generate_entry(CppInterpreter::normal_entry); } +#if defined(PRODUCT) && defined(HOTSPOT_ASM) +typedef void (*BCI_ENTRY)(methodOopDesc*, intptr_t, Thread*); +extern "C" BCI_ENTRY asm_generate_method_entry(AbstractInterpreter::MethodKind kind); +#endif // HOTSPOT_ASM + address AbstractInterpreterGenerator::generate_method_entry( AbstractInterpreter::MethodKind kind) { address entry_point = NULL; +#if defined(PRODUCT) && defined(HOTSPOT_ASM) + if (!UseCompiler && !TaggedStackInterpreter && !JvmtiExport::can_post_interpreter_events() + && !PrintCommandLineFlags) { + BCI_ENTRY asm_entry = asm_generate_method_entry(kind); + if (asm_entry) + return ((InterpreterGenerator*)this)->generate_entry(asm_entry); + } +#endif // HOTSPOT_ASM + switch (kind) { case Interpreter::zerolocals: case Interpreter::zerolocals_synchronized: diff -ruNE icedtea6/ports/hotspot/src/cpu/zero/vm/mkbc.c icedtea6/ports/hotspot/src/cpu/zero/vm/mkbc.c --- icedtea6/ports/hotspot/src/cpu/zero/vm/mkbc.c 1970-01-01 01:00:00.000000000 +0100 +++ icedtea6/ports/hotspot/src/cpu/zero/vm/mkbc.c 2009-08-13 14:24:44.000000000 +0100 @@ -0,0 +1,581 @@ +#include +#include +#include +#include + +#define DEFAULT_PREFIX "do_" + +static char *prefix = DEFAULT_PREFIX; + +#define ISALPHA(c) (isalpha(c) || (c) == '_') +#define ISALNUM(c) (isalnum(c) || (c) == '_') + +FILE *source_f, *bci_f, *bci_f; + +typedef struct Bytecode { + char *name; + int len; +} Bytecode; + +typedef struct StringList { + struct StringList *next; + char *line; +} StringList; + +typedef struct OpcodeList { + struct OpcodeList *next; + long opcode; +} OpcodeList; + +typedef struct OpcodeSequence { + struct OpcodeSequence *next; + OpcodeList *opcode_list; +} OpcodeSequence; + +typedef struct BytecodeImpl { + struct BytecodeImpl *next; + OpcodeSequence *opcode_seq; + StringList *macro_impl; + StringList *direct_impl; + int len; + char *name; + char *do_name; +} BytecodeImpl; + +Bytecode bytecodes[256]; + +BytecodeImpl *the_impl = 0; +BytecodeImpl **the_impl_ptr = &the_impl; + +#define BUFLEN 1024 + +static int lineno = 1; + +void fatal(const char *s) +{ + fputs(s, stderr); + fputc('\n', stderr); + exit(1); +} + +void outmem(void) +{ + fprintf(stderr, "Out of memory\n"); + exit(1); +} + +void synerr(void) +{ + fprintf(stderr, "Syntax error at line %d\n", lineno); + exit(1); +} + +int readchar() +{ + int c; + + c = getc(source_f); + if (c == '\n') lineno++; + return c; +} + +int readwhitespace(int c, char *buf, int len) +{ + int i = 0; + + while ((isspace)(c)) { + if (buf && i < len-1) buf[i++] = c; + c = (readchar)(); + } + if (buf && i < len) buf[i] = 0; + return c; +} + +int skipwhitespace(int c) +{ + while ((isspace)(c)) { + c = (readchar)(); + } + return c; +} + +int readeol(int c, char *buf, int len) +{ + int i = 0; + + while (c != '\n' && c != EOF) { + if (buf && i < len-1) buf[i++] = c; + c = (readchar)(); + } + if (buf && i < len) buf[i] = 0; + if (c == '\n') c = (readchar)(); + return c; +} + +int skipeol(int c) +{ + while (c != '\n' && c != EOF) c = (readchar)(); + if (c == '\n') c = (readchar)(); + return c; +} + +int readsymbol(int c, char *buf, int len) +{ + int i = 0; + + while (ISALNUM(c)) { + if (buf && i < len-1) buf[i++] = c; + c = (readchar)(); + } + if (buf && i < len) buf[i] = 0; + return c; +} + +int bcdef(int c, char *buf, int len) +{ + BytecodeImpl *def; + OpcodeSequence *seq; + OpcodeSequence **seqp; + OpcodeList *opc; + OpcodeList **opcp; + StringList *macro, **macrop; + StringList *direct, **directp; + char *name; + char *line; + int i; + int length, overall_len; + + def = malloc(sizeof(BytecodeImpl)); + if (!def) outmem(); + def->next = 0; + def->opcode_seq = 0; + def->macro_impl = 0; + def->direct_impl = 0; + def->len = -1; + *the_impl_ptr = def; + the_impl_ptr = &(def->next); + seqp = &(def->opcode_seq); + overall_len = 0; + do { + seq = malloc(sizeof(OpcodeSequence)); + if (!seq) outmem(); + seq->next = 0; + seq->opcode_list = 0; + *seqp = seq; + seqp = &(seq->next); + opcp = &(seq->opcode_list); + length = -2; + do { + c = (readchar)(); + c = skipwhitespace(c); + if (!ISALPHA(c)) synerr(); + c = readsymbol(c, buf, len); + c = skipwhitespace(c); + opc = malloc(sizeof(OpcodeList)); + if (!opc) outmem(); + opc->next = 0; + opc->opcode = -1; + *opcp = opc; + opcp = &(opc->next); + name = strdup(buf); + if (!name) outmem(); + for (i = 0; i < 256; i++) { + if (strcmp(name, bytecodes[i].name) == 0) { + opc->opcode = i; + break; + } + } + if (i == 256) { + fprintf(stderr, "No such opcode '%s'\n", name); + exit(1); + } + if (length == -2) length = bytecodes[i].len; + } while (c == ','); + overall_len += length; + if (c != ')') synerr(); + c = (readchar)(); + c = skipwhitespace(c); + } while (c == '('); +// strcpy(buf, "do_"); + *buf = 0; + if (ISALPHA(c)) { + c = readsymbol(c, buf, len); + c = skipwhitespace(c); + } else { + seq = def->opcode_seq; +// strcat(buf, "bytecode"); + while (seq) { + opc = seq->opcode_list; + if (*buf) strcat(buf, "_"); + strcat(buf, bytecodes[opc->opcode].name); +// sprintf(buf+strlen(buf), "_%ld", opc->opcode); + seq = seq->next; + } + } + name = strdup(buf); + if (!name) outmem(); + def->name = name; + def->do_name = name; + def->len = overall_len; + if (c != '{') synerr(); + c = (readchar)(); + while (c != '\n' && isspace(c)) c = (readchar)(); + if (c != '\n') synerr(); + c = (readchar)(); + c = readwhitespace(c, buf, len); + macrop = &(def->macro_impl); + while (c != '}' && c != EOF) { + c = readeol(c, buf + strlen(buf), len - strlen(buf)); + line = strdup(buf); + if (!line) outmem(); + macro = malloc(sizeof(StringList)); + if (!macro) outmem(); + *macrop = macro; + macrop = &(macro->next); + macro->next = 0; + macro->line = line; + c = readwhitespace(c, buf, len); + } + if (c != '}') synerr(); + c = (readchar)(); + c = skipwhitespace(c); + if (ISALPHA(c)) { + c = readsymbol(c, buf, len); + c = skipwhitespace(c); + name = strdup(buf); + if (!name) outmem(); + def->do_name = name; + } + if (c == '[') { + c = (readchar)(); + while (c != '\n' && isspace(c)) c = (readchar)(); + if (c != '\n') synerr(); + c = (readchar)(); + c = readwhitespace(c, buf, len); + directp = &(def->direct_impl); + while (c != ']' && c != EOF) { + c = readeol(c, buf + strlen(buf), len - strlen(buf)); + line = strdup(buf); + if (!line) outmem(); + direct = malloc(sizeof(StringList)); + if (!direct) outmem(); + *directp = direct; + directp = &(direct->next); + direct->next = 0; + direct->line = line; + c = readwhitespace(c, buf, len); + } + if (c != ']') synerr(); + c = (readchar)(); + } + return c; +} + +void mkbc(void) +{ + char buf[BUFLEN]; + char *endptr; + int c; + char *name; + long opcode, len; + + c = (readchar)(); + c = skipwhitespace(c); + while (c != EOF) { + if (c == '#') { + c = skipeol(c); + } else if (ISALPHA(c)) { + c = readsymbol(c, buf, BUFLEN); + c = skipwhitespace(c); + if (c == '=') { + name = strdup(buf); + if (!name) outmem(); + c = (readchar)(); + c = skipwhitespace(c); + if (!(isdigit)(c)) synerr(); + c = readsymbol(c, buf, BUFLEN); + opcode = strtol(buf, &endptr, 0); + if (*endptr != 0) synerr(); + c = skipwhitespace(c); + if (c != ',') synerr(); + c = (readchar)(); + c = skipwhitespace(c); + if (!(isdigit)(c)) synerr(); + c = readsymbol(c, buf, BUFLEN); + len = strtol(buf, &endptr, 0); + if (*endptr != 0) synerr(); + bytecodes[opcode].name = name; + bytecodes[opcode].len = len; + } + } else if (c == '(') { + c = bcdef(c, buf, BUFLEN); + } else synerr(); + c = skipwhitespace(c); + } +} + +typedef struct TableEntry { + BytecodeImpl *impl; + char *impl_name; + char *def_name; + struct TableEntry *subtable; +} TableEntry; + +TableEntry *the_table; + +int is_duplicate(TableEntry *a, TableEntry *b) +{ + int i; + char buf[256]; + + for (i = 0; i < 256; i++) { + if (a[i].subtable || b[i].subtable) { + if (!(a[i].subtable) || !(b[i].subtable)) return 0; + if (!is_duplicate(a[i].subtable, b[i].subtable)) return 0; + } else if (a[i].impl_name && b[i].impl_name) { + if (strcmp(a[i].impl_name, b[i].impl_name) != 0) + return 0; + } else if (a[i].def_name && b[i].def_name) { + if (strcmp(a[i].def_name, b[i].def_name) != 0) + return 0; + } else return 0; + } + return 1; +} + +void remove_duplicates(TableEntry *table, int start, int *table_indices, int depth) +{ + TableEntry *start_entry = table[start].subtable; + int i, j; + + if (!start_entry) fatal("Subtable is NULL in remove_duplicates!!!"); + for (i = start+1; i < 256; i++) { + if (table[i].subtable) { + if (is_duplicate(start_entry, table[i].subtable)) { + fputs("dispatch", bci_f); + for (j = 0; j < depth; j++) { + fputc('_', bci_f); + fputs(bytecodes[table_indices[j]].name, bci_f); + } + fputc('_', bci_f); + fputs(bytecodes[i].name, bci_f); + fputs(":\n", bci_f); + free(table[i].subtable); + table[i].subtable = 0; + } + } + } +} + +void writeouttable(TableEntry *table, int *table_indices, int depth) +{ + int i, j; + int len; + + for (i = 0; i < 256; i++) { + if (table[i].subtable) { + len = 0; + fputs("\t.word\tdispatch", bci_f); + table_indices[depth] = i; + for (j = 0; j <= depth; j++) { + fputc('_', bci_f); + fputs(bytecodes[table_indices[j]].name, bci_f); + len += bytecodes[table_indices[j]].len; + } + fprintf(bci_f, "+%d\n", len); + } else { + if (table[i].impl_name) + fprintf(bci_f, "\t.word\t%s%s\n", prefix, table[i].impl_name); + else + fprintf(bci_f, "\t.word\t%s%s\n", prefix, table[i].def_name); + } + } + if (depth == 0) { + fputs("\t.endm\n", bci_f); + fputs("\t.macro\tSUB_DISPATCH_TABLES\n", bci_f); + } + for (i = 0; i < 256; i++) { + if (table[i].subtable) { + fputs("dispatch", bci_f); + table_indices[depth] = i; + for (j = 0; j <= depth; j++) { + fputc('_', bci_f); + fputs(bytecodes[table_indices[j]].name, bci_f); + } + fputs(":\n", bci_f); + remove_duplicates(table, i, table_indices, depth); + writeouttable(table[i].subtable, table_indices, depth+1); + } + } +} + +void do_tableentry(BytecodeImpl *impl, TableEntry **tablep, int *table_indices, int depth) +{ + TableEntry *table; + char *def = "undefined"; + int i,j; + + if (depth == 0) fatal("Depth = 0 for tableentry\n"); + for (i = 0; i < depth; i++) { + table = *tablep; + if (!table) { + table = malloc(sizeof(TableEntry) * 256); + if (!table) outmem(); + *tablep = table; + def = strdup(def); + if (!def) outmem(); + for (j = 0; j < 256; j++) { + table[j].impl_name = 0; + table[j].def_name = def; + table[j].subtable = 0; + } + } + table = &table[table_indices[i]]; + tablep = &(table->subtable); + if (table->impl_name) def = table->def_name; + } + if (!table->impl_name) + table->impl_name = impl->do_name; + table->def_name = impl->do_name; +} + +void dumpseq(BytecodeImpl *impl, OpcodeSequence *seq, int *table_indices, int depth) +{ + OpcodeList *opc; + + opc = seq->opcode_list; + while (opc) { + table_indices[depth++] = opc->opcode; + if (seq->next != NULL) { + dumpseq(impl, seq->next, table_indices, depth); + } else { + do_tableentry(impl, &the_table, table_indices, depth); + } + depth--; + opc = opc->next; + } +} + +void dumptable(void) +{ + BytecodeImpl *impl = the_impl; + int table_indices[256]; + int j; + char buf[256]; + char *def; + + the_table = malloc(sizeof(TableEntry) * 256); + if (!the_table) outmem(); + for (j = 0; j < 256; j++) { + sprintf(buf, "%s", bytecodes[j].name); + def = strdup(buf); + if (!def) outmem(); + the_table[j].impl_name = 0; + the_table[j].def_name = def; + the_table[j].subtable = 0; + } + while (impl) { + dumpseq(impl, impl->opcode_seq, table_indices, 0); + impl = impl->next; + } + fputs("\t.macro\tMAIN_DISPATCH_TABLE\n", bci_f); + writeouttable(the_table, table_indices, 0); + fputs("\t.endm\n", bci_f); +} + +void dumpimpl(void) +{ + BytecodeImpl *impl = the_impl; + OpcodeList *opc; + StringList *code; + StringList *sl; + char buf[BUFLEN]; + char macro[BUFLEN]; + + while (impl) { + buf[0] = 0; + fprintf(bci_f, "@-----------------------------------------------------------------------------\n"); + fprintf(bci_f, "\t.macro\t%s\tjpc_off=0, seq_len=%d\n", impl->name, impl->len); + sl = impl->macro_impl; + while (sl) { + fputs(sl->line, bci_f); + fputc('\n', bci_f); + sl = sl->next; + } + fprintf(bci_f, "\t.endm\n\n"); + sl = impl->direct_impl; + if (sl) { + do { + fputs(sl->line, bci_f); + fputc('\n', bci_f); + sl = sl->next; + } while (sl); + } else { + fprintf(bci_f, "\tOpcode\t%s\n", impl->do_name); +// fprintf(bci_f, "%s:\n", impl->do_name); + fprintf(bci_f, "\t%s\n", impl->name); +// fprintf(bci_f, "\tDISPATCH\t%d\n", impl->len); + } + impl = impl->next; + } +} + +void dumpbc() +{ + int i; + + for (i = 0; i < 256; i++) { + if (strcmp(bytecodes[i].name, "undefined") != 0) + fprintf(bci_f, "#define opc_%s\t\t0x%02x\n", bytecodes[i].name, i); + } + fputc('\n', bci_f); + dumpimpl(); + dumptable(); +} + +void usage(void) +{ + fatal("Usage: mkbc "); +} + +int main(int argc, char **argv) +{ + int i; + char *source, *bci; + char *s; + + source = bci = 0; + while (s = *++argv) { + if (*s == '-') { + if (s[1] == 'P') { + prefix = s+2; + } else { + fprintf(stderr, "Unrecognized option %s\n", s); + usage(); + } + } else { + if (!source) source = s; + else if (!bci) bci = s; + else { + fprintf(stderr, "Too many arguments\n"); + usage(); + } + } + } + if (!bci) { + fprintf(stderr, "Too few arguments\n"); + usage(); + } + source_f = fopen(source, "r"); + if (!source_f) fatal("Error opening source file"); + bci_f = fopen(bci, "w"); + if (!bci_f) fatal("Error opening bci file for write"); + for (i = 0; i < 256; i++) { + bytecodes[i].name = "undefined"; + bytecodes[i].len = -1; + } + mkbc(); + dumpbc(); + if (fclose(source_f)) fatal("Error reading source"); + if (fclose(bci_f)) fatal("Error writing bci"); +} diff -ruNE icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp --- icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp 2009-08-13 14:17:47.000000000 +0100 +++ icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp 2009-08-13 14:29:09.000000000 +0100 @@ -78,6 +78,10 @@ Unimplemented(); } +#if defined(PRODUCT) && defined(HOTSPOT_ASM) +extern "C" int asm_check_null_ptr(ucontext_t *uc); +#endif // HOTSPOT_ASM + extern "C" int JVM_handle_linux_signal(int sig, siginfo_t* info, @@ -86,6 +90,12 @@ { ucontext_t* uc = (ucontext_t*) ucVoid; +#if defined(PRODUCT) && defined(HOTSPOT_ASM) + if (sig == SIGSEGV) { + if (asm_check_null_ptr(uc)) return 1; + } +#endif // HOTSPOT_ASM + Thread* t = ThreadLocalStorage::get_thread_slow(); SignalHandlerMark shm(t); From gbenson at redhat.com Fri Aug 14 08:24:03 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 14 Aug 2009 16:24:03 +0100 Subject: Request to commit - ARM interpreter changes In-Reply-To: <200908141336.n7EDa50x031197@parsley.camswl.com> References: <200908141336.n7EDa50x031197@parsley.camswl.com> Message-ID: <20090814152403.GD3331@redhat.com> Edward Nevill wrote: > + * ports/hotspot/src/cpu/zero/vm/mkbc.c > + Bytecode generator, use to generate bytecodes.s from bc.def Can you put this file in the top-level directory please? I'll hack around with the Makefile once you commit to make it build mkbc (and then bytecodes.s) at build time. Otherwise, I'm happy for you to commit this. Cheers, Gary -- http://gbenson.net/ From bugzilla-daemon at icedtea.classpath.org Fri Aug 14 10:03:31 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 14 Aug 2009 17:03:31 +0000 Subject: [Bug 378] New: Epiphany crashes due to IcedTeaPluginFactory Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=378 Summary: Epiphany crashes due to IcedTeaPluginFactory Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: critical Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: zephod at cfl.rr.com When opening TDAmeritrade's Command Center 2.0, a java window opens and then shortly after epiphany crashes. The epiphany developers say it is an IcedTeaPlugin Factory problem. This is on an F10 system fully up-to-date as of Aug 114 2009. # uname -a Linux steve.blackwell 2.6.27.29-170.2.78.fc10.i686 #1 SMP Fri Jul 31 04:40:15 EDT 2009 i686 i686 i386 GNU/Linux # rpm -qa | grep epiphany epiphany-debuginfo-2.24.3-9.fc10.i386 epiphany-extensions-2.24.3-4.fc10.i386 epiphany-2.24.3-9.fc10.i386 # rpm -qa | grep java java_cup-0.10k-1.i386 glib-java-0.2.6-13.fc10.i386 java-1.6.0-openjdk-1.6.0.0-20.b16.fc10.i386 java-1.6.0-openjdk-plugin-1.6.0.0-20.b16.fc10.i386 tzdata-java-2009k-1.fc10.noarch java-1.5.0-gcj-1.5.0.0-23.fc10.i386 # rpm -qa | grep firefox firefox-3.0.13-1.fc10.i386 In epiphany about:plugins says: IcedTea Java Web Browser Plugin File name: IcedTeaPlugin.so The IcedTea Java Web Browser Plugin 1.5 (fedora-20.b16.fc10-i386) executes Java applets. I realize that not everyone has a TDAmeritrade account and so this will be difficult to test so let me know if you need help in that regard. Here is the crash log from BugBuddy : Distribution: Fedora release 10 (Cambridge) Gnome Release: 2.24.3 2009-01-16 (Red Hat, Inc) BugBuddy Version: 2.24.2 System: Linux 2.6.27.29-170.2.78.fc10.i686 #1 SMP Fri Jul 31 04:40:15 EDT 2009 i686 X Vendor: The X.Org Foundation X Vendor Release: 10503000 Selinux: Permissive Accessibility: Disabled GTK+ Theme: Nodoka Icon Theme: Fedora Memory status: size: 262463488 vsize: 262463488 resident: 126091264 share: 26980352 rss: 126091264 rss_rlim: 18446744073709551615 CPU usage: start_time: 1250176108 rtime: 173854 utime: 138661 stime: 35193 cutime:3 cstime: 18 timeout: 0 it_real_value: 0 frequency: 100 Backtrace was generated from '/usr/bin/epiphany' [Thread debugging using libthread_db enabled] [New Thread 0xb7f9da00 (LWP 5323)] [New Thread 0xb0fffb90 (LWP 12843)] [New Thread 0xb00c6b90 (LWP 12842)] [New Thread 0xb26fbb90 (LWP 12840)] [New Thread 0xb1cfab90 (LWP 12839)] [New Thread 0xb3afdb90 (LWP 5332)] [New Thread 0xb44feb90 (LWP 5331)] [New Thread 0xb4effb90 (LWP 5330)] [New Thread 0xb649ab90 (LWP 5328)] [New Thread 0xb7156b90 (LWP 5327)] 0x00446416 in __kernel_vsyscall () #0 0x00446416 in __kernel_vsyscall () #1 0x0034b777 in __poll (fds=0xaf39f18, nfds=15, timeout=222500) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x07b2b792 in g_main_context_poll () at gmain.c:3091 #3 g_main_context_iterate (context=0x91e9ed0, block=1, dispatch=1, self=0x91c2560) at gmain.c:2773 #4 0x07b2be22 in IA__g_main_loop_run (loop=0x9235588) at gmain.c:2986 #5 0x0211e989 in IA__gtk_main () at gtkmain.c:1200 #6 0x08071f80 in main (argc=1, argv=0xbfe8f2f4) at ephy-main.c:738 Thread 10 (Thread 0xb7156b90 (LWP 5327)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x0034b777 in __poll (fds=0xb7155eb8, nfds=3, timeout=65535000) at ../sysdeps/unix/sysv/linux/poll.c:87 resultvar = oldtype = 0 result = #2 0x050efbf4 in _pr_poll_with_poll (pds=0x9552ce0, npds=3, timeout=65535000) at ../../../mozilla/nsprpub/pr/src/pthreads/ptio.c:3916 stack_syspoll = {{fd = 21, events = 1, revents = 0}, {fd = 34, events = 3, revents = 0}, {fd = 40, events = 3, revents = 0}, { fd = 156031760, events = -12400, revents = 2378}, {fd = -1223336200, events = -8704, revents = 1294}, {fd = 156031760, events = 1, revents = 0}, {fd = -1223336184, events = 8180, revents = 62}, { fd = -1259339760, events = 13600, revents = -20219}, {fd = -1223336168, events = 13142, revents = 46}, {fd = -1259339760, events = 13600, revents = -20219}, {fd = -1325400064, events = 5652, revents = 158}, { fd = -1325058784, events = 0, revents = 0}, {fd = -1223336152, events = -2671, revents = 154}, {fd = -1325058784, events = -5376, revents = 852}, {fd = -1223336104, events = -31057, revents = 603}, { fd = -1325058784, events = -12400, revents = 2378}, {fd = -1223336104, events = -31093, revents = 603}, {fd = 4332014, events = 14, revents = -32761}, {fd = 39552623, events = -5376, revents = 852}, { fd = -1325058784, events = 0, revents = 0}, {fd = 3, events = -32291, revents = 729}, {fd = 4337788, events = 13600, revents = -20219}, { fd = 5327, events = 0, revents = 0}, {fd = 1, events = 3004, revents = 2443}, {fd = 160107452, events = 13648, revents = 1296}, { fd = -1256772104, events = -3400, revents = 3034}, {fd = -1223336024, events = -8704, revents = 1294}, {fd = -1256772104, events = -5376, revents = 852}, {fd = -1223336008, events = -16326, revents = 609}, { fd = 55896832, events = 2172, revents = -19048}, {fd = -1223335992, events = 20405, revents = 66}, {fd = 84948304, events = 1952, revents = -19048}, {fd = -1223335976, events = 12964, revents = 1295}, { fd = 10, events = -5376, revents = 852}, {fd = -1223335928, events = -5376, revents = 852}, {fd = -1248327776, events = -3400, revents = 3034}, {fd = -1223335928, events = 28640, revents = 605}, { fd = 173002808, events = 0, revents = 0}, {fd = -2142568438, events = 11768, revents = -19177}, {fd = 1, events = 0, revents = 0}, { fd = 0, events = -5376, revents = 852}, {fd = 0, events = -3408, revents = 3034}, {fd = -1223335832, events = -17116, revents = 609}, { fd = -1248327556, events = -3400, revents = 3034}, {fd = 0, events = 0, revents = 0}, {fd = 0, events = 10, revents = -32693}, {fd = 0, events = 0, revents = 0}, {fd = 1, events = 0, revents = 0}, { fd = -1223335848, events = -4707, revents = 1293}, {fd = 198898376, events = -5376, revents = 852}, {fd = -1223335816, events = -16422, revents = 609}, {fd = 198898376, events = 2220, revents = -19048}, { fd = 0, events = -5376, revents = 852}, {fd = 4337788, events = 0, revents = 0}, {fd = -1223335800, events = 0, revents = 0}, {fd = 1, events = 0, revents = 0}, {fd = -1223335800, events = 17624, revents = 1294}, {fd = 84821177, events = 13648, revents = 1296}, { fd = -1223335784, events = 18080, revents = 1294}, {fd = 55896832, events = 2, revents = 0}, {fd = 3148166, events = 19845, revents = 1295}, {fd = -1223335748, events = 0, revents = 0}, {fd = -1223335736, events = -32587, revents = 605}, {fd = 156578060, events = 2, revents = 0}} syspoll = (struct pollfd *) 0xb7155eb8 index = 3 msecs = 65535000 ready = 0 start = 423494914 elapsed = #3 0x025d81b7 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #4 0x025d86cc in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #5 0x025d8988 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #6 0x02dcb10c in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #7 0x02d97f30 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #8 0x025d83e3 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #9 0x02dcb168 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #10 0x02d97f30 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #11 0x02dcba1e in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #12 0x050f4021 in _pt_root (arg=0x9553240) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #13 0x0042051f in start_thread (arg=0xb7156b90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb7156b90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1223334904, -2070897902, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #14 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 9 (Thread 0xb649ab90 (LWP 5328)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x00424432 in pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:179 No locals. #2 0x050ece6e in pt_TimedWait (cv=0x94b545c, ml=0x94cdc98, timeout=5275) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:280 rv = 8344295 now = {tv_sec = 1250258992, tv_usec = 685091} tmo = {tv_sec = 1250258997, tv_nsec = 960091000} ticks = 1000 #3 0x050edc90 in PR_WaitCondVar (cvar=0x94b5458, timeout=5275) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:407 rv = thred = #4 0x02dce7dc in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #5 0x02dcb168 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #6 0x02d97f30 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #7 0x02dcba1e in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #8 0x050f4021 in _pt_root (arg=0x995f6d8) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #9 0x0042051f in start_thread (arg=0xb649ab90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb649ab90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1236687864, 1024498448, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #10 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 8 (Thread 0xb4effb90 (LWP 5330)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x00424105 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 No locals. #2 0x050edd07 in PR_WaitCondVar (cvar=0x9a23cb8, timeout=4294967295) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:405 rv = thred = (PRThread *) 0x9a23cf8 #3 0x02bcf6a3 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #4 0x02bcefba in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #5 0x050f4021 in _pt_root (arg=0x9a23cf8) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #6 0x0042051f in start_thread (arg=0xb4effb90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb4effb90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1259342840, 1907399445, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #7 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 7 (Thread 0xb44feb90 (LWP 5331)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x00424105 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 No locals. #2 0x050edd07 in PR_WaitCondVar (cvar=0x9a23f40, timeout=4294967295) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:405 rv = thred = (PRThread *) 0x9a23f80 #3 0x02bd0811 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #4 0x02bcefba in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #5 0x050f4021 in _pt_root (arg=0x9a23f80) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #6 0x0042051f in start_thread (arg=0xb44feb90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb44feb90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1269832696, 831560468, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #7 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 6 (Thread 0xb3afdb90 (LWP 5332)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x00424105 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 No locals. #2 0x050edd07 in PR_WaitCondVar (cvar=0x9a24640, timeout=4294967295) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:405 rv = thred = (PRThread *) 0x9a247b8 #3 0x050edd87 in PR_Wait (mon=0x9a24680, timeout=4294967295) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:584 rv = -512 saved_entries = 1 saved_owner = 3014646672 #4 0x02dca291 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #5 0x02dcb13e in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #6 0x02d97f30 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #7 0x02dcba1e in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #8 0x050f4021 in _pt_root (arg=0x9a247b8) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #9 0x0042051f in start_thread (arg=0xb3afdb90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb3afdb90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1280322552, -235889893, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #10 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 5 (Thread 0xb1cfab90 (LWP 12839)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x00424432 in pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:179 No locals. #2 0x050ece6e in pt_TimedWait (cv=0x955427c, ml=0x9554218, timeout=60000) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:280 rv = 1959 now = {tv_sec = 1250258977, tv_usec = 678308} tmo = {tv_sec = 1250259037, tv_nsec = 678308000} ticks = 1000 #3 0x050edc90 in PR_WaitCondVar (cvar=0x9554278, timeout=60000) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:407 rv = thred = #4 0x025e238f in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #5 0x025e2a98 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #6 0x050f4021 in _pt_root (arg=0xb2d047a8) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 1 #7 0x0042051f in start_thread (arg=0xb1cfab90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb1cfab90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1311792120, 823171871, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #8 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 4 (Thread 0xb26fbb90 (LWP 12840)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x00424105 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 No locals. #2 0x050edd07 in PR_WaitCondVar (cvar=0xa2aa058, timeout=4294967295) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:405 rv = thred = (PRThread *) 0xaa43b48 #3 0x050edd87 in PR_Wait (mon=0xde0c548, timeout=4294967295) at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:584 rv = -512 saved_entries = 1 saved_owner = 2993666960 #4 0x02dca291 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #5 0x02dcb13e in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #6 0x02d97f30 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #7 0x02dcba1e in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #8 0x050f4021 in _pt_root (arg=0xaa43b48) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #9 0x0042051f in start_thread (arg=0xb26fbb90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb26fbb90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1301302264, 1899010840, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #10 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 3 (Thread 0xb00c6b90 (LWP 12842)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x004280db in waitpid () from /lib/libpthread.so.0 No locals. #2 0x07b61657 in IA__g_spawn_sync (working_directory=0x0, argv=0x9cc2338, envp=0x0, flags=, child_setup=0, user_data=0x0, standard_output=0x0, standard_error=0x0, exit_status=0x0, error=0xb00c5848) at gspawn.c:382 outpipe = -1 errpipe = -1 pid = 12905 fds = {__fds_bits = {129173734, 160, 0, 8, 129839708, 0, 186982168, -1341368472, 129270465, 8, 186982168, 4, 129839708, 0, 164373316, -1341368376, 129257613, 186982168, 129173680, 0, 129287988, 0, 0, 10, -1341368392, -1341368396, 164373304, 3, 0, 4070144, 857875128, 186982168}} ret = outstr = (GString *) 0x0 errstr = (GString *) 0x0 failed = 0 status = __PRETTY_FUNCTION__ = "IA__g_spawn_sync" #3 0x07b6199c in IA__g_spawn_command_line_sync ( command_line=0x950a950 "bug-buddy --appname=\"epiphany\" --pid=5323", standard_output=0x0, standard_error=0x0, exit_status=0x0, error=0xb00c5848) at gspawn.c:694 retval = 0 argv = (gchar **) 0x9cc2338 __PRETTY_FUNCTION__ = "IA__g_spawn_command_line_sync" #4 0x00135083 in ?? () from /usr/lib/gtk-2.0/modules/libgnomebreakpad.so No symbol table info available. #5 0x00135614 in ?? () from /usr/lib/gtk-2.0/modules/libgnomebreakpad.so No symbol table info available. #6 0x001356c5 in ?? () from /usr/lib/gtk-2.0/modules/libgnomebreakpad.so No symbol table info available. #7 0x025772f5 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #8 No symbol table info available. #9 strlen () at ../sysdeps/i386/i486/strlen.S:69 No locals. #10 0x00fc6fd6 in IcedTeaPluginFactory::HandleMessage () from /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/IcedTeaPlugin.so No symbol table info available. #11 0x00fca9ae in IcedTeaPluginFactory::ConsumeMsgFromJVM () from /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/IcedTeaPlugin.so No symbol table info available. #12 0x00fcab42 in IcedTeaPluginFactory::ProcessMessage () from /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/IcedTeaPlugin.so No symbol table info available. #13 0x00fcb53c in IcedTeaRunnableMethod::Run () from /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/IcedTeaPlugin.so No symbol table info available. #14 0x02dcb168 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #15 0x02d97f30 in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #16 0x02dcba1e in ?? () from /usr/lib/xulrunner-1.9/libxul.so No symbol table info available. #17 0x050f4021 in _pt_root (arg=0xb2799d0) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #18 0x0042051f in start_thread (arg=0xb00c6b90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb00c6b90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1341365240, -1232037092, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #19 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 2 (Thread 0xb0fffb90 (LWP 12843)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x0034b777 in __poll (fds=0xb0ffeea8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 resultvar = oldtype = 0 result = #2 0x050efbf4 in _pr_poll_with_poll (pds=0xb0fff23c, npds=1, timeout=4294967295) at ../../../mozilla/nsprpub/pr/src/pthreads/ptio.c:3916 stack_syspoll = {{fd = 55, events = 1, revents = 0}, { fd = -1208352720, events = 2, revents = 0}, {fd = 2481096, events = 4736, revents = 1293}, {fd = -1208309724, events = -4160, revents = 38}, { fd = -1325404392, events = -14464, revents = 2378}, {fd = -1325404340, events = 31086, revents = 37}, {fd = 0, events = 0, revents = 0}, { fd = 0, events = 0, revents = 0}, {fd = -1208309648, events = 0, revents = 0}, {fd = 0, events = 0, revents = 0}, {fd = 2532468, events = -11433, revents = -18941}, {fd = 95428250, events = 99, revents = 0}, {fd = 4304220, events = -21744, revents = 65}, {fd = 0, events = 434, revents = 0}, {fd = 0, events = 0, revents = 0}, {fd = 5, events = 180, revents = 0}, {fd = -1208352720, events = -22416, revents = -18438}, {fd = 84742727, events = -15924, revents = 65}, { fd = 84726656, events = 1, revents = 0}, {fd = 2551744, events = 7256, revents = -18437}, {fd = -1241263273, events = -4000, revents = -20225}, { fd = 2456247, events = -4016, revents = -20225}, {fd = 84726656, events = -4028, revents = -20225}, {fd = 2553780, events = 42, revents = 0}, {fd = -1208352720, events = 5, revents = 0}, {fd = 0, events = 1, revents = 0}, {fd = 268435457, events = 0, revents = 0}, { fd = 0, events = 11376, revents = 1973}, {fd = 0, events = 0, revents = 0}, {fd = -1325404080, events = -4028, revents = -20225}, { fd = 0, events = 0, revents = 0}, {fd = 0, events = 0, revents = 0}, { fd = 0, events = 0, revents = 0}, {fd = 0, events = 0, revents = 0}, { fd = 0, events = 0, revents = 0}, {fd = 3028977, events = -3952, revents = -20225}, {fd = -1208280416, events = 4679, revents = 1293}, { fd = 4332014, events = 0, revents = 0}, {fd = 0, events = 0, revents = 0}, {fd = 0, events = 0, revents = 0}, {fd = 3890792, events = 11605, revents = 59}, {fd = 3878049, events = 0, revents = 0}, { fd = 12843, events = 0, revents = 0}, {fd = 4337788, events = 17, revents = 0}, {fd = 2, events = 0, revents = 0}, {fd = 1, events = -7800, revents = 2855}, {fd = 3018362, events = -4707, revents = 1293}, { fd = 187163004, events = 13648, revents = 1296}, {fd = -1325404008, events = -9280, revents = 1294}, {fd = 187163004, events = 28212, revents = -19216}, {fd = 4075888, events = -7808, revents = 2855}, { fd = -1325404076, events = -18276, revents = 65}, {fd = -1208309648, events = 13804, revents = 62}, {fd = -1, events = -4160, revents = 38}, { fd = 84726656, events = 6816, revents = -18437}, {fd = -1325404000, events = -13317, revents = 37}, {fd = -1208279976, events = 48, revents = -18438}, {fd = 1, events = 5, revents = 0}, {fd = 0, events = 4679, revents = 1293}, {fd = 96, events = 0, revents = 0}, { fd = 84949016, events = 5, revents = 0}, {fd = 4307100, events = 13648, revents = 1296}, {fd = 187162904, events = -7912, revents = 2855}, { fd = -1325403432, events = 13616, revents = 38}} syspoll = (struct pollfd *) 0xb0ffeea8 index = 1 msecs = -1 ready = 0 start = 0 elapsed = #3 0x050f6961 in WaitPidDaemonThread (unused=0x0) at ../../../../mozilla/nsprpub/pr/src/md/unix/uxproces.c:723 pd = {fd = 0xb4f06e28, in_flags = 1, out_flags = 1} fd = rv = buf = '\0' , "?\031B", '\0' , "\003\000\000\000\000\000\000\000|0B\000\000\000\000\000+2\000\000\000\000\000\000\001", '\0' , "P5\020\005\b?J\t\000\000\000\000????\000?\016\005\b?J\t\000\000\000" pid = 0 status = 0 op = (struct pr_CreateProcOp *) 0x0 #4 0x050f4021 in _pt_root (arg=0xb27de78) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:221 detached = 0 #5 0x0042051f in start_thread (arg=0xb0fffb90) at pthread_create.c:297 __res = __ignore1 = __ignore2 = pd = (struct pthread *) 0xb0fffb90 now = unwind_buf = {cancel_jmp_buf = {{jmp_buf = {4394996, 0, 0, -1325403128, 1370528541, 710870140}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = robust = #6 0x0035604e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 No locals. Thread 1 (Thread 0xb7f9da00 (LWP 5323)): #0 0x00446416 in __kernel_vsyscall () No symbol table info available. #1 0x0034b777 in __poll (fds=0xaf39f18, nfds=15, timeout=222500) at ../sysdeps/unix/sysv/linux/poll.c:87 resultvar = oldtype = 0 result = #2 0x07b2b792 in g_main_context_poll () at gmain.c:3091 No locals. #3 g_main_context_iterate (context=0x91e9ed0, block=1, dispatch=1, self=0x91c2560) at gmain.c:2773 max_priority = 2147483647 timeout = 222500 some_ready = nfds = 15 allocated_nfds = fds = (GPollFD *) 0xaf39f18 __PRETTY_FUNCTION__ = "g_main_context_iterate" #4 0x07b2be22 in IA__g_main_loop_run (loop=0x9235588) at gmain.c:2986 self = (GThread *) 0x91c2560 __PRETTY_FUNCTION__ = "IA__g_main_loop_run" #5 0x0211e989 in IA__gtk_main () at gtkmain.c:1200 tmp_list = (GList *) 0x0 functions = (GList *) 0x0 init = (GtkInitFunction *) 0x0 loop = (GMainLoop *) 0x9235588 #6 0x08071f80 in main (argc=1, argv=0xbfe8f2f4) at ephy-main.c:738 program = option_context = option_group = proxy = error = (GError *) 0x0 user_time = 1155899 The program is running. Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal] ----------- .xsession-errors (25 sec old) --------------------- at javax.swing.JWindow.(JWindow.java:137) at com.ameritrade.streamer.central.ui.view.h.c(DashoA10*..) at com.ameritrade.streamer.central.ui.view.g.d(DashoA10*..) at com.ameritrade.streamer.central.ui.view.g.f(DashoA10*..) at com.ameritrade.streamer.central.ui.view.g.a(DashoA10*..) at com.ameritrade.streamer.StreamerApplet.e(DashoA10*..) at com.ameritrade.streamer.gr.run(DashoA10*..) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:216) at java.awt.EventQueue.dispatchEvent(EventQueue.java:602) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) -- 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 redhat.com Fri Aug 14 12:55:02 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 14 Aug 2009 19:55:02 +0000 Subject: changeset in /hg/icedtea6: This commit: Message-ID: changeset 9457e338943b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9457e338943b description: This commit: - Reworks memory allocation to make it less leaky by using heap as little as possible. - Implements JSObject.call and JSObject.eval which allow invocation of JavaScript methods, and execution of arbitrary scripts. Everything except for array types is currently handled. - Fixes a few new race conditions that surfaced as result of less messages/faster initialization. - Starts laying out call security. - Fixes unicode handling so that UTF-8 is used correctly across the board. Most prominently, new sites that now work include: - Facebook photo uploader - Yahoo! games applets - A whole bunch of banking applets diffstat: 18 files changed, 1390 insertions(+), 705 deletions(-) ChangeLog | 111 + plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 509 +++--- plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 44 plugin/icedteanp/IcedTeaNPPlugin.cc | 47 plugin/icedteanp/IcedTeaNPPlugin.h | 25 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 844 +++++++--- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 23 plugin/icedteanp/IcedTeaPluginUtils.cc | 218 +- plugin/icedteanp/IcedTeaPluginUtils.h | 49 plugin/icedteanp/IcedTeaRunnable.cc | 3 plugin/icedteanp/IcedTeaRunnable.h | 8 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 43 plugin/icedteanp/java/netscape/javascript/JSObject.java | 37 plugin/icedteanp/java/sun/applet/GetMemberPluginCallRequest.java | 7 plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java | 19 plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 40 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 49 plugin/icedteanp/java/sun/applet/PluginCookieInfoRequest.java | 19 diffs (truncated from 3394 to 500 lines): diff -r 9f0b5de9a8eb -r 9457e338943b ChangeLog --- a/ChangeLog Fri Aug 14 06:12:14 2009 -0400 +++ b/ChangeLog Fri Aug 14 15:58:23 2009 -0400 @@ -1,3 +1,114 @@ 2009-08-14 Gary Benson + + * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc + (newMessageOnBus): Handle additional request types. + (postAndWaitForResponse): Modify parameter type and reset the result + before proceeding. + (getToStringValue): Remove all heap allocations and allocate on stack. + (getString): Same. + (deleteReference): Same. + (addReference): Same. + (findClass): Same. + (getClassName): Same. + (getClassID): Same. + (getFieldID): Same. + (getStaticFieldID): Same. + (getField): Same. Also, send the source to Java side. + (getStaticField): Same. + (getMethodID): Remove all heap allocations and allocate on stack. + (getStaticMethodID): Same. + (callStaticMethod): Same. Also, send the source to Java side. + (callMethod): Same. + (call): Same. + (getObjectClass): Remove all heap allocations and allocate on stack. + (newObject): Same. Also, send the source to Java side. + (newString): Remove all heap allocations and allocate on stack. + (hasPackage): Same. + (hasMethod): Same. + (hasField): Same. + (isInstanceOf): New method. + (getAppletObjectInstance): Remove all heap allocations and allocate on + stack. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Bump timeout to 120 to + allow for slower connections. Other misc. changes related to the .cc file + changes. + * plugin/icedteanp/IcedTeaNPPlugin.cc: Moved GCJPluginData decleration to + the header file. Don't initialize message bus and request processors + statically. + (GCJ_New): Initialize the buses and processors. Store source url in plugin + data struct. + (GCJ_Destroy): Cleanup source url pointer. + * plugin/icedteanp/IcedTeaNPPlugin.h: Moved GCJPluginData struct + decleration to here. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (getInstanceFromMemberPtr): Moved to plugin utils. + (storeInstanceID): Same. + (newMessageOnBus): Handle additional request types. + (dispatch): Remove unused method. + (sendWindow): Remove unnecessary heap allocations and use function stack + instead. + (eval): New function. Evaluates calls to JavaScript functions and returns + the result. Arrays are not yet handled. + (call): New function. Evaluates the given script and returns the result. + Arrays are not yet handled. + (sendString): Remove unnecessary heap allocations and use function stack + instead. + (setMember): Same. + (convertToNPVariant): New function. Narrows given java type to an + NPVariant as per type conversion specifications. + (sendMember): Remove unnecessary heap allocations and use function stack + instead. + (storeVariantInJava): New function. Given an NPVariant, does the + appropriate conversion and saves it on the Java side. Arrays are not yet + handled. + (_eval): New function. Evaluates the script via NPN_Evaluate. Meant to be + run in the main thread. + (_call): New function. Invokes the function via NPN_Invoke. Meant to be run + in the main thread. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: Appropriate changes as + necessitated by the above changes in the .cc. + * plugin/icedteanp/IcedTeaPluginUtils.cc + (constructMessagePrefix): All versions of this functions changed to remove + heap allocation, and instead store result in a given pre-allocated parameter. + (getReference): Use an ever growing reference number, and cycle when + integer max approaches. + (releaseReference): Remove code so nothing is done for now. + (itoa): Store result in pre-allocated parameter, rather than on heap. + (getSourceFromInstance): Given an NPP instance, returns the assocated + source. + (storeInstanceID): Moved from IcedTeaPluginRequestProcessor. Associates an + NPObject with an instance. + (getInstanceFromMemberPtr): Moved from IcedTeaPluginRequestProcessor. + Given an NPObject, returns the associated instance. + (variantToClassName): Remove unused method. + * plugin/icedteanp/IcedTeaPluginUtils.h: Appropriate changes as necessitated + by the above changes in the .cc. + * plugin/icedteanp/IcedTeaRunnable.cc (IcedTeaRunnableMethod): Change + result parameter type to void* so that caller/callee can use variable + formats. + * plugin/icedteanp/IcedTeaRunnable.h: Appropriate changes as necessitated + by the above changes in the .cc. + * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Call storeInstanceID + and getInstanceFromMemberPtr from plugin utils. + (IcedTeaScriptableJavaObject::getProperty): Get the source url and send it to + Java side when making the request. + (IcedTeaScriptableJavaObject::invoke): Same. + * plugin/icedteanp/java/netscape/javascript/JSObject.java: Merge + constructor access control fixes from older plugin. + * plugin/icedteanp/java/sun/applet/GetMemberPluginCallRequest.java: Handle + void and null return types. + * plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java: Add an + additional test case for Boolean. + (getPrimitive): Handle java.lang.Boolean (minor bug fix). + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java: Use + URLs when comparing source locations for security verification, rather + than String which return false negatives. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (handleMessage): Set status to ACTIVE only after initialization finishes. + (AppletEventListener::appletStateChanged): Same. + * plugin/icedteanp/java/sun/applet/PluginCookieInfoRequest.java + (parseReturn): Handle improper cookies from firefox. + 2009-08-14 Gary Benson * ports/hotspot/src/share/vm/shark/sharkFunction.hpp diff -r 9f0b5de9a8eb -r 9457e338943b plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Fri Aug 14 06:12:14 2009 -0400 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Fri Aug 14 15:58:23 2009 -0400 @@ -111,7 +111,8 @@ JavaRequestProcessor::newMessageOnBus(co (message_parts->at(4) == "GetFieldID") || (message_parts->at(4) == "GetField") || (message_parts->at(4) == "GetStaticField") || - (message_parts->at(4) == "GetJavaObject")) + (message_parts->at(4) == "GetJavaObject") || + (message_parts->at(4) == "IsInstanceOf")) { result->return_identifier = atoi(message_parts->at(5).c_str()); result->return_string->append(message_parts->at(5)); // store it as a string as well, for easy access @@ -159,6 +160,8 @@ JavaRequestProcessor::newMessageOnBus(co JavaRequestProcessor::JavaRequestProcessor() { + PLUGIN_DEBUG_0ARG("JavaRequestProcessor constructor\n"); + // caller frees this result = new JavaResultData(); result->error_msg = new std::string(); @@ -212,15 +215,17 @@ JavaRequestProcessor::resetResult() } void -JavaRequestProcessor::postAndWaitForResponse(std::string* message) +JavaRequestProcessor::postAndWaitForResponse(std::string message) { struct timespec t; clock_gettime(CLOCK_REALTIME, &t); t.tv_sec += REQUESTTIMEOUT; // 1 minute timeout - result_ready = false; + // Clear the result + resetResult(); + java_to_plugin_bus->subscribe(this); - plugin_to_java_bus->post(message->c_str()); + plugin_to_java_bus->post(message.c_str()); // Wait for result to be filled in. struct timespec curr_t; @@ -247,7 +252,7 @@ JavaRequestProcessor::postAndWaitForResp result->error_msg->append("Error: Timed out when waiting for response"); // Report error - PLUGIN_DEBUG_1ARG("Error: Timed out when waiting for response to %s\n", message->c_str()); + PLUGIN_DEBUG_1ARG("Error: Timed out when waiting for response to %s\n", message.c_str()); } java_to_plugin_bus->unSubscribe(this); @@ -263,20 +268,19 @@ JavaResultData* JavaResultData* JavaRequestProcessor::getToStringValue(std::string object_id) { - std::string* message; + std::string message = std::string(); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" GetToStringValue "); // get it in UTF8 - message->append(object_id); + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetToStringValue "); // get it in UTF8 + message.append(object_id); postAndWaitForResponse(message); IcedTeaPluginUtilities::releaseReference(); - delete message; return result; } @@ -291,20 +295,19 @@ JavaResultData* JavaResultData* JavaRequestProcessor::getString(std::string string_id) { - std::string* message; + std::string message = std::string(); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" GetStringUTFChars "); // get it in UTF8 - message->append(string_id); + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetStringUTFChars "); // get it in UTF8 + message.append(string_id); postAndWaitForResponse(message); IcedTeaPluginUtilities::releaseReference(); - delete message; return result; } @@ -318,20 +321,19 @@ void void JavaRequestProcessor::deleteReference(std::string object_id) { - std::string* message; - - this->instance = 0; // context is always 0 (needed for java-side backwards compat.) - this->reference = IcedTeaPluginUtilities::getReference(); - - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" DeleteLocalRef "); - message->append(object_id); - - postAndWaitForResponse(message); - - IcedTeaPluginUtilities::releaseReference(); - delete message; + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" DeleteLocalRef "); + message.append(object_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); } /** @@ -343,39 +345,36 @@ void void JavaRequestProcessor::addReference(std::string object_id) { - std::string* message; - - this->instance = 0; // context is always 0 (needed for java-side backwards compat.) - this->reference = IcedTeaPluginUtilities::getReference(); - - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" NewGlobalRef "); - message->append(object_id); - - postAndWaitForResponse(message); - - IcedTeaPluginUtilities::releaseReference(); - delete message; + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" NewGlobalRef "); + message.append(object_id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); } JavaResultData* JavaRequestProcessor::findClass(std::string name) { - std::string* message; + std::string message = std::string(); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" FindClass "); - message->append(name); - - postAndWaitForResponse(message); - - delete message; + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" FindClass "); + message.append(name); + + postAndWaitForResponse(message); return result; } @@ -383,19 +382,17 @@ JavaResultData* JavaResultData* JavaRequestProcessor::getClassName(std::string objectID) { - std::string* message; + std::string message = std::string(); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" GetClassName "); - message->append(objectID); - - postAndWaitForResponse(message); - - delete message; + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetClassName "); + message.append(objectID); + + postAndWaitForResponse(message); return result; } @@ -403,19 +400,17 @@ JavaResultData* JavaResultData* JavaRequestProcessor::getClassID(std::string objectID) { - std::string* message; - - this->instance = 0; // context is always 0 (needed for java-side backwards compat.) - this->reference = IcedTeaPluginUtilities::getReference(); - - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - - message->append(" GetClassID "); - message->append(objectID); - - postAndWaitForResponse(message); - - delete message; + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetClassID "); + message.append(objectID); + + postAndWaitForResponse(message); return result; } @@ -425,25 +420,24 @@ JavaRequestProcessor::getFieldID(std::st { JavaResultData* java_result; JavaRequestProcessor* java_request = new JavaRequestProcessor(); - std::string* message; + std::string message = std::string(); java_result = java_request->newString(fieldName); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - message->append(" GetFieldID "); - message->append(classID); - message->append(" "); - message->append(java_result->return_string->c_str()); + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + message.append(" GetFieldID "); + message.append(classID); + message.append(" "); + message.append(java_result->return_string->c_str()); postAndWaitForResponse(message); IcedTeaPluginUtilities::releaseReference(); delete java_request; - delete message; return result; } @@ -453,81 +447,81 @@ JavaRequestProcessor::getStaticFieldID(s { JavaResultData* java_result; JavaRequestProcessor* java_request = new JavaRequestProcessor(); - std::string* message; + std::string message = std::string(); java_result = java_request->newString(fieldName); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - message->append(" GetStaticFieldID "); - message->append(classID); - message->append(" "); - message->append(java_result->return_string->c_str()); + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + message.append(" GetStaticFieldID "); + message.append(classID); + message.append(" "); + message.append(java_result->return_string->c_str()); postAndWaitForResponse(message); IcedTeaPluginUtilities::releaseReference(); delete java_request; - delete message; - - return result; -} - -JavaResultData* -JavaRequestProcessor::getField(std::string classID, std::string fieldName) + + return result; +} + +JavaResultData* +JavaRequestProcessor::getField(std::string source, + std::string classID, + std::string fieldName) { JavaResultData* java_result; JavaRequestProcessor* java_request = new JavaRequestProcessor(); - std::string* message; + std::string message = std::string(); java_result = java_request->getFieldID(classID, fieldName); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); - message = IcedTeaPluginUtilities::constructMessagePrefix(0, reference); - message->append(" GetField "); - message->append(classID); - message->append(" "); - message->append(java_result->return_string->c_str()); + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, source, &message); + message.append(" GetField "); + message.append(classID); + message.append(" "); + message.append(java_result->return_string->c_str()); postAndWaitForResponse(message); IcedTeaPluginUtilities::releaseReference(); delete java_request; - delete message; - - return result; -} - -JavaResultData* -JavaRequestProcessor::getStaticField(std::string classID, std::string fieldName) + + return result; +} + +JavaResultData* +JavaRequestProcessor::getStaticField(std::string classID, std::string source, + std::string fieldName) { JavaResultData* java_result; JavaRequestProcessor* java_request = new JavaRequestProcessor(); - std::string* message; + std::string message = std::string(); java_result = java_request->getStaticFieldID(classID, fieldName); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); From dbhole at redhat.com Fri Aug 14 12:55:20 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 14 Aug 2009 19:55:20 +0000 Subject: changeset in /hg/icedtea6: Missed a file. Adding.. Message-ID: changeset 3e11b2e423f4 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3e11b2e423f4 description: Missed a file. Adding.. diffstat: 1 file changed, 47 insertions(+) plugin/icedteanp/java/netscape/javascript/JSObjectCreatePermission.java | 47 ++++++++++ diffs (51 lines): diff -r 9457e338943b -r 3e11b2e423f4 plugin/icedteanp/java/netscape/javascript/JSObjectCreatePermission.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedteanp/java/netscape/javascript/JSObjectCreatePermission.java Fri Aug 14 15:58:42 2009 -0400 @@ -0,0 +1,47 @@ +/* JSObjectCreatePermission.java + Copyright (C) 2009 Red Hat + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package netscape.javascript; + +import java.security.BasicPermission; + + +public class JSObjectCreatePermission extends BasicPermission { + public JSObjectCreatePermission() { + super("JSObjectCreate"); + } +} From mvfranz at gmail.com Sun Aug 16 11:41:59 2009 From: mvfranz at gmail.com (Michael Franz) Date: Sun, 16 Aug 2009 14:41:59 -0400 Subject: IcedTea Bootstrap Process In-Reply-To: References: <17c6771e0901132035s2588f275s8a7e8e2997241ed6@mail.gmail.com> Message-ID: I finally figured our why this was not working it seems that the ALT_LANGTOOLS_DIST directory was not being created, so when FullPath was called using ALT_LANGTOOLS_DIST LANGTOOLS_DISt was being set to empty and the condition that sets JAVAC_CMD and JAVAH_CMD was not executing. Now, I just need to figure out how to get the directory created at the right time. Just as a reminder, this was running on OS X. I am having more success with IcedTea 1.11 as it is using B66 and the bsd-port is up to b66. On Fri, Jan 16, 2009 at 11:16 PM, Michael Franz wrote: > Andrew, > > Thanks for this detail. It does help. I have another question, how can I > tell what build I am in? I run the build and it takes a while. At some > point JAVA_CMD becomes unset and I end up with: > # Running javac: > -sourcepath > /Users/mfranz/developer/icedtea/apple5/generated:../../../src/solaris/classes:../../../src/share/classes > -bootclasspath > /Users/mfranz/developer/icedtea/apple5/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar::/Users/mfranz/developer/icedtea/apple5/openjdk-ecj/build/bsd-i586/classes > -d /Users/mfranz/developer/icedtea/apple5/openjdk-ecj/build/bsd-i586/classes > @/Users/mfranz/developer/icedtea/apple5/openjdk-ecj/build/bsd-i586/tmp/java/java.lang/java/.classes.list > /bin/sh: -sourcepath: command not found > > I am thinking this is the second build, but I could be wrong. If I define > JAVA_CMD, JAVAH_CMD it gets farther, but I am probably not defining them > correctly, as the build fails. > > In this case I am using a remapped Apple JDK 5 with the classpath rt.jar. > > Michael > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090816/9d73de41/attachment.html From bugzilla-daemon at icedtea.classpath.org Sun Aug 16 14:23:39 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 16 Aug 2009 21:23:39 +0000 Subject: [Bug 379] New: JVM failed while running an external library Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=379 Summary: JVM failed while running an external library Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: major Priority: P1 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: jacinto.davila at gmail.com CC: jacinto.davila at gmail.com An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f158596a8af, pid=11193, tid=1091438928 # # Java VM: OpenJDK 64-Bit Server VM (1.6.0_0-b11 mixed mode linux-amd64) # Problematic frame: # C [libpl.so.5.6.61+0x2e8af] PL_next_solution+0x4f # # An error report file with more information is saved as: # /home/jacinto/NetBeansProjects/Galatea/contrib/BalancePersonal/hs_err_pid11193.log # # 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. # This is the full log: --------------- T H R E A D --------------- Current thread (0x0000000001824800): JavaThread "Thread-2" [_thread_in_native, id=11219, stack(0x0000000040fe0000,0x00000000410e1000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000140 Registers: RAX=0x0000000000000000, RBX=0x0000000000000025, RCX=0x0000000000000000, RDX=0x00000000410e0950 RSP=0x00000000410df560, RBP=0x00000000410df7d0, RSI=0x00000000410e0a40, RDI=0x0000000000000002 R8 =0x00000000410dd310, R9 =0x00007f1587a6d458, R10=0x0000000000000020, R11=0x00007f15bb615430 R12=0x00007f15b186e2f8, R13=0x00007f15b186d270, R14=0x00000000410df7d0, R15=0x0000000001824800 RIP=0x00007f158596a8af, EFL=0x0000000000010213, CSGSFS=0x0000000000000033, ERR=0x0000000000000004 TRAPNO=0x000000000000000e Top of Stack: (sp=0x00000000410df560) 0x00000000410df560: 00000000410df560 00007f15b1405e4e 0x00000000410df570: 00000000410df5b0 00007f15b14c1c88 0x00000000410df580: 0000000000000000 00007f15b1405e70 0x00000000410df590: 0000000000000000 00000000410df5b0 0x00000000410df5a0: 00000000410df5f8 00007f15b677c093 0x00000000410df5b0: 00007f159577e528 00000000410df5b8 0x00000000410df5c0: 00007f15b14fecb7 00000000410df620 0x00000000410df5d0: 0000000000000000 0000000000000000 0x00000000410df5e0: 00007f15b14fed08 0000000000000000 0x00000000410df5f0: 00000000410df620 00000000410df668 0x00000000410df600: 00007f15b677bf3a 0000000000000001 0x00000000410df610: 0000000000000000 0000000000000001 0x00000000410df620: 00007f15958001e0 00000000410df628 0x00000000410df630: 00007f15b14ff16b 00000000410df678 0x00000000410df640: 00007f15b14ffa80 0000000000000000 0x00000000410df650: 00007f15b14ff188 0000000000000000 0x00000000410df660: 00000000410df678 00000000410df6d0 0x00000000410df670: 00007f15b677bf3a 00007f15957db490 0x00000000410df680: 0000000000000009 0000000000000000 0x00000000410df690: 00000000410df690 00007f15b14f8cf0 0x00000000410df6a0: 00000000410df6e0 00007f15b14f9430 0x00000000410df6b0: 0000000000000000 00007f15b14f8d28 0x00000000410df6c0: 0000000000000000 0000000000000000 0x00000000410df6d0: 00000000410df738 00007f15b677bf3a 0x00000000410df6e0: 0000000000000000 0000000000000009 0x00000000410df6f0: 0000000000000000 0000000001824998 0x00000000410df700: 00000000410df7d0 00007f15b186e2f8 0x00000000410df710: 00007f15b186d270 00000000410df7d0 0x00000000410df720: 0000000001824800 00007f1585c3728e 0x00000000410df730: 00000000410df748 00000000410df7a0 0x00000000410df740: 0000000000000025 00007f15b186d270 0x00000000410df750: 00000000410df7b0 00007f15b6787878 Instructions: (pc=0x00007f158596a8af) 0x00007f158596a89f: 00 00 00 00 48 c7 84 24 80 01 00 00 00 00 00 00 0x00007f158596a8af: 48 8b 80 40 01 00 00 48 89 84 24 80 00 00 00 0f Stack: [0x0000000040fe0000,0x00000000410e1000], sp=0x00000000410df560, free space=1021k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libpl.so.5.6.61+0x2e8af] PL_next_solution+0x4f Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::StubRoutines (1) --------------- P R O C E S S --------------- Java Threads: ( => current thread ) =>0x0000000001824800 JavaThread "Thread-2" [_thread_in_native, id=11219, stack(0x0000000040fe0000,0x00000000410e1000)] 0x0000000001821000 JavaThread "TimerQueue" daemon [_thread_blocked, id=11218, stack(0x00000000408e3000,0x00000000409e4000)] 0x000000000178a400 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=11214, stack(0x00000000404f8000,0x00000000405f9000)] 0x000000000178a000 JavaThread "AWT-Shutdown" [_thread_blocked, id=11213, stack(0x00000000405f9000,0x00000000406fa000)] 0x00000000014ea000 JavaThread "AWT-XAWT" daemon [_thread_in_native, id=11208, stack(0x00000000403f7000,0x00000000404f8000)] 0x000000000147dc00 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=11206, stack(0x00000000402e3000,0x00000000403e4000)] 0x000000000104e800 JavaThread "DestroyJavaVM" [_thread_blocked, id=11194, stack(0x0000000041651000,0x0000000041752000)] 0x00000000010e9400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=11203, stack(0x0000000041752000,0x0000000041853000)] 0x00000000010e7800 JavaThread "CompilerThread1" daemon [_thread_blocked, id=11202, stack(0x0000000042126000,0x0000000042227000)] 0x00000000010e4000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=11201, stack(0x0000000042025000,0x0000000042126000)] 0x00000000010e2800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=11200, stack(0x00000000414a0000,0x00000000415a1000)] 0x00000000010bcc00 JavaThread "Finalizer" daemon [_thread_blocked, id=11199, stack(0x00000000401d8000,0x00000000402d9000)] 0x00000000010bb800 JavaThread "Reference Handler" daemon [_thread_blocked, id=11198, stack(0x0000000040edf000,0x0000000040fe0000)] Other Threads: 0x00000000010b6400 VMThread [stack: 0x0000000041f24000,0x0000000042025000] [id=11197] 0x00000000010eb400 WatcherThread [stack: 0x0000000042227000,0x0000000042328000] [id=11204] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap def new generation total 2368K, used 2004K [0x00007f1587970000, 0x00007f1587c00000, 0x00007f1595770000) eden space 2112K, 90% used [0x00007f1587970000, 0x00007f1587b4fa80, 0x00007f1587b80000) from space 256K, 33% used [0x00007f1587b80000, 0x00007f1587b95758, 0x00007f1587bc0000) to space 256K, 0% used [0x00007f1587bc0000, 0x00007f1587bc0000, 0x00007f1587c00000) tenured generation total 5312K, used 2997K [0x00007f1595770000, 0x00007f1595ca0000, 0x00007f15b1370000) the space 5312K, 56% used [0x00007f1595770000, 0x00007f1595a5d498, 0x00007f1595a5d600, 0x00007f1595ca0000) compacting perm gen total 21248K, used 19021K [0x00007f15b1370000, 0x00007f15b2830000, 0x00007f15b6770000) the space 21248K, 89% used [0x00007f15b1370000, 0x00007f15b26037a8, 0x00007f15b2603800, 0x00007f15b2830000) No shared spaces configured. Dynamic libraries: 00400000-00408000 r-xp 00000000 03:01 1024449 /usr/lib/jvm/java-6-openjdk/jre/bin/java 00608000-00609000 rw-p 00008000 03:01 1024449 /usr/lib/jvm/java-6-openjdk/jre/bin/java 01045000-019ae000 rw-p 01045000 00:00 0 [heap] 401d8000-401db000 ---p 401d8000 00:00 0 401db000-402d9000 rwxp 401db000 00:00 0 402e3000-402e6000 ---p 402e3000 00:00 0 402e6000-403e4000 rwxp 402e6000 00:00 0 403f7000-403fa000 ---p 403f7000 00:00 0 403fa000-404f8000 rwxp 403fa000 00:00 0 404f8000-404fb000 ---p 404f8000 00:00 0 404fb000-405f9000 rwxp 404fb000 00:00 0 405f9000-405fc000 ---p 405f9000 00:00 0 405fc000-406fa000 rwxp 405fc000 00:00 0 408e3000-408e6000 ---p 408e3000 00:00 0 408e6000-409e4000 rwxp 408e6000 00:00 0 40edf000-40ee2000 ---p 40edf000 00:00 0 40ee2000-40fe0000 rwxp 40ee2000 00:00 0 40fe0000-40fe3000 ---p 40fe0000 00:00 0 40fe3000-410e1000 rwxp 40fe3000 00:00 0 414a0000-414a3000 ---p 414a0000 00:00 0 414a3000-415a1000 rwxp 414a3000 00:00 0 41651000-41654000 ---p 41651000 00:00 0 41654000-41752000 rwxp 41654000 00:00 0 41752000-41755000 ---p 41752000 00:00 0 41755000-41853000 rwxp 41755000 00:00 0 41f24000-41f25000 ---p 41f24000 00:00 0 41f25000-42025000 rwxp 41f25000 00:00 0 42025000-42028000 ---p 42025000 00:00 0 42028000-42126000 rwxp 42028000 00:00 0 42126000-42129000 ---p 42126000 00:00 0 42129000-42227000 rwxp 42129000 00:00 0 42227000-42228000 ---p 42227000 00:00 0 42228000-42328000 rwxp 42228000 00:00 0 7f156f1e2000-7f156f1f2000 rw-p 7f156f1e2000 00:00 0 7f156f1f2000-7f15731e2000 ---p 7f156f1f2000 00:00 0 7f15731e2000-7f15731ea000 rw-p 7f15731e2000 00:00 0 7f15731ea000-7f15751e2000 ---p 7f15731ea000 00:00 0 7f15751e2000-7f15751ea000 rw-p 7f15751e2000 00:00 0 7f15751ea000-7f15753da000 ---p 7f15751ea000 00:00 0 7f15753da000-7f15753e2000 rw-p 7f15753da000 00:00 0 7f15753e2000-7f15793da000 ---p 7f15753e2000 00:00 0 7f15793da000-7f157941e000 rw-p 7f15793da000 00:00 0 7f157946e000-7f1579472000 rw-s 00000000 00:08 262701078 /SYSV00000000 (deleted) 7f1579475000-7f1579490000 r--s 00000000 03:01 557169 /usr/share/fonts/type1/gsfonts/p052004l.pfb 7f1579490000-7f15794ab000 r--s 00000000 03:01 557196 /usr/share/fonts/type1/gsfonts/p052003l.pfb 7f15794ab000-7f15794c1000 r--s 00000000 03:01 557184 /usr/share/fonts/type1/gsfonts/n022024l.pfb 7f15794c1000-7f15794d7000 r--s 00000000 03:01 557217 /usr/share/fonts/type1/gsfonts/n022023l.pfb 7f15794d7000-7f15794f0000 r--s 00000000 03:01 557235 /usr/share/fonts/type1/gsfonts/n022004l.pfb 7f15794f0000-7f1579508000 r--s 00000000 03:01 557220 /usr/share/fonts/type1/gsfonts/n022003l.pfb 7f1579508000-7f157951e000 r--s 00000000 03:01 557213 /usr/share/fonts/type1/gsfonts/n021024l.pfb 7f157951e000-7f1579535000 r--s 00000000 03:01 557249 /usr/share/fonts/type1/gsfonts/n021023l.pfb 7f1579535000-7f157954e000 r--s 00000000 03:01 557197 /usr/share/fonts/type1/gsfonts/n021004l.pfb 7f157954e000-7f1579567000 r--s 00000000 03:01 557191 /usr/share/fonts/type1/gsfonts/n021003l.pfb 7f1579567000-7f157957a000 r--s 00000000 03:01 557195 /usr/share/fonts/type1/gsfonts/n019064l.pfb 7f157957a000-7f157958b000 r--s 00000000 03:01 557190 /usr/share/fonts/type1/gsfonts/n019063l.pfb 7f157958b000-7f157959d000 r--s 00000000 03:01 557181 /usr/share/fonts/type1/gsfonts/n019044l.pfb 7f157959d000-7f15795af000 r--s 00000000 03:01 557173 /usr/share/fonts/type1/gsfonts/n019043l.pfb 7f15795af000-7f15795c0000 r--s 00000000 03:01 557193 /usr/share/fonts/type1/gsfonts/n019024l.pfb 7f15795c0000-7f15795d1000 r--s 00000000 03:01 557253 /usr/share/fonts/type1/gsfonts/n019023l.pfb 7f15795d1000-7f15795e3000 r--s 00000000 03:01 557172 /usr/share/fonts/type1/gsfonts/n019004l.pfb 7f15795e3000-7f15795f7000 r--s 00000000 03:01 557233 /usr/share/fonts/type1/gsfonts/n019003l.pfb 7f15795f7000-7f1579603000 r--s 00000000 03:01 557212 /usr/share/fonts/type1/gsfonts/d050000l.pfb 7f1579603000-7f157961b000 r--s 00000000 03:01 557221 /usr/share/fonts/type1/gsfonts/c059036l.pfb 7f157961b000-7f1579633000 r--s 00000000 03:01 557205 /usr/share/fonts/type1/gsfonts/c059033l.pfb 7f1579633000-7f157964e000 r--s 00000000 03:01 557242 /usr/share/fonts/type1/gsfonts/c059016l.pfb 7f157964e000-7f1579668000 r--s 00000000 03:01 557171 /usr/share/fonts/type1/gsfonts/c059013l.pfb 7f1579668000-7f157967a000 r--s 00000000 03:01 557252 /usr/share/fonts/type1/gsfonts/b018035l.pfb 7f157967a000-7f157968f000 r--s 00000000 03:01 557209 /usr/share/fonts/type1/gsfonts/b018032l.pfb 7f157968f000-7f15796a2000 r--s 00000000 03:01 557231 /usr/share/fonts/type1/gsfonts/b018015l.pfb 7f15796a2000-7f15796bb000 r--s 00000000 03:01 557162 /usr/share/fonts/type1/gsfonts/b018012l.pfb 7f15796bb000-7f15796cc000 r--s 00000000 03:01 557234 /usr/share/fonts/type1/gsfonts/a010035l.pfb 7f15796cc000-7f15796dc000 r--s 00000000 03:01 557164 /usr/share/fonts/type1/gsfonts/a010033l.pfb 7f15796dc000-7f15796ec000 r--s 00000000 03:01 557238 /usr/share/fonts/type1/gsfonts/a010015l.pfb 7f15796ec000-7f15796fc000 r--s 00000000 03:01 557258 /usr/share/fonts/type1/gsfonts/a010013l.pfb 7f15796fc000-7f1579705000 r--s 00000000 03:01 833370 /usr/share/fonts/X11/Type1/c0633bt_.pfb 7f1579705000-7f157970f000 r--s 00000000 03:01 833369 /usr/share/fonts/X11/Type1/c0582bt_.pfb 7f157970f000-7f1579719000 r--s 00000000 03:01 833368 /usr/share/fonts/X11/Type1/c0583bt_.pfb 7f1579719000-7f1579722000 r--s 00000000 03:01 833364 /usr/share/fonts/X11/Type1/c0648bt_.pfb 7f1579722000-7f157972b000 r--s 00000000 03:01 833362 /usr/share/fonts/X11/Type1/c0632bt_.pfb 7f157972b000-7f1579735000 r--s 00000000 03:01 833361 /usr/share/fonts/X11/Type1/c0611bt_.pfb 7f1579735000-7f157973f000 r--s 00000000 03:01 833357 /usr/share/fonts/X11/Type1/c0419bt_.pfb 7f157973f000-7f1579748000 r--s 00000000 03:01 833356 /usr/share/fonts/X11/Type1/c0649bt_.pfb 7f1579748000-7f1579764000 r--s 00000000 03:01 1106104 /usr/share/texmf/fonts/type1/public/lm/lmr8.pfb 7f1579764000-7f157977f000 r--s 00000000 03:01 1106103 /usr/share/texmf/fonts/type1/public/lm/lmu10.pfb 7f157977f000-7f157979e000 r--s 00000000 03:01 1106102 /usr/share/texmf/fonts/type1/public/lm/lmbxo10.pfb 7f157979e000-7f15797bf000 r--s 00000000 03:01 1106101 /usr/share/texmf/fonts/type1/public/lm/lmduno10.pfb 7f15797bf000-7f15797d8000 r--s 00000000 03:01 1106100 /usr/share/texmf/fonts/type1/public/lm/lmtl10.pfb 7f15797d8000-7f15797f3000 r--s 00000000 03:01 1106099 /usr/share/texmf/fonts/type1/public/lm/lmssdc10.pfb 7f15797f3000-7f157980d000 r--s 00000000 03:01 1106098 /usr/share/texmf/fonts/type1/public/lm/lmri12.pfb 7f157980d000-7f1579827000 r--s 00000000 03:01 1106097 /usr/share/texmf/fonts/type1/public/lm/lmri9.pfb 7f1579827000-7f157982f000 r--s 00000000 03:01 1106096 /usr/share/texmf/fonts/type1/public/lm/lmbsy7.pfb 7f157982f000-7f1579836000 r--s 00000000 03:01 1106095 /usr/share/texmf/fonts/type1/public/lm/lmsy7.pfb 7f1579836000-7f157984f000 r--s 00000000 03:01 1106094 /usr/share/texmf/fonts/type1/public/lm/lmsso12.pfb 7f157984f000-7f157986b000 r--s 00000000 03:01 1106093 /usr/share/texmf/fonts/type1/public/lm/lmr9.pfb 7f157986b000-7f1579886000 r--s 00000000 03:01 1106092 /usr/share/texmf/fonts/type1/public/lm/lmssq8.pfb 7f1579886000-7f157988c000 r--s 00000000 03:01 1106091 /usr/share/texmf/fonts/type1/public/lm/lmex10.pfb 7f157988c000-7f1579893000 r--s 00000000 03:01 1106090 /usr/share/texmf/fonts/type1/public/lm/lmsy6.pfb 7f1579893000-7f15798b2000 r--s 00000000 03:01 1106089 /usr/share/texmf/fonts/type1/public/lm/lmvtto10.pfb 7f15798b2000-7f15798cc000 r--s 00000000 03:01 1106088 /usr/share/texmf/fonts/type1/public/lm/lmbxi10.pfb 7f15798cc000-7f15798d4000 r--s 00000000 03:01 1106087 /usr/share/texmf/fonts/type1/public/lm/lmmib10.pfb 7f15798d4000-7f15798f0000 r--s 00000000 03:01 1106086 /usr/share/texmf/fonts/type1/public/lm/lmr17.pfb 7f15798f0000-7f1579910000 r--s 00000000 03:01 1106085 /usr/share/texmf/fonts/type1/public/lm/lmcsco10.pfb 7f1579910000-7f157992d000 r--s 00000000 03:01 1106084 /usr/share/texmf/fonts/type1/public/lm/lmvtk10.pfb 7f157992d000-7f157994a000 r--s 00000000 03:01 1106083 /usr/share/texmf/fonts/type1/public/lm/lmtcso10.pfb 7f157994a000-7f1579965000 r--s 00000000 03:01 1106082 /usr/share/texmf/fonts/type1/public/lm/lmssqbx8.pfb 7f1579965000-7f157997e000 r--s 00000000 03:01 1106081 /usr/share/texmf/fonts/type1/public/lm/lmsso8.pfb 7f157997e000-7f157999d000 r--s 00000000 03:01 1106080 /usr/share/texmf/fonts/type1/public/lm/lmro8.pfb 7f157999d000-7f15799b7000 r--s 00000000 03:01 1106079 /usr/share/texmf/fonts/type1/public/lm/lmtt12.pfb 7f15799b7000-7f15799d4000 r--s 00000000 03:01 1106078 /usr/share/texmf/fonts/type1/public/lm/lmbx6.pfb 7f15799d4000-7f15799db000 r--s 00000000 03:01 1106077 /usr/share/texmf/fonts/type1/public/lm/lmsy9.pfb 7f15799db000-7f15799e3000 r--s 00000000 03:01 1106076 /usr/share/texmf/fonts/type1/public/lm/lmmi10.pfb 7f15799e3000-7f1579a03000 r--s 00000000 03:01 1106075 /usr/share/texmf/fonts/type1/public/lm/lmro9.pfb 7f1579a03000-7f1579a1a000 r--s 00000000 03:01 1106074 /usr/share/texmf/fonts/type1/public/lm/lmss17.pfb 7f1579a1a000-7f1579a36000 r--s 00000000 03:01 1106073 /usr/share/texmf/fonts/type1/public/lm/lmssbx10.pfb 7f1579a36000-7f1579a3e000 r--s 00000000 03:01 1106072 /usr/share/texmf/fonts/type1/public/lm/lmbsy5.pfb 7f1579a3e000-7f1579a59000 r--s 00000000 03:01 1106071 /usr/share/texmf/fonts/type1/public/lm/lmtk10.pfb 7f1579a59000-7f1579a79000 r--s 00000000 03:01 1106070 /usr/share/texmf/fonts/type1/public/lm/lmtko10.pfb 7f1579a79000-7f1579a8f000 r--s 00000000 03:01 1106069 /usr/share/texmf/fonts/type1/public/lm/lmss8.pfb 7f1579a8f000-7f1579a97000 r--s 00000000 03:01 1106068 /usr/share/texmf/fonts/type1/public/lm/lmmi9.pfb 7f1579a97000-7f1579ab5000 r--s 00000000 03:01 1106067 /usr/share/texmf/fonts/type1/public/lm/lmbx9.pfb 7f1579ab5000-7f1579ad1000 r--s 00000000 03:01 1106066 /usr/share/texmf/fonts/type1/public/lm/lmvtl10.pfb 7f1579ad1000-7f1579ae7000 r--s 00000000 03:01 1106065 /usr/share/texmf/fonts/type1/public/lm/lmss9.pfb 7f1579ae7000-7f1579b00000 r--s 00000000 03:01 1106064 /usr/share/texmf/fonts/type1/public/lm/lmsso17.pfb 7f1579b00000-7f1579b20000 r--s 00000000 03:01 1106063 /usr/share/texmf/fonts/type1/public/lm/lmssbo10.pfb 7f1579b20000-7f1579b39000 r--s 00000000 03:01 1106062 /usr/share/texmf/fonts/type1/public/lm/lmtlc10.pfb 7f1579b39000-7f1579b59000 r--s 00000000 03:01 1106061 /usr/share/texmf/fonts/type1/public/lm/lmssdo10.pfb 7f1579b59000-7f1579b74000 r--s 00000000 03:01 1106060 /usr/share/texmf/fonts/type1/public/lm/lmtt8.pfb 7f1579b74000-7f1579b8f000 r--s 00000000 03:01 1106059 /usr/share/texmf/fonts/type1/public/lm/lmbx5.pfb 7f1579b8f000-7f1579ba8000 r--s 00000000 03:01 1106058 /usr/share/texmf/fonts/type1/public/lm/lmsso10.pfb 7f1579ba8000-7f1579bb0000 r--s 00000000 03:01 1106057 /usr/share/texmf/fonts/type1/public/lm/lmmi12.pfb 7f1579bb0000-7f1579bcf000 r--s 00000000 03:01 1106056 /usr/share/texmf/fonts/type1/public/lm/lmbo10.pfb 7f1579bcf000-7f1579bec000 r--s 00000000 03:01 1106055 /usr/share/texmf/fonts/type1/public/lm/lmr6.pfb 7f1579bec000-7f1579c07000 r--s 00000000 03:01 1106054 /usr/share/texmf/fonts/type1/public/lm/lmcsc10.pfb 7f1579c07000-7f1579c0f000 r--s 00000000 03:01 1106053 /usr/share/texmf/fonts/type1/public/lm/lmmi7.pfb 7f1579c0f000-7f1579c2c000 r--s 00000000 03:01 1106052 /usr/share/texmf/fonts/type1/public/lm/lmtlo10.pfb 7f1579c2c000-7f1579c34000 r--s 00000000 03:01 1106051 /usr/share/texmf/fonts/type1/public/lm/lmmi5.pfb 7f1579c34000-7f1579c4e000 r--s 00000000 03:01 1106050 /usr/share/texmf/fonts/type1/public/lm/lmri7.pfb 7f1579c4e000-7f1579c6a000 r--s 00000000 03:01 1106048 /usr/share/texmf/fonts/type1/public/lm/lmbx7.pfb 7f1579c6a000-7f1579c84000 r--s 00000000 03:01 1106047 /usr/share/texmf/fonts/type1/public/lm/lmri10.pfb 7f1579c84000-7f1579c9e000 r--s 00000000 03:01 1106046 /usr/share/texmf/fonts/type1/public/lm/lmri8.pfb 7f1579c9e000-7f1579cbb000 r--s 00000000 03:01 1106045 /usr/share/texmf/fonts/type1/public/lm/lmb10.pfb 7f1579cbb000-7f1579cd1000 r--s 00000000 03:01 1106044 /usr/share/texmf/fonts/type1/public/lm/lmss12.pfb 7f1579cd1000-7f1579cf0000 r--s 00000000 03:01 1106043 /usr/share/texmf/fonts/type1/public/lm/lmtlco10.pfb 7f1579cf0000-7f1579d0c000 r--s 00000000 03:01 1106042 /usr/share/texmf/fonts/type1/public/lm/lmr7.pfb 7f1579d0c000-7f1579d29000 r--s 00000000 03:01 1106041 /usr/share/texmf/fonts/type1/public/lm/lmbx8.pfb 7f1579d29000-7f1579d40000 r--s 00000000 03:01 1106040 /usr/share/texmf/fonts/type1/public/lm/lmtti10.pfb 7f1579d40000-7f1579d48000 r--s 00000000 03:01 1106039 /usr/share/texmf/fonts/type1/public/lm/lmmi6.pfb 7f1579d48000-7f1579d65000 r--s 00000000 03:01 1106038 /usr/share/texmf/fonts/type1/public/lm/lmssqbo8.pfb 7f1579d65000-7f1579d7f000 r--s 00000000 03:01 1106037 /usr/share/texmf/fonts/type1/public/lm/lmtt10.pfb 7f1579d7f000-7f1579d9c000 r--s 00000000 03:01 1106036 /usr/share/texmf/fonts/type1/public/lm/lmtto10.pfb 7f1579d9c000-7f1579db8000 r--s 00000000 03:01 1106035 /usr/share/texmf/fonts/type1/public/lm/lmbx10.pfb 7f1579db8000-7f1579dbf000 r--s 00000000 03:01 1106034 /usr/share/texmf/fonts/type1/public/lm/lmsy5.pfb 7f1579dbf000-7f1579dc6000 r--s 00000000 03:01 1106033 /usr/share/texmf/fonts/type1/public/lm/lmbsy10.pfb 7f1579dde000-7f1579e00000 r--s 00000000 03:01 1106049 /usr/share/texmf/fonts/type1/public/lm/lmvtko10.pfb 7f1579e00000-7f1579e1f000 r--s 00000000 03:01 1106032 /usr/share/texmf/fonts/type1/public/lm/lmro10.pfb 7f1579e1f000-7f1579e3a000 r--s 00000000 03:01 1106031 /usr/share/texmf/fonts/type1/public/lm/lmbx12.pfb 7f1579e3a000-7f1579e43000 r--s 00000000 03:01 1106030 /usr/share/texmf/fonts/type1/public/lm/lmmib5.pfb 7f1579e43000-7f1579e5c000 r--s 00000000 03:01 1106029 /usr/share/texmf/fonts/type1/public/lm/lmsso9.pfb 7f1579e5c000-7f1579e7a000 r--s 00000000 03:01 1106028 /usr/share/texmf/fonts/type1/public/lm/lmssqo8.pfb 7f1579e7a000-7f1579e98000 r--s 00000000 03:01 1106026 /usr/share/texmf/fonts/type1/public/lm/lmro12.pfb 7f1579e98000-7f1579ea0000 r-xp 00000000 03:01 423241 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libnio.so 7f1579ea0000-7f157a09f000 ---p 00008000 03:01 423241 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libnio.so 7f157a09f000-7f157a0a0000 rw-p 00007000 03:01 423241 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libnio.so 7f157a0a0000-7f157a0b5000 r-xp 00000000 03:01 423234 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libnet.so 7f157a0b5000-7f157a2b4000 ---p 00015000 03:01 423234 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libnet.so 7f157a2b4000-7f157a2b5000 rw-p 00014000 03:01 423234 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libnet.so 7f157a2b5000-7f157a2be000 r-xp 00000000 03:01 571625 /usr/lib/libXrender.so.1.3.0 7f157a2be000-7f157a4bd000 ---p 00009000 03:01 571625 /usr/lib/libXrender.so.1.3.0 7f157a4bd000-7f157a4be000 rw-p 00008000 03:01 571625 /usr/lib/libXrender.so.1.3.0 7f157a4be000-7f157a4c7000 r--s 00000000 03:01 864644 /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-x86-64.cache-2 7f157a4c7000-7f157a4c9000 r--s 00000000 03:01 864642 /var/cache/fontconfig/fd9505950c048a77dc4b710eb6a628ed-x86-64.cache-2 7f157a4c9000-7f157a4cd000 r--s 00000000 03:01 864641 /var/cache/fontconfig/ddc79d3ea06a7c6ffa86ede85f3bb5df-x86-64.cache-2 7f157a4cd000-7f157a4ce000 r--s 00000000 03:01 864640 /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-x86-64.cache-2 7f157a4ce000-7f157a4d0000 r--s 00000000 03:01 864639 /var/cache/fontconfig/a2ab74764b07279e7c36ddb1d302cf26-x86-64.cache-2 7f157a4d0000-7f157a4d3000 r--s 00000000 03:01 864638 /var/cache/fontconfig/c69f04ab05004e31a6d5e715764f16d8-x86-64.cache-2 7f157a4d3000-7f157a4d8000 r--s 00000000 03:01 864637 /var/cache/fontconfig/926e794c3d5e5dffcaf2fa83ef8d36c2-x86-64.cache-2 7f157a4d8000-7f157a4dc000 r--s 00000000 03:01 864636 /var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-x86-64.cache-2 7f157a4dc000-7f157a4df000 r--s 00000000 03:01 864635 /var/cache/fontconfig/646addb8444faa74ee138aa00ab0b6a0-x86-64.cache-2 7f157a4df000-7f157a4e2000 r--s 00000000 03:01 864634 /var/cache/fontconfig/20bd79ad97094406f7d1b9654bfbd926-x86-64.cache-2 7f157a4e2000-7f157a4e6000 r--s 00000000 03:01 864633 /var/cache/fontconfig/9c0624108b9a2ae8552f664125be8356-x86-64.cache-2 7f157a4e6000-7f157a4ef000 r--s 00000000 03:01 864631 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-x86-64.cache-2 7f157a4ef000-7f157a4f2000 r--s 00000000 03:01 864630 /var/cache/fontconfig/da1bd5ca8443ffe22927a23ce431d198-x86-64.cache-2 7f157a4f2000-7f157a4f4000 r--s 00000000 03:01 864629 /var/cache/fontconfig/ddd4086aec35a5275babba44bb759c3c-x86-64.cache-2 7f157a4f4000-7f157a4f5000 r--s 00000000 03:01 864628 /var/cache/fontconfig/4794a0821666d79190d59a36cb4f44b5-x86-64.cache-2 7f157a4f5000-7f157a4f7000 r--s 00000000 03:01 864627 /var/cache/fontconfig/2c5ba8142dffc8bf0377700342b8ca1a-x86-64.cache-2 7f157a4f7000-7f157a4fa000 r--s 00000000 03:01 864626 /var/cache/fontconfig/de9486f0b47a4d768a594cb4198cb1c6-x86-64.cache-2 7f157a4fa000-7f157a4fe000 r--s 00000000 03:01 864625 /var/cache/fontconfig/6386b86020ecc1ef9690bb720a13964f-x86-64.cache-2 7f157a4fe000-7f157a505000 r--s 00000000 03:01 864624 /var/cache/fontconfig/089dead882dea3570ffc31a9898cfb69-x86-64.cache-2 7f157a505000-7f157a518000 r--s 00000000 03:01 864592 /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-x86-64.cache-2 7f157a518000-7f157a51f000 r--s 00000000 03:01 1106027 /usr/share/texmf/fonts/type1/public/lm/lmsy10.pfb 7f157a51f000-7f157a53a000 r--s 00000000 03:01 1106023 /usr/share/texmf/fonts/type1/public/lm/lmr12.pfb 7f157a53a000-7f157a559000 r--s 00000000 03:01 1106022 /usr/share/texmf/fonts/type1/public/lm/lmro17.pfb 7f157a559000-7f157a574000 r--s 00000000 03:01 1106020 /usr/share/texmf/fonts/type1/public/lm/lmvtt10.pfb 7f157a574000-7f157a594000 r--s 00000000 03:01 1106019 /usr/share/texmf/fonts/type1/public/lm/lmvtlo10.pfb 7f157a594000-7f157a5b0000 r--s 00000000 03:01 1106017 /usr/share/texmf/fonts/type1/public/lm/lmr10.pfb 7f157a5b0000-7f157a5c9000 r--s 00000000 03:01 1106018 /usr/share/texmf/fonts/type1/public/lm/lmtcsc10.pfb 7f157a5c9000-7f157a5ce000 r-xp 00000000 03:01 571603 /usr/lib/libXfixes.so.3.1.0 7f157a5ce000-7f157a6cd000 ---p 00005000 03:01 571603 /usr/lib/libXfixes.so.3.1.0 7f157a6cd000-7f157a6ce000 rw-p 00004000 03:01 571603 /usr/lib/libXfixes.so.3.1.0 7f157a6ce000-7f157a6d7000 r--s 00000000 03:01 864644 /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-x86-64.cache-2 7f157a6d7000-7f157a6d9000 r--s 00000000 03:01 864642 /var/cache/fontconfig/fd9505950c048a77dc4b710eb6a628ed-x86-64.cache-2 7f157a6d9000-7f157a6dd000 r--s 00000000 03:01 864641 /var/cache/fontconfig/ddc79d3ea06a7c6ffa86ede85f3bb5df-x86-64.cache-2 7f157a6dd000-7f157a6de000 r--s 00000000 03:01 864640 /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-x86-64.cache-2 7f157a6de000-7f157a6e0000 r--s 00000000 03:01 864639 /var/cache/fontconfig/a2ab74764b07279e7c36ddb1d302cf26-x86-64.cache-2 7f157a6e0000-7f157a6e3000 r--s 00000000 03:01 864638 /var/cache/fontconfig/c69f04ab05004e31a6d5e715764f16d8-x86-64.cache-2 7f157a6e3000-7f157a6e8000 r--s 00000000 03:01 864637 /var/cache/fontconfig/926e794c3d5e5dffcaf2fa83ef8d36c2-x86-64.cache-2 7f157a6e8000-7f157a6ec000 r--s 00000000 03:01 864636 /var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-x86-64.cache-2 7f157a6ec000-7f157a6ef000 r--s 00000000 03:01 864635 /var/cache/fontconfig/646addb8444faa74ee138aa00ab0b6a0-x86-64.cache-2 7f157a6ef000-7f157a6f2000 r--s 00000000 03:01 864634 /var/cache/fontconfig/20bd79ad97094406f7d1b9654bfbd926-x86-64.cache-2 7f157a6f2000-7f157a6f6000 r--s 00000000 03:01 864633 /var/cache/fontconfig/9c0624108b9a2ae8552f664125be8356-x86-64.cache-2 7f157a6f6000-7f157a6ff000 r--s 00000000 03:01 864631 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-x86-64.cache-2 7f157a6ff000-7f157a702000 r--s 00000000 03:01 864630 /var/cache/fontconfig/da1bd5ca8443ffe22927a23ce431d198-x86-64.cache-2 7f157a702000-7f157a704000 r--s 00000000 03:01 864629 /var/cache/fontconfig/ddd4086aec35a5275babba44bb759c3c-x86-64.cache-2 7f157a704000-7f157a705000 r--s 00000000 03:01 864628 /var/cache/fontconfig/4794a0821666d79190d59a36cb4f44b5-x86-64.cache-2 7f157a705000-7f157a707000 r--s 00000000 03:01 864627 /var/cache/fontconfig/2c5ba8142dffc8bf0377700342b8ca1a-x86-64.cache-2 7f157a707000-7f157a70a000 r--s 00000000 03:01 864626 /var/cache/fontconfig/de9486f0b47a4d768a594cb4198cb1c6-x86-64.cache-2 7f157a70a000-7f157a70e000 r--s 00000000 03:01 864625 /var/cache/fontconfig/6386b86020ecc1ef9690bb720a13964f-x86-64.cache-2 7f157a70e000-7f157a715000 r--s 00000000 03:01 864624 /var/cache/fontconfig/089dead882dea3570ffc31a9898cfb69-x86-64.cache-2 7f157a715000-7f157a728000 r--s 00000000 03:01 864592 /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-x86-64.cache-2 7f157a729000-7f157a731000 r--s 00000000 03:01 1106025 /usr/share/texmf/fonts/type1/public/lm/lmmi8.pfb 7f157a731000-7f157a73a000 r-xp 00000000 03:01 571627 /usr/lib/libXcursor.so.1.0.2 7f157a73a000-7f157a93a000 ---p 00009000 03:01 571627 /usr/lib/libXcursor.so.1.0.2 7f157a93a000-7f157a93b000 rw-p 00009000 03:01 571627 /usr/lib/libXcursor.so.1.0.2 7f157a941000-7f157a94a000 r--s 00000000 03:01 1106024 /usr/share/texmf/fonts/type1/public/lm/lmmib7.pfb 7f157a94a000-7f157a951000 r--s 00000000 03:01 1106021 /usr/share/texmf/fonts/type1/public/lm/lmsy8.pfb 7f157a951000-7f157a954000 r--s 00077000 03:01 942865 /usr/lib/jvm/java-6-openjdk/jre/lib/ext/localedata.jar 7f157a954000-7f157a95b000 r--s 000fd000 03:01 488255 /usr/lib/jvm/java-6-openjdk/jre/lib/resources.jar 7f157a95b000-7f157a95e000 r--s 00000000 03:01 864623 /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86-64.cache-2 7f157a95e000-7f157a972000 r--s 00000000 03:01 864646 /var/cache/fontconfig/865f88548240fee46819705c6468c165-x86-64.cache-2 7f157a972000-7f157a988000 r-xp 00000000 03:01 373909 /lib/libgcc_s.so.1 7f157a988000-7f157ab88000 ---p 00016000 03:01 373909 /lib/libgcc_s.so.1 7f157ab88000-7f157ab89000 rw-p 00016000 03:01 373909 /lib/libgcc_s.so.1 7f157ab89000-7f157ac08000 r-xp 00000000 03:01 570487 /usr/lib/libfreetype.so.6.3.18 7f157ac08000-7f157ae07000 ---p 0007f000 03:01 570487 /usr/lib/libfreetype.so.6.3.18 7f157ae07000-7f157ae0d000 rw-p 0007e000 03:01 570487 /usr/lib/libfreetype.so.6.3.18 7f157ae0f000-7f157ae12000 r--s 00000000 03:01 864623 /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86-64.cache-2 7f157ae12000-7f157ae26000 r--s 00000000 03:01 864646 /var/cache/fontconfig/865f88548240fee46819705c6468c165-x86-64.cache-2 7f157ae26000-7f157ae6c000 r-xp 00000000 03:01 423216 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libfontmanager.so 7f157ae6c000-7f157b06b000 ---p 00046000 03:01 423216 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libfontmanager.so 7f157b06b000-7f157b06f000 rw-p 00045000 03:01 423216 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libfontmanager.so 7f157b06f000-7f157b07f000 rw-p 7f157b06f000 00:00 0 7f157b07f000-7f157b086000 r--s 00000000 03:01 585220 /usr/lib/gconv/gconv-modules.cache 7f157b086000-7f157b08e000 rw-p 7f157b086000 00:00 0 7f157b08e000-7f157f086000 ---p 7f157b08e000 00:00 0 7f157f086000-7f157f08e000 rw-p 7f157f086000 00:00 0 7f157f08e000-7f1581086000 ---p 7f157f08e000 00:00 0 7f1581086000-7f158108e000 rw-p 7f1581086000 00:00 0 7f158108e000-7f158127e000 ---p 7f158108e000 00:00 0 7f158127e000-7f1581286000 rw-p 7f158127e000 00:00 0 7f1581286000-7f158527e000 ---p 7f1581286000 00:00 0 7f158527e000-7f15852b9000 r-xp 00000000 03:01 377643 /lib/libncurses.so.5.7 7f15852b9000-7f15854b8000 ---p 0003b000 03:01 377643 /lib/libncurses.so.5.7 7f15854b8000-7f15854bd000 rw-p 0003a000 03:01 377643 /lib/libncurses.so.5.7 7f15854bd000-7f15854f5000 r-xp 00000000 03:01 375455 /lib/libreadline.so.5.2 7f15854f5000-7f15856f4000 ---p 00038000 03:01 375455 /lib/libreadline.so.5.2 7f15856f4000-7f15856fc000 rw-p 00037000 03:01 375455 /lib/libreadline.so.5.2 7f15856fc000-7f15856fd000 rw-p 7f15856fc000 00:00 0 7f15856fd000-7f158573b000 r-xp 00000000 03:01 571635 /usr/lib/libgmp.so.3.4.2 7f158573b000-7f158593b000 ---p 0003e000 03:01 571635 /usr/lib/libgmp.so.3.4.2 7f158593b000-7f158593c000 rw-p 0003e000 03:01 571635 /usr/lib/libgmp.so.3.4.2 7f158593c000-7f1585a20000 r-xp 00000000 03:01 796912 /usr/local/lib/pl-5.6.61/lib/x86_64-linux/libpl.so.5.6.61 7f1585a20000-7f1585c20000 ---p 000e4000 03:01 796912 /usr/local/lib/pl-5.6.61/lib/x86_64-linux/libpl.so.5.6.61 7f1585c20000-7f1585c2a000 rw-p 000e4000 03:01 796912 /usr/local/lib/pl-5.6.61/lib/x86_64-linux/libpl.so.5.6.61 7f1585c2a000-7f1585c30000 rw-p 7f1585c2a000 00:00 0 7f1585c30000-7f1585c44000 r-xp 00000000 03:01 797227 /usr/local/lib/pl-5.6.61/lib/x86_64-linux/libjpl.so 7f1585c44000-7f1585e44000 ---p 00014000 03:01 797227 /usr/local/lib/pl-5.6.61/lib/x86_64-linux/libjpl.so 7f1585e44000-7f1585e45000 rw-p 00014000 03:01 797227 /usr/local/lib/pl-5.6.61/lib/x86_64-linux/libjpl.so 7f1585e45000-7f1585e4a000 r-xp 00000000 03:01 571595 /usr/lib/libXdmcp.so.6.0.0 7f1585e4a000-7f1586049000 ---p 00005000 03:01 571595 /usr/lib/libXdmcp.so.6.0.0 7f1586049000-7f158604a000 rw-p 00004000 03:01 571595 /usr/lib/libXdmcp.so.6.0.0 7f158604a000-7f1586065000 r-xp 00000000 03:01 572855 /usr/lib/libxcb.so.1.0.0 7f1586065000-7f1586265000 ---p 0001b000 03:01 572855 /usr/lib/libxcb.so.1.0.0 7f1586265000-7f1586266000 rw-p 0001b000 03:01 572855 /usr/lib/libxcb.so.1.0.0 7f1586266000-7f1586267000 r-xp 00000000 03:01 573757 /usr/lib/libxcb-xlib.so.0.0.0 7f1586267000-7f1586466000 ---p 00001000 03:01 573757 /usr/lib/libxcb-xlib.so.0.0.0 7f1586466000-7f1586467000 rw-p 00000000 03:01 573757 /usr/lib/libxcb-xlib.so.0.0.0 7f1586467000-7f1586469000 r-xp 00000000 03:01 571593 /usr/lib/libXau.so.6.0.0 7f1586469000-7f1586668000 ---p 00002000 03:01 571593 /usr/lib/libXau.so.6.0.0 7f1586668000-7f1586669000 rw-p 00001000 03:01 571593 /usr/lib/libXau.so.6.0.0 7f1586669000-7f1586672000 r-xp 00000000 03:01 569562 /usr/lib/libXi.so.6.0.0 7f1586672000-7f1586871000 ---p 00009000 03:01 569562 /usr/lib/libXi.so.6.0.0 7f1586871000-7f1586872000 rw-p 00008000 03:01 569562 /usr/lib/libXi.so.6.0.0 7f1586872000-7f1586877000 r-xp 00000000 03:01 571684 /usr/lib/libXtst.so.6.1.0 7f1586877000-7f1586a77000 ---p 00005000 03:01 571684 /usr/lib/libXtst.so.6.1.0 7f1586a77000-7f1586a78000 rw-p 00005000 03:01 571684 /usr/lib/libXtst.so.6.1.0 7f1586a78000-7f1586b7e000 r-xp 00000000 03:01 569013 /usr/lib/libX11.so.6.2.0 7f1586b7e000-7f1586d7e000 ---p 00106000 03:01 569013 /usr/lib/libX11.so.6.2.0 7f1586d7e000-7f1586d84000 rw-p 00106000 03:01 569013 /usr/lib/libX11.so.6.2.0 7f1586d84000-7f1586d94000 r-xp 00000000 03:01 571615 /usr/lib/libXext.so.6.4.0 7f1586d94000-7f1586f94000 ---p 00010000 03:01 571615 /usr/lib/libXext.so.6.4.0 7f1586f94000-7f1586f95000 rw-p 00010000 03:01 571615 /usr/lib/libXext.so.6.4.0 7f1586f95000-7f1586fae000 r--s 00000000 03:01 797031 /usr/local/lib/pl-5.6.61/boot64.prc 7f1586fae000-7f1586ff5000 r-xp 00000000 03:01 293493 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/xawt/libmawt.so 7f1586ff5000-7f15871f4000 ---p 00047000 03:01 293493 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/xawt/libmawt.so 7f15871f4000-7f15871f8000 rw-p 00046000 03:01 293493 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/xawt/libmawt.so 7f15871f8000-7f15871f9000 rw-p 7f15871f8000 00:00 0 7f15871f9000-7f158729a000 r-xp 00000000 03:01 423219 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libawt.so 7f158729a000-7f1587499000 ---p 000a1000 03:01 423219 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libawt.so 7f1587499000-7f15874a5000 rw-p 000a0000 03:01 423219 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libawt.so 7f15874a5000-7f15874c9000 rw-p 7f15874a5000 00:00 0 7f15874c9000-7f15874cd000 r--s 00079000 03:01 488251 /usr/lib/jvm/java-6-openjdk/jre/lib/jsse.jar 7f15874cd000-7f15874d4000 r--s 00094000 03:01 309469 /usr/local/netbeans-6.5.1/java2/modules/ext/beansbinding-1.2.1.jar 7f15874d4000-7f158760e000 r--p 00000000 03:01 571455 /usr/lib/locale/locale-archive 7f158760e000-7f1587641000 rw-p 7f158760e000 00:00 0 7f1587641000-7f15877d0000 r--s 033c4000 03:01 487905 /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar 7f15877d0000-7f15877f8000 rw-p 7f15877d0000 00:00 0 7f15877f8000-7f15877fa000 rwxp 7f15877f8000 00:00 0 7f15877fa000-7f1587867000 rwxp 7f15877fa000 00:00 0 7f1587867000-7f158786a000 rwxp 7f1587867000 00:00 0 7f158786a000-7f1587945000 rwxp 7f158786a000 00:00 0 7f1587945000-7f1587950000 rwxp 7f1587945000 00:00 0 7f1587950000-7f158796f000 rwxp 7f1587950000 00:00 0 7f158796f000-7f1587c00000 rwxp 7f158796f000 00:00 0 7f1587c00000-7f1595770000 rwxp 7f1587c00000 00:00 0 7f1595770000-7f1595ca0000 rwxp 7f1595770000 00:00 0 7f1595ca0000-7f15b1370000 rwxp 7f1595ca0000 00:00 0 7f15b1370000-7f15b2830000 rwxp 7f15b1370000 00:00 0 7f15b2830000-7f15b6770000 rwxp 7f15b2830000 00:00 0 7f15b6772000-7f15b6773000 r--p 7f15b6772000 00:00 0 7f15b6773000-7f15b6774000 r--s 00000000 03:01 309473 /usr/local/netbeans-6.5.1/java2/modules/ext/AbsoluteLayout.jar 7f15b6774000-7f15b6775000 r--s 00002000 03:01 309471 /usr/local/netbeans-6.5.1/java2/modules/ext/swing-worker-1.1.jar 7f15b6775000-7f15b6779000 r--s 0003d000 03:01 309467 /usr/local/netbeans-6.5.1/java2/modules/ext/appframework-1.0.3.jar 7f15b6779000-7f15b69e9000 rwxp 7f15b6779000 00:00 0 7f15b69e9000-7f15b9779000 rwxp 7f15b69e9000 00:00 0 7f15b9779000-7f15b9780000 r-xp 00000000 03:01 423233 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libzip.so 7f15b9780000-7f15b997f000 ---p 00007000 03:01 423233 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libzip.so 7f15b997f000-7f15b9980000 rw-p 00006000 03:01 423233 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libzip.so 7f15b9980000-7f15b99ad000 r-xp 00000000 03:01 423224 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libjava.so 7f15b99ad000-7f15b9bac000 ---p 0002d000 03:01 423224 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libjava.so 7f15b9bac000-7f15b9bb0000 rw-p 0002c000 03:01 423224 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libjava.so 7f15b9bb0000-7f15b9bbf000 r-xp 00000000 03:01 423230 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libverify.so 7f15b9bbf000-7f15b9dbe000 ---p 0000f000 03:01 423230 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libverify.so 7f15b9dbe000-7f15b9dc0000 rw-p 0000e000 03:01 423230 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libverify.so 7f15b9dc0000-7f15b9dca000 r-xp 00000000 03:01 375134 /lib/libnss_files-2.7.so 7f15b9dca000-7f15b9fca000 ---p 0000a000 03:01 375134 /lib/libnss_files-2.7.so 7f15b9fca000-7f15b9fcc000 rw-p 0000a000 03:01 375134 /lib/libnss_files-2.7.so 7f15b9fcc000-7f15b9fd6000 r-xp 00000000 03:01 374054 /lib/libnss_nis-2.7.so 7f15b9fd6000-7f15ba1d5000 ---p 0000a000 03:01 374054 /lib/libnss_nis-2.7.so 7f15ba1d5000-7f15ba1d7000 rw-p 00009000 03:01 374054 /lib/libnss_nis-2.7.so 7f15ba1d7000-7f15ba1de000 r-xp 00000000 03:01 374151 /lib/libnss_compat-2.7.so 7f15ba1de000-7f15ba3dd000 ---p 00007000 03:01 374151 /lib/libnss_compat-2.7.so 7f15ba3dd000-7f15ba3df000 rw-p 00006000 03:01 374151 /lib/libnss_compat-2.7.so 7f15ba3df000-7f15ba3f4000 r-xp 00000000 03:01 374128 /lib/libnsl-2.7.so 7f15ba3f4000-7f15ba5f3000 ---p 00015000 03:01 374128 /lib/libnsl-2.7.so 7f15ba5f3000-7f15ba5f5000 rw-p 00014000 03:01 374128 /lib/libnsl-2.7.so 7f15ba5f5000-7f15ba5f7000 rw-p 7f15ba5f5000 00:00 0 7f15ba5f7000-7f15ba5ff000 r-xp 00000000 03:01 504125 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/native_threads/libhpi.so 7f15ba5ff000-7f15ba7fe000 ---p 00008000 03:01 504125 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/native_threads/libhpi.so 7f15ba7fe000-7f15ba800000 rw-p 00007000 03:01 504125 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/native_threads/libhpi.so 7f15ba800000-7f15ba808000 r-xp 00000000 03:01 375150 /lib/librt-2.7.so 7f15ba808000-7f15baa07000 ---p 00008000 03:01 375150 /lib/librt-2.7.so 7f15baa07000-7f15baa09000 rw-p 00007000 03:01 375150 /lib/librt-2.7.so 7f15baa09000-7f15baa8b000 r-xp 00000000 03:01 375139 /lib/libm-2.7.so 7f15baa8b000-7f15bac8a000 ---p 00082000 03:01 375139 /lib/libm-2.7.so 7f15bac8a000-7f15bac8c000 rw-p 00081000 03:01 375139 /lib/libm-2.7.so 7f15bac8c000-7f15bb383000 r-xp 00000000 03:01 942881 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so 7f15bb383000-7f15bb582000 ---p 006f7000 03:01 942881 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so 7f15bb582000-7f15bb5fa000 rw-p 006f6000 03:01 942881 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so 7f15bb5fa000-7f15bb633000 rw-p 7f15bb5fa000 00:00 0 7f15bb633000-7f15bb77d000 r-xp 00000000 03:01 375140 /lib/libc-2.7.so 7f15bb77d000-7f15bb97c000 ---p 0014a000 03:01 375140 /lib/libc-2.7.so 7f15bb97c000-7f15bb97f000 r--p 00149000 03:01 375140 /lib/libc-2.7.so 7f15bb97f000-7f15bb981000 rw-p 0014c000 03:01 375140 /lib/libc-2.7.so 7f15bb981000-7f15bb986000 rw-p 7f15bb981000 00:00 0 7f15bb986000-7f15bb988000 r-xp 00000000 03:01 375148 /lib/libdl-2.7.so 7f15bb988000-7f15bbb88000 ---p 00002000 03:01 375148 /lib/libdl-2.7.so 7f15bbb88000-7f15bbb8a000 rw-p 00002000 03:01 375148 /lib/libdl-2.7.so 7f15bbb8a000-7f15bbb8e000 r-xp 00000000 03:01 553076 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/jli/libjli.so 7f15bbb8e000-7f15bbd8d000 ---p 00004000 03:01 553076 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/jli/libjli.so 7f15bbd8d000-7f15bbd8e000 rw-p 00003000 03:01 553076 /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/jli/libjli.so 7f15bbd8e000-7f15bbda4000 r-xp 00000000 03:01 375013 /lib/libpthread-2.7.so 7f15bbda4000-7f15bbfa4000 ---p 00016000 03:01 375013 /lib/libpthread-2.7.so 7f15bbfa4000-7f15bbfa6000 rw-p 00016000 03:01 375013 /lib/libpthread-2.7.so 7f15bbfa6000-7f15bbfaa000 rw-p 7f15bbfa6000 00:00 0 7f15bbfaa000-7f15bbfc0000 r-xp 00000000 03:01 569434 /usr/lib/libz.so.1.2.3.3 7f15bbfc0000-7f15bc1c0000 ---p 00016000 03:01 569434 /usr/lib/libz.so.1.2.3.3 7f15bc1c0000-7f15bc1c1000 rw-p 00016000 03:01 569434 /usr/lib/libz.so.1.2.3.3 7f15bc1c1000-7f15bc1dd000 r-xp 00000000 03:01 375145 /lib/ld-2.7.so 7f15bc1dd000-7f15bc1de000 r--s 0001c000 03:01 510866 /usr/local/netbeans-6.5.1/platform9/modules/ext/swing-layout-1.0.3.jar 7f15bc1de000-7f15bc1e2000 r--s 0001a000 03:01 309475 /usr/local/netbeans-6.5.1/java2/modules/ext/junit-3.8.2.jar 7f15bc1e2000-7f15bc1f2000 r--s 0013f000 03:03 3957501 /home/jacinto/NetBeansProjects/galatea/GalateaBasica/trunk/lib/jfreechart-1.0.12.jar 7f15bc1f2000-7f15bc1fd000 rwxp 7f15bc1f2000 00:00 0 7f15bc1fd000-7f15bc21d000 rwxp 7f15bc1fd000 00:00 0 7f15bc21d000-7f15bc220000 rwxp 7f15bc21d000 00:00 0 7f15bc220000-7f15bc2fc000 rwxp 7f15bc220000 00:00 0 7f15bc2fc000-7f15bc306000 rwxp 7f15bc2fc000 00:00 0 7f15bc306000-7f15bc3bc000 rwxp 7f15bc306000 00:00 0 7f15bc3bc000-7f15bc3c0000 rw-p 7f15bc3bc000 00:00 0 7f15bc3c0000-7f15bc3c6000 r--s 00046000 03:03 3957509 /home/jacinto/NetBeansProjects/galatea/GalateaBasica/trunk/lib/jcommon-1.0.15.jar 7f15bc3c6000-7f15bc3cf000 r--s 00065000 03:01 195118 /usr/share/java/gnome-java-bridge.jar 7f15bc3cf000-7f15bc3d7000 rw-s 00000000 03:01 1187689 /tmp/hsperfdata_jacinto/11193 7f15bc3d7000-7f15bc3d8000 rwxp 7f15bc3d7000 00:00 0 7f15bc3d8000-7f15bc3d9000 r--p 7f15bc3d8000 00:00 0 7f15bc3d9000-7f15bc3dc000 rw-p 7f15bc3d9000 00:00 0 7f15bc3dc000-7f15bc3de000 rw-p 0001b000 03:01 375145 /lib/ld-2.7.so 7fffc43c8000-7fffc43db000 rwxp 7ffffffea000 00:00 0 [stack] 7fffc43db000-7fffc43dd000 rw-p 7fffffffd000 00:00 0 7fffc43fe000-7fffc43ff000 r-xp 7fffc43fe000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] VM Arguments: jvm_args: -Djava.library.path=/lib:/usr/lib:/usr/local/lib/pl-5.6.61/lib/x86_64-linux/ -Djava.security.policy=applet.policy java_command: contrib.BalancePersonal.GUI Launcher Type: SUN_STANDARD Environment Variables: PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/progol/source/ USERNAME=jacinto LD_LIBRARY_PATH=/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64 SHELL=/bin/bash DISPLAY=:0.0 Signal Handlers: SIGSEGV: [libjvm.so+0x5d2630], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x5d2630], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x4ab9d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x4ab9d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x4ab9d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x4ab9d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x4ab380], sa_mask[0]=0x00000004, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x4ad520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: SIG_IGN, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGTERM: [libjvm.so+0x4ad520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x4ad520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:5.0.2 uname:Linux 2.6.26-1-amd64 #1 SMP Fri Mar 13 17:46:45 UTC 2009 x86_64 libc:glibc 2.7 NPTL 2.7 rlimit: STACK 8192k, CORE 0k, NPROC 40960, NOFILE 1024, AS infinity load average:0.42 0.25 0.19 CPU:total 1 (1 cores per cpu, 1 threads per core) family 6 model 15 stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3 Memory: 4k page, physical 4057576k(1775300k free), swap 5605984k(5605984k free) vm_info: OpenJDK 64-Bit Server VM (1.6.0_0-b11) for linux-amd64 JRE (1.6.0_0-b11), built on Apr 9 2009 19:35:18 by "pbuilder" with gcc 4.3.2 time: Sun Aug 16 16:47:26 2009 elapsed time: 18 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 Mon Aug 17 06:49:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 17 Aug 2009 14:49:35 +0100 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> Message-ID: <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> 2009/8/14 Michael Franz : > Here is part of config.log > configure:8957: checking if java.io.PrintStream is missing the 1.5 > constructors (PR40616) > Exception in thread "main" java.lang.NoSuchMethodError: method > java.io.PrintStream. with signature (Ljava.io.File;Ljava > .lang.String;)V was not found. > ?? at Test.main(Test.java:10) > configure:8993: result: yes > configure:9008: checking if java.util.Scanner is missing > configure:9040: result: no > configure:9056: checking if java.util.Scanner exhibits Classpath bug 40630 > Exception in thread "main" java.lang.NoClassDefFoundError: java.util.Scanner > ?? at Test.main(Test.java:9) > configure:9093: result: yes > > > > On Fri, Aug 14, 2009 at 8:00 AM, Andrew John Hughes > wrote: >> >> 2009/8/14 Michael Franz : >> > Hi, >> > >> > Here is the output from my Fedora 10 build with the missing >> > java.util.Scanner. >> > >> > /home/mfranz/linux/icedtea-1.11/bootstrap/jdk1.6.0/bin/java >> > -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput >> > -client >> > -Xmx896m -Xms128m -XX:PermSize=32m -XX:MaxPermSize=160m -jar >> > >> > /home/mfranz/linux/icedtea-1.11/openjdk-ecj/build/linux-i586/btjars/charsetmapping.jar >> > ../../tools/CharsetMapping >> > /home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext euctw \ >> > ??? ??? ../../tools/src/build/tools/charsetmapping/GenerateEUC_TW.java >> > Exception in thread "main" java.lang.NoClassDefFoundError: >> > java.util.Scanner >> > ?? at >> > >> > build.tools.charsetmapping.GenerateEUC_TW.getCopyright(GenerateEUC_TW.java:47) >> > ?? at >> > >> > build.tools.charsetmapping.GenerateEUC_TW.genEUC_TW(GenerateEUC_TW.java:43) >> > ?? at build.tools.charsetmapping.Main.main(Main.java:48) >> > make[5]: *** >> > [/home/mfranz/linux/icedtea-1.11/generated/sun/nio/cs/ext/IBM037.java] >> > Error >> > 1 >> > make[5]: Leaving directory >> > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun/nio' >> > make[4]: *** [all] Error 1 >> > make[4]: Leaving directory >> > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make/sun' >> > make[3]: *** [all] Error 1 >> > make[3]: Leaving directory >> > `/home/mfranz/linux/icedtea-1.11/openjdk-ecj/jdk/make' >> > make[2]: *** [jdk-build] Error 2 >> > make[2]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' >> > make[1]: *** [build_product_image] Error 2 >> > make[1]: Leaving directory `/home/mfranz/linux/icedtea-1.11/openjdk-ecj' >> > make: *** [stamps/icedtea-ecj.stamp] Error 2 >> > >> > >> > The output from configure for the Scanner check is here: >> > checking if java.util.Scanner is missing... Exception in thread "main" >> > java.lang.NoClassDefFoundError: java.util.Scanner >> > ?? at Test.main(Test.java:7) >> > no >> > checking if java.util.Scanner exhibits Classpath bug 40630... yes >> > >> > I wonder if the Classpath bug is over-riding the Scanner check. >> > >> > Michael >> > >> >> Ok, that first check should be saying yes and the second (bug 40630) >> shouldn't run. >> >> Can you check what output is given in config.log for these tests (if >> any)? ?It looks like the javac+java you are using with configure is >> different from what is actually building OpenJDK. >> -- >> 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 > > Bizarre. Can you find out what JAVA and JAVAC are set to in config.log and what -version gives for each? 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 ahughes at redhat.com Mon Aug 17 08:31:45 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Mon, 17 Aug 2009 15:31:45 +0000 Subject: changeset in /hg/icedtea: Bump to b69. Message-ID: changeset 939e978ee73a in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=939e978ee73a description: Bump to b69. 2009-08-17 Andrew John Hughes * Makefile.am: Bump to b69. diffstat: 2 files changed, 22 insertions(+), 17 deletions(-) ChangeLog | 5 +++++ Makefile.am | 34 +++++++++++++++++----------------- diffs (53 lines): diff -r fa477700aaf3 -r 939e978ee73a ChangeLog --- a/ChangeLog Sun Aug 09 23:46:37 2009 +0100 +++ b/ChangeLog Mon Aug 17 16:34:18 2009 +0100 @@ -1,3 +1,8 @@ 2009-08-07 Andrew John Hughes + + * Makefile.am: + Bump to b69. + 2009-08-07 Andrew John Hughes * acinclude.m4: diff -r fa477700aaf3 -r 939e978ee73a Makefile.am --- a/Makefile.am Sun Aug 09 23:46:37 2009 +0100 +++ b/Makefile.am Mon Aug 17 16:34:18 2009 +0100 @@ -1,20 +1,20 @@ OPENJDK_VERSION = b68 -OPENJDK_VERSION = b68 - -OPENJDK_CHANGESET = d8f0e9685212 -CORBA_CHANGESET = 4d8317ea0eec -JAXP_CHANGESET = 216517ab5325 -JAXWS_CHANGESET = 4425f7c4fb5b -JDK_CHANGESET = df6fceba2e80 -LANGTOOLS_CHANGESET = 95c1212b07e3 -HOTSPOT_CHANGESET = 91fcd98a5ae1 - -OPENJDK_MD5SUM = 8c3d681d0a90ec9adf00870f5e20d09f -CORBA_MD5SUM = c1c9db96634876b2c522dc387dec3864 -JAXP_MD5SUM = 9a821849b2b9bdf2f8dc32168809a063 -JAXWS_MD5SUM = 2d9fbeb543ee7bcd6621a3f131649db2 -JDK_MD5SUM = 418d860925e69cca57253e62508234b6 -LANGTOOLS_MD5SUM = e29f65271621d80aa8a894fe13325f23 -HOTSPOT_MD5SUM = 88cc373d7d04a2c9c60fd9343a28818c +OPENJDK_VERSION = b69 + +OPENJDK_CHANGESET = 2914e1cb084e +CORBA_CHANGESET = a0eefb08a314 +JAXP_CHANGESET = fa81a375c19a +JAXWS_CHANGESET = bcf234d82efa +JDK_CHANGESET = bd5e610df2e8 +LANGTOOLS_CHANGESET = ce9bcdcb7859 +HOTSPOT_CHANGESET = 12b81df6076d + +OPENJDK_MD5SUM = 37c6c85e9bfc58ee4f0312f32cdfc524 +CORBA_MD5SUM = 8e800563935f4a8603585d182204286d +JAXP_MD5SUM = fc6c3556e5932ce1155498e894d85b93 +JAXWS_MD5SUM = 6b7ba2f3b438e8c71ba7ad380c7b15bf +JDK_MD5SUM = 0e4c01b569edb101c8a2f3f0b1933fd6 +LANGTOOLS_MD5SUM = 0df12414550c8022b85f3106b303f0c5 +HOTSPOT_MD5SUM = eb455e08a9a305714a971abecbdb78db CACAO_VERSION = 0.99.4 CACAO_MD5SUM = 63220327925ace13756ae334c55a3baa From Joe.Darcy at Sun.COM Mon Aug 17 10:07:27 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Mon, 17 Aug 2009 10:07:27 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0908140537g6f61faf8h3f912415b2f3e9c3@mail.gmail.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <17c6771e0908030302k123c206br4a7632fbc77ee0b@mail.gmail.com> <4A78D78A.5000604@sun.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> <4A79F131.7040105@sun.com> <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> <4A84B194.1070108@sun.com> <17c6771e0908140537g6f61faf8h3f912415b2f3e9c3@mail.gmail.com> Message-ID: <4A898E4F.5020007@sun.com> Andrew John Hughes wrote: > 2009/8/14 Joe Darcy : > >> Andrew John Hughes wrote: >> >>> 2009/8/5 Tim Bell : >>> >>> >>>> Andrew John Hughes wrote: >>>> >>>> >>>> >>>>> Thanks Tim, that seems to have fixed the permissions issue. >>>>> >>>>> >>>> Good. >>>> >>>> >>>> >>>>> There now seems to be an issue with jcheck, as the merge causes some >>>>> bugids to be repeated: >>>>> >>>>> >>>> Hmmm - how did these changesets come in through two different paths? >>>> >>>> >>>> >>>>> pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >>>>> searching for changes >>>>> remote: adding changesets >>>>> remote: adding manifests >>>>> remote: adding file changes >>>>> remote: added 555 changesets with 4771 changes to 1453 files >>>>> remote: >>>>> remote: > Changeset: 100:d821d920b465 >>>>> remote: > Author: kvn >>>>> remote: > Date: 2008-03-11 11:04 >>>>> remote: > >>>>> remote: > 6623167: C2 crashed in StoreCMNode::Value >>>>> remote: > Summary: C2 crashed in StoreCMNode::Value because >>>>> n->in(MemNode::OopStore) is 0. >>>>> remote: > Reviewed-by: rasbold, never >>>>> remote: >>>>> remote: Bugid 6623167 already used in this repository, in revision 20 >>>>> remote: >>>>> remote: > Changeset: 104:2c106685d6d0 >>>>> remote: > Author: dcubed >>>>> remote: > Date: 2008-03-12 18:06 >>>>> remote: > >>>>> remote: > 6497639: 4/3 Profiling Swing application caused JVM crash >>>>> remote: > Summary: Make RedefineClasses() interoperate better with >>>>> class sharing. >>>>> remote: > Reviewed-by: sspitsyn, jmasa >>>>> remote: >>>>> remote: Bugid 6497639 already used in this repository, in revision 20 >>>>> remote: >>>>> remote: > Changeset: 105:d8b3ef7ee3e5 >>>>> remote: > Author: dcubed >>>>> remote: > Date: 2008-03-12 18:07 >>>>> remote: > >>>>> remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or >>>>> assert() failure >>>>> remote: > Summary: Add should_not_be_cached() to markOop and methodOop >>>>> and query that status inOopMapCache::lookup() >>>>> remote: > Reviewed-by: coleenp, sspitsyn, jmasa >>>>> remote: >>>>> remote: Bugid 6599425 already used in this repository, in revision 20 >>>>> remote: >>>>> remote: > Changeset: 240:65fe2bd88839 >>>>> remote: > Author: never >>>>> remote: > Date: 2008-06-05 21:44 >>>>> remote: > >>>>> remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse >>>>> with 1.6.0_05-ea >>>>> remote: > Reviewed-by: kvn, jrose, rasbold >>>>> remote: >>>>> remote: Bugid 6614100 already used in this repository, in revision 20 >>>>> remote: >>>>> remote: > Changeset: 286:3e82d72933d0 >>>>> remote: > Author: xlu >>>>> remote: > Date: 2008-06-26 14:15 >>>>> remote: > >>>>> remote: > 6718830: Hotspot fails to build with gcc 4.3 >>>>> remote: > Summary: Fixed linux make file and couple adlc code to meet >>>>> the changes of gcc 4.3 >>>>> remote: > Reviewed-by: kamg, igor >>>>> remote: >>>>> remote: Bugid 6718830 already used in this repository, in revision 32 >>>>> remote: >>>>> remote: > Changeset: 289:551f4309f476 >>>>> remote: > Author: ohair >>>>> remote: > Date: 2008-07-03 10:46 >>>>> remote: > >>>>> remote: > 6695777: Queens.class should be built from source, not put >>>>> in source repo >>>>> remote: > Reviewed-by: kvn >>>>> remote: >>>>> remote: Bugid 6695777 already used in this repository, in revision 20 >>>>> remote: >>>>> remote: > Changeset: 314:54499b980c23 >>>>> remote: > Author: swamyv >>>>> remote: > Date: 2008-07-29 13:54 >>>>> remote: > >>>>> remote: > 6710791: Remove files or build from source:maf-1_0.jar, >>>>> jlfg-1_0.jar >>>>> remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. >>>>> remote: > Reviewed-by: poonam, jjh >>>>> remote: >>>>> remote: Bugid 6710791 already used in this repository, in revision 20 >>>>> remote: >>>>> remote: > Changeset: 360:fa4d1d240383 >>>>> remote: > Author: never >>>>> remote: > Date: 2008-08-26 15:49 >>>>> remote: > >>>>> remote: > 6741642: bad enum definition in ciTypeFlow.hpp >>>>> remote: > Reviewed-by: rasbold, martin >>>>> remote: > Contributed-by: doko at ubuntu.com >>>>> remote: >>>>> remote: Bugid 6741642 already used in this repository, in revision 22 >>>>> remote: >>>>> remote: > Changeset: 589:748572b86af6 >>>>> remote: > Author: never >>>>> remote: > Date: 2009-04-07 14:46 >>>>> remote: > >>>>> remote: > 6636360: compiler/6595044/Main.java test fails with 64bit >>>>> java on solaris-sparcv9 with SIGSEGV >>>>> remote: > Reviewed-by: kvn, twisti >>>>> remote: >>>>> remote: Bugid 6636360 already used in this repository, in revision 29 >>>>> remote: >>>>> remote: abort: pretxnchangegroup.0.jcheck hook failed >>>>> remote: transaction abort! >>>>> remote: rollback completed >>>>> abort: unexpected response: empty string >>>>> >>>>> Is there a way of getting it to ignore these for this one push? I >>>>> don't know of a way to just pull out these nine changesets from the >>>>> 555 waiting to go... >>>>> >>>>> >>>> I think they would need to be added to the jcheck whitelist for all time- >>>> but that is more of a question for Mark or Kelly. >>>> >>>> Tim >>>> >>>> >>>> >>> The early revisions (20, 32) are from OpenJDK6 which was rebased to >>> allow HotSpot patches to be applied on top. So what happened here is >>> that, as the fixes were already applied to OpenJDK6, the new >>> changesets pulled in by the merge will be no-ops but still exist to >>> keep the change history accurate. >>> >>> I think we just need a way of disabling this check. OpenJDK6 already >>> has whitespace and comment checks turned to lax. See .jcheck: >>> http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/0282bf49b0f6. There >>> may already be an option for this bugid check too, but I have no idea >>> what the format of that file is. >>> >>> >> Andrew, can you please try your push again? >> >> I chatted with Mark and the OpenJDK 6 HotSpot Mercurial repository should be >> configured to do lax checking on the bug ids. >> >> Thanks, >> >> -Joe >> >> > > Sorry, same failure still occurs :( > > I didn't see any changes to .jcheck, which I would assume are needed > to fix this (mr added one for the lax comments with the rebase). > *sigh* Okay; I'll chat with Mark again to get to the bottom of this. -Joe From mvfranz at gmail.com Mon Aug 17 19:09:25 2009 From: mvfranz at gmail.com (Michael Franz) Date: Mon, 17 Aug 2009 22:09:25 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> Message-ID: >From path: java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.5) (Fedora-20.b16.fc10-i386) OpenJDK Server VM (build 14.0-b15, mixed mode) >From config.log JAVA=/usr/lib/jvm/java-gcj/bin/java java version "1.5.0" gij (GNU libgcj) version 4.3.2 20081105 (Red Hat 4.3.2-7) JAVAC=/use/lib/jvm/java-gcj/bin/javac Eclipse Java Compiler 0.883_R34x, 3.4.1 release Copyright IBM Corp 2000, 2008 > Bizarre. Can you find out what JAVA and JAVAC are set to in > config.log and what -version gives for each? > > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090817/ce820f4c/attachment.html From bugzilla-daemon at icedtea.classpath.org Mon Aug 17 20:42:39 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 18 Aug 2009 03:42:39 +0000 Subject: [Bug 251] ubuntu 8.04 amd64 - Java applet loop: openjdk-6 icedtea6-plugin Firefox Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=251 cavvieira at gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |cavvieira at gmail.com Status|RESOLVED |REOPENED Resolution|WORKSFORME | ------- Comment #3 from cavvieira at gmail.com 2009-08-18 03:42 ------- I am running Ubuntu 9.04 on an Intel Core 2 processor. When using Firefox 3.5, IcedTea won't load (and in fact will hang) the "virtual keyboard" on https://www2.bancobrasil.com.br/aapf/login.jsp?aapf.IDH=sim When using Firefox 3.0, however, it works and logs on, but then it complains about permission issues when trying something they call "computer identification" (their security solution somehow identifies each machine and will only let you manage your money on machines you authorize). -- 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 mvfranz at gmail.com Mon Aug 17 23:16:23 2009 From: mvfranz at gmail.com (Michael Franz) Date: Tue, 18 Aug 2009 02:16:23 -0400 Subject: Langtools javac task target/source from build.properties in 1.11 Message-ID: Hi, I am building using JDK 1.5 as my default, but configured with JDK 6 (this is on OS X). When the langtools section of the build runs I get a Bad version number in .class file when the custom task 'pcompile' executes. This is because the classes for the task are compile for JDK 6, but then run using JDK 5. The build.properties file has been updated to specify source/target as 5 (from 6) but these are not passed to the javac that compiles the tools. To fix this, either the compilation of the tool needs to specify the target as 5 or the jvm used to execute the tool needs to be the same one used for the rest of the build (in this case 6). The command line calling ant is: ANT_OPTS=-Djava.io.tmpdir='/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build/ant-tmp' ant -Djdk.version=1.7.0_0 -Dfull.version='1.7.0_0-bsd-b66' -Drelease=1.7.0_0 -Dbuild.number=b66 -Djavac.debug=true -Ddebug.classfiles=true -Djavac.target=5 -Djavac.source=5 -Dboot.java.home=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0 -Djavac.executable=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0/bin/javac -Dbuild.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build -Ddist.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/dist build where boot.javac.home is JDK 6. So, ant is fired up using JDK 5, but the javac tasks run JDK 6. Is there a way to run the custom tasks using a forked JVM? Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090818/b57836da/attachment.html From gnu_andrew at member.fsf.org Tue Aug 18 03:51:21 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 18 Aug 2009 11:51:21 +0100 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> Message-ID: <17c6771e0908180351l463f75f7t87c06cc209284080@mail.gmail.com> 2009/8/18 Michael Franz : > From path: > java -version > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.5) (Fedora-20.b16.fc10-i386) > OpenJDK Server VM (build 14.0-b15, mixed mode) > > From config.log > JAVA=/usr/lib/jvm/java-gcj/bin/java > java version "1.5.0" > gij (GNU libgcj) version 4.3.2 20081105 (Red Hat 4.3.2-7) > > JAVAC=/use/lib/jvm/java-gcj/bin/javac > Eclipse Java Compiler 0.883_R34x, 3.4.1 release Copyright IBM Corp 2000, > 2008 > >> >> Bizarre. ?Can you find out what JAVA and JAVAC are set to in >> config.log and what -version gives for each? >> >> 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 > > Ok, so configure compiles and runs: public class Test { public static void main(String[] args) throws Exception { new java.util.Scanner("Hello"); } } using the following commands: /usr/lib/jvm/java-gcj/bin/javac -cp . $JAVACFLAGS Test.java /usr/lib/jvm/java-gcj/bin/java -classpath . Test One (or both) should fail, but they seem to be succeeding. Can you test these manually and see what results you get? 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 mvfranz at gmail.com Tue Aug 18 04:26:06 2009 From: mvfranz at gmail.com (Michael Franz) Date: Tue, 18 Aug 2009 07:26:06 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: <17c6771e0908180351l463f75f7t87c06cc209284080@mail.gmail.com> References: <17c6771e0908130308j1f31400g3ae9fb8b11c6f3b0@mail.gmail.com> <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> <17c6771e0908180351l463f75f7t87c06cc209284080@mail.gmail.com> Message-ID: /usr/lib/jvm/java-gcj/bin/java -classpath . Test failed with NoClassDefFoundError: java.util.Scanner On Tue, Aug 18, 2009 at 6:51 AM, Andrew John Hughes < gnu_andrew at member.fsf.org> wrote: > 2009/8/18 Michael Franz : > > From path: > > java -version > > java version "1.6.0_0" > > OpenJDK Runtime Environment (IcedTea6 1.5) (Fedora-20.b16.fc10-i386) > > OpenJDK Server VM (build 14.0-b15, mixed mode) > > > > From config.log > > JAVA=/usr/lib/jvm/java-gcj/bin/java > > java version "1.5.0" > > gij (GNU libgcj) version 4.3.2 20081105 (Red Hat 4.3.2-7) > > > > JAVAC=/use/lib/jvm/java-gcj/bin/javac > > Eclipse Java Compiler 0.883_R34x, 3.4.1 release Copyright IBM Corp 2000, > > 2008 > > > >> > >> Bizarre. Can you find out what JAVA and JAVAC are set to in > >> config.log and what -version gives for each? > >> > >> 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 > > > > > > Ok, so configure compiles and runs: > > public class Test > { > public static void main(String[] args) > throws Exception > { > new java.util.Scanner("Hello"); > } > } > > using the following commands: > > /usr/lib/jvm/java-gcj/bin/javac -cp . $JAVACFLAGS Test.java > /usr/lib/jvm/java-gcj/bin/java -classpath . Test > > One (or both) should fail, but they seem to be succeeding. Can you > test these manually and see what results you get? > > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090818/147472d1/attachment.html From gnu_andrew at member.fsf.org Tue Aug 18 04:32:25 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 18 Aug 2009 12:32:25 +0100 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> <17c6771e0908180351l463f75f7t87c06cc209284080@mail.gmail.com> Message-ID: <17c6771e0908180432x5d9db0caje9c5ac084fd3e129@mail.gmail.com> 2009/8/18 Michael Franz : > /usr/lib/jvm/java-gcj/bin/java -classpath . Test > failed with NoClassDefFoundError: java.util.Scanner > > > On Tue, Aug 18, 2009 at 6:51 AM, Andrew John Hughes > wrote: >> >> 2009/8/18 Michael Franz : >> > From path: >> > java -version >> > java version "1.6.0_0" >> > OpenJDK Runtime Environment (IcedTea6 1.5) (Fedora-20.b16.fc10-i386) >> > OpenJDK Server VM (build 14.0-b15, mixed mode) >> > >> > From config.log >> > JAVA=/usr/lib/jvm/java-gcj/bin/java >> > java version "1.5.0" >> > gij (GNU libgcj) version 4.3.2 20081105 (Red Hat 4.3.2-7) >> > >> > JAVAC=/use/lib/jvm/java-gcj/bin/javac >> > Eclipse Java Compiler 0.883_R34x, 3.4.1 release Copyright IBM Corp 2000, >> > 2008 >> > >> >> >> >> Bizarre. ?Can you find out what JAVA and JAVAC are set to in >> >> config.log and what -version gives for each? >> >> >> >> 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 >> > >> > >> >> Ok, so configure compiles and runs: >> >> public class Test >> { >> ?public static void main(String[] args) >> ?throws Exception >> ?{ >> ? ?new java.util.Scanner("Hello"); >> ?} >> } >> >> using the following commands: >> >> /usr/lib/jvm/java-gcj/bin/javac -cp . $JAVACFLAGS Test.java >> /usr/lib/jvm/java-gcj/bin/java -classpath . Test >> >> One (or both) should fail, but they seem to be succeeding. ?Can you >> test these manually and see what results you get? >> >> 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 > > Ok, that's the correct behaviour. All that remains is to work out why this results in no rather than yes for that compiler test. What does $? hold after running that command? -- 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 mvfranz at gmail.com Tue Aug 18 04:36:10 2009 From: mvfranz at gmail.com (Michael Franz) Date: Tue, 18 Aug 2009 07:36:10 -0400 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: <17c6771e0908180432x5d9db0caje9c5ac084fd3e129@mail.gmail.com> References: <17c6771e0908130437h8337153k4d0d1db23580fcdf@mail.gmail.com> <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> <17c6771e0908180351l463f75f7t87c06cc209284080@mail.gmail.com> <17c6771e0908180432x5d9db0caje9c5ac084fd3e129@mail.gmail.com> Message-ID: echo $? 1 On Tue, Aug 18, 2009 at 7:32 AM, Andrew John Hughes < gnu_andrew at member.fsf.org> wrote: > 2009/8/18 Michael Franz : > > /usr/lib/jvm/java-gcj/bin/java -classpath . Test > > failed with NoClassDefFoundError: java.util.Scanner > > > > > > On Tue, Aug 18, 2009 at 6:51 AM, Andrew John Hughes > > wrote: > >> > >> 2009/8/18 Michael Franz : > >> > From path: > >> > java -version > >> > java version "1.6.0_0" > >> > OpenJDK Runtime Environment (IcedTea6 1.5) (Fedora-20.b16.fc10-i386) > >> > OpenJDK Server VM (build 14.0-b15, mixed mode) > >> > > >> > From config.log > >> > JAVA=/usr/lib/jvm/java-gcj/bin/java > >> > java version "1.5.0" > >> > gij (GNU libgcj) version 4.3.2 20081105 (Red Hat 4.3.2-7) > >> > > >> > JAVAC=/use/lib/jvm/java-gcj/bin/javac > >> > Eclipse Java Compiler 0.883_R34x, 3.4.1 release Copyright IBM Corp > 2000, > >> > 2008 > >> > > >> >> > >> >> Bizarre. Can you find out what JAVA and JAVAC are set to in > >> >> config.log and what -version gives for each? > >> >> > >> >> 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 > >> > > >> > > >> > >> Ok, so configure compiles and runs: > >> > >> public class Test > >> { > >> public static void main(String[] args) > >> throws Exception > >> { > >> new java.util.Scanner("Hello"); > >> } > >> } > >> > >> using the following commands: > >> > >> /usr/lib/jvm/java-gcj/bin/javac -cp . $JAVACFLAGS Test.java > >> /usr/lib/jvm/java-gcj/bin/java -classpath . Test > >> > >> One (or both) should fail, but they seem to be succeeding. Can you > >> test these manually and see what results you get? > >> > >> 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 > > > > > > Ok, that's the correct behaviour. All that remains is to work out why > this results in no rather than yes for that compiler test. > What does $? hold after running that command? > -- > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090818/c41ef4cd/attachment.html From mvfranz at gmail.com Tue Aug 18 05:06:45 2009 From: mvfranz at gmail.com (Michael Franz) Date: Tue, 18 Aug 2009 08:06:45 -0400 Subject: Langtools javac task target/source from build.properties in 1.11 In-Reply-To: References: Message-ID: I don't normally follow the openjdk mailing list, but I see this issue was found back on August 10 with b68. Will IcedTea still plan on using target 5? Or will it be bumping to target 6? On Tue, Aug 18, 2009 at 2:16 AM, Michael Franz wrote: > Hi, > > I am building using JDK 1.5 as my default, but configured with JDK 6 (this > is on OS X). When the langtools section of the build runs I get a Bad > version number in .class file when the custom task 'pcompile' executes. > This is because the classes for the task are compile for JDK 6, but then run > using JDK 5. The build.properties file has been updated to specify > source/target as 5 (from 6) but these are not passed to the javac that > compiles the tools. To fix this, either the compilation of the tool needs > to specify the target as 5 or the jvm used to execute the tool needs to be > the same one used for the rest of the build (in this case 6). > > The command line calling ant is: > ANT_OPTS=-Djava.io.tmpdir='/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build/ant-tmp' > ant -Djdk.version=1.7.0_0 -Dfull.version='1.7.0_0-bsd-b66' > -Drelease=1.7.0_0 -Dbuild.number=b66 -Djavac.debug=true > -Ddebug.classfiles=true -Djavac.target=5 -Djavac.source=5 > -Dboot.java.home=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0 > -Djavac.executable=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0/bin/javac > -Dbuild.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build > -Ddist.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/dist > build > > where boot.javac.home is JDK 6. > > So, ant is fired up using JDK 5, but the javac tasks run JDK 6. Is there a > way to run the custom tasks using a forked JVM? > > Michael > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090818/95680fb3/attachment.html From gnu_andrew at member.fsf.org Tue Aug 18 05:08:03 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 18 Aug 2009 13:08:03 +0100 Subject: IcedTea 1.11 on Fedora 10 - Missing java.util.Scanner In-Reply-To: References: <17c6771e0908140500n4d3a515epdafb8a9dee07fbd0@mail.gmail.com> <17c6771e0908170649i73ffa910wec65ceba59d62127@mail.gmail.com> <17c6771e0908180351l463f75f7t87c06cc209284080@mail.gmail.com> <17c6771e0908180432x5d9db0caje9c5ac084fd3e129@mail.gmail.com> Message-ID: <17c6771e0908180508j72bfe405kc6156b954ef22e45@mail.gmail.com> 2009/8/18 Michael Franz : > echo $? > 1 Ok, then: if $JAVA -classpath . $BYTECODE; >&AS_MESSAGE_LOG_FD 2>&1; then it_cv_cp30436=no; else it_cv_cp30436=yes; should set it_cv_cp30436 to yes. I don't know why it doesn't, I'm baffled. Our regular builds don't encounter this problem, and I know at least mjw's build uses gcj 4.3 on Debian stable, the same version as is used in F10. > > > On Tue, Aug 18, 2009 at 7:32 AM, Andrew John Hughes > wrote: >> >> 2009/8/18 Michael Franz : >> > /usr/lib/jvm/java-gcj/bin/java -classpath . Test >> > failed with NoClassDefFoundError: java.util.Scanner >> > >> > >> > On Tue, Aug 18, 2009 at 6:51 AM, Andrew John Hughes >> > wrote: >> >> >> >> 2009/8/18 Michael Franz : >> >> > From path: >> >> > java -version >> >> > java version "1.6.0_0" >> >> > OpenJDK Runtime Environment (IcedTea6 1.5) (Fedora-20.b16.fc10-i386) >> >> > OpenJDK Server VM (build 14.0-b15, mixed mode) >> >> > >> >> > From config.log >> >> > JAVA=/usr/lib/jvm/java-gcj/bin/java >> >> > java version "1.5.0" >> >> > gij (GNU libgcj) version 4.3.2 20081105 (Red Hat 4.3.2-7) >> >> > >> >> > JAVAC=/use/lib/jvm/java-gcj/bin/javac >> >> > Eclipse Java Compiler 0.883_R34x, 3.4.1 release Copyright IBM Corp >> >> > 2000, >> >> > 2008 >> >> > >> >> >> >> >> >> Bizarre. ?Can you find out what JAVA and JAVAC are set to in >> >> >> config.log and what -version gives for each? >> >> >> >> >> >> 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 >> >> > >> >> > >> >> >> >> Ok, so configure compiles and runs: >> >> >> >> public class Test >> >> { >> >> ?public static void main(String[] args) >> >> ?throws Exception >> >> ?{ >> >> ? ?new java.util.Scanner("Hello"); >> >> ?} >> >> } >> >> >> >> using the following commands: >> >> >> >> /usr/lib/jvm/java-gcj/bin/javac -cp . $JAVACFLAGS Test.java >> >> /usr/lib/jvm/java-gcj/bin/java -classpath . Test >> >> >> >> One (or both) should fail, but they seem to be succeeding. ?Can you >> >> test these manually and see what results you get? >> >> >> >> 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 >> > >> > >> >> Ok, that's the correct behaviour. ?All that remains is to work out why >> this results in no rather than yes for that compiler test. >> What does $? hold after running that command? >> -- >> 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 gnu_andrew at member.fsf.org Tue Aug 18 05:18:48 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 18 Aug 2009 13:18:48 +0100 Subject: Langtools javac task target/source from build.properties in 1.11 In-Reply-To: References: Message-ID: <17c6771e0908180518w1365d5efg74d23c9d39a83c38@mail.gmail.com> 2009/8/18 Michael Franz : > I don't normally follow the openjdk mailing list, but I see this issue was > found back on August 10 with b68.? Will IcedTea still plan on using target > 5?? Or will it be bumping to target 6? > > On Tue, Aug 18, 2009 at 2:16 AM, Michael Franz wrote: >> >> Hi, >> >> I am building using JDK 1.5 as my default, but configured with JDK 6 (this >> is on OS X).? When the langtools section of the build runs I get a Bad >> version number in .class file when the custom task 'pcompile' executes. >> This is because the classes for the task are compile for JDK 6, but then run >> using JDK 5.? The build.properties file has been updated to specify >> source/target as 5 (from 6) but these are not passed to the javac that >> compiles the tools.? To fix this, either the compilation of the tool needs >> to specify the target as 5 or the jvm used to execute the tool needs to be >> the same one used for the rest of the build (in this case 6). >> >> The command line calling ant is: >> >> ANT_OPTS=-Djava.io.tmpdir='/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build/ant-tmp' >> ant -Djdk.version=1.7.0_0 -Dfull.version='1.7.0_0-bsd-b66' >> -Drelease=1.7.0_0 -Dbuild.number=b66 -Djavac.debug=true >> -Ddebug.classfiles=true -Djavac.target=5 -Djavac.source=5 >> -Dboot.java.home=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0 >> -Djavac.executable=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0/bin/javac >> -Dbuild.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build >> -Ddist.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/dist >> build >> >> where boot.javac.home is JDK 6. >> >> So, ant is fired up using JDK 5, but the javac tasks run JDK 6.? Is there >> a way to run the custom tasks using a forked JVM? >> >> Michael > > IcedTea doesn't 'use' any particular target, the output you included is from OpenJDK. The builds I'm doing now (based on b69) already use 7 as target and version. pcompile currently uses the default source/target options of the javac used to build it. I have a fix for this pending review: http://cr.openjdk.java.net/~andrew/ecj/01/webrev.01/ So the problem is that the javac you use to build defaults to a version the java that handles it can't use. I suggest you fix Ant to use the same JVM as OpenJDK uses to bootstrap. -- 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 aph at redhat.com Tue Aug 18 07:57:14 2009 From: aph at redhat.com (Andrew Haley) Date: Tue, 18 Aug 2009 15:57:14 +0100 Subject: Bump icedtea6-1.5 branch to hs14b16. Message-ID: <4A8AC14A.4010707@redhat.com> This fixes a bug that causes a failure in jdb. http://hg.openjdk.java.net/hsx/hsx14/master/rev/def3a48c386b Andrew. From aph at redhat.com Tue Aug 18 07:58:17 2009 From: aph at redhat.com (Andrew Haley) Date: Tue, 18 Aug 2009 15:58:17 +0100 Subject: Bump icedtea6-1.5 branch to hs14b16. Message-ID: <4A8AC189.9020804@redhat.com> This fixes a bug that causes a failure in jdb. http://hg.openjdk.java.net/hsx/hsx14/master/rev/def3a48c386b Andrew. 2009-08-18 Andrew Haley * hotspot.map: Bump to hs14b16. diff -r eedc0ac36eaa hotspot.map --- a/hotspot.map Fri Aug 07 10:10:52 2009 -0400 +++ b/hotspot.map Tue Aug 18 15:54:43 2009 +0100 @@ -1,3 +1,2 @@ # version changeset md5sum -default 25a020f13592 dbd7aca5544d1aeebf0eadd45d29d08e - +default 09f7962b8b44 600284e870609a7531163bf2972c573b From mvfranz at gmail.com Tue Aug 18 08:08:04 2009 From: mvfranz at gmail.com (mvfranz at gmail.com) Date: Tue, 18 Aug 2009 15:08:04 +0000 Subject: Langtools javac task target/source from build.properties in 1.11 In-Reply-To: <17c6771e0908180518w1365d5efg74d23c9d39a83c38@mail.gmail.com> Message-ID: <0016367b63e6a2889704716be222@google.com> On Aug 18, 2009 8:18am, Andrew John Hughes wrote: > 2009/8/18 Michael Franz mvfranz at gmail.com>: > > I don't normally follow the openjdk mailing list, but I see this issue > was > > found back on August 10 with b68. Will IcedTea still plan on using > target > > 5? Or will it be bumping to target 6? > > > > On Tue, Aug 18, 2009 at 2:16 AM, Michael Franz mvfranz at gmail.com> wrote: > >> > >> Hi, > >> > >> I am building using JDK 1.5 as my default, but configured with JDK 6 > (this > >> is on OS X). When the langtools section of the build runs I get a Bad > >> version number in .class file when the custom task 'pcompile' executes. > >> This is because the classes for the task are compile for JDK 6, but > then run > >> using JDK 5. The build.properties file has been updated to specify > >> source/target as 5 (from 6) but these are not passed to the javac that > >> compiles the tools. To fix this, either the compilation of the tool > needs > >> to specify the target as 5 or the jvm used to execute the tool needs > to be > >> the same one used for the rest of the build (in this case 6). > >> > >> The command line calling ant is: > >> > >> > ANT_OPTS=-Djava.io.tmpdir='/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build/ant-tmp' > >> ant -Djdk.version=1.7.0_0 -Dfull.version='1.7.0_0-bsd-b66' > >> -Drelease=1.7.0_0 -Dbuild.number=b66 -Djavac.debug=true > >> -Ddebug.classfiles=true -Djavac.target=5 -Djavac.source=5 > >> > -Dboot.java.home=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0 > >> > -Djavac.executable=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0/bin/javac > >> > -Dbuild.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build > >> > -Ddist.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/dist > >> build > >> > >> where boot.javac.home is JDK 6. > >> > >> So, ant is fired up using JDK 5, but the javac tasks run JDK 6. Is > there > >> a way to run the custom tasks using a forked JVM? > >> > >> Michael > IcedTea doesn't 'use' any particular target, the output you included > is from OpenJDK. The builds I'm doing now (based on b69) already use > 7 as target and version. I said 'use' since there are patches that change the target and source from 6 to 5. Maybe I don't understand the purpose of those patches. > pcompile currently uses the default source/target options of the javac > used to build it. I have a fix for this pending review: > http://cr.openjdk.java.net/~andrew/ecj/01/webrev.01/ > So the problem is that the javac you use to build defaults to a > version the java that handles it can't use. I suggest you fix Ant to > use the same JVM as OpenJDK uses to bootstrap. I have found that jaxp and jaxws will require the same patches. > -- > 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090818/48b996c5/attachment.html From gnu_andrew at member.fsf.org Tue Aug 18 09:22:48 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 18 Aug 2009 17:22:48 +0100 Subject: Langtools javac task target/source from build.properties in 1.11 In-Reply-To: <0016367b63e6a2889704716be222@google.com> References: <17c6771e0908180518w1365d5efg74d23c9d39a83c38@mail.gmail.com> <0016367b63e6a2889704716be222@google.com> Message-ID: <17c6771e0908180922q17d2e1bes23e40b618c86074b@mail.gmail.com> 2009/8/18 : > On Aug 18, 2009 8:18am, Andrew John Hughes > wrote: >> 2009/8/18 Michael Franz mvfranz at gmail.com>: >> >> > I don't normally follow the openjdk mailing list, but I see this issue >> > was >> >> > found back on August 10 with b68.? Will IcedTea still plan on using >> > target >> >> > 5?? Or will it be bumping to target 6? >> >> > >> >> > On Tue, Aug 18, 2009 at 2:16 AM, Michael Franz mvfranz at gmail.com> wrote: >> >> >> >> >> >> Hi, >> >> >> >> >> >> I am building using JDK 1.5 as my default, but configured with JDK 6 >> >> (this >> >> >> is on OS X).? When the langtools section of the build runs I get a Bad >> >> >> version number in .class file when the custom task 'pcompile' executes. >> >> >> This is because the classes for the task are compile for JDK 6, but >> >> then run >> >> >> using JDK 5.? The build.properties file has been updated to specify >> >> >> source/target as 5 (from 6) but these are not passed to the javac that >> >> >> compiles the tools.? To fix this, either the compilation of the tool >> >> needs >> >> >> to specify the target as 5 or the jvm used to execute the tool needs to >> >> be >> >> >> the same one used for the rest of the build (in this case 6). >> >> >> >> >> >> The command line calling ant is: >> >> >> >> >> >> >> >> ANT_OPTS=-Djava.io.tmpdir='/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build/ant-tmp' >> >> >> ant -Djdk.version=1.7.0_0 -Dfull.version='1.7.0_0-bsd-b66' >> >> >> -Drelease=1.7.0_0 -Dbuild.number=b66 -Djavac.debug=true >> >> >> -Ddebug.classfiles=true -Djavac.target=5 -Djavac.source=5 >> >> >> >> >> -Dboot.java.home=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0 >> >> >> >> >> -Djavac.executable=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/bootstrap/jdk1.6.0/bin/javac >> >> >> >> >> -Dbuild.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/build >> >> >> >> >> -Ddist.dir=/Users/mfranz/developer/icedtea/icedtea-1.11-bsd/openjdk-ecj/build/bsd-i586/langtools/dist >> >> >> build >> >> >> >> >> >> where boot.javac.home is JDK 6. >> >> >> >> >> >> So, ant is fired up using JDK 5, but the javac tasks run JDK 6.? Is >> >> there >> >> >> a way to run the custom tasks using a forked JVM? >> >> >> >> >> >> Michael >> >> >> IcedTea doesn't 'use' any particular target, the output you included >> >> is from OpenJDK. ?The builds I'm doing now (based on b69) already use >> >> 7 as target and version. >> >> > I said 'use' since there are patches that change the target and source from > 6 to 5. Maybe I don't understand the purpose of those patches. > The patches I posted to the OpenJDK lists will, once approved, go into the appropriate JDK repositories and reach IcedTea etc. that way. We try to avoid posting patches to IcedTea itself as much as possible now that patches are being accepted upstream. >> >> pcompile currently uses the default source/target options of the javac >> >> used to build it. ?I have a fix for this pending review: >> >> http://cr.openjdk.java.net/~andrew/ecj/01/webrev.01/ >> >> So the problem is that the javac you use to build defaults to a >> >> version the java that handles it can't use. ?I suggest you fix Ant to >> >> use the same JVM as OpenJDK uses to bootstrap. >> > > I have found that jaxp and jaxws will require the same patches. Then you seem to be experiencing a different issue, as I didn't need to patch these. >> -- >> >> 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 bugzilla-daemon at icedtea.classpath.org Tue Aug 18 09:24:16 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 18 Aug 2009 16:24:16 +0000 Subject: [Bug 379] JVM failed while running an external library Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=379 mwong at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mwong at redhat.com ------- Comment #1 from mwong at redhat.com 2009-08-18 16:24 ------- Can you post the steps you took or a sample test case of some sort to reproduce this problem? Thanks. Man Lung Wong -- 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 Aug 18 11:58:20 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 18 Aug 2009 18:58:20 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 mwong at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mwong at redhat.com ------- Comment #2 from mwong at redhat.com 2009-08-18 18:58 ------- So under RHEL 5.3 it also uses the Asia/Amman from /usr/share/javazi and not somewhere else right? -- 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 Aug 18 19:59:26 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 19 Aug 2009 02:59:26 +0000 Subject: [Bug 380] New: An unexpected error has been detected by Java Runtime Environment: Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=380 Summary: An unexpected error has been detected by Java Runtime Environment: Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: blocker Priority: P1 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: balaiitm at gmail.com SIGSEGV (0xb) at pc=0x00002b5cc3b23821, pid=23417, tid=1098963264 # # Java VM: OpenJDK 64-Bit Server VM (1.6.0-b09 mixed mode linux-amd64) # Problematic frame: # V [libjvm.so+0x20a821] # # 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. Java Threads: ( => current thread ) 0x0000000009af8000 JavaThread "Timer-0" daemon [_thread_blocked, id=23431, stack(0x0000000041ab7000,0x0000000041bb8000)] 0x0000000009983800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=23428, stack(0x0000000041db2000,0x000000004 1eb3000)] =>0x0000000009981c00 JavaThread "CompilerThread1" daemon [_thread_in_native, id=23427, stack(0x000000004170d000,0x00000000418 0e000)] 0x000000000997e000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=23426, stack(0x0000000041494000,0x0000000041595 000)] 0x000000000997cc00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=23425, stack(0x0000000040231000,0x00000000403 32000)] 0x0000000009957000 JavaThread "Finalizer" daemon [_thread_blocked, id=23424, stack(0x00000000419b6000,0x0000000041ab7000)] 0x0000000009955c00 JavaThread "Reference Handler" daemon [_thread_blocked, id=23423, stack(0x00000000409e3000,0x0000000040a e4000)] 0x00000000098e8800 JavaThread "main" [_thread_in_vm, id=23418, stack(0x000000004160c000,0x000000004170d000)] Other Threads: 0x0000000009950400 VMThread [stack: 0x0000000040130000,0x0000000040231000] [id=23422] 0x0000000009985800 WatcherThread [stack: 0x0000000041eb3000,0x0000000041fb4000] [id=23429] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap def new generation total 78656K, used 17214K [0x00002aaaaea50000, 0x00002aaab3fa0000, 0x00002aaab94f0000) eden space 69952K, 12% used [0x00002aaaaea50000, 0x00002aaaaf29fa30, 0x00002aaab2ea0000) from space 8704K, 100% used [0x00002aaab3720000, 0x00002aaab3fa0000, 0x00002aaab3fa0000) to space 8704K, 0% used [0x00002aaab2ea0000, 0x00002aaab2ea0000, 0x00002aaab3720000) tenured generation total 174784K, used 77219K [0x00002aaab94f0000, 0x00002aaac3fa0000, 0x00002aaacea50000) the space 174784K, 44% used [0x00002aaab94f0000, 0x00002aaabe058c28, 0x00002aaabe058e00, 0x00002aaac3fa0000) compacting perm gen total 21248K, used 14077K [0x00002aaacea50000, 0x00002aaacff10000, 0x00002aaad3e50000) the space 21248K, 66% used [0x00002aaacea50000, 0x00002aaacf80f600, 0x00002aaacf80f600, 0x00002aaacff10000) No shared spaces configured. Dynamic libraries: 00400000-00409000 r-xp 00000000 08:15 1554710 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/b in/java 00608000-00609000 rw-p 00008000 08:15 1554710 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/b in/java 098e0000-0c3b9000 rw-p 098e0000 00:00 0 [heap] 40130000-40131000 ---p 40130000 00:00 0 40131000-40231000 rw-p 40131000 00:00 0 40231000-40234000 ---p 40231000 00:00 0 40234000-40332000 rw-p 40234000 00:00 0 409e3000-409e6000 ---p 409e3000 00:00 0 409e6000-40ae4000 rw-p 409e6000 00:00 0 41494000-41497000 ---p 41494000 00:00 0 41497000-41595000 rw-p 41497000 00:00 0 4160c000-4160f000 ---p 4160c000 00:00 0 4160f000-4170d000 rw-p 4160f000 00:00 0 4170d000-41710000 ---p 4170d000 00:00 0 41710000-4180e000 rw-p 41710000 00:00 0 4180e000-41811000 rwxp 4180e000 00:00 0 41811000-4190f000 rw-p 41811000 00:00 0 419b6000-419b9000 ---p 419b6000 00:00 0 419b9000-41ab7000 rw-p 419b9000 00:00 0 41ab7000-41aba000 ---p 41ab7000 00:00 0 41aba000-41bb8000 rw-p 41aba000 00:00 0 41db2000-41db5000 ---p 41db2000 00:00 0 41db5000-41eb3000 rw-p 41db5000 00:00 0 41eb3000-41eb4000 ---p 41eb3000 00:00 0 41eb4000-41fb4000 rw-p 41eb4000 00:00 0 38d9600000-38d9614000 r-xp 00000000 08:15 2170931 /usr/lib64/libz.so.1.2.3 38d9614000-38d9813000 ---p 00014000 08:15 2170931 /usr/lib64/libz.so.1.2.3 38d9813000-38d9814000 rw-p 00013000 08:15 2170931 /usr/lib64/libz.so.1.2.3 2aaaaaaab000-2aaaaaab3000 r--s 00061000 08:15 1554783 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/ext/gnome-java-bridge.jar2aaaaaab3000-2aaaaaab7000 r--s 00079000 08:15 1554743 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/jsse.jar 2aaaaaadc000-2aaaaaae3000 r-xp 00000000 08:17 1664678 /lib64/librt-2.5.so 2aaaaaae3000-2aaaaace3000 ---p 00007000 08:17 1664678 /lib64/librt-2.5.so 2aaaaace3000-2aaaaace4000 r--p 00007000 08:17 1664678 /lib64/librt-2.5.so 2aaaaace4000-2aaaaace5000 rw-p 00008000 08:17 1664678 /lib64/librt-2.5.so 2aaaaace5000-2aaaaace6000 r--p 2aaaaace5000 00:00 0 2aaaaace6000-2aaaaace7000 rwxp 2aaaaace6000 00:00 0 2aaaaace7000-2aaaaacef000 r-xp 00000000 08:15 1554766 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/native_threads/libhpi.so 2aaaaacef000-2aaaaaeee000 ---p 00008000 08:15 1554766 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/native_threads/libhpi.so 2aaaaaeee000-2aaaaaeef000 rw-p 00007000 08:15 1554766 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/native_threads/libhpi.so 2aaaaaeef000-2aaaaaef0000 rw-p 2aaaaaeef000 00:00 0 2aaaaaef0000-2aaaaaef8000 rw-s 00000000 08:17 68753 /tmp/hsperfdata_root/23417 2aaaaaf1f000-2aaaaaf34000 r-xp 00000000 08:17 1664660 /lib64/libnsl-2.5.so 2aaaaaf34000-2aaaab133000 ---p 00015000 08:17 1664660 /lib64/libnsl-2.5.so 2aaaab133000-2aaaab134000 r--p 00014000 08:17 1664660 /lib64/libnsl-2.5.so 2aaaab134000-2aaaab135000 rw-p 00015000 08:17 1664660 /lib64/libnsl-2.5.so 2aaaab135000-2aaaab137000 rw-p 2aaaab135000 00:00 0 2aaaab137000-2aaaab141000 r-xp 00000000 08:17 1664666 /lib64/libnss_files-2.5.so 2aaaab141000-2aaaab340000 ---p 0000a000 08:17 1664666 /lib64/libnss_files-2.5.so 2aaaab340000-2aaaab341000 r--p 00009000 08:17 1664666 /lib64/libnss_files-2.5.so 2aaaab341000-2aaaab342000 rw-p 0000a000 08:17 1664666 /lib64/libnss_files-2.5.so 2aaaab342000-2aaaab350000 r-xp 00000000 08:15 1554764 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libverify.so 2aaaab350000-2aaaab54f000 ---p 0000e000 08:15 1554764 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libverify.so 2aaaab54f000-2aaaab551000 rw-p 0000d000 08:15 1554764 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libverify.so2aaaab54f000-2aaaab551000 rw-p 0000d000 08:15 1554764 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libverify.so 2aaaab551000-2aaaab57d000 r-xp 00000000 08:15 1554740 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libjava.so 2aaaab57d000-2aaaab77c000 ---p 0002c000 08:15 1554740 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libjava.so 2aaaab77c000-2aaaab780000 rw-p 0002b000 08:15 1554740 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libjava.so 2aaaab780000-2aaaab787000 r-xp 00000000 08:15 1554765 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libzip.so 2aaaab787000-2aaaab986000 ---p 00007000 08:15 1554765 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libzip.so 2aaaab986000-2aaaab987000 rw-p 00006000 08:15 1554765 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/libzip.so 2aaaab987000-2aaaabcf7000 rwxp 2aaaab987000 00:00 0 2aaaabcf7000-2aaaae987000 rwxp 2aaaabcf7000 00:00 0 2aaaae987000-2aaaae995000 rwxp 2aaaae987000 00:00 0 2aaaae995000-2aaaaea47000 rwxp 2aaaae995000 00:00 0 2aaaaea50000-2aaab3fa0000 rwxp 2aaaaea50000 00:00 0 2aaab3fa0000-2aaab94f0000 rwxp 2aaab3fa0000 00:00 0 2aaab94f0000-2aaac3fa0000 rwxp 2aaab94f0000 00:00 0 2aaac3fa0000-2aaacea50000 rwxp 2aaac3fa0000 00:00 0 2aaacea50000-2aaacff10000 rwxp 2aaacea50000 00:00 0 2aaacff10000-2aaad3e50000 rwxp 2aaacff10000 00:00 0 2aaad3e50000-2aaad3e7b000 rwxp 2aaad3e50000 00:00 0 2aaad3e7b000-2aaad3ea5000 rwxp 2aaad3e7b000 00:00 0 2aaad3ea5000-2aaad3efb000 rwxp 2aaad3ea5000 00:00 0 2aaad3efb000-2aaad3f50000 rwxp 2aaad3efb000 00:00 0 2aaad3f50000-2aaad3f5b000 rwxp 2aaad3f50000 00:00 0 2aaad3f5b000-2aaad3f7a000 rwxp 2aaad3f5b000 00:00 0 2aaad3f7a000-2aaad3fd1000 rwxp 2aaad3f7a000 00:00 0 2aaad3fd1000-2aaad4026000 rwxp 2aaad3fd1000 00:00 0 2aaad4026000-2aaad4031000 rwxp 2aaad4026000 00:00 0 2aaad4031000-2aaad4051000 rwxp 2aaad4031000 00:00 0 2aaad4051000-2aaad4079000 rw-p 2aaad4051000 00:00 0 2aaad4079000-2aaad420a000 r--s 033e8000 08:15 1554831 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/rt.jar 2aaad420a000-2aaad423d000 rw-p 2aaad420a000 00:00 0 2aaad423d000-2aaad7813000 r--p 00000000 08:15 1337906 /usr/lib/locale/locale-archive 2aaad7813000-2aaad7864000 r--s 00319000 08:17 820602 /root/sipex/sipx/sipXconfig/lib/gwt-user-1.7.0.jar 2aaad7864000-2aaad78f2000 r--s 00a0f000 08:17 820641 /root/sipex/sipx/sipXconfig/lib/gwt-dev-linux-1.7.0. jar 2aaad78f2000-2aaad78f4000 r--s 00001000 08:15 1554782 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/ext/dnsns.jar 2aaad78f4000-2aaad78f8000 r--s 00076000 08:15 1554784 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/ext/localedata.jar 2aaad78f8000-2aaad78fc000 r--s 00037000 08:15 1554787 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/ext/sunpkcs11.jar 2aaad78fc000-2aaad78ff000 r--s 00031000 08:15 1554786 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/ext/sunjce_provider.jar 2b5cc2d80000-2b5cc2d9c000 r-xp 00000000 08:17 1666212 /lib64/ld-2.5.so 2b5cc2d9c000-2b5cc2d9e000 rw-p 2b5cc2d9c000 00:00 0 2b5cc2f9b000-2b5cc2f9c000 r--p 0001b000 08:17 1666212 /lib64/ld-2.5.so 2b5cc2f9c000-2b5cc2f9d000 rw-p 0001c000 08:17 1666212 /lib64/ld-2.5.so 2b5cc2f9d000-2b5cc2fb3000 r-xp 00000000 08:17 1664674 /lib64/libpthread-2.5.so 2b5cc2fb3000-2b5cc31b2000 ---p 00016000 08:17 1664674 /lib64/libpthread-2.5.so 2b5cc31b2000-2b5cc31b3000 r--p 00015000 08:17 1664674 /lib64/libpthread-2.5.so 2b5cc31b3000-2b5cc31b4000 rw-p 00016000 08:17 1664674 /lib64/libpthread-2.5.so 2b5cc31b4000-2b5cc31b8000 rw-p 2b5cc31b4000 00:00 0 2b5cc31b8000-2b5cc31bc000 r-xp 00000000 08:15 1554722 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/jli/libjli.so 2b5cc31bc000-2b5cc33bb000 ---p 00004000 08:15 1554722 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/jli/libjli.so 2b5cc33bb000-2b5cc33bc000 rw-p 00003000 08:15 1554722 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/amd64/jli/libjli.so 2b5cc33bc000-2b5cc33bd000 rw-p 2b5cc33bc000 00:00 0 2b5cc33bd000-2b5cc33bf000 r-xp 00000000 08:17 1664656 /lib64/libdl-2.5.so 2b5cc33bf000-2b5cc35bf000 ---p 00002000 08:17 1664656 /lib64/libdl-2.5.so 2b5cc35bf000-2b5cc35c0000 r--p 00002000 08:17 1664656 /lib64/libdl-2.5.so 2b5cc35c0000-2b5cc35c1000 rw-p 00003000 08:17 1664656 /lib64/libdl-2.5.so 2b5cc35c1000-2b5cc370d000 r-xp 00000000 08:17 1664650 /lib64/libc-2.5.so 2b5cc370d000-2b5cc390d000 ---p 0014c000 08:17 1664650 /lib64/libc-2.5.soVM Arguments: jvm_args: -Xmx512M -Xms256m java_command: com.google.gwt.dev.Compiler -style PRETTY -war /root/sipex/sipx/sipXconfig/gwt/classes/gwt org.sipfoundry.sipxc onfig.userportal.user_phonebook_search Launcher Type: SUN_STANDARD Environment Variables: CLASSPATH= PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin: /usr/X11R6/bin:/root/bin LD_LIBRARY_PATH=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x 86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/local/lib:/usr/lib:/lib SHELL=/bin/bash DISPLAY=:0.0 Signal Handlers: SIGSEGV: [libjvm.so+0x618c70], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x618c70], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x4dcd80], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x4e02a0], sa_mask[0]=0x00000004, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGTERM: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x4de1b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:CentOS release 5.3 (Final) uname:Linux 2.6.18-128.2.1.el5 #1 SMP Tue Jul 14 06:36:37 EDT 2009 x86_64 libc:glibc 2.5 NPTL 2.5 rlimit: STACK 10240k, CORE 0k, NPROC 15357, NOFILE 1024, AS infinity load average:0.73 0.37 0.65 CPU:total 1 (1 cores per cpu, 1 threads per core) family 15 model 95 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxex t, 3dnow, 3dnowext Memory: 4k page, physical 1930032k(274928k free), swap 2000052k(1999852k free) vm_info: OpenJDK 64-Bit Server VM (1.6.0-b09) for linux-amd64 JRE (1.6.0-b09), built on Aug 8 2009 09:10:20 by "mockbuild" w ith gcc 4.1.2 20080704 (Red Hat 4.1.2-44) time: Wed Aug 19 02:43:56 2009 elapsed time: 17 seconds 2b5cc390d000-2b5cc3911000 r--p 0014c000 08:17 1664650 /lib64/libc-2.5.so 2aaaaaab3000-2aaaaaab7000 r--s 00079000 08:15 1554743 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/l ib/jsse.jar -- 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 Aug 18 20:01:31 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 19 Aug 2009 03:01:31 +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 ------- Comment #1 from balaiitm at gmail.com 2009-08-19 03:01 ------- Created an attachment (id=254) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=254&action=view) An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00002b5cc3b23821, pid=23417, tid=1098963264 # # Java VM: OpenJDK 64-Bit Server VM (1.6.0-b09 mixed mode l -- 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 Aug 19 06:51:57 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 19 Aug 2009 14:51:57 +0100 Subject: ARM interpreter build improvements Message-ID: <20090819135157.GB3329@redhat.com> Hi all, This patch causes the ARM interpreter's bytecodes file to be generated at build time rather than having a pregenerated version in the repo. Can someone with an ARM box please test this for me? I've tested it as much as I can without one. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- A non-text attachment was scrubbed... Name: patch.gz Type: application/x-gzip Size: 45862 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090819/ab9e5bae/patch.gz From xerxes at zafena.se Wed Aug 19 07:32:41 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Wed, 19 Aug 2009 16:32:41 +0200 Subject: [patch] make shark up to date with llvm 2.6svn API changes before LLVM API freeze Message-ID: <4A8C0D09.5000502@zafena.se> Greetings, im back from vacation to discover yet more llvm api changes to deal with in order to build shark with the llvm 2.6svn trunk. The attached patch makes shark buildable again using the svn trunk and i have tested this patch with llvm 79415. The llvm API freeze are on next Friday 21 of august so hopefully we will not have to deal with any more major API changes for a while after that. Cheers Xerxes -------------- next part -------------- A non-text attachment was scrubbed... Name: llvm79415.patch Type: text/x-patch Size: 7507 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090819/526bf83c/llvm79415.patch From xerxes at zafena.se Wed Aug 19 07:36:53 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Wed, 19 Aug 2009 16:36:53 +0200 Subject: [patch] make shark up to date with llvm 2.6svn API changes before LLVM API freeze In-Reply-To: <4A8C0D09.5000502@zafena.se> References: <4A8C0D09.5000502@zafena.se> Message-ID: <4A8C0E05.5020405@zafena.se> Xerxes R?nby skrev: > Greetings, im back from vacation to discover yet more llvm api changes > to deal with in order to build shark with the llvm 2.6svn trunk. > > The attached patch makes shark buildable again using the svn trunk and i > have tested this patch with llvm 79415. > > The llvm API freeze are on next Friday 21 of august so hopefully we will > not have to deal with any more major API changes for a while after that. > > Cheers > Xerxes > I will clean the patch up for whitespaces and write a decent changelog before i push, i was a bit in a hurry and wanted to post this to the list before the end of the day since i know there are other shark hackers who wants to compile the latest trunk. Enjoy. And have a great evening! Xerxes From ed at camswl.com Wed Aug 19 11:03:07 2009 From: ed at camswl.com (Edward Nevill) Date: Wed, 19 Aug 2009 19:03:07 +0100 Subject: ARM interpreter build improvements Message-ID: <200908191803.n7JI37wt013899@parsley.camswl.com> Thanks for doing this Gary. I'll test it. Are you sure you wouldn't like an ARM board on your desk? Regards, Ed. >Hi all, > >This patch causes the ARM interpreter's bytecodes file to be generated >at build time rather than having a pregenerated version in the repo. >Can someone with an ARM box please test this for me? I've tested it as >much as I can without one. > >Cheers, >Gary From aph at redhat.com Wed Aug 19 07:53:29 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 19 Aug 2009 15:53:29 +0100 Subject: ARM interpreter build improvements In-Reply-To: <200908191803.n7JI37wt013899@parsley.camswl.com> References: <200908191803.n7JI37wt013899@parsley.camswl.com> Message-ID: <4A8C11E9.9050607@redhat.com> Edward Nevill wrote: > Thanks for doing this Gary. I'll test it. > > Are you sure you wouldn't like an ARM board on your desk? Beware of Geeks bearing gifts... I warn Gary now that, should you accept this, you'll be spending an eternity waiting for the thing. Beware! Bad enough that one of the Red Hat team has one of these time sinks. ;-) Andrew. From gbenson at redhat.com Wed Aug 19 07:57:56 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 19 Aug 2009 15:57:56 +0100 Subject: ARM interpreter build improvements In-Reply-To: <200908191803.n7JI37wt013899@parsley.camswl.com> References: <200908191803.n7JI37wt013899@parsley.camswl.com> Message-ID: <20090819145755.GD3329@redhat.com> Thank you. And no, I have plenty enough on my plate with PowerPC! :) Cheers, Gary Edward Nevill wrote: > Thanks for doing this Gary. I'll test it. > > Are you sure you wouldn't like an ARM board on your desk? > > Regards, > Ed. > > > Hi all, > > > > This patch causes the ARM interpreter's bytecodes file to be > > generated at build time rather than having a pregenerated version > > in the repo. Can someone with an ARM box please test this for me? > > I've tested it as much as I can without one. > > > > Cheers, > > Gary From mvfranz at gmail.com Wed Aug 19 17:31:42 2009 From: mvfranz at gmail.com (Michael Franz) Date: Wed, 19 Aug 2009 20:31:42 -0400 Subject: Using A Sun based Javac to compile rt-closed.jar different from using gcj Message-ID: Hi, It has taken a few days but I have figured out why my rt-closed.jar is missing a bunch of classes. I am building on OS X and using either Apple's JKD or an older version of OpenJDK. It seems that on Fedora the creation of the rt-closed.jar using gcj to compile the sources in rt/ . The class files are created in lib/rt, this is then jar'ed to create rt-closed.jar. It seems that gcj (and ecj) will put classes that are reference (directly/indirectly) by the classes it compile into the output directory. This explains why lib/rt has class files that are not in rt. Since Apple's JDK or OpenJDK itself do not do this the rt-closed.jar is missing classes that are assumed to be there later causing the bootstrap process to fail. Is this functionality of gcj and ecj an undocumented switch in OpenJDK? Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090819/8addd0bf/attachment.html From bugzilla-daemon at icedtea.classpath.org Thu Aug 20 01:22:23 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 08:22:23 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #3 from ptisnovs at redhat.com 2009-08-20 08:22 ------- On my 32-bit RHEL 5.3, there is no such directory (it depends on installed SW, of course), so the IcedTea uses its own zoneinfo (jre/lib/zi). -- 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 Thu Aug 20 04:58:33 2009 From: ed at camswl.com (Edward Nevill) Date: Thu, 20 Aug 2009 12:58:33 +0100 Subject: ARM interpreter build improvements Message-ID: <200908201158.n7KBwXuS020233@parsley.camswl.com> OK. I set a build going last night. Unfortunately I had the JAVA_HOME set so the build failed. However, before it failed it had correctly created the "bytecodes_arm.s" file and this file was binary identical to the previous "bytecodes.s". cppInterpreter_asm.S had also correctly been modified to include "bytecodes_arm.s" instead of bytecodes.s. So, I am happy with this change. Please commit. Regards, Ed. >Hi all, > >This patch causes the ARM interpreter's bytecodes file to be generated >at build time rather than having a pregenerated version in the repo. >Can someone with an ARM box please test this for me? I've tested it as >much as I can without one. > >Cheers, >Gary From gbenson at redhat.com Thu Aug 20 02:29:17 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 20 Aug 2009 09:29:17 +0000 Subject: changeset in /hg/icedtea6: 2009-08-20 Gary Benson changeset 6d3eba5c3458 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=6d3eba5c3458 description: 2009-08-20 Gary Benson * ports/hotspot/src/cpu/zero/vm/bc.def: Renamed to... * ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def: New file. * Makefile.am: Build bytecodes_arm.s from bytecodes_arm.def. * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: Include bytecodes_arm.s rather than bytecodes.s. * ports/hotspot/src/cpu/zero/vm/bytecodes.s: Removed. * .hgignore: Updated. diffstat: 7 files changed, 7895 insertions(+), 20665 deletions(-) .hgignore | 1 ChangeLog | 16 Makefile.am | 18 ports/hotspot/src/cpu/zero/vm/bc.def | 7863 ------------ ports/hotspot/src/cpu/zero/vm/bytecodes.s |12797 -------------------- ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def | 7863 ++++++++++++ ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 2 diffs (truncated from 28634 to 500 lines): diff -r ef80530c169e -r 6d3eba5c3458 .hgignore --- a/.hgignore Tue Aug 18 10:01:52 2009 +0100 +++ b/.hgignore Thu Aug 20 05:24:04 2009 -0400 @@ -469,3 +469,4 @@ pulseaudio/.*jar pulseaudio/.*jar pulse-java.jar hotspot.tar.gz +ports/hotspot/src/cpu/zero/vm/bytecodes_arm.s diff -r ef80530c169e -r 6d3eba5c3458 ChangeLog --- a/ChangeLog Tue Aug 18 10:01:52 2009 +0100 +++ b/ChangeLog Thu Aug 20 05:24:04 2009 -0400 @@ -1,3 +1,17 @@ 2009-08-18 Edward Nevill + + * ports/hotspot/src/cpu/zero/vm/bc.def: Renamed to... + * ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def: New file. + + * Makefile.am: Build bytecodes_arm.s from bytecodes_arm.def. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: Include + bytecodes_arm.s rather than bytecodes.s. + + * ports/hotspot/src/cpu/zero/vm/bytecodes.s: Removed. + + * .hgignore: Updated. + 2009-08-18 Edward Nevill Added ARM assembler interpreter @@ -33,7 +47,7 @@ 2009-08-18 Edward Nevill +2009-08-14 Deepak Bhole * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc (newMessageOnBus): Handle additional request types. diff -r ef80530c169e -r 6d3eba5c3458 Makefile.am --- a/Makefile.am Tue Aug 18 10:01:52 2009 +0100 +++ b/Makefile.am Thu Aug 20 05:24:04 2009 -0400 @@ -456,6 +456,17 @@ if WITH_VISUALVM rm -f $(VISUALVM_SRC_ZIP) rm -f $(NETBEANS_PROFILER_SRC_ZIP) endif + +# Build asm interpreter bytecodes +ZERO_ASM_BC_DEF = $(abs_top_srcdir)/ports/hotspot/src/cpu/zero/vm/bytecodes_$(ZERO_LIBARCH).def +ZERO_ASM_BC_ASM = $(abs_top_srcdir)/ports/hotspot/src/cpu/zero/vm/bytecodes_$(ZERO_LIBARCH).s +ZERO_ASM_BC_ASM_COND = $(shell test -f ${ZERO_ASM_BC_DEF} && echo ${ZERO_ASM_BC_ASM}) + +$(abs_top_srcdir)/mkbc: $(abs_top_srcdir)/mkbc.c + $(CC) $< -o $@ + +${ZERO_ASM_BC_ASM}: ${ZERO_ASM_BC_DEF} $(abs_top_srcdir)/mkbc + $(abs_top_srcdir)/mkbc $< $@ # Link ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp @@ -1122,7 +1133,7 @@ stamps/icedtea.stamp: stamps/bootstrap-d stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) $(ICEDTEANPPLUGIN_TARGET) \ extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ - stamps/pulse-java.stamp + stamps/pulse-java.stamp $(ZERO_ASM_BC_ASM_COND) $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ -C openjdk \ @@ -1207,7 +1218,7 @@ stamps/icedtea-debug.stamp: stamps/boots stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) $(ICEDTEANPPLUGIN_TARGET) \ extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ - stamps/pulse-java.stamp + stamps/pulse-java.stamp $(ZERO_ASM_BC_ASM_COND) $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ -C openjdk \ @@ -1319,7 +1330,8 @@ stamps/native-ecj.stamp: stamps/icedtea-ecj.stamp: stamps/bootstrap-directory-symlink-ecj.stamp \ stamps/hotspot-tools.stamp stamps/plugs.stamp \ - stamps/ports-ecj.stamp stamps/patch-ecj.stamp stamps/cacao.stamp + stamps/ports-ecj.stamp stamps/patch-ecj.stamp stamps/cacao.stamp \ + $(ZERO_ASM_BC_ASM_COND) $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV_ECJ) \ -C openjdk-ecj/ \ diff -r ef80530c169e -r 6d3eba5c3458 ports/hotspot/src/cpu/zero/vm/bc.def --- a/ports/hotspot/src/cpu/zero/vm/bc.def Tue Aug 18 10:01:52 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7863 +0,0 @@ -nop = 0x00, 1 -aconst_null = 0x01, 1 -iconst_m1 = 0x02, 1 -iconst_0 = 0x03, 1 -iconst_1 = 0x04, 1 -iconst_2 = 0x05, 1 -iconst_3 = 0x06, 1 -iconst_4 = 0x07, 1 -iconst_5 = 0x08, 1 -lconst_0 = 0x09, 1 -lconst_1 = 0x0a, 1 -fconst_0 = 0x0b, 1 -fconst_1 = 0x0c, 1 -fconst_2 = 0x0d, 1 -dconst_0 = 0x0e, 1 -dconst_1 = 0x0f, 1 -bipush = 0x10, 2 -sipush = 0x11, 3 -ldc = 0x12, 2 -ldc_w = 0x13, 3 -ldc2_w = 0x14, 3 -iload = 0x15, 2 -lload = 0x16, 2 -fload = 0x17, 2 -dload = 0x18, 2 -aload = 0x19, 2 -iload_0 = 0x1a, 1 -iload_1 = 0x1b, 1 -iload_2 = 0x1c, 1 -iload_3 = 0x1d, 1 -lload_0 = 0x1e, 1 -lload_1 = 0x1f, 1 -lload_2 = 0x20, 1 -lload_3 = 0x21, 1 -fload_0 = 0x22, 1 -fload_1 = 0x23, 1 -fload_2 = 0x24, 1 -fload_3 = 0x25, 1 -dload_0 = 0x26, 1 -dload_1 = 0x27, 1 -dload_2 = 0x28, 1 -dload_3 = 0x29, 1 -aload_0 = 0x2a, 1 -aload_1 = 0x2b, 1 -aload_2 = 0x2c, 1 -aload_3 = 0x2d, 1 -iaload = 0x2e, 1 -laload = 0x2f, 1 -faload = 0x30, 1 -daload = 0x31, 1 -aaload = 0x32, 1 -baload = 0x33, 1 -caload = 0x34, 1 -saload = 0x35, 1 -istore = 0x36, 2 -lstore = 0x37, 2 -fstore = 0x38, 2 -dstore = 0x39, 2 -astore = 0x3a, 2 -istore_0 = 0x3b, 1 -istore_1 = 0x3c, 1 -istore_2 = 0x3d, 1 -istore_3 = 0x3e, 1 -lstore_0 = 0x3f, 1 -lstore_1 = 0x40, 1 -lstore_2 = 0x41, 1 -lstore_3 = 0x42, 1 -fstore_0 = 0x43, 1 -fstore_1 = 0x44, 1 -fstore_2 = 0x45, 1 -fstore_3 = 0x46, 1 -dstore_0 = 0x47, 1 -dstore_1 = 0x48, 1 -dstore_2 = 0x49, 1 -dstore_3 = 0x4a, 1 -astore_0 = 0x4b, 1 -astore_1 = 0x4c, 1 -astore_2 = 0x4d, 1 -astore_3 = 0x4e, 1 -iastore = 0x4f, 1 -lastore = 0x50, 1 -fastore = 0x51, 1 -dastore = 0x52, 1 -aastore = 0x53, 1 -bastore = 0x54, 1 -castore = 0x55, 1 -sastore = 0x56, 1 -pop = 0x57, 1 -pop2 = 0x58, 1 -dup = 0x59, 1 -dup_x1 = 0x5a, 1 -dup_x2 = 0x5b, 1 -dup2 = 0x5c, 1 -dup2_x1 = 0x5d, 1 -dup2_x2 = 0x5e, 1 -swap = 0x5f, 1 -iadd = 0x60, 1 -ladd = 0x61, 1 -fadd = 0x62, 1 -dadd = 0x63, 1 -isub = 0x64, 1 -lsub = 0x65, 1 -fsub = 0x66, 1 -dsub = 0x67, 1 -imul = 0x68, 1 -lmul = 0x69, 1 -fmul = 0x6a, 1 -dmul = 0x6b, 1 -idiv = 0x6c, 1 -ldiv = 0x6d, 1 -fdiv = 0x6e, 1 -ddiv = 0x6f, 1 -irem = 0x70, 1 -lrem = 0x71, 1 -frem = 0x72, 1 -drem = 0x73, 1 -ineg = 0x74, 1 -lneg = 0x75, 1 -fneg = 0x76, 1 -dneg = 0x77, 1 -ishl = 0x78, 1 -lshl = 0x79, 1 -ishr = 0x7a, 1 -lshr = 0x7b, 1 -iushr = 0x7c, 1 -lushr = 0x7d, 1 -iand = 0x7e, 1 -land = 0x7f, 1 -ior = 0x80, 1 -lor = 0x81, 1 -ixor = 0x82, 1 -lxor = 0x83, 1 -iinc = 0x84, 3 -i2l = 0x85, 1 -i2f = 0x86, 1 -i2d = 0x87, 1 -l2i = 0x88, 1 -l2f = 0x89, 1 -l2d = 0x8a, 1 -f2i = 0x8b, 1 -f2l = 0x8c, 1 -f2d = 0x8d, 1 -d2i = 0x8e, 1 -d2l = 0x8f, 1 -d2f = 0x90, 1 -i2b = 0x91, 1 -i2c = 0x92, 1 -i2s = 0x93, 1 -lcmp = 0x94, 1 -fcmpl = 0x95, 1 -fcmpg = 0x96, 1 -dcmpl = 0x97, 1 -dcmpg = 0x98, 1 -ifeq = 0x99, 0 -ifne = 0x9a, 0 -iflt = 0x9b, 0 -ifge = 0x9c, 0 -ifgt = 0x9d, 0 -ifle = 0x9e, 0 -if_icmpeq = 0x9f, 0 -if_icmpne = 0xa0, 0 -if_icmplt = 0xa1, 0 -if_icmpge = 0xa2, 0 -if_icmpgt = 0xa3, 0 -if_icmple = 0xa4, 0 -if_acmpeq = 0xa5, 0 -if_acmpne = 0xa6, 0 -goto = 0xa7, 0 -jsr = 0xa8, 0 -ret = 0xa9, 0 -tableswitch = 0xaa, 0 -lookupswitch = 0xab, 0 -ireturn = 0xac, 0 -lreturn = 0xad, 0 -freturn = 0xae, 0 -dreturn = 0xaf, 0 -areturn = 0xb0, 0 -return = 0xb1, 0 -getstatic = 0xb2, 3 -putstatic = 0xb3, 3 -getfield = 0xb4, 3 -putfield = 0xb5, 3 -invokevirtual = 0xb6, 3 -invokespecial = 0xb7, 3 -invokestatic = 0xb8, 3 -invokeinterface = 0xb9, 0 -new = 0xbb, 3 -newarray = 0xbc, 2 -anewarray = 0xbd, 3 -arraylength = 0xbe, 1 -athrow = 0xbf, 0 -checkcast = 0xc0, 3 -instanceof = 0xc1, 3 -monitorenter = 0xc2, 1 -monitorexit = 0xc3, 1 -wide = 0xc4, 1 -multianewarray = 0xc5, 4 -ifnull = 0xc6, 0 -ifnonnull = 0xc7, 0 -goto_w = 0xc8, 0 -jsr_w = 0xc9, 0 -breakpoint = 0xca, 0 - -#agetfield = 0xcb, 3 -bgetfield = 0xcc, 3 -cgetfield = 0xcd, 3 -#dgetfield = 0xce, 3 -#fgetfield = 0xcf, 3 -igetfield = 0xd0, 3 -lgetfield = 0xd1, 3 -sgetfield = 0xd2, 3 - -aputfield = 0xd3, 3 -bputfield = 0xd4, 3 -cputfield = 0xd5, 3 -#dputfield = 0xd6, 3 -#fputfield = 0xd7, 3 -iputfield = 0xd8, 3 -lputfield = 0xd9, 3 -#sputfield = 0xda, 3 - -iaccess_0 = 0xdb, 4 -iaccess_1 = 0xdc, 4 -iaccess_2 = 0xdd, 4 -iaccess_3 = 0xde, 4 - -#fast_iload = 0xdf, 2 -#fast_iload2 = 0xe0, 4 -#fast_icaload = 0xe1, 3 - -invokevfinal = 0xe2, 3 -#linearswitch = 0xe3, 0 -#binaryswitch = 0xe4, 0 - -iload_0_iconst_N = 231, 2 -iload_1_iconst_N = 232, 2 -iload_2_iconst_N = 233, 2 -iload_3_iconst_N = 234, 2 -iload_iconst_N = 235, 3 -invokeresolved = 236, 3 -iadd_istore_N = 237, 2 -isub_istore_N = 238, 2 -iand_istore_N = 239, 2 -ior_istore_N = 240, 2 -ixor_istore_N = 241, 2 -iadd_u4store = 242, 3 -isub_u4store = 243, 3 -iand_u4store = 244, 3 -ior_u4store = 245, 3 -ixor_u4store = 246, 3 -invokespecialresolved = 247, 3 -invokestaticresolved = 248, 3 - -return_register_finalizer = 229, 0 - -(nop) { - DISPATCH \seq_len -} - -(aconst_null,fconst_0) u4const_0 { - DISPATCH_START \seq_len - mov lr, #0 - DISPATCH_NEXT - PUSH lr - DISPATCH_FINISH -} - -(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) iconst_N { - sub lr, r0, #opc_iconst_0 - DISPATCH_START \seq_len - PUSH lr - DISPATCH_FINISH -} - -(lconst_0,dconst_0) u8const_0 { - DISPATCH_START \seq_len - mov tmp1, #0 - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -(lconst_1) lconst_1 { - DISPATCH_START \seq_len - mov tmp2, #1 - DISPATCH_NEXT - mov tmp1, #0 - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH2 tmp2, tmp1 - DISPATCH_FINISH -} - -(fconst_1) fconst_1 { - DISPATCH_START \seq_len - mov tmp1, #0x3f800000 - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -(fconst_2) fconst_2 { - DISPATCH_START \seq_len - mov r2, #0x40000000 - DISPATCH_NEXT - PUSH r2 - DISPATCH_FINISH -} - -(dconst_1) dconst_1 { - DISPATCH_START \seq_len - mov tmp1, #0x3f000000 - DISPATCH_NEXT - orr tmp1, tmp1, #0x00f00000 - DISPATCH_NEXT - mov tmp2, #0 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH2 tmp2, tmp1 - DISPATCH_FINISH -} - -(bipush) bipush { - DISPATCH_START \seq_len - mov tmp1, r2, lsl #24 - DISPATCH_NEXT - mov tmp1, tmp1, asr #24 - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -# r2 = [jpc, #1] -# r1 = [jpc, #2] -(sipush) sipush { - DISPATCH_START \seq_len - mov tmp1, r1 - DISPATCH_NEXT - mov r2, r2, lsl #24 - DISPATCH_NEXT - orr tmp1, tmp1, r2, asr #16 - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -# r2 = [jpc, #1] -(iload,fload,aload) u4load { - DISPATCH_START \seq_len - rsb tmp1, r2, #0 - DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -# r2 = [jpc, #1] -(lload,dload) u8load { - DISPATCH_START \seq_len - sub r3, locals, r2, lsl #2 - DISPATCH_NEXT - ldmda r3, {tmp2, tmp1} - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH2 tmp2, tmp1 - DISPATCH_FINISH -} - -(aload_0,aload_1,aload_2,aload_3) { - rsb tmp1, r0, #opc_aload_0 - DISPATCH_START \seq_len - DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -(iload_0,iload_1,iload_2,iload_3) { - rsb tmp1, r0, #opc_iload_0 - DISPATCH_START \seq_len - DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] - DISPATCH_NEXT - DISPATCH_NEXT - DISPATCH_NEXT - PUSH tmp1 - DISPATCH_FINISH -} - -(fload_0,fload_1,fload_2,fload_3) { - rsb tmp1, r0, #opc_fload_0 - DISPATCH_START \seq_len - DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] From gbenson at redhat.com Thu Aug 20 02:32:59 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 20 Aug 2009 10:32:59 +0100 Subject: ARM interpreter build improvements In-Reply-To: <200908201158.n7KBwXuS020233@parsley.camswl.com> References: <200908201158.n7KBwXuS020233@parsley.camswl.com> Message-ID: <20090820093259.GB3332@redhat.com> Thanks, committed. Cheers, Gary Edward Nevill wrote: > OK. I set a build going last night. Unfortunately I had the > JAVA_HOME set so the build failed. > > However, before it failed it had correctly created the "bytecodes_arm.s" > file and this file was binary identical to the previous "bytecodes.s". > > cppInterpreter_asm.S had also correctly been modified to include > "bytecodes_arm.s" instead of bytecodes.s. > > So, I am happy with this change. Please commit. > > Regards, > Ed. > > >Hi all, > > > >This patch causes the ARM interpreter's bytecodes file to be generated > >at build time rather than having a pregenerated version in the repo. > >Can someone with an ARM box please test this for me? I've tested it as > >much as I can without one. > > > >Cheers, > >Gary > > -- http://gbenson.net/ From xerxes at zafena.se Thu Aug 20 03:20:06 2009 From: xerxes at zafena.se (Xerxes R?nby) Date: Thu, 20 Aug 2009 10:20:06 +0000 Subject: changeset in /hg/icedtea6: Adjust Shark to LLVM 2.6svn rev 79521. Message-ID: changeset 1e47f856c4eb in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1e47f856c4eb description: Adjust Shark to LLVM 2.6svn rev 79521. * ports/hotspot/src/share/vm/shark/llvmValue.hpp (LLVMValue::jfloat_constant): Push LLVMContexts through the llvm::Type APIs to handle LLVM 2.6svn API change. (LLVMValue::jdouble_constant): Likewise. (LLVMValue::bit_constant): Likewise. * ports/hotspot/src/share/vm/shark/sharkType.cpp (SharkType::initialize): Likewise. * ports/hotspot/src/share/vm/shark/sharkType.hpp (SharkType::intptr_type): Likewise. (SharkType::jboolean_type): Likewise. (SharkType::jbyte_type): Likewise. (SharkType::jchar_type): Likewise. (SharkType::jshort_type): Likewise. (SharkType::jint_type): Likewise. (SharkType::jlong_type): Likewise. (SharkType::jfloat_type): Likewise. (SharkType::jdouble_type): Likewise. * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::make_type): Likewise. (SharkBuilder::CreateBlock): Push LLVMContexts through the BasicBlock::Create APIs to handle LLVM 2.6svn API change. * ports/hotspot/src/share/vm/shark/sharkFunction.hpp (SharkFunction::CreateBlock): Likewise. diffstat: 6 files changed, 130 insertions(+), 5 deletions(-) ChangeLog | 32 +++++++++++++ ports/hotspot/src/share/vm/shark/llvmValue.hpp | 4 + ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 12 +++++ ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 4 + ports/hotspot/src/share/vm/shark/sharkType.cpp | 46 +++++++++++++++++--- ports/hotspot/src/share/vm/shark/sharkType.hpp | 37 ++++++++++++++++ diffs (265 lines): diff -r 6d3eba5c3458 -r 1e47f856c4eb ChangeLog --- a/ChangeLog Thu Aug 20 05:24:04 2009 -0400 +++ b/ChangeLog Thu Aug 20 12:22:56 2009 +0200 @@ -1,3 +1,35 @@ 2009-08-20 Gary Benson + + Adjust Shark to LLVM 2.6svn rev 79521. + + * ports/hotspot/src/share/vm/shark/llvmValue.hpp + (LLVMValue::jfloat_constant): Push LLVMContexts through the + llvm::Type APIs to handle LLVM 2.6svn API change. + (LLVMValue::jdouble_constant): Likewise. + (LLVMValue::bit_constant): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkType.cpp + (SharkType::initialize): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkType.hpp + (SharkType::intptr_type): Likewise. + (SharkType::jboolean_type): Likewise. + (SharkType::jbyte_type): Likewise. + (SharkType::jchar_type): Likewise. + (SharkType::jshort_type): Likewise. + (SharkType::jint_type): Likewise. + (SharkType::jlong_type): Likewise. + (SharkType::jfloat_type): Likewise. + (SharkType::jdouble_type): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::make_type): Likewise. + (SharkBuilder::CreateBlock): Push LLVMContexts through the + BasicBlock::Create APIs to handle LLVM 2.6svn API change. + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::CreateBlock): Likewise. + 2009-08-20 Gary Benson * ports/hotspot/src/cpu/zero/vm/bc.def: Renamed to... diff -r 6d3eba5c3458 -r 1e47f856c4eb ports/hotspot/src/share/vm/shark/llvmValue.hpp --- a/ports/hotspot/src/share/vm/shark/llvmValue.hpp Thu Aug 20 05:24:04 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/llvmValue.hpp Thu Aug 20 12:22:56 2009 +0200 @@ -61,7 +61,11 @@ class LLVMValue : public AllStatic { public: static llvm::ConstantInt* bit_constant(int value) { +#if SHARK_LLVM_VERSION >= 26 + return llvm::ConstantInt::get(llvm::Type::getInt1Ty(llvm::getGlobalContext()), value, false); +#else return llvm::ConstantInt::get(llvm::Type::Int1Ty, value, false); +#endif } static llvm::ConstantInt* intptr_constant(intptr_t value) { diff -r 6d3eba5c3458 -r 1e47f856c4eb ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Aug 20 05:24:04 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Aug 20 12:22:56 2009 +0200 @@ -155,9 +155,17 @@ const Type* SharkBuilder::make_type(char // Miscellaneous case 'v': assert(void_ok, "should be"); +#if SHARK_LLVM_VERSION >= 26 + return Type::getVoidTy(getGlobalContext()); +#else return Type::VoidTy; +#endif case '1': +#if SHARK_LLVM_VERSION >= 26 + return Type::getInt1Ty(getGlobalContext()); +#else return Type::Int1Ty; +#endif default: ShouldNotReachHere(); @@ -590,5 +598,9 @@ BasicBlock* SharkBuilder::GetBlockInsert BasicBlock* SharkBuilder::CreateBlock(BasicBlock* ip, const char* name) const { +#if SHARK_LLVM_VERSION >= 26 + return BasicBlock::Create(getGlobalContext(), name, GetInsertBlock()->getParent(), ip); +#else return BasicBlock::Create(name, GetInsertBlock()->getParent(), ip); +#endif } diff -r 6d3eba5c3458 -r 1e47f856c4eb ports/hotspot/src/share/vm/shark/sharkFunction.hpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Thu Aug 20 05:24:04 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Thu Aug 20 12:22:56 2009 +0200 @@ -89,7 +89,11 @@ class SharkFunction : public SharkTarget public: llvm::BasicBlock* CreateBlock(const char* name = "") const { +#if SHARK_LLVM_VERSION >= 26 + return llvm::BasicBlock::Create(llvm::getGlobalContext(), name, function(), block_insertion_point()); +#else return llvm::BasicBlock::Create(name, function(), block_insertion_point()); +#endif } // Stack management diff -r 6d3eba5c3458 -r 1e47f856c4eb ports/hotspot/src/share/vm/shark/sharkType.cpp --- a/ports/hotspot/src/share/vm/shark/sharkType.cpp Thu Aug 20 05:24:04 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkType.cpp Thu Aug 20 12:22:56 2009 +0200 @@ -45,35 +45,71 @@ void SharkType::initialize() { // VM types _cpCacheEntry_type = PointerType::getUnqual( +#if SHARK_LLVM_VERSION >= 26 + ArrayType::get(Type::getInt8Ty(getGlobalContext()), sizeof(ConstantPoolCacheEntry))); +#else ArrayType::get(Type::Int8Ty, sizeof(ConstantPoolCacheEntry))); - +#endif + _itableOffsetEntry_type = PointerType::getUnqual( +#if SHARK_LLVM_VERSION >= 26 + ArrayType::get(Type::getInt8Ty(getGlobalContext()), itableOffsetEntry::size() * wordSize)); +#else ArrayType::get(Type::Int8Ty, itableOffsetEntry::size() * wordSize)); - +#endif + _klass_type = PointerType::getUnqual( +#if SHARK_LLVM_VERSION >= 26 + ArrayType::get(Type::getInt8Ty(getGlobalContext()), sizeof(Klass))); +#else ArrayType::get(Type::Int8Ty, sizeof(Klass))); - +#endif + _methodOop_type = PointerType::getUnqual( +#if SHARK_LLVM_VERSION >= 26 + ArrayType::get(Type::getInt8Ty(getGlobalContext()), sizeof(methodOopDesc))); +#else ArrayType::get(Type::Int8Ty, sizeof(methodOopDesc))); - +#endif + _monitor_type = ArrayType::get( +#if SHARK_LLVM_VERSION >= 26 + Type::getInt8Ty(getGlobalContext()), +#else Type::Int8Ty, +#endif frame::interpreter_frame_monitor_size() * wordSize); - + _oop_type = PointerType::getUnqual( +#if SHARK_LLVM_VERSION >= 26 + ArrayType::get(Type::getInt8Ty(getGlobalContext()), sizeof(oopDesc))); +#else ArrayType::get(Type::Int8Ty, sizeof(oopDesc))); +#endif _thread_type = PointerType::getUnqual( +#if SHARK_LLVM_VERSION >= 26 + ArrayType::get(Type::getInt8Ty(getGlobalContext()), sizeof(JavaThread))); +#else ArrayType::get(Type::Int8Ty, sizeof(JavaThread))); +#endif _zeroStack_type = PointerType::getUnqual( +#if SHARK_LLVM_VERSION >= 26 + ArrayType::get(Type::getInt8Ty(getGlobalContext()), sizeof(ZeroStack))); +#else ArrayType::get(Type::Int8Ty, sizeof(ZeroStack))); +#endif std::vector params; params.push_back(methodOop_type()); params.push_back(intptr_type()); params.push_back(thread_type()); +#if SHARK_LLVM_VERSION >= 26 + _entry_point_type = FunctionType::get(Type::getVoidTy(getGlobalContext()), params, false); +#else _entry_point_type = FunctionType::get(Type::VoidTy, params, false); +#endif // Java types a) on the stack and in fields, and b) in arrays for (int i = 0; i < T_CONFLICT + 1; i++) { diff -r 6d3eba5c3458 -r 1e47f856c4eb ports/hotspot/src/share/vm/shark/sharkType.hpp --- a/ports/hotspot/src/share/vm/shark/sharkType.hpp Thu Aug 20 05:24:04 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkType.hpp Thu Aug 20 12:22:56 2009 +0200 @@ -31,8 +31,13 @@ class SharkType : public AllStatic { public: static const llvm::IntegerType* intptr_type() { +#if SHARK_LLVM_VERSION >= 26 + return LP64_ONLY(llvm::Type::getInt64Ty(llvm::getGlobalContext())) + NOT_LP64 (llvm::Type::getInt32Ty(llvm::getGlobalContext())); +#else return LP64_ONLY(llvm::Type::Int64Ty) NOT_LP64 (llvm::Type::Int32Ty); +#endif } // VM types @@ -89,35 +94,67 @@ class SharkType : public AllStatic { public: static const llvm::IntegerType* jboolean_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getInt8Ty(llvm::getGlobalContext()); +#else return llvm::Type::Int8Ty; +#endif } static const llvm::IntegerType* jbyte_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getInt8Ty(llvm::getGlobalContext()); +#else return llvm::Type::Int8Ty; +#endif } static const llvm::IntegerType* jchar_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getInt16Ty(llvm::getGlobalContext()); +#else return llvm::Type::Int16Ty; +#endif } static const llvm::IntegerType* jshort_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getInt16Ty(llvm::getGlobalContext()); +#else return llvm::Type::Int16Ty; +#endif } static const llvm::IntegerType* jint_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getInt32Ty(llvm::getGlobalContext()); +#else return llvm::Type::Int32Ty; +#endif } static const llvm::IntegerType* jlong_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getInt64Ty(llvm::getGlobalContext()); +#else return llvm::Type::Int64Ty; +#endif } static const llvm::Type* jfloat_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getFloatTy(llvm::getGlobalContext()); +#else return llvm::Type::FloatTy; +#endif } static const llvm::Type* jdouble_type() { +#if SHARK_LLVM_VERSION >= 26 + return llvm::Type::getDoubleTy(llvm::getGlobalContext()); +#else return llvm::Type::DoubleTy; +#endif } static const llvm::PointerType* jobject_type() { From xerxes at zafena.se Thu Aug 20 03:34:52 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Thu, 20 Aug 2009 12:34:52 +0200 Subject: Shark are now up to date with llvm 2.6svn API changes up to LLVM rev 79521. In-Reply-To: <4A8C0D09.5000502@zafena.se> References: <4A8C0D09.5000502@zafena.se> Message-ID: <4A8D26CC.2080305@zafena.se> My last Icedtea6 changes enables Shark to be built using the latest llvm 2.6svn trunk. I have tested compiling Shark on X86 using LLVM rev 79521. The LLVM 2.6svn API have changed so that all Types and BasicBlocks require a LLVMContext during creation. Basically llvm::Type::*Ty have been changed to llvm::Type::get*Ty(getGlobalContext()) and BasicBlock::Create(...) have been changed to BasicBlock::Create(getGlobalContext(), ...) Cheers Xerxes From gbenson at redhat.com Thu Aug 20 05:26:26 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 20 Aug 2009 13:26:26 +0100 Subject: Shark are now up to date with llvm 2.6svn API changes up to LLVM rev 79521. In-Reply-To: <4A8D26CC.2080305@zafena.se> References: <4A8C0D09.5000502@zafena.se> <4A8D26CC.2080305@zafena.se> Message-ID: <20090820122626.GE3332@redhat.com> Thanks for doing this Xerxes. Cheers, Gary Xerxes R?nby wrote: > My last Icedtea6 changes enables Shark to be built using the latest > llvm 2.6svn trunk. > I have tested compiling Shark on X86 using LLVM rev 79521. > > The LLVM 2.6svn API have changed so that all Types and BasicBlocks > require a LLVMContext during creation. > > Basically llvm::Type::*Ty have been changed to > llvm::Type::get*Ty(getGlobalContext()) > and > BasicBlock::Create(...) have been changed to > BasicBlock::Create(getGlobalContext(), ...) > > Cheers > Xerxes -- http://gbenson.net/ From gnu_andrew at member.fsf.org Thu Aug 20 05:32:37 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 20 Aug 2009 13:32:37 +0100 Subject: Using A Sun based Javac to compile rt-closed.jar different from using gcj In-Reply-To: References: Message-ID: <17c6771e0908200532i1747f634qb0c67f48ba60fed3@mail.gmail.com> 2009/8/20 Michael Franz : > Hi, > > It has taken a few days but I have figured out why my rt-closed.jar is > missing a bunch of classes. > > I am building on OS X and using either Apple's JKD or an older version of > OpenJDK.? It seems that on Fedora the creation of the rt-closed.jar using > gcj to compile the sources in rt/ .? The class files are created in lib/rt, > this is then jar'ed to create rt-closed.jar.? It seems that gcj (and ecj) > will put classes that are reference (directly/indirectly) by the classes it > compile into the output directory.? This explains why lib/rt has class files > that are not in rt.? Since Apple's JDK or OpenJDK itself do not do this the > rt-closed.jar is missing classes that are assumed to be there later causing > the bootstrap process to fail. > > Is this functionality of gcj and ecj an undocumented switch in OpenJDK? > > Michael > Well, I believe Apple's JDK is a Sun derivative too, so its behaviour being similar to OpenJDK is not too much of a surprise. When or how it was derived is impossible to tell as it's a proprietary product. Equally, gcj uses ecj so we're only talking about the difference in two compilers here: ecj and javac. I believe the purpose of rt-closed.jar is to precompile classes from OpenJDK that would otherwise be present in a Sun-derived JDK to begin with (this bit is so old it predates my involvement in IcedTea). So, although ecj spits out every class it touches, the loss shouldn't matter on with Sun-derived boot JDKs -- in theory. The whole build process is currently based on two presumptions: * If you build with the defaults, you do a full bootstrap build: gcj for stage 1 and the built JDK for stage 2. * If you build with --disable-bootstrap (renamed from --with-icedtea/--with-openjdk et. al. in IcedTea7, but still under those names in 6) then you are assumed to be doing a build closer to the OpenJDK default, so less patches are applied, etc. I'm working on making the stages JDK-independent but this takes time. The first stage will be getting a full build working with OpenJDK but as you (and others) have seen, we aren't there yet. This is documented in the NEWS for 1.11. You could try building using --disable-bootstrap for now, or just do a raw OpenJDK build without IcedTea by checking out the IcedTea forest: hg fclone http://hg.openjdk.java.net/icedtea/jdk7 Patches are of course welcome, but touching such a hairy build system is not for the faint-hearted :) -- 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 Aug 20 05:36:46 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 20 Aug 2009 13:36:46 +0100 Subject: ARM interpreter build improvements In-Reply-To: <200908201158.n7KBwXuS020233@parsley.camswl.com> References: <200908201158.n7KBwXuS020233@parsley.camswl.com> Message-ID: <17c6771e0908200536tfaa48b4i9b9aebf303468dab@mail.gmail.com> 2009/8/20 Edward Nevill : > OK. I set a build going last night. Unfortunately I had the JAVA_HOME > set so the build failed. > If this was with IcedTea, one wonders why we don't just set JAVA_HOME="" in our Makefile. Anyone know why we don't? > However, before it failed it had correctly created the "bytecodes_arm.s" > file and this file was binary identical to the previous "bytecodes.s". > > cppInterpreter_asm.S had also correctly been modified to include > "bytecodes_arm.s" instead of bytecodes.s. > > So, I am happy with this change. Please commit. > > Regards, > Ed. > >>Hi all, >> >>This patch causes the ARM interpreter's bytecodes file to be generated >>at build time rather than having a pregenerated version in the repo. >>Can someone with an ARM box please test this for me? ?I've tested it as >>much as I can without one. >> >>Cheers, >>Gary > -- 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 Thu Aug 20 07:38:52 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 14:38:52 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #4 from mwong at redhat.com 2009-08-20 14:38 ------- Do we know for sure the data within the Amman file under /usr/share is correct? Or are we just assuming that it is correct. Man Lung Wong -- 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 Aug 20 08:42:32 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 15:42:32 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #5 from aph at redhat.com 2009-08-20 15:42 ------- Have a look. The official database is at ftp://elsie.nci.nih.gov/pub/ -- 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 Aug 20 10:43:12 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 17:43:12 +0000 Subject: [Bug 381] New: Stackoverflow error with security manager and signed jars Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 Summary: Stackoverflow error with security manager and signed jars Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: major Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: anilsaldhana at gmail.com With signed jars and when you start the JVM with security manager enabled, the following recursion is shown with -Djava.security.debug=access,failure,debug ============================= at java.lang.StringBuilder.append(StringBuilder.java:132) at sun.security.provider.PolicyFile.printPD(PolicyFile.java:1865) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1228) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1183) at sun.security.provider.PolicyFile.implies(PolicyFile.java:1138) at java.security.ProtectionDomain.implies(ProtectionDomain.java:229) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:320) at java.security.AccessController.checkPermission(AccessController.java:553) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.exists(File.java:748) at sun.util.calendar.ZoneInfoFile.readZoneInfoFile(ZoneInfoFile.java:1034) at sun.util.calendar.ZoneInfoFile.createZoneInfo(ZoneInfoFile.java:575) at sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:545) at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:600) at java.util.TimeZone.getTimeZone(TimeZone.java:486) at java.util.TimeZone.setDefaultZone(TimeZone.java:583) at java.util.TimeZone.getDefaultRef(TimeZone.java:550) at java.util.Date.normalize(Date.java:1193) at java.util.Date.toString(Date.java:1027) at sun.security.x509.CertificateValidity.toString(CertificateValidity.java:137) at sun.security.x509.X509CertInfo.toString(X509CertInfo.java:310) at sun.security.x509.X509CertImpl.toString(X509CertImpl.java:763) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at java.security.CodeSource.toString(CodeSource.java:465) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at sun.security.provider.PolicyFile.printPD(PolicyFile.java:1865) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1228) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1183) at sun.security.provider.PolicyFile.implies(PolicyFile.java:1138) at java.security.ProtectionDomain.implies(ProtectionDomain.java:229) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:320) at java.security.AccessController.checkPermission(AccessController.java:553) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.exists(File.java:748) at sun.util.calendar.ZoneInfoFile.readZoneInfoFile(ZoneInfoFile.java:1034) at sun.util.calendar.ZoneInfoFile.createZoneInfo(ZoneInfoFile.java:575) at sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:545) at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:600) at java.util.TimeZone.getTimeZone(TimeZone.java:486) at java.util.TimeZone.setDefaultZone(TimeZone.java:583) at java.util.TimeZone.getDefaultRef(TimeZone.java:550) at java.util.Date.normalize(Date.java:1193) at java.util.Date.toString(Date.java:1027) at sun.security.x509.CertificateValidity.toString(CertificateValidity.java:137) at sun.security.x509.X509CertInfo.toString(X509CertInfo.java:310) at sun.security.x509.X509CertImpl.toString(X509CertImpl.java:763) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at java.security.CodeSource.toString(CodeSource.java:465) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at sun.security.provider.PolicyFile.printPD(PolicyFile.java:1865) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1228) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1183) at sun.security.provider.PolicyFile.implies(PolicyFile.java:1138) at java.security.ProtectionDomain.implies(ProtectionDomain.java:229) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:320) at java.security.AccessController.checkPermission(AccessController.java:553) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.exists(File.java:748) at sun.util.calendar.ZoneInfoFile.readZoneInfoFile(ZoneInfoFile.java:1034) at sun.util.calendar.ZoneInfoFile.createZoneInfo(ZoneInfoFile.java:575) at sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:545) at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:600) at java.util.TimeZone.getTimeZone(TimeZone.java:486) at java.util.TimeZone.setDefaultZone(TimeZone.java:583) at java.util.TimeZone.getDefaultRef(TimeZone.java:550) at java.util.Date.normalize(Date.java:1193) at java.util.Date.toString(Date.java:1027) at sun.security.x509.CertificateValidity.toString(CertificateValidity.java:137) at sun.security.x509.X509CertInfo.toString(X509CertInfo.java:310) at sun.security.x509.X509CertImpl.toString(X509CertImpl.java:763) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at java.security.CodeSource.toString(CodeSource.java:465) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at sun.security.provider.PolicyFile.printPD(PolicyFile.java:1865) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1228) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1183) at sun.security.provider.PolicyFile.implies(PolicyFile.java:1138) at java.security.ProtectionDomain.implies(ProtectionDomain.java:229) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:320) at java.security.AccessController.checkPermission(AccessController.java:553) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.exists(File.java:748) at sun.util.calendar.ZoneInfoFile.readZoneInfoFile(ZoneInfoFile.java:1034) at sun.util.calendar.ZoneInfoFile.createZoneInfo(ZoneInfoFile.java:575) at sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:545) at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:600) at java.util.TimeZone.getTimeZone(TimeZone.java:486) at java.util.TimeZone.setDefaultZone(TimeZone.java:583) at java.util.TimeZone.getDefaultRef(TimeZone.java:550) at java.util.Date.normalize(Date.java:1193) at java.util.Date.toString(Date.java:1027) at sun.security.x509.CertificateValidity.toString(CertificateValidity.java:137) at sun.security.x509.X509CertInfo.toString(X509CertInfo.java:310) at sun.security.x509.X509CertImpl.toString(X509CertImpl.java:763) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at java.security.CodeSource.toString(CodeSource.java:465) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at sun.security.provider.PolicyFile.printPD(PolicyFile.java:1865) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1228) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1183) at sun.security.provider.PolicyFile.implies(PolicyFile.java:1138) at java.security.ProtectionDomain.implies(ProtectionDomain.java:229) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:320) at java.security.AccessController.checkPermission(AccessController.java:553) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.exists(File.java:748) at sun.util.calendar.ZoneInfoFile.readZoneInfoFile(ZoneInfoFile.java:1034) at sun.util.calendar.ZoneInfoFile.createZoneInfo(ZoneInfoFile.java:575) -- 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 Aug 20 10:44:20 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 17:44:20 +0000 Subject: [Bug 381] Stackoverflow error with security manager and signed jars Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #1 from anilsaldhana at gmail.com 2009-08-20 17:44 ------- This is in OpenJDK6. /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/ -- 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 Aug 20 11:08:55 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 18:08:55 +0000 Subject: [Bug 381] Stackoverflow error with security manager and signed jars Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #2 from anilsaldhana at gmail.com 2009-08-20 18:08 ------- The beginning of the stack trace: ============= policy: evaluation (codesource/principals) passed Exception in thread "main" java.lang.StackOverflowError at java.security.AccessController.doPrivileged(Native Method) at java.util.TimeZone.setDefaultZone(TimeZone.java:561) at java.util.TimeZone.getDefaultRef(TimeZone.java:550) at java.util.Date.normalize(Date.java:1193) at java.util.Date.toString(Date.java:1027) at sun.security.x509.CertificateValidity.toString(CertificateValidity.java:137) at sun.security.x509.X509CertInfo.toString(X509CertInfo.java:310) at sun.security.x509.X509CertImpl.toString(X509CertImpl.java:763) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at java.security.CodeSource.toString(CodeSource.java:465) at java.lang.String.valueOf(String.java:2838) at java.lang.StringBuilder.append(StringBuilder.java:132) at sun.security.provider.PolicyFile.printPD(PolicyFile.java:1865) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1228) at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1183) at sun.security.provider.PolicyFile.implies(PolicyFile.java:1138) at java.security.ProtectionDomain.implies(ProtectionDomain.java:229) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:320) -- 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 Aug 20 12:33:21 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 19:33:21 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 mark at klomp.org changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Stackoverflow error with |Stackoverflow error with |security manager and signed |security manager, signed |jars |jars and - | |Djava.security.debug set ------- Comment #3 from mark at klomp.org 2009-08-20 19:33 ------- Nasty recursion. With -Djava.security.debug set the PolicyFile.getPermissions() call will try to do a debug dump of the current CodeSource ProtectionDomain. That ProtectionDomain is derived from the certificate that has signed the jar. To print the x509.CertificateValidity of that certificate it needs to convert it to a Date object (and then a String) which will end up in the ZoneInfoFile.readZoneInfoFile() that needs to check a file for which there is a checkPermission() which ends up in the same PolicyFile.getPermission() call that will then try to print out the CodeSource ProtectionDomains again... We need to somehow break this cycle to make this work. -- 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 Aug 20 12:41:01 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 19:41:01 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #4 from mark at klomp.org 2009-08-20 19:41 ------- Found the root cause. This comes from the following hunk in patches/icedtea-use-system-tzdata.patch: + // Some minimal sanity checking + if (dir != null) { + try { + File f = new File(dir, "ZoneInfoMappings"); + if (!f.exists()) + dir = null; + } catch (AccessControlException ace) { + dir = null; + } + } This part isn't inside a PrivilegedAction, instead it just tries to catch the AccessControlException if any caller doesn't have permission to check the file. IMHO this is wrong since later on we do actually try to read files in that directory inside a PrivilegedAction. -- 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 Thu Aug 20 12:48:07 2009 From: gnu_andrew at member.fsf.org (gnu_andrew at member.fsf.org) Date: Thu, 20 Aug 2009 19:48:07 -0000 Subject: [PATCH 1 of 1] Backport regression (NPE) fix for AccessControlContext In-Reply-To: References: Message-ID: <99966695a8f7d806df64.1250797687@rivendell.middle-earth.co.uk> # HG changeset patch # User andrew # Date 1250797356 -3600 # Node ID 99966695a8f7d806df64307d7a052b0f3a3638c6 # Parent 998a513c4f6f378e66d319a1fa5c1bdc970dcfc3 Backport regression (NPE) fix for AccessControlContext. 2009-08-20 Andrew John Hughes * Makefile.am: Add new backported patch to fix regression in AccessControlContext. * HACKING: Updated. * patches/openjdk/6648816.patch: New. diff -r 998a513c4f6f -r 99966695a8f7 ChangeLog --- a/ChangeLog Tue Aug 18 15:55:09 2009 +0100 +++ b/ChangeLog Thu Aug 20 20:42:36 2009 +0100 @@ -1,3 +1,12 @@ +2009-08-20 Andrew John Hughes + + * Makefile.am: + Add new backported patch to fix + regression in AccessControlContext. + * HACKING: Updated. + * patches/openjdk/6648816.patch: + New. + 2009-08-18 Andrew Haley * hotspot.map: Bump to hs14b16. diff -r 998a513c4f6f -r 99966695a8f7 HACKING --- a/HACKING Tue Aug 18 15:55:09 2009 +0100 +++ b/HACKING Thu Aug 20 20:42:36 2009 +0100 @@ -116,6 +116,7 @@ for rh-489586) * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. +* openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext The following patches are only applied to OpenJDK in IcedTea: diff -r 998a513c4f6f -r 99966695a8f7 Makefile.am --- a/Makefile.am Tue Aug 18 15:55:09 2009 +0100 +++ b/Makefile.am Thu Aug 20 20:42:36 2009 +0100 @@ -685,6 +685,7 @@ patches/icedtea-java2d-stroker-internal-close-joint.patch \ patches/icedtea-disable-cc-incompatible-sanity-checks.patch \ patches/icedtea-explicit-target-arch.patch \ + patches/openjdk/6648816.patch \ $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp diff -r 998a513c4f6f -r 99966695a8f7 patches/openjdk/6648816.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6648816.patch Thu Aug 20 20:42:36 2009 +0100 @@ -0,0 +1,82 @@ + +# HG changeset patch +# User xuelei +# Date 1205602985 14400 +# Node ID 7dc3b56f220faa1aa6418462eb362276599a045a +# Parent 32e7ba670b0e599646931954ab2b0cc3feb1e7b4 +6648816: REGRESSION: setting -Djava.security.debug=failure result in NPE in ACC +Summary: unchecking the null pointer of the debug handle +Reviewed-by: mullan, weijun + +--- openjdk.orig/jdk/src/share/classes/java/security/AccessControlContext.java Fri Mar 14 10:33:21 2008 -0400 ++++ openjdk/jdk/src/share/classes/java/security/AccessControlContext.java Sat Mar 15 13:43:05 2008 -0400 +@@ -1,5 +1,5 @@ + /* +- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. ++ * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -322,7 +322,7 @@ public final class AccessControlContext + debug.println("access denied " + perm); + } + +- if (Debug.isOn("failure")) { ++ if (Debug.isOn("failure") && debug != null) { + // Want to make sure this is always displayed for failure, + // but do not want to display again if already displayed + // above. +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/test/java/security/AccessControlContext/FailureDebugOption.java Sat Mar 15 13:43:05 2008 -0400 +@@ -0,0 +1,50 @@ ++/* ++ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 6648816 ++ * @summary REGRESSION: setting -Djava.security.debug=failure result in NPE ++ * in ACC ++ * @run main/othervm -Djava.security.debug=failure FailureDebugOption ++ */ ++ ++import java.security.ProtectionDomain; ++import java.security.AccessController; ++import java.security.AccessControlException; ++import java.security.BasicPermission; ++ ++public class FailureDebugOption { ++ ++ public static void main (String argv[]) throws Exception { ++ try { ++ AccessController.checkPermission( ++ new BasicPermission("no such permission"){}); ++ } catch (NullPointerException npe) { ++ throw new Exception("Unexpected NullPointerException for security" + ++ " debug option, -Djava.security.debug=failure"); ++ } catch (AccessControlException ace) { ++ } ++ } ++} ++ + From gnu_andrew at member.fsf.org Thu Aug 20 12:48:06 2009 From: gnu_andrew at member.fsf.org (gnu_andrew at member.fsf.org) Date: Thu, 20 Aug 2009 19:48:06 -0000 Subject: [PATCH 0 of 1] Fix regression in AccessControlContext (Sun bug 6648816) Message-ID: The patch in the accompanying email ([PATCH 1 of 1]) backports a regression fix from OpenJDK7 to the 1.5 branch of IcedTea6. The fix adds a check to AccessControlContext to prevent a NullPointerException being thrown when -Djava.security.debug=failure. See: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=364 Ok to commit? Thanks, -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) From bugzilla-daemon at icedtea.classpath.org Thu Aug 20 13:12:20 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 20:12:20 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #5 from keiths at redhat.com 2009-08-20 20:12 ------- Created an attachment (id=255) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=255&action=view) untested patch from a long, long time ago This is a patch that I've had lying around for (cough) almost two years. I don't know why I never committed this, but it slipped through the cracks nonetheless. -- 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 Aug 20 13:14:49 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 20:14:49 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #6 from keiths at redhat.com 2009-08-20 20:14 ------- The suspicious code that mjw highlights in his comment was written by me. I have attached a patch which I've had lying around for a long time which should help address this bug. I don't know why I never checked this in -- probably just got tied up with JCK testing, and it slipped through the cracks. -- 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 mark at klomp.org Thu Aug 20 13:30:32 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 20 Aug 2009 22:30:32 +0200 Subject: [PATCH 0 of 1] Fix regression in AccessControlContext (Sun bug 6648816) In-Reply-To: References: Message-ID: <1250800232.3878.6.camel@springer.wildebeest.org> On Thu, 2009-08-20 at 19:48 +0000, gnu_andrew at member.fsf.org wrote: > The patch in the accompanying email ([PATCH 1 of 1]) backports a > regression fix from OpenJDK7 to the 1.5 branch of IcedTea6. The fix > adds a check to AccessControlContext to prevent a NullPointerException > being thrown when -Djava.security.debug=failure. See: > > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=364 > > Ok to commit? Yes, please. It seems obviously correct to me. And I am a little ashamed I forgot about it after dmlloyd prodded me about it. He was the person finding the actual fix in the first place. Thanks, Mark From bugzilla-daemon at icedtea.classpath.org Thu Aug 20 13:40:04 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 20:40:04 +0000 Subject: [Bug 364] NPE in AccessControlContext Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=364 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED ------- Comment #1 from gnu_andrew at member.fsf.org 2009-08-20 20:40 ------- The fix has now been backported to the IcedTea6 1.5 release branch. I've also posted a webrev for review to get this into OpenJDK6 itself: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-August/000689.html -- 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 Thu Aug 20 13:44:53 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 20 Aug 2009 21:44:53 +0100 Subject: [PATCH 0 of 1] Fix regression in AccessControlContext (Sun bug 6648816) In-Reply-To: <1250800232.3878.6.camel@springer.wildebeest.org> References: <1250800232.3878.6.camel@springer.wildebeest.org> Message-ID: <17c6771e0908201344i14dc563fj460fb94831b6210f@mail.gmail.com> 2009/8/20 Mark Wielaard : > On Thu, 2009-08-20 at 19:48 +0000, gnu_andrew at member.fsf.org wrote: >> The patch in the accompanying email ([PATCH 1 of 1]) backports a >> regression fix from OpenJDK7 to the 1.5 branch of IcedTea6. ?The fix >> adds a check to AccessControlContext to prevent a NullPointerException >> being thrown when -Djava.security.debug=failure. ?See: >> >> http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=364 >> >> Ok to commit? > > Yes, please. It seems obviously correct to me. > And I am a little ashamed I forgot about it after dmlloyd prodded me > about it. He was the person finding the actual fix in the first place. > > Thanks, > > Mark > > Yeah, I saw the little dialogue on the bug report... :) Thanks for approving. Duly pushed to the 1.5 release branch (no link as no mail for the release branches it seems...) It's on its way to JDK6 too with any luck, so will get in HEAD that way: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-August/000689.html -- 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 Thu Aug 20 14:40:27 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 20 Aug 2009 21:40:27 +0000 Subject: [Bug 364] NPE in AccessControlContext Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=364 ------- Comment #2 from gnu_andrew at member.fsf.org 2009-08-20 21:40 ------- Now in OpenJDK6: http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/e1cb6cb935da Will reach IcedTea6 HEAD via the next build drop. -- 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 mvfranz at gmail.com Thu Aug 20 15:37:44 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 20 Aug 2009 18:37:44 -0400 Subject: Using A Sun based Javac to compile rt-closed.jar different from using gcj In-Reply-To: <17c6771e0908200532i1747f634qb0c67f48ba60fed3@mail.gmail.com> References: <17c6771e0908200532i1747f634qb0c67f48ba60fed3@mail.gmail.com> Message-ID: On Thu, Aug 20, 2009 at 8:32 AM, Andrew John Hughes < gnu_andrew at member.fsf.org> wrote: > 2009/8/20 Michael Franz : > > Hi, > > > > It has taken a few days but I have figured out why my rt-closed.jar is > > missing a bunch of classes. > > > > I am building on OS X and using either Apple's JKD or an older version of > > OpenJDK. It seems that on Fedora the creation of the rt-closed.jar using > > gcj to compile the sources in rt/ . The class files are created in > lib/rt, > > this is then jar'ed to create rt-closed.jar. It seems that gcj (and ecj) > > will put classes that are reference (directly/indirectly) by the classes > it > > compile into the output directory. This explains why lib/rt has class > files > > that are not in rt. Since Apple's JDK or OpenJDK itself do not do this > the > > rt-closed.jar is missing classes that are assumed to be there later > causing > > the bootstrap process to fail. > > > > Is this functionality of gcj and ecj an undocumented switch in OpenJDK? > > > > Michael > > > > Well, I believe Apple's JDK is a Sun derivative too, so its behaviour > being similar to OpenJDK is not too much of a surprise. When or how > it was derived is impossible to tell as it's a proprietary product. > Equally, gcj uses ecj so we're only talking about the difference in > two compilers here: ecj and javac. I didn't know gcj was using ecj. I thought it had its own implementation. > > > I believe the purpose of rt-closed.jar is to precompile classes from > OpenJDK that would otherwise be present in a Sun-derived JDK to begin > with (this bit is so old it predates my involvement in IcedTea). So, > although ecj spits out every class it touches, the loss shouldn't > matter on with Sun-derived boot JDKs -- in theory. It does matter in the case where the bootclasspath is replaced to use only rt-closed.jar and some directories. > > > The whole build process is currently based on two presumptions: > > * If you build with the defaults, you do a full bootstrap build: gcj > for stage 1 and the built JDK for stage 2. > * If you build with --disable-bootstrap (renamed from > --with-icedtea/--with-openjdk et. al. in IcedTea7, but still under > those names in 6) then you are assumed to be doing a build closer to > the OpenJDK default, so less patches are applied, etc. > > I'm working on making the stages JDK-independent but this takes time. > The first stage will be getting a full build working with OpenJDK but > as you (and others) have seen, we aren't there yet. This is > documented in the NEWS for 1.11. > > You could try building using --disable-bootstrap for now, or just do a > raw OpenJDK build without IcedTea by checking out the IcedTea forest: > hg fclone http://hg.openjdk.java.net/icedtea/jdk7 > I have been using the openjdk-bsdport, but I was not able to build since there you need Java 7 features and I don't have a working Java 7 JDK (one that can handle the new features). I have not tried the Soylatte version. So, I am actually interested in the bootstrapping process of IcedTea. > > Patches are of course welcome, but touching such a hairy build system > is not for the faint-hearted :) I have looked at this whole build process and get faint all the time. I was able to use --with-javac=ecj and get past this issue. I was not able to figure out what the --with-ecj switch did. I now have a test_gamma issue using the bootstrap JDK for the second build. I may be posting the details later, depends on how far I get. > -- > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090820/7d2f6f48/attachment.html From gnu_andrew at member.fsf.org Thu Aug 20 16:09:56 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 21 Aug 2009 00:09:56 +0100 Subject: Using A Sun based Javac to compile rt-closed.jar different from using gcj In-Reply-To: References: <17c6771e0908200532i1747f634qb0c67f48ba60fed3@mail.gmail.com> Message-ID: <17c6771e0908201609g468d88bam82956dd8bc0a4ae8@mail.gmail.com> 2009/8/20 Michael Franz : > > > On Thu, Aug 20, 2009 at 8:32 AM, Andrew John Hughes > wrote: >> >> 2009/8/20 Michael Franz : >> > Hi, >> > >> > It has taken a few days but I have figured out why my rt-closed.jar is >> > missing a bunch of classes. >> > >> > I am building on OS X and using either Apple's JKD or an older version >> > of >> > OpenJDK.? It seems that on Fedora the creation of the rt-closed.jar >> > using >> > gcj to compile the sources in rt/ .? The class files are created in >> > lib/rt, >> > this is then jar'ed to create rt-closed.jar.? It seems that gcj (and >> > ecj) >> > will put classes that are reference (directly/indirectly) by the classes >> > it >> > compile into the output directory.? This explains why lib/rt has class >> > files >> > that are not in rt.? Since Apple's JDK or OpenJDK itself do not do this >> > the >> > rt-closed.jar is missing classes that are assumed to be there later >> > causing >> > the bootstrap process to fail. >> > >> > Is this functionality of gcj and ecj an undocumented switch in OpenJDK? >> > >> > Michael >> > >> >> Well, I believe Apple's JDK is a Sun derivative too, so its behaviour >> being similar to OpenJDK is not too much of a surprise. ?When or how >> it was derived is impossible to tell as it's a proprietary product. >> Equally, gcj uses ecj so we're only talking about the difference in >> two compilers here: ecj and javac. > > I didn't know gcj was using ecj.? I thought it had its own implementation. >> It did before. It was dropped and ecj was used to support the 1.5 language features. gcj now uses ecj to compile to bytecode then natively compiles said bytecode. Using 'gcj -C' (output class files) is roughly equivalent to ecj but with different (GCC standard) command-line syntax. >> >> I believe the purpose of rt-closed.jar is to precompile classes from >> OpenJDK that would otherwise be present in a Sun-derived JDK to begin >> with (this bit is so old it predates my involvement in IcedTea). ?So, >> although ecj spits out every class it touches, the loss shouldn't >> matter on with Sun-derived boot JDKs -- in theory. > > It does matter in the case where the bootclasspath is replaced to use only > rt-closed.jar and some directories. I did say in theory :) As I also said, IcedTea does this because it presumes you aren't using a Sun-derived JDK; it thinks you have gcj/ecj and need a completely new set of bootstrap classes, which will be built in full by ecj. As you aren't using ecj+gcj, you can't (at present) use the default build. Try --disable-bootstrap. That does work with IcedTea as the boot JDK at least. YMMV with other JDKs. >> >> >> The whole build process is currently based on two presumptions: >> >> ?* If you build with the defaults, you do a full bootstrap build: gcj >> for stage 1 and the built JDK for stage 2. >> ?* If you build with --disable-bootstrap (renamed from >> --with-icedtea/--with-openjdk et. al. in IcedTea7, but still under >> those names in 6) then you are assumed to be doing a build closer to >> the OpenJDK default, so less patches are applied, etc. >> >> I'm working on making the stages JDK-independent but this takes time. >> The first stage will be getting a full build working with OpenJDK but >> as you (and others) have seen, we aren't there yet. ?This is >> documented in the NEWS for 1.11. >> >> You could try building using --disable-bootstrap for now, or just do a >> raw OpenJDK build without IcedTea by checking out the IcedTea forest: >> hg fclone http://hg.openjdk.java.net/icedtea/jdk7 > > I have been using the openjdk-bsdport, but I was not able to build since > there you need Java 7 features and I don't have a working Java 7 JDK (one > that can handle the new features). Er... you *shouldn't* need JDK7, that would be self-defeating. I regularly build OpenJDK with IcedTea6 which is an implementation of Java 6. Note that Zero is now part of the IcedTea forest so in theory you can do: $ hg fclone http://hg.openjdk.java.net/icedtea/jdk7 $ cd jdk7 $ hg fpull -u http://hg.openjdk.java.net/bsd-port/bsd-port and create a hybrid of the two. Never tried it though. ? I have not tried the Soylatte version. > So, I am actually interested in the bootstrapping process of IcedTea. At present you'll be disappointed then because it is only currently tested with gcj/ecj. As I say, try --disable-bootstrap and see how that goes. >> >> Patches are of course welcome, but touching such a hairy build system >> is not for the faint-hearted :) > > I have looked at this whole build process and get faint all the time. > > I was able to use --with-javac=ecj and get past this issue.? I was not able > to figure out what the --with-ecj switch did. > IIRC, it allows you to pass a path to an ecj binary. What command-line options are you passing in full? IcedTea7 does the following: * If --with-javac is specified, it uses that. * If not, it checks for javac in ${JDK_HOME}/bin/javac. If --with-jdk-home is not specified, then each of the following is tried: /usr/lib/jvm/java-gcj /usr/lib/jvm/gcj-jdk /usr/lib/jvm/cacao /usr/lib/jvm/java-openjdk /usr/lib/jvm/icedtea6 /usr/lib/jvm/java-6-openjdk /usr/lib/jvm/openjdk /usr/lib/jvm/java-icedtea The first three are omitted if --disable-bootstrap is used. The first one that exists is used. * If JAVAC is still not set, then it looks for ecj either on the path or as specified by --with-ecj. * Should it not find that, it will use ecj.jar and ${JAVA} to run it. If that can't even be found, configure exits with an error. In short, it tries its level best to find you a compiler. config.log will tell you which one has been chosen for JAVAC. By default (i.e. ./configure) it will set JAVAC, JAVA, etc. from the first JDK it finds. > I now have a test_gamma issue using the bootstrap JDK for the second build. > I may be posting the details later, depends on how far I get. Ugh, if that is failing, it suggests the JDK you built is bad. > >> >> -- >> 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 mvfranz at gmail.com Thu Aug 20 17:20:24 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 20 Aug 2009 20:20:24 -0400 Subject: Using A Sun based Javac to compile rt-closed.jar different from using gcj In-Reply-To: <17c6771e0908201609g468d88bam82956dd8bc0a4ae8@mail.gmail.com> References: <17c6771e0908200532i1747f634qb0c67f48ba60fed3@mail.gmail.com> <17c6771e0908201609g468d88bam82956dd8bc0a4ae8@mail.gmail.com> Message-ID: > Er... you *shouldn't* need JDK7, that would be self-defeating. I > regularly build OpenJDK with IcedTea6 which is an implementation of > Java 6. > Note that Zero is now part of the IcedTea forest so in theory you can do: > The issue I run into when trying to compile the BSD port is here (from someone else) http://mail.openjdk.java.net/pipermail/bsd-port-dev/2009-May/000687.html , so, if it is possible to build OpenJDK with a OpenJDK 6 I don't know how to get around that issue. > > $ hg fclone http://hg.openjdk.java.net/icedtea/jdk7 > $ cd jdk7 > $ hg fpull -u http://hg.openjdk.java.net/bsd-port/bsd-port > > and create a hybrid of the two. Never tried it though. > These seem like it will just be a world of hurt. > > > I was able to use --with-javac=ecj and get past this issue. I was not > able > > to figure out what the --with-ecj switch did. > > > > IIRC, it allows you to pass a path to an ecj binary. What > command-line options are you passing in full? > I passed the full : --with-ecj=/opt/local/bin/ecj Then I checked to see if the 'using ecj check' was yes or no. It was only yes when I passed ecj using --with-javac > > IcedTea7 does the following: > > * If --with-javac is specified, it uses that. > * If not, it checks for javac in ${JDK_HOME}/bin/javac. If > --with-jdk-home is not specified, then each of the following is tried: > > /usr/lib/jvm/java-gcj > /usr/lib/jvm/gcj-jdk > /usr/lib/jvm/cacao > /usr/lib/jvm/java-openjdk > /usr/lib/jvm/icedtea6 > /usr/lib/jvm/java-6-openjdk > /usr/lib/jvm/openjdk > /usr/lib/jvm/java-icedtea > > The first three are omitted if --disable-bootstrap is used. The first > one that exists is used. > > * If JAVAC is still not set, then it looks for ecj either on the path > or as specified by --with-ecj. > * Should it not find that, it will use ecj.jar and ${JAVA} to run it. > If that can't even be found, configure exits with an error. > > In short, it tries its level best to find you a compiler. config.log > will tell you which one has been chosen for JAVAC. By default (i.e. > ./configure) it will set JAVAC, JAVA, etc. from the first JDK it > finds. > I guess setting javac is the easiest way to use ecj to compile > > > I now have a test_gamma issue using the bootstrap JDK for the second > build. > > I may be posting the details later, depends on how far I get. > > Ugh, if that is failing, it suggests the JDK you built is bad. > The version that is built works fine outside of the test_gamma logic. I can actually use it for the bootstrap, and get to the same point. I am thinking that the env.sh is not correct. If I source that and then try to use java/javac it fails. No java/lang/Object found, if I specify the Xbootclasspath with an rt.jar, the zip library is not found. -- > 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090820/59f2fd3a/attachment.html From mvfranz at gmail.com Thu Aug 20 20:19:32 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 20 Aug 2009 23:19:32 -0400 Subject: Langtools javac task target/source from build.properties in 1.11 In-Reply-To: <17c6771e0908180922q17d2e1bes23e40b618c86074b@mail.gmail.com> References: <17c6771e0908180518w1365d5efg74d23c9d39a83c38@mail.gmail.com> <0016367b63e6a2889704716be222@google.com> <17c6771e0908180922q17d2e1bes23e40b618c86074b@mail.gmail.com> Message-ID: > >> > >> pcompile currently uses the default source/target options of the javac > >> > >> used to build it. I have a fix for this pending review: > >> > >> http://cr.openjdk.java.net/~andrew/ecj/01/webrev.01/ > >> > >> So the problem is that the javac you use to build defaults to a > >> > >> version the java that handles it can't use. I suggest you fix Ant to > >> > >> use the same JVM as OpenJDK uses to bootstrap. > >> > > > > I have found that jaxp and jaxws will require the same patches. > > Then you seem to be experiencing a different issue, as I didn't need > to patch these. > > Once I switched to compiling with ecj, I did not need to apply any of these patches. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090820/4db0ac64/attachment.html From mark at klomp.org Fri Aug 21 00:21:54 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 21 Aug 2009 09:21:54 +0200 Subject: [PATCH 0 of 1] Fix regression in AccessControlContext (Sun bug 6648816) In-Reply-To: <17c6771e0908201344i14dc563fj460fb94831b6210f@mail.gmail.com> References: <1250800232.3878.6.camel@springer.wildebeest.org> <17c6771e0908201344i14dc563fj460fb94831b6210f@mail.gmail.com> Message-ID: <1250839314.3908.5.camel@springer.wildebeest.org> Hi Andrew, On Thu, 2009-08-20 at 21:44 +0100, Andrew John Hughes wrote: > Thanks for approving. Duly pushed to the 1.5 release branch Why only 1.5[.x]? What happened to the 1.6 release? > (no link > as no mail for the release branches it seems...) I changed the push commit hook notify extension settings to include them. Also changed to mail per changeset now. Hopefully it doesn't break anything. > It's on its way to JDK6 too with any luck, so will get in HEAD that > way: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-August/000689.html Yes, thanks for that. But please do push things to trunk first before adding them to a release branch. Having commits only to release branches risks them being lost by accident (maybe not in this case, but as you know oj6 sometimes takes months to get a release out and it would be bad if we fixed some things in one release but then regress on the next). Cheers, Mark From doko at ubuntu.com Fri Aug 21 00:35:21 2009 From: doko at ubuntu.com (Matthias Klose) Date: Fri, 21 Aug 2009 09:35:21 +0200 Subject: [patch] let build stage1 build with ecj-3.5.x Message-ID: <4A8E4E39.1040502@ubuntu.com> Trying to build icedtea6 with gcj-4.4 using ecj from the 3.5 release branch; the build failed for a bug now fixed on the 3.5 branch, but now still fails because a -classpath '' argument is missing. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=285466, Olivier writes: The problem comes from your classpath. the last entry should not be there. Did you change something in the way you invoke the batch compiler? If no classpath is set up we add the current user directory on the classpath and this could explain why this folder is added to the classpath. The patch just adds the empty classpath argument. Bootstrap succeeds with ecj-3.5 from the branch. Patch should be applied to the 1.5 release branch and 1.7. Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: cp.diff Type: text/x-diff Size: 1526 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090821/9da598d7/cp.diff From mark at klomp.org Fri Aug 21 00:48:47 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 21 Aug 2009 09:48:47 +0200 Subject: [patch] let build stage1 build with ecj-3.5.x In-Reply-To: <4A8E4E39.1040502@ubuntu.com> References: <4A8E4E39.1040502@ubuntu.com> Message-ID: <1250840927.3908.12.camel@springer.wildebeest.org> Hi Matthias, On Fri, 2009-08-21 at 09:35 +0200, Matthias Klose wrote: > Trying to build icedtea6 with gcj-4.4 using ecj from the 3.5 release branch; the > build failed for a bug now fixed on the 3.5 branch, but now still fails because > a -classpath '' argument is missing. > [...] > The patch just adds the empty classpath argument. Bootstrap succeeds with > ecj-3.5 from the branch. > > 2009-08-21 Matthias Klose > > * Makefile.am (stamps/hotspot-tools-class-files.stamp, > stamps/rt-class-files.stamp): Set classpath to '' (eclipse #285466). Yes makes sense. How you tried with older ecj 3.4? If it works with that please commit. Thanks, Mark From cpdev-commits at icedtea.classpath.org Fri Aug 21 01:01:24 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Fri, 21 Aug 2009 08:01:24 +0000 Subject: /hg/icedtea6: 2009-08-21 Matthias Klose Message-ID: changeset 13ec26d44a62 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=13ec26d44a62 summary: 2009-08-21 Matthias Klose diffstat: 2 files changed, 9 insertions(+), 4 deletions(-) ChangeLog | 5 +++++ Makefile.am | 8 ++++---- diffs (48 lines): diff -r 1e47f856c4eb -r 13ec26d44a62 ChangeLog --- a/ChangeLog Thu Aug 20 12:22:56 2009 +0200 +++ b/ChangeLog Fri Aug 21 09:55:52 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-20 Xerxes R??nby + + * Makefile.am (stamps/hotspot-tools-class-files.stamp, + stamps/rt-class-files.stamp): Set classpath to '' (eclipse #285466). + 2009-08-20 Xerxes R??nby Adjust Shark to LLVM 2.6svn rev 79521. diff -r 1e47f856c4eb -r 13ec26d44a62 Makefile.am --- a/Makefile.am Thu Aug 20 12:22:56 2009 +0200 +++ b/Makefile.am Fri Aug 21 09:55:52 2009 +0200 @@ -1490,14 +1490,14 @@ stamps/hotspot-tools-class-files.stamp: -source 1.5 \ -sourcepath \ 'hotspot-tools:$(OPENJDK_SOURCEPATH_DIRS):$(ABS_SOURCE_DIRS)' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g \ -d lib/hotspot-tools \ -source 1.5 \ -sourcepath \ 'hotspot-tools:$(OPENJDK_SOURCEPATH_DIRS):$(ABS_SOURCE_DIRS)' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ fi mkdir -p stamps touch stamps/hotspot-tools-class-files.stamp @@ -1542,13 +1542,13 @@ stamps/rt-class-files.stamp: rt-source-f -source 1.5 \ -sourcepath \ '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d lib/rt \ -source 1.5 \ -sourcepath \ '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ fi cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ lib/rt/net/sourceforge/jnlp/ From bugzilla-daemon at icedtea.classpath.org Fri Aug 21 03:07:21 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 21 Aug 2009 10:07:21 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #7 from mark at klomp.org 2009-08-21 10:07 ------- (In reply to comment #6) > The suspicious code that mjw highlights in his comment was written by me. I > have attached a patch which I've had lying around for a long time which should > help address this bug. I don't know why I never checked this in -- probably > just got tied up with JCK testing, and it slipped through the cracks. Thanks Keith. That mimics what I was planning to do. I adjusted your patch a little since I couldn't figure out what was guarding JAVAZI_DIR_initialized. Since the intention is to only initialize this once, and I didn't want to introduce any possible race conditions between checking JAVAZI_DIR_initialized and using JAVAZI_DIR from different threads, I just made it so that JAVAZI_DIR is just initialized once when the class is loaded. Also I didn't take the changes to the sun.zoneinfo.dir settings. Wanting to only change as little as possible to fix this bug. Also I admit to not fully understanding the intend behind that part of your change. -- 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 Aug 21 03:08:33 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 21 Aug 2009 10:08:33 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #8 from mark at klomp.org 2009-08-21 10:08 ------- Created an attachment (id=256) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=256&action=view) Updated icedtea-use-system-tzdata.patch Testing this patch. -- 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 Aug 21 03:58:52 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 21 Aug 2009 10:58:52 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #9 from mark at klomp.org 2009-08-21 10:58 ------- I believe the patch is working correctly. But I have a bit of trouble replicating the original bug report. Could you describe how exactly you sign your jar files and how you run them? Thanks. -- 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 aph at redhat.com Fri Aug 21 04:10:21 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 21 Aug 2009 12:10:21 +0100 Subject: [PATCH 0 of 1] Fix regression in AccessControlContext (Sun bug 6648816) In-Reply-To: <1250839314.3908.5.camel@springer.wildebeest.org> References: <1250800232.3878.6.camel@springer.wildebeest.org> <17c6771e0908201344i14dc563fj460fb94831b6210f@mail.gmail.com> <1250839314.3908.5.camel@springer.wildebeest.org> Message-ID: <4A8E809D.1080301@redhat.com> Mark Wielaard wrote: > Hi Andrew, > > On Thu, 2009-08-20 at 21:44 +0100, Andrew John Hughes wrote: >> Thanks for approving. Duly pushed to the 1.5 release branch > > Why only 1.5[.x]? What happened to the 1.6 release? Yes, it needs to go there as well. Andrew. From gnu_andrew at member.fsf.org Fri Aug 21 05:21:31 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 21 Aug 2009 13:21:31 +0100 Subject: [PATCH 0 of 1] Fix regression in AccessControlContext (Sun bug 6648816) In-Reply-To: <1250839314.3908.5.camel@springer.wildebeest.org> References: <1250800232.3878.6.camel@springer.wildebeest.org> <17c6771e0908201344i14dc563fj460fb94831b6210f@mail.gmail.com> <1250839314.3908.5.camel@springer.wildebeest.org> Message-ID: <17c6771e0908210521r4961a73g42224973a63ec238@mail.gmail.com> 2009/8/21 Mark Wielaard : > Hi Andrew, > > On Thu, 2009-08-20 at 21:44 +0100, Andrew John Hughes wrote: >> Thanks for approving. ?Duly pushed to the 1.5 release branch > > Why only 1.5[.x]? What happened to the 1.6 release? > In the vain hope that we would have it come down from above in b17. I'm not a fan of adding yet more patches to maintain to IcedTea unless we really have to, though I'd forgotten about the release. I'm porting it over now. That would be much easier if we didn't have this stupid ChangeLog. Can we not just generate that from hg for the releases? Any attempts to merge between branches break because the ChangeLogs aren't identical. That's one of the reasons I stopped doing IcedTea6->7 merges (though the bigger one is there is just too many differences now) >> (no link >> as no mail for the release branches it seems...) > > I changed the push commit hook notify extension settings to include > them. Also changed to mail per changeset now. Hopefully it doesn't break > anything. > Thanks. >> It's on its way to JDK6 too with any luck, so will get in HEAD that >> way: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-August/000689.html > It's in now: http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/e1cb6cb935da > Yes, thanks for that. But please do push things to trunk first before > adding them to a release branch. Ok. > Having commits only to release branches > risks them being lost by accident (maybe not in this case, but as you > know oj6 sometimes takes months to get a release out and it would be bad > if we fixed some things in one release but then regress on the next). > Joe has already said that he would be happy to work with the IcedTea developers on releases of OpenJDK6. I don't know of any time we've ever asked for an OpenJDK6 release, so I don't see a reason for complaint here. > Cheers, > > Mark > > 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 xerxes at zafena.se Fri Aug 21 05:23:07 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Fri, 21 Aug 2009 14:23:07 +0200 Subject: [patch] ARM Shark compilation and logic fix after last months Shark refactoring. Message-ID: <4A8E91AB.1070508@zafena.se> Shark have evolved rapidly during the past months and went through several refactoring and cleaning up phases. Shark contains a workaround for the lack of atomic operations in LLVM for ARM, the workaround have unfortunately broke during the refactoring runs. This patch fixes the workaround and makes it functional again for ARM. Ok to commit to Icedtea6 trunk ? Ok to commit to Icedtea6 1.6 release branch? The changelog would be: 2009-08-21 Xerxes R?nby *ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (zero_cmpxchg_int): Updated method to match current Shark and LLVM atomic calling convention. Fixes compilation error and logic for ARM. (zero_cmpxchg_ptr): Likewise. Cheers Xerxes -------------- next part -------------- A non-text attachment was scrubbed... Name: fix_shark_arm_atomic_after_refactor.patch Type: text/x-patch Size: 1175 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090821/e86504bc/fix_shark_arm_atomic_after_refactor.patch From gbenson at redhat.com Fri Aug 21 05:37:47 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 21 Aug 2009 13:37:47 +0100 Subject: [patch] ARM Shark compilation and logic fix after last months Shark refactoring. In-Reply-To: <4A8E91AB.1070508@zafena.se> References: <4A8E91AB.1070508@zafena.se> Message-ID: <20090821123747.GB3295@redhat.com> Xerxes R?nby wrote: > Shark have evolved rapidly during the past months and went through > several refactoring and cleaning up phases. Shark contains a > workaround for the lack of atomic operations in LLVM for ARM, the > workaround have unfortunately broke during the refactoring runs. Sorry :/ > This patch fixes the workaround and makes it functional again for > ARM. > > Ok to commit to Icedtea6 trunk ? Please do. > Ok to commit to Icedtea6 1.6 release branch? I recommend we do, but it's ultimately up to aph as the release manager. Cheers, Gary -- http://gbenson.net/ From ed at camswl.com Fri Aug 21 08:56:30 2009 From: ed at camswl.com (Edward Nevill) Date: Fri, 21 Aug 2009 16:56:30 +0100 Subject: [patch] ARM Shark compilation and logic fix after last months Shark refactoring. Message-ID: <200908211556.n7LFuUiO027508@parsley.camswl.com> Looks good. I also notice to get it to build on ARM I had to add 'jit' to llvm_components in configure.ac. Regards, Ed. >Index: icedtea6/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp >=================================================================== >--- icedtea6.orig/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp 2009-08-21 14:03:25.000000000 +0200 >+++ icedtea6/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp 2009-08-21 14:05:02.000000000 +0200 >@@ -385,9 +385,9 @@ > // perform these operations without delegating to a function. > > #ifdef ARM >-static jint zero_cmpxchg_int(volatile jint *ptr, jint *oldval, jint newval) >+static jint zero_cmpxchg_int(volatile jint *ptr, jint oldval, jint newval) > { >- return Atomic::cmpxchg(*newval, ptr, *oldval); >+ return Atomic::cmpxchg(newval, ptr, oldval); > } > #endif // ARM > >@@ -404,10 +404,10 @@ > > #ifdef ARM > static intptr_t zero_cmpxchg_ptr(volatile intptr_t* ptr, >- intptr_t* oldval, >- intptr_t* newval) >+ intptr_t oldval, >+ intptr_t newval) > { >- return Atomic::cmpxchg_ptr(*newval, ptr, *oldval); >+ return Atomic::cmpxchg_ptr(newval, ptr, oldval); > } > #endif // ARM From cpdev-commits at icedtea.classpath.org Fri Aug 21 05:45:22 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Fri, 21 Aug 2009 12:45:22 +0000 Subject: /hg/release/icedtea6-1.6: 4 new changesets Message-ID: changeset 234dd693b3ec in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=234dd693b3ec summary: 2009-08-18 Edward Nevill changeset caf6aebb73ca in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=caf6aebb73ca summary: 2009-08-20 Gary Benson changeset a98ad2958053 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=a98ad2958053 summary: Adjust Shark to LLVM 2.6svn rev 79521. changeset 3bb4b0a830b3 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=3bb4b0a830b3 summary: 2009-08-21 Matthias Klose diffstat: 17 files changed, 14570 insertions(+), 13 deletions(-) .hgignore | 1 ChangeLog | 86 Makefile.am | 27 mkbc.c | 581 + patches/icedtea-notice-safepoints.patch | 16 ports/hotspot/build/linux/makefiles/zero.make | 9 ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def | 7863 ++++++++++++++ ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp | 29 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 24 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 5820 ++++++++++ ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 14 ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 10 ports/hotspot/src/share/vm/shark/llvmValue.hpp | 4 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 12 ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 4 ports/hotspot/src/share/vm/shark/sharkType.cpp | 46 ports/hotspot/src/share/vm/shark/sharkType.hpp | 37 diffs (truncated from 14852 to 500 lines): diff -r bd60280483e5 -r 3bb4b0a830b3 .hgignore --- a/.hgignore Thu Aug 13 15:48:51 2009 +0100 +++ b/.hgignore Fri Aug 21 09:55:52 2009 +0200 @@ -469,3 +469,4 @@ pulseaudio/.*jar pulseaudio/.*jar pulse-java.jar hotspot.tar.gz +ports/hotspot/src/cpu/zero/vm/bytecodes_arm.s diff -r bd60280483e5 -r 3bb4b0a830b3 ChangeLog --- a/ChangeLog Thu Aug 13 15:48:51 2009 +0100 +++ b/ChangeLog Fri Aug 21 09:55:52 2009 +0200 @@ -1,3 +1,89 @@ 2009-08-07 Matthias Klose + + * Makefile.am (stamps/hotspot-tools-class-files.stamp, + stamps/rt-class-files.stamp): Set classpath to '' (eclipse #285466). + +2009-08-20 Xerxes R??nby + + Adjust Shark to LLVM 2.6svn rev 79521. + + * ports/hotspot/src/share/vm/shark/llvmValue.hpp + (LLVMValue::jfloat_constant): Push LLVMContexts through the + llvm::Type APIs to handle LLVM 2.6svn API change. + (LLVMValue::jdouble_constant): Likewise. + (LLVMValue::bit_constant): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkType.cpp + (SharkType::initialize): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkType.hpp + (SharkType::intptr_type): Likewise. + (SharkType::jboolean_type): Likewise. + (SharkType::jbyte_type): Likewise. + (SharkType::jchar_type): Likewise. + (SharkType::jshort_type): Likewise. + (SharkType::jint_type): Likewise. + (SharkType::jlong_type): Likewise. + (SharkType::jfloat_type): Likewise. + (SharkType::jdouble_type): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::make_type): Likewise. + (SharkBuilder::CreateBlock): Push LLVMContexts through the + BasicBlock::Create APIs to handle LLVM 2.6svn API change. + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::CreateBlock): Likewise. + +2009-08-20 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/bc.def: Renamed to... + * ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def: New file. + + * Makefile.am: Build bytecodes_arm.s from bytecodes_arm.def. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S: Include + bytecodes_arm.s rather than bytecodes.s. + + * ports/hotspot/src/cpu/zero/vm/bytecodes.s: Removed. + + * .hgignore: Updated. + +2009-08-18 Edward Nevill + + Added ARM assembler interpreter + + * openjdk/hotspot/src/share/vm/interpreter.hpp + Allow ARM interpreter to notice safepoints + Changed via patches/icedtea-notice-safepoints.patch + + * ports/hotspot/build/linux/makefiles/zero.make + Add cppInterpreter_arm + Add CFLAGS for ARM asm interpreter + Add rules to build .o from .S + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp + Add initialisation of new bytecodes for asm interpreter + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp + Add definitions of new bytecodes for asm interpreter + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + Add hooks to call asm interpreter + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + Add hooks to allow HW null pointer detection + + [ NEW FILES ] + * ports/hotspot/src/cpu/zero/vm/bc.def + Bytecode templates + * ports/hotspot/src/cpu/zero/vm/bytecodes.s + Bytecode implementations (manually generated from bc.def) + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_asm.S + Complex bytecode implementations, entry points and support code + * ports/hotspot/src/cpu/zero/vm/mkbc.c + Bytecode generator, use to generate bytecodes.s from bc.def + 2009-08-07 Matthias Klose * Makefile.am (ADD_ZERO_CONFIGURE_ARGS): Add configure options diff -r bd60280483e5 -r 3bb4b0a830b3 Makefile.am --- a/Makefile.am Thu Aug 13 15:48:51 2009 +0100 +++ b/Makefile.am Fri Aug 21 09:55:52 2009 +0200 @@ -457,6 +457,17 @@ if WITH_VISUALVM rm -f $(NETBEANS_PROFILER_SRC_ZIP) endif +# Build asm interpreter bytecodes +ZERO_ASM_BC_DEF = $(abs_top_srcdir)/ports/hotspot/src/cpu/zero/vm/bytecodes_$(ZERO_LIBARCH).def +ZERO_ASM_BC_ASM = $(abs_top_srcdir)/ports/hotspot/src/cpu/zero/vm/bytecodes_$(ZERO_LIBARCH).s +ZERO_ASM_BC_ASM_COND = $(shell test -f ${ZERO_ASM_BC_DEF} && echo ${ZERO_ASM_BC_ASM}) + +$(abs_top_srcdir)/mkbc: $(abs_top_srcdir)/mkbc.c + $(CC) $< -o $@ + +${ZERO_ASM_BC_ASM}: ${ZERO_ASM_BC_DEF} $(abs_top_srcdir)/mkbc + $(abs_top_srcdir)/mkbc $< $@ + # Link ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp for target in $(abs_top_srcdir)/ports/hotspot/build/*/makefiles/* \ @@ -503,6 +514,7 @@ ICEDTEA_FSG_PATCHES = ICEDTEA_FSG_PATCHES = ICEDTEA_PATCHES = \ + patches/icedtea-notice-safepoints.patch \ patches/hotspot/$(HSBUILD)/icedtea-bytecodeInterpreter.patch \ patches/icedtea-signature-iterator.patch \ patches/icedtea-test-atomic-operations.patch \ @@ -1121,7 +1133,7 @@ stamps/icedtea.stamp: stamps/bootstrap-d stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) $(ICEDTEANPPLUGIN_TARGET) \ extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ - stamps/pulse-java.stamp + stamps/pulse-java.stamp $(ZERO_ASM_BC_ASM_COND) $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ -C openjdk \ @@ -1206,7 +1218,7 @@ stamps/icedtea-debug.stamp: stamps/boots stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) $(ICEDTEANPPLUGIN_TARGET) \ extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ - stamps/pulse-java.stamp + stamps/pulse-java.stamp $(ZERO_ASM_BC_ASM_COND) $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ -C openjdk \ @@ -1318,7 +1330,8 @@ stamps/native-ecj.stamp: stamps/icedtea-ecj.stamp: stamps/bootstrap-directory-symlink-ecj.stamp \ stamps/hotspot-tools.stamp stamps/plugs.stamp \ - stamps/ports-ecj.stamp stamps/patch-ecj.stamp stamps/cacao.stamp + stamps/ports-ecj.stamp stamps/patch-ecj.stamp stamps/cacao.stamp \ + $(ZERO_ASM_BC_ASM_COND) $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV_ECJ) \ -C openjdk-ecj/ \ @@ -1477,14 +1490,14 @@ stamps/hotspot-tools-class-files.stamp: -source 1.5 \ -sourcepath \ 'hotspot-tools:$(OPENJDK_SOURCEPATH_DIRS):$(ABS_SOURCE_DIRS)' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g \ -d lib/hotspot-tools \ -source 1.5 \ -sourcepath \ 'hotspot-tools:$(OPENJDK_SOURCEPATH_DIRS):$(ABS_SOURCE_DIRS)' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ fi mkdir -p stamps touch stamps/hotspot-tools-class-files.stamp @@ -1529,13 +1542,13 @@ stamps/rt-class-files.stamp: rt-source-f -source 1.5 \ -sourcepath \ '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d lib/rt \ -source 1.5 \ -sourcepath \ '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ - -bootclasspath \'\' @$< ; \ + -classpath \'\' -bootclasspath \'\' @$< ; \ fi cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ lib/rt/net/sourceforge/jnlp/ diff -r bd60280483e5 -r 3bb4b0a830b3 mkbc.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mkbc.c Fri Aug 21 09:55:52 2009 +0200 @@ -0,0 +1,581 @@ +#include +#include +#include +#include + +#define DEFAULT_PREFIX "do_" + +static char *prefix = DEFAULT_PREFIX; + +#define ISALPHA(c) (isalpha(c) || (c) == '_') +#define ISALNUM(c) (isalnum(c) || (c) == '_') + +FILE *source_f, *bci_f, *bci_f; + +typedef struct Bytecode { + char *name; + int len; +} Bytecode; + +typedef struct StringList { + struct StringList *next; + char *line; +} StringList; + +typedef struct OpcodeList { + struct OpcodeList *next; + long opcode; +} OpcodeList; + +typedef struct OpcodeSequence { + struct OpcodeSequence *next; + OpcodeList *opcode_list; +} OpcodeSequence; + +typedef struct BytecodeImpl { + struct BytecodeImpl *next; + OpcodeSequence *opcode_seq; + StringList *macro_impl; + StringList *direct_impl; + int len; + char *name; + char *do_name; +} BytecodeImpl; + +Bytecode bytecodes[256]; + +BytecodeImpl *the_impl = 0; +BytecodeImpl **the_impl_ptr = &the_impl; + +#define BUFLEN 1024 + +static int lineno = 1; + +void fatal(const char *s) +{ + fputs(s, stderr); + fputc('\n', stderr); + exit(1); +} + +void outmem(void) +{ + fprintf(stderr, "Out of memory\n"); + exit(1); +} + +void synerr(void) +{ + fprintf(stderr, "Syntax error at line %d\n", lineno); + exit(1); +} + +int readchar() +{ + int c; + + c = getc(source_f); + if (c == '\n') lineno++; + return c; +} + +int readwhitespace(int c, char *buf, int len) +{ + int i = 0; + + while ((isspace)(c)) { + if (buf && i < len-1) buf[i++] = c; + c = (readchar)(); + } + if (buf && i < len) buf[i] = 0; + return c; +} + +int skipwhitespace(int c) +{ + while ((isspace)(c)) { + c = (readchar)(); + } + return c; +} + +int readeol(int c, char *buf, int len) +{ + int i = 0; + + while (c != '\n' && c != EOF) { + if (buf && i < len-1) buf[i++] = c; + c = (readchar)(); + } + if (buf && i < len) buf[i] = 0; + if (c == '\n') c = (readchar)(); + return c; +} + +int skipeol(int c) +{ + while (c != '\n' && c != EOF) c = (readchar)(); + if (c == '\n') c = (readchar)(); + return c; +} + +int readsymbol(int c, char *buf, int len) +{ + int i = 0; + + while (ISALNUM(c)) { + if (buf && i < len-1) buf[i++] = c; + c = (readchar)(); + } + if (buf && i < len) buf[i] = 0; + return c; +} + +int bcdef(int c, char *buf, int len) +{ + BytecodeImpl *def; + OpcodeSequence *seq; + OpcodeSequence **seqp; + OpcodeList *opc; + OpcodeList **opcp; + StringList *macro, **macrop; + StringList *direct, **directp; + char *name; + char *line; + int i; + int length, overall_len; + + def = malloc(sizeof(BytecodeImpl)); + if (!def) outmem(); + def->next = 0; + def->opcode_seq = 0; + def->macro_impl = 0; + def->direct_impl = 0; + def->len = -1; + *the_impl_ptr = def; + the_impl_ptr = &(def->next); + seqp = &(def->opcode_seq); + overall_len = 0; + do { + seq = malloc(sizeof(OpcodeSequence)); + if (!seq) outmem(); + seq->next = 0; + seq->opcode_list = 0; + *seqp = seq; + seqp = &(seq->next); + opcp = &(seq->opcode_list); + length = -2; + do { + c = (readchar)(); + c = skipwhitespace(c); + if (!ISALPHA(c)) synerr(); + c = readsymbol(c, buf, len); + c = skipwhitespace(c); + opc = malloc(sizeof(OpcodeList)); + if (!opc) outmem(); + opc->next = 0; + opc->opcode = -1; + *opcp = opc; + opcp = &(opc->next); + name = strdup(buf); + if (!name) outmem(); + for (i = 0; i < 256; i++) { + if (strcmp(name, bytecodes[i].name) == 0) { + opc->opcode = i; + break; + } + } + if (i == 256) { + fprintf(stderr, "No such opcode '%s'\n", name); + exit(1); + } + if (length == -2) length = bytecodes[i].len; + } while (c == ','); + overall_len += length; + if (c != ')') synerr(); + c = (readchar)(); + c = skipwhitespace(c); + } while (c == '('); +// strcpy(buf, "do_"); + *buf = 0; + if (ISALPHA(c)) { + c = readsymbol(c, buf, len); + c = skipwhitespace(c); + } else { + seq = def->opcode_seq; +// strcat(buf, "bytecode"); + while (seq) { + opc = seq->opcode_list; + if (*buf) strcat(buf, "_"); + strcat(buf, bytecodes[opc->opcode].name); +// sprintf(buf+strlen(buf), "_%ld", opc->opcode); + seq = seq->next; + } + } + name = strdup(buf); + if (!name) outmem(); + def->name = name; + def->do_name = name; + def->len = overall_len; + if (c != '{') synerr(); + c = (readchar)(); + while (c != '\n' && isspace(c)) c = (readchar)(); + if (c != '\n') synerr(); + c = (readchar)(); + c = readwhitespace(c, buf, len); + macrop = &(def->macro_impl); + while (c != '}' && c != EOF) { + c = readeol(c, buf + strlen(buf), len - strlen(buf)); + line = strdup(buf); + if (!line) outmem(); + macro = malloc(sizeof(StringList)); + if (!macro) outmem(); + *macrop = macro; + macrop = &(macro->next); + macro->next = 0; + macro->line = line; + c = readwhitespace(c, buf, len); + } + if (c != '}') synerr(); + c = (readchar)(); + c = skipwhitespace(c); + if (ISALPHA(c)) { + c = readsymbol(c, buf, len); + c = skipwhitespace(c); + name = strdup(buf); + if (!name) outmem(); + def->do_name = name; + } + if (c == '[') { + c = (readchar)(); + while (c != '\n' && isspace(c)) c = (readchar)(); + if (c != '\n') synerr(); + c = (readchar)(); + c = readwhitespace(c, buf, len); + directp = &(def->direct_impl); + while (c != ']' && c != EOF) { + c = readeol(c, buf + strlen(buf), len - strlen(buf)); + line = strdup(buf); + if (!line) outmem(); + direct = malloc(sizeof(StringList)); + if (!direct) outmem(); + *directp = direct; + directp = &(direct->next); + direct->next = 0; + direct->line = line; + c = readwhitespace(c, buf, len); + } + if (c != ']') synerr(); + c = (readchar)(); + } + return c; +} + +void mkbc(void) +{ + char buf[BUFLEN]; + char *endptr; + int c; + char *name; + long opcode, len; + + c = (readchar)(); + c = skipwhitespace(c); + while (c != EOF) { + if (c == '#') { + c = skipeol(c); + } else if (ISALPHA(c)) { + c = readsymbol(c, buf, BUFLEN); + c = skipwhitespace(c); + if (c == '=') { + name = strdup(buf); + if (!name) outmem(); + c = (readchar)(); + c = skipwhitespace(c); + if (!(isdigit)(c)) synerr(); + c = readsymbol(c, buf, BUFLEN); + opcode = strtol(buf, &endptr, 0); + if (*endptr != 0) synerr(); + c = skipwhitespace(c); + if (c != ',') synerr(); + c = (readchar)(); + c = skipwhitespace(c); + if (!(isdigit)(c)) synerr(); + c = readsymbol(c, buf, BUFLEN); + len = strtol(buf, &endptr, 0); From xerxes at zafena.se Fri Aug 21 05:49:31 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Fri, 21 Aug 2009 14:49:31 +0200 Subject: [patch] ARM Shark compilation and logic fix after last months Shark refactoring. - Test In-Reply-To: <4A8E91AB.1070508@zafena.se> References: <4A8E91AB.1070508@zafena.se> Message-ID: <4A8E97DB.9060501@zafena.se> Xerxes R?nby skrev: > Shark have evolved rapidly during the past months and went through > several refactoring and cleaning up phases. > Shark contains a workaround for the lack of atomic operations in LLVM > for ARM, the workaround have unfortunately broke during the refactoring > runs. > This patch fixes the workaround and makes it functional again for ARM. > > Ok to commit to Icedtea6 trunk ? > > Ok to commit to Icedtea6 1.6 release branch? > > The changelog would be: > 2009-08-21 Xerxes R?nby > > *ports/hotspot/src/share/vm/shark/sharkBuilder.cpp > (zero_cmpxchg_int): Updated method to match current Shark > and LLVM atomic calling convention. > Fixes compilation error and logic for ARM. > (zero_cmpxchg_ptr): Likewise. > > > Cheers > Xerxes > If you are curious and want to test the above fix on a non ARM system then apply the attached patch in this mail, it makes any Shark system use the atomic of zero instead of llvm, this makes it possible to test the atomic workaround on X86 and PPC systems. The reason why this works are because the workaround itself are platform independent. Cheers Xerxes -------------- next part -------------- A non-text attachment was scrubbed... Name: allways_use_zeros_atomics_for_shark_for_testing.patch Type: text/x-patch Size: 1315 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090821/20f6e840/allways_use_zeros_atomics_for_shark_for_testing.patch From cpdev-commits at icedtea.classpath.org Fri Aug 21 05:51:11 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Fri, 21 Aug 2009 12:51:11 +0000 Subject: /hg/icedtea6: 2009-08-21 Xerxes R?nby Message-ID: changeset 19b737c81a25 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=19b737c81a25 summary: 2009-08-21 Xerxes R?nby diffstat: 2 files changed, 15 insertions(+), 7 deletions(-) ChangeLog | 8 ++++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 14 +++++++------- diffs (46 lines): diff -r 13ec26d44a62 -r 19b737c81a25 ChangeLog --- a/ChangeLog Fri Aug 21 09:55:52 2009 +0200 +++ b/ChangeLog Fri Aug 21 14:56:13 2009 +0200 @@ -1,3 +1,11 @@ 2009-08-21 Matthias Klose + + *ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (zero_cmpxchg_int): Updated method to match current Shark + and LLVM atomic calling convention. + Fixes compilation error and logic for ARM. + (zero_cmpxchg_ptr): Likewise. + 2009-08-21 Matthias Klose * Makefile.am (stamps/hotspot-tools-class-files.stamp, diff -r 13ec26d44a62 -r 19b737c81a25 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 21 09:55:52 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 21 14:56:13 2009 +0200 @@ -385,9 +385,9 @@ Value* SharkBuilder::uncommon_trap() // perform these operations without delegating to a function. #ifdef ARM -static jint zero_cmpxchg_int(volatile jint *ptr, jint *oldval, jint newval) -{ - return Atomic::cmpxchg(*newval, ptr, *oldval); +static jint zero_cmpxchg_int(volatile jint *ptr, jint oldval, jint newval) +{ + return Atomic::cmpxchg(newval, ptr, oldval); } #endif // ARM @@ -404,10 +404,10 @@ Value* SharkBuilder::cmpxchg_int() #ifdef ARM static intptr_t zero_cmpxchg_ptr(volatile intptr_t* ptr, - intptr_t* oldval, - intptr_t* newval) -{ - return Atomic::cmpxchg_ptr(*newval, ptr, *oldval); + intptr_t oldval, + intptr_t newval) +{ + return Atomic::cmpxchg_ptr(newval, ptr, oldval); } #endif // ARM From cpdev-commits at icedtea.classpath.org Fri Aug 21 06:19:39 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Fri, 21 Aug 2009 13:19:39 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 1e9bf43c720a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1e9bf43c720a summary: Backport regression (NPE) fix for AccessControlContext. changeset 6c7d314c994f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=6c7d314c994f summary: Merge diffstat: 5 files changed, 108 insertions(+), 7 deletions(-) ChangeLog | 17 ++++ HACKING | 1 Makefile.am | 1 patches/openjdk/6648816.patch | 82 +++++++++++++++++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 14 +-- diffs (163 lines): diff -r 13ec26d44a62 -r 6c7d314c994f ChangeLog --- a/ChangeLog Fri Aug 21 09:55:52 2009 +0200 +++ b/ChangeLog Fri Aug 21 14:22:34 2009 +0100 @@ -1,3 +1,20 @@ 2009-08-21 Matthias Klose + + * Makefile.am: + Add new backported patch to fix + regression in AccessControlContext. + * HACKING: Updated. + * patches/openjdk/6648816.patch: + New. + +2009-08-20 Andrew John Hughes + + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (zero_cmpxchg_int): Updated method to match current Shark + and LLVM atomic calling convention. + Fixes compilation error and logic for ARM. + (zero_cmpxchg_ptr): Likewise. + 2009-08-21 Matthias Klose * Makefile.am (stamps/hotspot-tools-class-files.stamp, diff -r 13ec26d44a62 -r 6c7d314c994f HACKING --- a/HACKING Fri Aug 21 09:55:52 2009 +0200 +++ b/HACKING Fri Aug 21 14:22:34 2009 +0100 @@ -118,6 +118,7 @@ The following patches are only applied t for rh-489586) * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. +* openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext The following patches are only applied to OpenJDK in IcedTea: diff -r 13ec26d44a62 -r 6c7d314c994f Makefile.am --- a/Makefile.am Fri Aug 21 09:55:52 2009 +0200 +++ b/Makefile.am Fri Aug 21 14:22:34 2009 +0100 @@ -701,6 +701,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-java2d-stroker-internal-close-joint.patch \ patches/icedtea-disable-cc-incompatible-sanity-checks.patch \ patches/icedtea-explicit-target-arch.patch \ + patches/openjdk/6648816.patch \ $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp diff -r 13ec26d44a62 -r 6c7d314c994f patches/openjdk/6648816.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6648816.patch Fri Aug 21 14:22:34 2009 +0100 @@ -0,0 +1,82 @@ + +# HG changeset patch +# User xuelei +# Date 1205602985 14400 +# Node ID 7dc3b56f220faa1aa6418462eb362276599a045a +# Parent 32e7ba670b0e599646931954ab2b0cc3feb1e7b4 +6648816: REGRESSION: setting -Djava.security.debug=failure result in NPE in ACC +Summary: unchecking the null pointer of the debug handle +Reviewed-by: mullan, weijun + +--- openjdk.orig/jdk/src/share/classes/java/security/AccessControlContext.java Fri Mar 14 10:33:21 2008 -0400 ++++ openjdk/jdk/src/share/classes/java/security/AccessControlContext.java Sat Mar 15 13:43:05 2008 -0400 +@@ -1,5 +1,5 @@ + /* +- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. ++ * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -322,7 +322,7 @@ public final class AccessControlContext + debug.println("access denied " + perm); + } + +- if (Debug.isOn("failure")) { ++ if (Debug.isOn("failure") && debug != null) { + // Want to make sure this is always displayed for failure, + // but do not want to display again if already displayed + // above. +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/test/java/security/AccessControlContext/FailureDebugOption.java Sat Mar 15 13:43:05 2008 -0400 +@@ -0,0 +1,50 @@ ++/* ++ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 6648816 ++ * @summary REGRESSION: setting -Djava.security.debug=failure result in NPE ++ * in ACC ++ * @run main/othervm -Djava.security.debug=failure FailureDebugOption ++ */ ++ ++import java.security.ProtectionDomain; ++import java.security.AccessController; ++import java.security.AccessControlException; ++import java.security.BasicPermission; ++ ++public class FailureDebugOption { ++ ++ public static void main (String argv[]) throws Exception { ++ try { ++ AccessController.checkPermission( ++ new BasicPermission("no such permission"){}); ++ } catch (NullPointerException npe) { ++ throw new Exception("Unexpected NullPointerException for security" + ++ " debug option, -Djava.security.debug=failure"); ++ } catch (AccessControlException ace) { ++ } ++ } ++} ++ + diff -r 13ec26d44a62 -r 6c7d314c994f ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 21 09:55:52 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 21 14:22:34 2009 +0100 @@ -385,9 +385,9 @@ Value* SharkBuilder::uncommon_trap() // perform these operations without delegating to a function. #ifdef ARM -static jint zero_cmpxchg_int(volatile jint *ptr, jint *oldval, jint newval) -{ - return Atomic::cmpxchg(*newval, ptr, *oldval); +static jint zero_cmpxchg_int(volatile jint *ptr, jint oldval, jint newval) +{ + return Atomic::cmpxchg(newval, ptr, oldval); } #endif // ARM @@ -404,10 +404,10 @@ Value* SharkBuilder::cmpxchg_int() #ifdef ARM static intptr_t zero_cmpxchg_ptr(volatile intptr_t* ptr, - intptr_t* oldval, - intptr_t* newval) -{ - return Atomic::cmpxchg_ptr(*newval, ptr, *oldval); + intptr_t oldval, + intptr_t newval) +{ + return Atomic::cmpxchg_ptr(newval, ptr, oldval); } #endif // ARM From cpdev-commits at icedtea.classpath.org Fri Aug 21 06:37:58 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Fri, 21 Aug 2009 13:37:58 +0000 Subject: /hg/release/icedtea6-1.6: 2009-08-21 Xerxes R?nby changeset 4e8a939956f5 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=4e8a939956f5 summary: 2009-08-21 Xerxes R?nby diffstat: 2 files changed, 15 insertions(+), 7 deletions(-) ChangeLog | 8 ++++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 14 +++++++------- diffs (46 lines): diff -r 3bb4b0a830b3 -r 4e8a939956f5 ChangeLog --- a/ChangeLog Fri Aug 21 09:55:52 2009 +0200 +++ b/ChangeLog Fri Aug 21 15:42:56 2009 +0200 @@ -1,3 +1,11 @@ 2009-08-21 Matthias Klose + + *ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (zero_cmpxchg_int): Updated method to match current Shark + and LLVM atomic calling convention. + Fixes compilation error and logic for ARM. + (zero_cmpxchg_ptr): Likewise. + 2009-08-21 Matthias Klose * Makefile.am (stamps/hotspot-tools-class-files.stamp, diff -r 3bb4b0a830b3 -r 4e8a939956f5 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 21 09:55:52 2009 +0200 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 21 15:42:56 2009 +0200 @@ -385,9 +385,9 @@ Value* SharkBuilder::uncommon_trap() // perform these operations without delegating to a function. #ifdef ARM -static jint zero_cmpxchg_int(volatile jint *ptr, jint *oldval, jint newval) -{ - return Atomic::cmpxchg(*newval, ptr, *oldval); +static jint zero_cmpxchg_int(volatile jint *ptr, jint oldval, jint newval) +{ + return Atomic::cmpxchg(newval, ptr, oldval); } #endif // ARM @@ -404,10 +404,10 @@ Value* SharkBuilder::cmpxchg_int() #ifdef ARM static intptr_t zero_cmpxchg_ptr(volatile intptr_t* ptr, - intptr_t* oldval, - intptr_t* newval) -{ - return Atomic::cmpxchg_ptr(*newval, ptr, *oldval); + intptr_t oldval, + intptr_t newval) +{ + return Atomic::cmpxchg_ptr(newval, ptr, oldval); } #endif // ARM From xerxes at zafena.se Fri Aug 21 06:48:15 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Fri, 21 Aug 2009 15:48:15 +0200 Subject: [patch] ARM Shark compilation and logic fix after last months Shark refactoring. In-Reply-To: <200908211556.n7LFuUiO027508@parsley.camswl.com> References: <200908211556.n7LFuUiO027508@parsley.camswl.com> Message-ID: <4A8EA59F.7090708@zafena.se> Edward Nevill skrev: > Looks good. > > I also notice to get it to build on ARM I had to add 'jit' to llvm_components in configure.ac. > > Regards, > Ed. > Hi Edward Thats excellent news! Could you file and email a patch for this change to configure.ac? Does the build break on your system without the change to configure.ac? Cheers Xerxes From bugzilla-daemon at icedtea.classpath.org Fri Aug 21 07:14:18 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 21 Aug 2009 14:14:18 +0000 Subject: [Bug 366] [powerpc] shark enabled openjdk-6 20090710 fails with llvm 20090710 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=366 ------- Comment #1 from doko at ubuntu.com 2009-08-21 14:14 ------- reconfirming with llvm trunk 20090820. -- 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 cpdev-commits at icedtea.classpath.org Fri Aug 21 07:19:14 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Fri, 21 Aug 2009 14:19:14 +0000 Subject: /hg/icedtea6: ChangeLog fix Message-ID: changeset ea895e1bbf2d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ea895e1bbf2d summary: ChangeLog fix diffstat: 1 file changed, 8 insertions(+), 8 deletions(-) ChangeLog | 16 ++++++++-------- diffs (31 lines): diff -r 6c7d314c994f -r ea895e1bbf2d ChangeLog --- a/ChangeLog Fri Aug 21 14:22:34 2009 +0100 +++ b/ChangeLog Fri Aug 21 16:24:12 2009 +0200 @@ -1,4 +1,12 @@ 2009-08-21 Xerxes R??nby + + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (zero_cmpxchg_int): Updated method to match current Shark + and LLVM atomic calling convention. + Fixes compilation error and logic for ARM. + (zero_cmpxchg_ptr): Likewise. + +2009-08-20 Andrew John Hughes * Makefile.am: Add new backported patch to fix @@ -6,14 +14,6 @@ 2009-08-21 Xerxes R??nby - - * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp - (zero_cmpxchg_int): Updated method to match current Shark - and LLVM atomic calling convention. - Fixes compilation error and logic for ARM. - (zero_cmpxchg_ptr): Likewise. 2009-08-21 Matthias Klose From bugzilla-daemon at icedtea.classpath.org Fri Aug 21 07:26:35 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 21 Aug 2009 14:26:35 +0000 Subject: [Bug 366] [powerpc] shark enabled openjdk-6 20090710 fails with llvm 20090710 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=366 ------- Comment #2 from xerxes at zafena.se 2009-08-21 14:26 ------- I doubt it will change anything since it looks like TLS are unimplemented in LLVM for PPC but could you test a build using llvm svn rev 79607 from 2009-08-21 ? According to the llvm buildbots that revision at least passes all llvm regression tests for PPC. http://google1.osuosl.org:8011/builders/llvm-ppc-linux/builds/2650 Does there exist any open llvm bugreport in the llvm bugzilla for 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. From bugzilla-daemon at icedtea.classpath.org Fri Aug 21 07:29:59 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 21 Aug 2009 14:29:59 +0000 Subject: [Bug 366] [powerpc] shark enabled openjdk-6 20090710 fails with llvm 20090710 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=366 ------- Comment #3 from doko at ubuntu.com 2009-08-21 14:29 ------- wait, that's another error, the stage1 java -version succeeds, but then it fails: [javac] Compiling 243 source files to /home/doko/openjdk/openjdk-6-6b16-1.6~pre1/build/openjdk/build/linux-ppc/langtools/build/bootstrap/classes [javac] javac: /build/buildd/llvm-2.5+svn20090820/lib/Target/PowerPC/PPCJITInfo.cpp:391: virtual void llvm::PPCJITInfo::relocate(void*, llvm::MachineRelocation*, unsigned int, unsigned char*): Assertion `ResultPtr >= -(1 << 23) && ResultPtr < (1 << 23) && "Relocation out of range!"' failed. [javac] Stack dump: [javac] 0. Running pass 'PowerPC Machine Code Emitter' on function '@"com.sun.tools.javac.comp.MemberEnter::complete"' BUILD FAILED /home/doko/openjdk/openjdk-6-6b16-1.6~pre1/build/openjdk/langtools/make/build.xml:177: The following error occurred while executing this line: /home/doko/openjdk/openjdk-6-6b16-1.6~pre1/build/openjdk/langtools/make/build.xml:413: The following error occurred while executing this line: /home/doko/openjdk/openjdk-6-6b16-1.6~pre1/build/openjdk/langtools/make/build.xml:451: The following error occurred while executing this line: /home/doko/openjdk/openjdk-6-6b16-1.6~pre1/build/openjdk/langtools/make/build.xml:514: Compile failed; see the compiler error output for details. Total time: 56 seconds make[3]: *** [build] Error 1 make[3]: Leaving directory `/home/doko/openjdk/openjdk-6-6b16-1.6~pre1/build/openjdk/langtools/make' -- 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 cpdev-commits at icedtea.classpath.org Fri Aug 21 07:38:06 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Fri, 21 Aug 2009 14:38:06 +0000 Subject: /hg/release/icedtea6-1.6: Backport regression (NPE) fix for Acce... Message-ID: changeset b8d4584ef200 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=b8d4584ef200 summary: Backport regression (NPE) fix for AccessControlContext. diffstat: 4 files changed, 93 insertions(+) ChangeLog | 9 ++++ HACKING | 1 Makefile.am | 1 patches/openjdk/6648816.patch | 82 +++++++++++++++++++++++++++++++++++++++++ diffs (124 lines): diff -r 4e8a939956f5 -r b8d4584ef200 ChangeLog --- a/ChangeLog Fri Aug 21 15:42:56 2009 +0200 +++ b/ChangeLog Thu Aug 20 20:42:36 2009 +0100 @@ -1,3 +1,12 @@ 2009-08-21 Xerxes R??nby + + * Makefile.am: + Add new backported patch to fix + regression in AccessControlContext. + * HACKING: Updated. + * patches/openjdk/6648816.patch: + New. + 2009-08-21 Xerxes R??nby *ports/hotspot/src/share/vm/shark/sharkBuilder.cpp diff -r 4e8a939956f5 -r b8d4584ef200 HACKING --- a/HACKING Fri Aug 21 15:42:56 2009 +0200 +++ b/HACKING Thu Aug 20 20:42:36 2009 +0100 @@ -118,6 +118,7 @@ The following patches are only applied t for rh-489586) * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. +* openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext The following patches are only applied to OpenJDK in IcedTea: diff -r 4e8a939956f5 -r b8d4584ef200 Makefile.am --- a/Makefile.am Fri Aug 21 15:42:56 2009 +0200 +++ b/Makefile.am Thu Aug 20 20:42:36 2009 +0100 @@ -701,6 +701,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-java2d-stroker-internal-close-joint.patch \ patches/icedtea-disable-cc-incompatible-sanity-checks.patch \ patches/icedtea-explicit-target-arch.patch \ + patches/openjdk/6648816.patch \ $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp diff -r 4e8a939956f5 -r b8d4584ef200 patches/openjdk/6648816.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6648816.patch Thu Aug 20 20:42:36 2009 +0100 @@ -0,0 +1,82 @@ + +# HG changeset patch +# User xuelei +# Date 1205602985 14400 +# Node ID 7dc3b56f220faa1aa6418462eb362276599a045a +# Parent 32e7ba670b0e599646931954ab2b0cc3feb1e7b4 +6648816: REGRESSION: setting -Djava.security.debug=failure result in NPE in ACC +Summary: unchecking the null pointer of the debug handle +Reviewed-by: mullan, weijun + +--- openjdk.orig/jdk/src/share/classes/java/security/AccessControlContext.java Fri Mar 14 10:33:21 2008 -0400 ++++ openjdk/jdk/src/share/classes/java/security/AccessControlContext.java Sat Mar 15 13:43:05 2008 -0400 +@@ -1,5 +1,5 @@ + /* +- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. ++ * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -322,7 +322,7 @@ public final class AccessControlContext + debug.println("access denied " + perm); + } + +- if (Debug.isOn("failure")) { ++ if (Debug.isOn("failure") && debug != null) { + // Want to make sure this is always displayed for failure, + // but do not want to display again if already displayed + // above. +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/test/java/security/AccessControlContext/FailureDebugOption.java Sat Mar 15 13:43:05 2008 -0400 +@@ -0,0 +1,50 @@ ++/* ++ * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 6648816 ++ * @summary REGRESSION: setting -Djava.security.debug=failure result in NPE ++ * in ACC ++ * @run main/othervm -Djava.security.debug=failure FailureDebugOption ++ */ ++ ++import java.security.ProtectionDomain; ++import java.security.AccessController; ++import java.security.AccessControlException; ++import java.security.BasicPermission; ++ ++public class FailureDebugOption { ++ ++ public static void main (String argv[]) throws Exception { ++ try { ++ AccessController.checkPermission( ++ new BasicPermission("no such permission"){}); ++ } catch (NullPointerException npe) { ++ throw new Exception("Unexpected NullPointerException for security" + ++ " debug option, -Djava.security.debug=failure"); ++ } catch (AccessControlException ace) { ++ } ++ } ++} ++ + From bugzilla-daemon at icedtea.classpath.org Fri Aug 21 10:19:44 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 21 Aug 2009 17:19:44 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 ------- Comment #11 from gnu_andrew at member.fsf.org 2009-08-21 17:19 ------- OpenJDK7 just gained native ECC support: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6840752 http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/1ff7163fc5f7 >From reading the changeset it seems they import the Mozilla NSS code. So we may actually need to patch this back out in IcedTea... sigh. Jon, for 6 I think we would need to patch java.security to include that provider if NSS is available. -- 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 Aug 21 10:26:21 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 21 Aug 2009 18:26:21 +0100 Subject: [patch] let build stage1 build with ecj-3.5.x In-Reply-To: <4A8E4E39.1040502@ubuntu.com> References: <4A8E4E39.1040502@ubuntu.com> Message-ID: <17c6771e0908211026k12bf3f82s5bea6013ffca0adc@mail.gmail.com> 2009/8/21 Matthias Klose : > Trying to build icedtea6 with gcj-4.4 using ecj from the 3.5 release branch; > the build failed for a bug now fixed on the 3.5 branch, but now still fails > because a -classpath '' argument is missing. See > https://bugs.eclipse.org/bugs/show_bug.cgi?id=285466, Olivier writes: > > > The problem comes from your classpath. > > path="/scratch/packages/openjdk/u/ecjbug/hotspot-tools/"/> > path="/scratch/packages/openjdk/u/ecjbug/openjdk/jdk/src/share/classes/"/> > path="/scratch/packages/openjdk/u/ecjbug/openjdk/jdk/src/solaris/classes/"/> > path="/scratch/packages/openjdk/u/ecjbug/openjdk/langtools/src/share/classes/"/> > path="/scratch/packages/openjdk/u/ecjbug/openjdk/jaxp/src/share/classes/"/> > path="/scratch/packages/openjdk/u/ecjbug/openjdk/corba/src/share/classes/"/> > path="/scratch/packages/openjdk/u/ecjbug/openjdk/jaxws/src/share/classes/"/> > path="/scratch/packages/openjdk/u/ecjbug/generated/"/> > > > > the last entry should not be there. > > Did you change something in the way you invoke the batch compiler? > If no classpath is set up we add the current user directory on the classpath > and this could explain why this folder is added to the classpath. > > The patch just adds the empty classpath argument. Bootstrap succeeds with > ecj-3.5 from the branch. > As mjw says, please ensure this works with at least 3.4 if not 3.3 also. > Patch should be applied to the 1.5 release branch and 1.7. > What about 1.6? And IcedTea7? > ?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 doko at ubuntu.com Fri Aug 21 10:59:24 2009 From: doko at ubuntu.com (Matthias Klose) Date: Fri, 21 Aug 2009 19:59:24 +0200 Subject: [patch] let build stage1 build with ecj-3.5.x In-Reply-To: <17c6771e0908211026k12bf3f82s5bea6013ffca0adc@mail.gmail.com> References: <4A8E4E39.1040502@ubuntu.com> <17c6771e0908211026k12bf3f82s5bea6013ffca0adc@mail.gmail.com> Message-ID: <4A8EE07C.90408@ubuntu.com> On 21.08.2009 19:26, Andrew John Hughes wrote: > As mjw says, please ensure this works with at least 3.4 if not 3.3 also. you're late ;p already checked and checked in. >> Patch should be applied to the 1.5 release branch and 1.7. >> > > What about 1.6? And IcedTea7? Somebody did patch IcedTea7 in a different way and didn't backport the patch :-/ Matthias From gnu_andrew at member.fsf.org Fri Aug 21 11:12:41 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 21 Aug 2009 19:12:41 +0100 Subject: [patch] let build stage1 build with ecj-3.5.x In-Reply-To: <4A8EE07C.90408@ubuntu.com> References: <4A8E4E39.1040502@ubuntu.com> <17c6771e0908211026k12bf3f82s5bea6013ffca0adc@mail.gmail.com> <4A8EE07C.90408@ubuntu.com> Message-ID: <17c6771e0908211112m468ce4f5l236b7fe8b7d4bae9@mail.gmail.com> 2009/8/21 Matthias Klose : > On 21.08.2009 19:26, Andrew John Hughes wrote: > >> As mjw says, please ensure this works with at least 3.4 if not 3.3 also. > > you're late ;p already checked and checked in. > >>> Patch should be applied to the 1.5 release branch and 1.7. >>> >> >> What about 1.6? And IcedTea7? > > Somebody did patch IcedTea7 in a different way and didn't backport the patch > :-/ > So IcedTea7 already works with 3.5? Sweet :) > ?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 dbhole at redhat.com Fri Aug 21 11:14:16 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 21 Aug 2009 14:14:16 -0400 Subject: Patch to allow sharing of classloader between extentions In-Reply-To: <20090814081717.GA3331@redhat.com> References: <20090813182519.GB23290@redhat.com> <20090814081717.GA3331@redhat.com> Message-ID: <20090821181415.GA16796@redhat.com> * Gary Benson [2009-08-14 04:17]: > Deepak Bhole wrote: > > JNLP files allow loading of child jnlps via the extension element. > > Currently, the classloader used by these child jnlps is different > > than the one used by the parent. When a resource request comes in, > > the loader and its children are searched. In theory this should > > work, but many applets don't like it. For example: > > > > http://javafx.com/samples/SwirlingSquares/webstart/SwirlingSquares.jnlp > > > > Attached patch makes it so that the same loader is shared. This is > > not an ideal fix, but more of a workaround to let other applets > > work. It does not break any existing loading mechanism AFAIK, and > > allows a set of applets that didn't work before, to work. > > > > Thoughts? > > Does it allow the classes of one applet to see the classes of another? > Sorry, didn't even see this message :( Nope, it does not. With this patch, the classloader can only be shared between child jnlps of a specific instance (not even multiple instances of the same code). Cheers, Deepak > Cheers, > Gary > > -- > http://gbenson.net/ From dbhole at redhat.com Sun Aug 23 16:36:52 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Sun, 23 Aug 2009 19:36:52 -0400 Subject: 3 plugin patches for 1.6 Message-ID: <20090823233652.GA26012@redhat.com> Hi, Attached are 3 plugin patches for the 1.6 release. These are the last of the patches that need to make it into 1.6. Patch 1: allow-cn-mismatch.patch Currently, if the hostname of a site does not match the certificate CN, the connection fails. This patch gives the user the option to bypass that. Patch 2: cookie-manager.patch This is more of a fix for bugs on serverside.. for example, webmin sets a cookie named " sid". The current cookie implementation in the plugin uses HttpCookie for storing cookies, which strips the initial space. Webmin cannot handle this, and fails. With the attached patch, cookies are handled in a different manner such that spaces don't get stripped. Patch 3: npefix-sigsegv.patch This patch fixes an NPE that can result if the panel has not been fully initialized (encountered on www.tdfx.ca) It also fixes a SIGSEGV issue that results if an applet tries to set a status message with a newline character. Combined ChangeLog: 2009-08-23 Deepak Bhole * rt/net/sourceforge/jnlp/resources/Messages.properties: Add new message key for CN name mismatches. * rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java (HttpsCertVerifier): Accept new parameters that indicate certificate trust status, CN mismatch status, and the hostname. (getAlreadyTrustPublisher): Use provided isTrusted boolean to get around checkServerTrusted() synchronization. (getDetails): Include details about CN mismatch. (getNamesForCert): New private method. Returns all acceptable names for a given X509Certificate. (R): Overloaded the method to return messages that have 2 variables. * rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java: Extend X509ExtendedTrustManager rather than X509TrustManager. (checkClientTrusted): Overloaded method with one that takes a hostname. (checkServerTrusted): Same. The new overloaded method also checks for CN mismatch if the certificate is not explicitly trusted. (isExplicitlyTrusted): Returns if the given certificate chain is part of the local user trusted DB. (askUser): Change parameters to accept information about trust, host match status, and hostname. * plugin/icedtea/sun/applet/PluginCookieInfoRequest.java (parseReturn): Store cookie info as a string rather than a list of HttpCookie objects. (getObject): Return the new cookie string. * plugin/icedtea/sun/applet/PluginCookieManager.java: New file, extends CookieManager as is set as the default cookie manager for the plugin. * plugin/icedtea/sun/applet/PluginCookieStore.java : Deleted. New design uses a custom cookiemanager rather than just a custom store. * plugin/icedtea/sun/applet/PluginMain.java : Wire in the new cookie manager. * plugin/icedtea/sun/applet/PluginAppletViewer.java (handleMessage): Wait until panel is set before pinging it for life status. (showStatus): Replace new lines with spaces, as the status is on a single line anyway. Cheers, Deepak -------------- next part -------------- A non-text attachment was scrubbed... Name: allow-cn-mismatch.patch Type: text/x-patch Size: 12096 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090823/e4ccc6af/allow-cn-mismatch.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: cookie-manager.patch Type: text/x-patch Size: 10134 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090823/e4ccc6af/cookie-manager.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: npefix-sigsegv.patch Type: text/x-patch Size: 1035 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090823/e4ccc6af/npefix-sigsegv.patch From ed at camswl.com Mon Aug 24 06:39:18 2009 From: ed at camswl.com (Edward Nevill) Date: Mon, 24 Aug 2009 14:39:18 +0100 Subject: Bug fixes for IcedTea 1.6 (ARM interpreter) Message-ID: <200908241339.n7ODdIYR026278@parsley.camswl.com> Hi, I see that the ARM interpreter has made it into the 1.6 release which is good news!. However, I have 4 bug fixes which I had not checked in because I did not realise it was going into the release. Attached below is a diff file for the 4 bug fixes. Bug 1: When run to a branch safe point the Java program counter is left pointing at the branch destination, rather than the branch instruction. This is a theoretical bug only, I only found it through assertion testing. I have never observered it occur in real life. It will only matter if GC cares about the fact that the program counter saved in the interpreter state points at the destination rather than the branch. However, the interface is that it is supposed to run to the safe point which is the branch, not the branch destination. Note: There is a second related problem with this bug in that if for some reason an exception is thrown by SafepointSynchronize (eg. Out of Memory) then the exception would be thrown at the branch destination rather than the branch. The fix is to ajdust the jpc back at the branch, do the safe point and then update the jpc and refetch the opcode. This is done in the 1st diff at line 1744. Bug 2: The branch safe point handling code does not restore the constpool pointer. This is a definite bug observed during assertion testing. The fix is to load the constpool pointer. See 1st diff at line 1744. Bug 3: wide astore does not pop the stack. A definite but rare bug. Fix is to make wide astore behave the same as wide fstore or wide istore (previously it called BytecodeInterpreter::astore but this does nothing special for astore). See line 3066 Bug 4: Native entry fails to save r6. Again a theoretical bug only observed on reading the code. If the caller does not need the contents of r6 then there is no problem. Fix: save r6 on entry and exit. Note the change starting at line 3709 adds r6 to the list of registers to be saved, but removes r3 from the list of registers. The reason is that r3 is not required to be saved (it is a caller save reg on ARM). However the stack is required to be 8 byte aligned on ARM so r3 was added to the register list, now that r6 is added r3 must be remove to keep the arg list a multiple of 8 bytes). Note: There is at least one more known bug in the ARM interpreter which causes it to segfault approx every 4th or 5th run of the JCK. I am currently investigating this but it is proving very elusive. Regards, Ed. --- CUT HERE ---- diff -ruNE icedtea6-1.6~/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S icedtea6-1.6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- icedtea6-1.6~/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2009-08-24 09:42:36.000000000 +0100 +++ icedtea6-1.6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2009-08-24 10:42:26.000000000 +0100 @@ -1744,6 +1744,9 @@ cmp r1, #1 bne branch_no_check + sub jpc, jpc, ip @ Point jpc back at the branch + mov tmp1, ip @ Save offset in tmp1 + ldr r3, [istate, #ISTATE_THREAD] mov r0, sp str r3, [sp] @@ -1752,14 +1755,16 @@ str jpc, [istate, #ISTATE_BCP] str stack, [istate, #ISTATE_STACK] bl _ZN20SafepointSynchronize5blockEP10JavaThread + ldr constpool, [istate, #ISTATE_CONSTANTS] ldr r0, [istate, #ISTATE_THREAD] ldr stack, [istate, #ISTATE_STACK] + add constpool, constpool, #CONST_POOL_OFFSET ldr r3, [r0, #THREAD_PENDING_EXC] ldr jpc, [istate, #ISTATE_BCP] cmp r3, #0 ldr locals, [istate, #ISTATE_LOCALS] bne handle_exception - DISPATCH_START 0 + DISPATCH_START_REG tmp1 @ Refetch opcode and update jpc again branch_no_check: DISPATCH_BYTECODE @@ -3061,6 +3066,7 @@ DISPATCH 4 case_wide_istore: case_wide_fstore: +case_wide_astore: POP r2 str r2, [locals, -r1, lsl #2] DISPATCH 4 @@ -3076,13 +3082,6 @@ sub r1, locals, r1, lsl #2 stmda r1, {r2, r3} DISPATCH 4 -case_wide_astore: - mov r3, r1 - mov r0, stack - mvn r1, #0 - mov r2, locals - bl _ZN19BytecodeInterpreter6astoreEPiiS0_i - DISPATCH 4 do_wide_ret: ldr r2, [istate, #ISTATE_METHOD] ldr r2, [r2, #8] @@ -3709,7 +3708,7 @@ ALIGN_CODE native_entry: adrl ip, dispatch_init_adcon - stmfd sp!, {r3, r4, r5, r7, r9, r10, r11, lr} + stmfd sp!, {r4, r5, r6, r7, r9, r10, r11, lr} @--- ldmia ip, {dispatch, r7} mov r11, r0 @@ -3925,7 +3924,7 @@ ldr r2, [r9, #THREAD_ACTIVE_HANDLES] mov r3, #0 @ ECN: Now that the object is safe on the Java stack str r3, [r2, #128] @ stack, with the Thread SP updated, clear the active_handles. - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_short: mov r0, r0, lsl #16 mov r0, r0, asr #16 @@ -3933,29 +3932,29 @@ str r0, [r5, #-4]! .native_return_void: str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_dw: stmdb r5!, {r0, r1} str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_byte: mov r0, r0, lsl #24 mov r0, r0, asr #24 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_char: mov r0, r0, lsl #16 mov r0, r0, lsr #16 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_bool: ands r0, r0, #255 movne r0, #1 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_entry_throw_stack_overflow: str r0, [r9, #THREAD_LAST_JAVA_SP] @@ -3973,7 +3972,7 @@ add r5, r5, r3, lsl #2 str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_entry_do_special: stmdb sp!, {r0, r1} mov r0, r9 From gbenson at redhat.com Mon Aug 24 03:52:29 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 24 Aug 2009 11:52:29 +0100 Subject: Bug fixes for IcedTea 1.6 (ARM interpreter) In-Reply-To: <200908241339.n7ODdIYR026278@parsley.camswl.com> References: <200908241339.n7ODdIYR026278@parsley.camswl.com> Message-ID: <20090824105229.GA3304@redhat.com> Edward Nevill wrote: > However, I have 4 bug fixes which I had not checked in because I did > not realise it was going into the release. > > Attached below is a diff file for the 4 bug fixes. Please commit. I suggest that for things like this you should be allowed to commit without approval since I doubt anyone else really knows how this stuff works! Does anybody object to that? > ...if for some reason an exception is thrown by SafepointSynchronize... As an aside, anything that safepoints can _always_ throw exceptions. When a thread is stopped by another thread, for example, a ThreadDeath exception is stored in the thread as a pending asynchronous exception. The next safepoint will convert the pending asynchronous exception into a normal pending exception. I got caught out by this once and it was a pig to figure out. > Note: There is at least one more known bug in the ARM interpreter > which causes it to segfault approx every 4th or 5th run of the > JCK. I am currently investigating this but it is proving very > elusive. Check you aren't storing oops in registers across safepoints. Most of the "odd segfaults" I had in the PPC interpreter and then Zero were down to this. Cheers, Gary -- http://gbenson.net/ From doko at ubuntu.com Mon Aug 24 05:50:53 2009 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 24 Aug 2009 14:50:53 +0200 Subject: Bug fixes for IcedTea 1.6 (ARM interpreter) In-Reply-To: <20090824105229.GA3304@redhat.com> References: <200908241339.n7ODdIYR026278@parsley.camswl.com> <20090824105229.GA3304@redhat.com> Message-ID: <4A928CAD.3040909@ubuntu.com> On 24.08.2009 12:52, Gary Benson wrote: > Edward Nevill wrote: >> However, I have 4 bug fixes which I had not checked in because I did >> not realise it was going into the release. >> >> Attached below is a diff file for the 4 bug fixes. > > Please commit. I suggest that for things like this you should be > allowed to commit without approval since I doubt anyone else really > knows how this stuff works! Does anybody object to that? +1 Matthias From doko at ubuntu.com Mon Aug 24 05:53:41 2009 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 24 Aug 2009 14:53:41 +0200 Subject: Bug fixes for IcedTea 1.6 (ARM interpreter) In-Reply-To: <200908241339.n7ODdIYR026278@parsley.camswl.com> References: <200908241339.n7ODdIYR026278@parsley.camswl.com> Message-ID: <4A928D55.6020306@ubuntu.com> On 24.08.2009 15:39, Edward Nevill wrote: > I see that the ARM interpreter has made it into the 1.6 release which is good news!. These are the jtreg test results, when running the jtreg tests included in IcedTea. There might be a problem with xvfb, resulting in the high number of awt/swing errors. > Note: There is at least one more known bug in the ARM interpreter which causes it to segfault > approx every 4th or 5th run of the JCK. I am currently investigating this but it is > proving very elusive. would it be possible to run the jtreg tests as well? It has the advantage to compare test results publically. Matthias From doko at ubuntu.com Mon Aug 24 05:54:45 2009 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 24 Aug 2009 14:54:45 +0200 Subject: Bug fixes for IcedTea 1.6 (ARM interpreter) In-Reply-To: <4A928CAD.3040909@ubuntu.com> References: <200908241339.n7ODdIYR026278@parsley.camswl.com> <20090824105229.GA3304@redhat.com> <4A928CAD.3040909@ubuntu.com> Message-ID: <4A928D95.9020409@ubuntu.com> On 24.08.2009 14:50, Matthias Klose wrote: > On 24.08.2009 12:52, Gary Benson wrote: >> Edward Nevill wrote: >>> However, I have 4 bug fixes which I had not checked in because I did >>> not realise it was going into the release. >>> >>> Attached below is a diff file for the 4 bug fixes. >> >> Please commit. I suggest that for things like this you should be >> allowed to commit without approval since I doubt anyone else really >> knows how this stuff works! Does anybody object to that? > > +1 attaching the log ... -------------- next part -------------- A non-text attachment was scrubbed... Name: jtreg-summary.log Type: text/x-log Size: 9841 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090824/6a1414ab/jtreg-summary.log From gnu_andrew at member.fsf.org Mon Aug 24 06:38:32 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 24 Aug 2009 14:38:32 +0100 Subject: Bug fixes for IcedTea 1.6 (ARM interpreter) In-Reply-To: <20090824105229.GA3304@redhat.com> References: <200908241339.n7ODdIYR026278@parsley.camswl.com> <20090824105229.GA3304@redhat.com> Message-ID: <17c6771e0908240638v38069e42t924f6b2bde480db7@mail.gmail.com> 2009/8/24 Gary Benson : > Edward Nevill wrote: >> However, I have 4 bug fixes which I had not checked in because I did >> not realise it was going into the release. >> >> Attached below is a diff file for the 4 bug fixes. > > Please commit. ?I suggest that for things like this you should be > allowed to commit without approval since I doubt anyone else really > knows how this stuff works! ?Does anybody object to that? > That sounds ok as long as it only applies to bug fixes such as this and the patches are still posted to the list with explanation. I don't like the idea of random commits without discussion and certainly any commits which alter the build machinery (configure.ac, Makefile.am, etc.) need approval on 6, as a lot of people rely on being able to build. I'd also suggest that in the long run someone else learns how this works so Ed's work gets appropriate review. > > 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 bugzilla-daemon at icedtea.classpath.org Mon Aug 24 07:42:07 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 24 Aug 2009 14:42:07 +0000 Subject: [Bug 251] ubuntu 8.04 amd64 - Java applet loop: openjdk-6 icedtea6-plugin Firefox Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=251 ------- Comment #4 from jon.vanalten at redhat.com 2009-08-24 14:42 ------- I see what you mean. Tried on an Ubuntu 64-bit virtual machine. But I noticed that in Hardy an older version of icedtea is being used: $ java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu11) OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) In Fedora, where things seem to be working better (at least as far as I am able to try without an account at this bank): $ java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.5) (fedora-27.b16.fc11-x86_64) OpenJDK 64-Bit Server VM (build 14.0-b15, mixed mode) I don't see a newer version in jaunty-backports, but I do see a newer version in Karmic (based only on browsing on the website). Possibly you could request that Ubuntu make it available via jaunty-backports? I'm not a regular Ubuntu user so I'm not familiar with their processes. Not having an account, I won't be able to test post-login behavior. If someone with an account is able to try with a newer version of the plugin, feedback regarding the success (hopefully) or alternatively lack of would be appreciated. If it's not working any better with a more current version, try running firefox from the command line and post any output, and even better would be to run "ICEDTEAPLUGIN_DEBUG=true firefox" and attach ~/.icedteaplugin/java.stdout and ~/.icedteaplugin/java.stderr to this bug report. thx -- 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 Mon Aug 24 12:55:50 2009 From: ed at camswl.com (Edward Nevill) Date: Mon, 24 Aug 2009 20:55:50 +0100 Subject: Bug fixes for IcedTea 1.6 (ARM interpreter) Message-ID: <200908241955.n7OJtohV028005@parsley.camswl.com> >On 24.08.2009 15:39, Edward Nevill wrote: >> I see that the ARM interpreter has made it into the 1.6 release which is good news!. > >These are the jtreg test results, when running the jtreg tests included in >IcedTea. There might be a problem with xvfb, resulting in the high number of >awt/swing errors. > >> Note: There is at least one more known bug in the ARM interpreter which causes it to segfault >> approx every 4th or 5th run of the JCK. I am currently investigating this but it is >> proving very elusive. > >would it be possible to run the jtreg tests as well? It has the advantage to >compare test results publically. > > Matthias Running as we speak, results in about 2 days. I am much encouraged by the fact that it passed all the compiler and lang tests and got through the jdk tests without a segfault. This is a vast improvement! Does anyone have the results for Zero (not HotSpot) on x86? I did try running jtreg on my Zero x86 build but it fell over in jdk after about 1000 tests. My x86 build may be broken. I won't wait for the jtreg results before checking in the bug fixes, but I do want to just check the build is sane. Regards, Ed. From bugzilla-daemon at icedtea.classpath.org Mon Aug 24 12:26:30 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 24 Aug 2009 19:26:30 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 ------- Comment #12 from gnu_andrew at member.fsf.org 2009-08-24 19:26 ------- I've queried this inclusion of NSS on the security-dev list: http://mail.openjdk.java.net/pipermail/security-dev/2009-August/001115.html -- 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 Aug 24 12:34:00 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 24 Aug 2009 19:34:00 +0000 Subject: [Bug 364] NPE in AccessControlContext Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=364 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED ------- Comment #3 from gnu_andrew at member.fsf.org 2009-08-24 19:34 ------- In IcedTea 6 HEAD, 1.5 and 1.6 branches. -- 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 Aug 24 13:10:24 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 24 Aug 2009 20:10:24 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #10 from keiths at redhat.com 2009-08-24 20:10 ------- I don't recall having to go through any great lengths with testing (signed jars!)... I apologize -- my memory of these things is quite sparse. As I recall, some of the things you're asking about were suggestions by a Sun i18n engineer. You can find his comments here (and our entire discourse on this subject): http://mail.openjdk.java.net/pipermail/i18n-dev/2007-August/000001.html Of course, it has been two years, and as you note, you should probably just do what you think is appropriate at this time!! -- 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 Aug 24 13:13:04 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 24 Aug 2009 20:13:04 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #11 from anilsaldhana at gmail.com 2009-08-24 20:13 ------- I would assume you can replicate this issue with any test jar and a test signing key. Just start the security manager with the debug on and you should see this recursion. -- 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 Mon Aug 24 13:42:21 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 24 Aug 2009 21:42:21 +0100 Subject: 3 plugin patches for 1.6 In-Reply-To: <20090823233652.GA26012@redhat.com> References: <20090823233652.GA26012@redhat.com> Message-ID: <17c6771e0908241342o72c69abeg59dea393a04ab5df@mail.gmail.com> 2009/8/24 Deepak Bhole : > Hi, > > Attached are 3 plugin patches for the 1.6 release. These are the last of > the patches that need to make it into 1.6. > > Patch 1: allow-cn-mismatch.patch > Currently, if the hostname of a site does not match the certificate CN, > the connection fails. This patch gives the user the option to bypass > that. > > Patch 2: cookie-manager.patch > This is more of a fix for bugs on serverside.. for example, webmin sets > a cookie named " sid". The current cookie implementation in the plugin > uses HttpCookie for storing cookies, which strips the initial space. > Webmin cannot handle this, and fails. With the attached patch, cookies > are handled in a different manner such that spaces don't get stripped. > > Patch 3: npefix-sigsegv.patch > This patch fixes an NPE that can result if the panel has not been fully > initialized (encountered on www.tdfx.ca) > > It also fixes a SIGSEGV issue that results if an applet tries to set a > status message with a newline character. > > Combined ChangeLog: > 2009-08-23 ?Deepak Bhole > > ? ?* rt/net/sourceforge/jnlp/resources/Messages.properties: Add new message > ? ?key for CN name mismatches. > ? ?* rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java > ? ?(HttpsCertVerifier): Accept new parameters that indicate certificate trust > ? ?status, CN mismatch status, and the hostname. > ? ?(getAlreadyTrustPublisher): Use provided isTrusted boolean to get around > ? ?checkServerTrusted() synchronization. > ? ?(getDetails): Include details about CN mismatch. > ? ?(getNamesForCert): New private method. Returns all acceptable names for > ? ?a given X509Certificate. > ? ?(R): Overloaded the method to return messages that have 2 variables. > ? ?* rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java: Extend > ? ?X509ExtendedTrustManager rather than X509TrustManager. > ? ?(checkClientTrusted): Overloaded method with one that takes a hostname. > ? ?(checkServerTrusted): Same. The new overloaded method also checks for CN > ? ?mismatch if the certificate is not explicitly trusted. > ? ?(isExplicitlyTrusted): Returns if the given certificate chain is part of > ? ?the local user trusted DB. > ? ?(askUser): Change parameters to accept information about trust, host match > ? ?status, and hostname. > ? ?* plugin/icedtea/sun/applet/PluginCookieInfoRequest.java > ? ?(parseReturn): Store cookie info as a string rather than a list of > ? ?HttpCookie objects. > ? ?(getObject): Return the new cookie string. > ? ?* plugin/icedtea/sun/applet/PluginCookieManager.java: New file, extends > ? ?CookieManager as is set as the default cookie manager for the plugin. > ? ?* plugin/icedtea/sun/applet/PluginCookieStore.java : Deleted. New design > ? ?uses a custom cookiemanager rather than just a custom store. > ? ?* plugin/icedtea/sun/applet/PluginMain.java : Wire in the new cookie > ? ?manager. > ? ?* plugin/icedtea/sun/applet/PluginAppletViewer.java > ? ?(handleMessage): Wait until panel is set before pinging it for life status. > ? ?(showStatus): Replace new lines with spaces, as the status is on a single > ? ?line anyway. > > Cheers, > Deepak > As with Ed and Gary, I feel one of the issues with your patches is that you are the only one who knows the code deeply enough. This is something we need to fix. I do a scan over the patches and they look ok to me (the third especially is a trivial fix). I'd file a bug with webmin regarding the cookie issue, as this is against the spec. which states that the attribute name should be ' a sequence of non-special, non-white space characters'. 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 bugzilla-daemon at icedtea.classpath.org Mon Aug 24 13:45:33 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 24 Aug 2009 20:45:33 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #12 from mark at klomp.org 2009-08-24 20:45 ------- (In reply to comment #11) > I would assume you can replicate this issue with any test jar and a test > signing key. Just start the security manager with the debug on and you should > see this recursion. I would assume the same, but wasn't quickly able to replicate the issue that way. I must be missing how exactly you signed your jars. Could you give an example, or some other simple step-by-step way to replicate what you are seeing? -- 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 Aug 24 14:00:26 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 24 Aug 2009 21:00:26 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #13 from mark at klomp.org 2009-08-24 21:00 ------- For the record, the updated patch isn't fully correct. Andrew Hughes noted it mixes the property names up, sun.zoneinfo.dir versus user.zoneinfo.dir. The history behind that is explained in the reference given in comment #10 by Keith. Will update and retest (if given a replicator) the patch soon. -- 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 cpdev-commits at icedtea.classpath.org Mon Aug 24 17:24:45 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 00:24:45 +0000 Subject: /hg/icedtea: 2 new changesets Message-ID: changeset 92838f870914 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=92838f870914 summary: Cleanup #07: Remove source/target from javac.in, unset JAVA_HOME and QUIETLY. changeset 26c1a149107b in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=26c1a149107b summary: Bump to b70. diffstat: 7 files changed, 136 insertions(+), 211 deletions(-) ChangeLog | 27 ++++ Makefile.am | 158 ++++++++++------------------- javac.in | 8 - patches/ecj/icedtea-hotspot-default.patch | 48 +++++--- patches/ecj/icedtea-sbcs.patch | 22 ++-- patches/icedtea-graphics.patch | 60 ----------- patches/icedtea-testenv.patch | 24 +--- diffs (truncated from 544 to 500 lines): diff -r 939e978ee73a -r 26c1a149107b ChangeLog --- a/ChangeLog Mon Aug 17 16:34:18 2009 +0100 +++ b/ChangeLog Tue Aug 25 01:27:11 2009 +0100 @@ -1,3 +1,30 @@ 2009-08-17 Andrew John Hughes + + * patches/icedtea-graphics.patch: + Removed; applied upstream. + * Makefile.am: Bump to b70. + * patches/ecj/icedtea-sbcs.patch, + * patches/icedtea-testenv.patch: + Recreated. + +2009-08-21 Andrew John Hughes + + * Makefile.am: + Add variables for source, target and other + javac settings so they are standardised across + the build. Set JAVA_HOME and JDK_HOME to "" + to avoid build failures. Set QUIETLY to "" + to display HotSpot javac invocations. Remove + duplicate javac invocations now targets depend + on INITIAL_BOOTSTRAP_LINK_STAMP. + * javac.in: + Remove 1.7 setting. Add ecj_parms so same + parameters are used for all ecj invocations. + * patches/ecj/icedtea-hotspot-default.patch: + Make SA_CLASSPATH contain the whole CLASSPATH + and use SA_TOOLS_JAR and SA_RT_JAR for the individual + files. + 2009-08-17 Andrew John Hughes * Makefile.am: diff -r 939e978ee73a -r 26c1a149107b Makefile.am --- a/Makefile.am Mon Aug 17 16:34:18 2009 +0100 +++ b/Makefile.am Tue Aug 25 01:27:11 2009 +0100 @@ -1,20 +1,20 @@ OPENJDK_VERSION = b69 -OPENJDK_VERSION = b69 - -OPENJDK_CHANGESET = 2914e1cb084e -CORBA_CHANGESET = a0eefb08a314 -JAXP_CHANGESET = fa81a375c19a -JAXWS_CHANGESET = bcf234d82efa -JDK_CHANGESET = bd5e610df2e8 -LANGTOOLS_CHANGESET = ce9bcdcb7859 -HOTSPOT_CHANGESET = 12b81df6076d - -OPENJDK_MD5SUM = 37c6c85e9bfc58ee4f0312f32cdfc524 -CORBA_MD5SUM = 8e800563935f4a8603585d182204286d -JAXP_MD5SUM = fc6c3556e5932ce1155498e894d85b93 -JAXWS_MD5SUM = 6b7ba2f3b438e8c71ba7ad380c7b15bf -JDK_MD5SUM = 0e4c01b569edb101c8a2f3f0b1933fd6 -LANGTOOLS_MD5SUM = 0df12414550c8022b85f3106b303f0c5 -HOTSPOT_MD5SUM = eb455e08a9a305714a971abecbdb78db +OPENJDK_VERSION = b70 + +OPENJDK_CHANGESET = 1bbbd5c42f3a +CORBA_CHANGESET = 309d97756352 +JAXP_CHANGESET = df9569f46ae8 +JAXWS_CHANGESET = c33dece1b2b3 +JDK_CHANGESET = 1b0f308e49c3 +LANGTOOLS_CHANGESET = 742987f2c0d2 +HOTSPOT_CHANGESET = 468ea732650d + +OPENJDK_MD5SUM = 84dabfc7b592490dcd4b2a232bde44ef +CORBA_MD5SUM = ec0de438056ee14c48deb510c0d583dc +JAXP_MD5SUM = 732708e633ffef87fb4095ecbbf4add0 +JAXWS_MD5SUM = 492e61bf7f96d3832b3246c01c716aa8 +JDK_MD5SUM = f286fbed4ffb4bb5d368e8cab11b50fd +LANGTOOLS_MD5SUM = a0a13535ef6eec2292daa14f4cfe849d +HOTSPOT_MD5SUM = 9e2a49be9371abe80c6fb1bd4ad3de3e CACAO_VERSION = 0.99.4 CACAO_MD5SUM = 63220327925ace13756ae334c55a3baa @@ -75,6 +75,11 @@ OPENJDK_SOURCEPATH_DIRS = \ $(SHARE):$(SOLARIS):$(LANGTOOLS):$(JAXP):$(CORBA):$(JAXWS) SOURCEPATH_DIRS = $(abs_top_builddir)/generated:$(OPENJDK_SOURCEPATH_DIRS) + +IT_LANGUAGE_SOURCE_VERSION=5 +IT_CLASS_TARGET_VERSION=5 +IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) +IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) # Top-Level Targets # ================= @@ -1567,6 +1572,9 @@ ICEDTEA_ENV = \ ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ JAVAC="" \ + JAVA_HOME="" \ + JDK_HOME="" \ + QUIETLY="" \ ANT_RESPECT_JAVA_HOME="TRUE" \ RHINO_JAR="$(RHINO_JAR)" \ DISTRIBUTION_ID="$(DIST_ID)" \ @@ -1651,6 +1659,9 @@ ICEDTEA_ENV_ECJ = \ ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ JAVAC="" \ + JAVA_HOME="" \ + JDK_HOME="" \ + QUIETLY="" \ RHINO_JAR="$(RHINO_JAR)" \ JAR_KNOWS_ATFILE="$(JAR_KNOWS_ATFILE)" \ JAR_KNOWS_J_OPTIONS="$(JAR_KNOWS_J_OPTIONS)" \ @@ -1999,7 +2010,6 @@ ICEDTEA_PATCHES = \ patches/hotspot/$(HSBUILD)/icedtea-version.patch \ patches/icedtea-copy-plugs.patch \ patches/hotspot/$(HSBUILD)/icedtea-text-relocations.patch \ - patches/icedtea-graphics.patch \ patches/icedtea-ssl.patch \ $(PLUGIN_PATCH) \ patches/icedtea-webstart.patch \ @@ -3003,19 +3013,11 @@ hotspot-tools-source-files.txt: stamps/g stamps/hotspot-tools-class-files.stamp: hotspot-tools-source-files.txt \ $(INITIAL_BOOTSTRAP_LINK_STAMP) - if ! test -d $(ICEDTEA_BOOT_DIR) ; \ - then \ - $(JAVAC) $(MEMORY_LIMIT) -g -d lib/hotspot-tools \ - -sourcepath \ - 'hotspot-tools:$(abs_top_srcdir)/netx:$(SOURCEPATH_DIRS)' \ - -bootclasspath \'\' @$< ; \ - else \ - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g \ - -d lib/hotspot-tools \ - -sourcepath \ - 'hotspot-tools:$(abs_top_srcdir)/netx:$(SOURCEPATH_DIRS)' \ - -bootclasspath \'\' @$< ; \ - fi + $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) \ + -d lib/hotspot-tools \ + -sourcepath \ + 'hotspot-tools:$(abs_top_srcdir)/netx:$(SOURCEPATH_DIRS)' \ + -bootclasspath \'\' @$< ; mkdir -p stamps touch stamps/hotspot-tools-class-files.stamp @@ -3028,17 +3030,10 @@ clean-hotspot-tools: # tools.jar bootstrap/jdk1.7.0/lib/tools.jar: stamps/hotspot-tools-class-files.stamp mkdir -p bootstrap/jdk1.7.0/lib/ - if ! test -d $(ICEDTEA_BOOT_DIR) ; \ - then \ - $(JAR) cf $@ -C lib/hotspot-tools com -C lib/hotspot-tools sun \ - -C lib/hotspot-tools org -C lib/hotspot-tools java \ - -C lib/hotspot-tools javax ; \ - else \ - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/hotspot-tools com \ - -C lib/hotspot-tools sun \ - -C lib/hotspot-tools org -C lib/hotspot-tools java \ - -C lib/hotspot-tools javax ; \ - fi + $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/hotspot-tools com \ + -C lib/hotspot-tools sun \ + -C lib/hotspot-tools org -C lib/hotspot-tools java \ + -C lib/hotspot-tools javax ; if test -d bootstrap/ecj ; \ then \ mkdir -p bootstrap/ecj/lib/; \ @@ -3053,18 +3048,10 @@ rt-source-files.txt: stamps/extract.stam stamps/rt-class-files.stamp: rt-source-files.txt stamps/hotspot-tools.stamp mkdir -p lib/rt - if ! test -d $(ICEDTEA_BOOT_DIR) ; \ - then \ - $(JAVAC) $(MEMORY_LIMIT) -g -d lib/rt \ - -classpath $(abs_top_builddir)/lib/hotspot-tools \ - -sourcepath '$(SOURCEPATH_DIRS)' \ - -bootclasspath \'\' @$< ; \ - else \ - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d lib/rt \ - -classpath $(abs_top_builddir)/lib/hotspot-tools \ - -sourcepath '$(SOURCEPATH_DIRS)' \ - -bootclasspath \'\' @$< ; \ - fi + $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) -d lib/rt \ + -classpath $(abs_top_builddir)/lib/hotspot-tools \ + -sourcepath '$(SOURCEPATH_DIRS)' \ + -bootclasspath \'\' @$< ; mkdir -p stamps touch stamps/rt-class-files.stamp @@ -3076,14 +3063,8 @@ clean-rt: # rt-closed.jar. bootstrap/jdk1.7.0/jre/lib/rt-closed.jar: stamps/rt-class-files.stamp mkdir -p bootstrap/jdk1.7.0/jre/lib - if ! test -d $(ICEDTEA_BOOT_DIR) ; \ - then \ - $(JAR) cf $@ -C lib/rt com -C lib/rt java \ - -C lib/rt javax -C lib/rt sun ; \ - else \ - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/rt com -C lib/rt java \ - -C lib/rt javax -C lib/rt sun ; \ - fi + $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/rt com -C lib/rt java \ + -C lib/rt javax -C lib/rt sun ; if test -d bootstrap/ecj/jre/lib ; \ then \ cp bootstrap/jdk1.7.0/jre/lib/rt-closed.jar \ @@ -3096,20 +3077,11 @@ extra-source-files.txt: stamps/extra-class-files.stamp: extra-source-files.txt stamps/netx.stamp mkdir -p extra-lib - if ! test -d $(ICEDTEA_BOOT_DIR) ; \ - then \ - $(JAVAC) $(MEMORY_LIMIT) -g -d extra-lib \ - -classpath $(abs_top_builddir)/lib/hotspot-tools \ - -sourcepath $(abs_top_srcdir)/extra:$(SOURCEPATH_DIRS) \ - -bootclasspath \'\' \ - @extra-source-files.txt ; \ - else \ - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d extra-lib \ - -classpath $(abs_top_builddir)/lib/hotspot-tools \ - -sourcepath $(abs_top_srcdir)/extra:$(SOURCEPATH_DIRS) \ - -bootclasspath \'\' \ - @extra-source-files.txt ; \ - fi + $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) -d extra-lib \ + -classpath $(abs_top_builddir)/lib/hotspot-tools \ + -sourcepath $(abs_top_srcdir)/extra:$(SOURCEPATH_DIRS) \ + -bootclasspath \'\' \ + @extra-source-files.txt ; \ cp -r $(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources \ extra-lib/net/sourceforge/jnlp/about find extra-lib/net/sourceforge/jnlp/about -type f -exec chmod 640 '{}' ';' \ @@ -3139,7 +3111,7 @@ netx-source-files.txt: stamps/netx.stamp: netx-source-files.txt stamps/hotspot-tools.stamp mkdir -p $(abs_top_builddir)/netx.build - $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g \ + $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ -classpath $(abs_top_builddir)/lib/hotspot-tools \ -sourcepath $(abs_top_srcdir)/netx:$(SOURCEPATH_DIRS): \ @@ -3308,12 +3280,7 @@ stamps/pulse-java-jar.stamp: stamps/puls stamps/pulse-java-jar.stamp: stamps/pulse-java-class.stamp if ENABLE_PULSE_JAVA mkdir -p $(PULSE_JAVA_CLASS_DIR); - if ! test -d $(ICEDTEA_BOOT_DIR) ; \ - then \ - $(JAR) cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) .; \ - else \ - $(ICEDTEA_BOOT_DIR)/bin/jar cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) .; \ - fi + $(ICEDTEA_BOOT_DIR)/bin/jar cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) .; endif mkdir -p stamps touch stamps/pulse-java-jar.stamp @@ -3321,22 +3288,11 @@ stamps/pulse-java-class.stamp: $(INITIAL stamps/pulse-java-class.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) if ENABLE_PULSE_JAVA mkdir -p $(PULSE_JAVA_CLASS_DIR) - if ! test -d $(ICEDTEA_BOOT_DIR) ; \ - then \ - (cd $(PULSE_JAVA_JAVA_SRCDIR); \ - $(JAVAC) -g -d $(PULSE_JAVA_CLASS_DIR) \ - -bootclasspath \ - '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ - org/classpath/icedtea/pulseaudio/*.java\ - ) \ - else \ - (cd $(PULSE_JAVA_JAVA_SRCDIR); \ - $(ICEDTEA_BOOT_DIR)/bin/javac -g -d $(PULSE_JAVA_CLASS_DIR)\ - -bootclasspath \ - '$(ICEDTEA_BOOT_DIR)/jre/lib/rt.jar' \ - org/classpath/icedtea/pulseaudio/*.java\ - ) \ - fi + (cd $(PULSE_JAVA_JAVA_SRCDIR); \ + $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d $(PULSE_JAVA_CLASS_DIR)\ + -bootclasspath '$(ICEDTEA_BOOT_DIR)/jre/lib/rt.jar' \ + org/classpath/icedtea/pulseaudio/*.java\ + ) cp -r $(PULSE_JAVA_JAVA_SRCDIR)/META-INF $(PULSE_JAVA_CLASS_DIR) chmod -R ug+w $(PULSE_JAVA_CLASS_DIR)/META-INF endif @@ -3487,8 +3443,8 @@ stamps/jtreg.stamp: stamps/icedtea.stamp stamps/jtreg.stamp: stamps/icedtea.stamp rm -rf test/jtreg/classes mkdir -p test/jtreg/classes - $(ICEDTEA_BOOT_DIR)/bin/javac -g -d test/jtreg/classes -source 1.5 \ - -encoding iso-8859-1 `find $(abs_top_srcdir)/test/jtreg/com -name '*.java'` + $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d test/jtreg/classes \ + `find $(abs_top_srcdir)/test/jtreg/com -name '*.java'` (cd $(abs_top_srcdir)/test/jtreg; \ $(ICEDTEA_BOOT_DIR)/bin/jar cfm $(abs_top_builddir)/test/jtreg.jar \ META-INF/MANIFEST.MF \ diff -r 939e978ee73a -r 26c1a149107b javac.in --- a/javac.in Mon Aug 17 16:34:18 2009 +0100 +++ b/javac.in Tue Aug 25 01:27:11 2009 +0100 @@ -19,6 +19,7 @@ my @bcoption; my @bcoption; push @bcoption, '-bootclasspath', glob '@SYSTEM_JDK_DIR@/jre/lib/rt.jar' unless grep {$_ eq '-bootclasspath'} @ARGV; +my @ecj_parms = ($ECJ_WARNINGS, @bcoption); # Work around ecj's inability to handle duplicate command-line # options. @@ -47,14 +48,14 @@ if ( -e "@abs_top_builddir@/native-ecj" if ( -e "@abs_top_builddir@/native-ecj" ) { my @ecj_args = gen_ecj_opts( \@ARGV ); - exec '@abs_top_builddir@/native-ecj', '-1.7', $ECJ_WARNINGS, @bcoption, @ecj_args ; + exec '@abs_top_builddir@/native-ecj', @ecj_parms, @ecj_args ; } elsif ( -e "@JAVAC@" ) { if ("@USING_ECJ@" eq "yes") { my @ecj_args = gen_ecj_opts( \@ARGV ); - exec '@JAVAC@', '-1.7', $ECJ_WARNINGS, @bcoption, @ecj_args ; + exec '@JAVAC@', @ecj_parms, @ecj_args ; } else { @@ -67,6 +68,5 @@ else my @CLASSPATH = ('@ECJ_JAR@'); push @CLASSPATH, split /:/, $ENV{"CLASSPATH"} if exists $ENV{"CLASSPATH"}; $ENV{"CLASSPATH"} = join ':', @CLASSPATH; - exec '@JAVA@', 'org.eclipse.jdt.internal.compiler.batch.Main', '-1.7', - $ECJ_WARNINGS, @bcoption, @ecj_args; + exec '@JAVA@', 'org.eclipse.jdt.internal.compiler.batch.Main', @ecj_parms, @ecj_args; } diff -r 939e978ee73a -r 26c1a149107b patches/ecj/icedtea-hotspot-default.patch --- a/patches/ecj/icedtea-hotspot-default.patch Mon Aug 17 16:34:18 2009 +0100 +++ b/patches/ecj/icedtea-hotspot-default.patch Tue Aug 25 01:27:11 2009 +0100 @@ -1,7 +1,7 @@ diff -Nru openjdk-ecj.orig/hotspot/make/ diff -Nru openjdk-ecj.orig/hotspot/make/linux/Makefile openjdk-ecj/hotspot/make/linux/Makefile ---- openjdk-ecj.orig/hotspot/make/linux/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/hotspot/make/linux/Makefile 2008-10-24 13:32:48.000000000 +0100 -@@ -263,28 +263,24 @@ +--- openjdk-ecj.orig/hotspot/make/linux/Makefile 2009-08-18 17:44:09.000000000 +0100 ++++ openjdk-ecj/hotspot/make/linux/Makefile 2009-08-18 18:56:52.000000000 +0100 +@@ -274,28 +274,24 @@ $(TARGETS_C2): $(SUBDIRS_C2) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) @@ -31,18 +31,32 @@ diff -Nru openjdk-ecj.orig/hotspot/make/ cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install endif diff -Nru openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make openjdk-ecj/hotspot/make/linux/makefiles/sa.make ---- openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make 2008-10-24 13:32:48.000000000 +0100 -@@ -74,8 +74,8 @@ - mkdir -p $(SA_CLASSDIR); \ +--- openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make 2009-08-18 17:35:29.000000000 +0100 ++++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make 2009-08-18 19:54:42.000000000 +0100 +@@ -38,7 +38,9 @@ + GENERATED = $(TOPDIR)/../generated + + # tools.jar is needed by the JDI - SA binding +-SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar ++SA_TOOLS_JAR = $(BOOT_JAVA_HOME)/lib/tools.jar ++SA_RT_JAR = $(BOOT_JAVA_HOME)/jre/lib/rt.jar ++SA_CLASSPATH = $(SA_TOOLS_JAR):$(SA_RT_JAR) + + # gnumake 3.78.1 does not accept the *s that + # are in AGENT_FILES1 and AGENT_FILES2, so use the shell to expand them +@@ -65,8 +67,13 @@ + echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \ + exit 1; \ fi - -- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1) -- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2) -+ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1) -+ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2) - - $(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer - $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) - - +- $(QUIETLY) if [ ! -f $(SA_CLASSPATH) ] ; then \ +- echo "Missing $(SA_CLASSPATH) file. Use 1.6.0 or later version of JDK";\ ++ $(QUIETLY) if [ ! -f $(SA_TOOLS_JAR) ] ; then \ ++ echo "Missing $(SA_TOOLS_JAR) file. Use 1.6.0 or later version of JDK";\ ++ echo ""; \ ++ exit 1; \ ++ fi ++ $(QUIETLY) if [ ! -f $(SA_RT_JAR) ] ; then \ ++ echo "Missing $(SA_RT_JAR) file. Use 1.6.0 or later version of JDK";\ + echo ""; \ + exit 1; \ + fi diff -r 939e978ee73a -r 26c1a149107b patches/ecj/icedtea-sbcs.patch --- a/patches/ecj/icedtea-sbcs.patch Mon Aug 17 16:34:18 2009 +0100 +++ b/patches/ecj/icedtea-sbcs.patch Tue Aug 25 01:27:11 2009 +0100 @@ -1,15 +1,15 @@ diff -Nru openjdk-ecj.orig/jdk/make/tool diff -Nru openjdk-ecj.orig/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java openjdk-ecj/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java ---- openjdk-ecj.orig/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java 2009-07-01 11:39:50.000000000 +0100 -+++ openjdk-ecj/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java 2009-07-01 12:24:04.000000000 +0100 -@@ -27,7 +27,6 @@ - +--- openjdk-ecj.orig/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java 2009-08-24 15:47:02.000000000 +0100 ++++ openjdk-ecj/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java 2009-08-24 16:07:07.000000000 +0100 +@@ -28,7 +28,6 @@ import java.io.*; + import java.util.Arrays; import java.util.ArrayList; -import java.util.Scanner; import java.util.Formatter; import java.util.regex.*; import java.nio.charset.*; -@@ -37,9 +36,8 @@ +@@ -38,9 +37,8 @@ public static void genSBCS(String args[]) throws Exception { @@ -21,15 +21,15 @@ diff -Nru openjdk-ecj.orig/jdk/make/tool if (line.startsWith("#") || line.length() == 0) continue; String[] fields = line.split("\\s+"); -@@ -198,12 +196,10 @@ - int c2blen) - throws Exception - { +@@ -208,12 +206,11 @@ + String b2cNR = b2cNRSB.toString(); + String c2bNR = c2bNRSB.toString(); + - Scanner s = new Scanner(new File(srcDir, template)); -+ BufferedReader s = new BufferedReader(new FileReader(new File(srcDir, template))); ++ BufferedReader s = new BufferedReader(new FileReader(new File(srcDir, template))); PrintStream out = new PrintStream(new FileOutputStream( new File(dstDir, clzName + ".java"))); -- + - while (s.hasNextLine()) { - String line = s.nextLine(); + for (String line = s.readLine(); line != null; line = s.readLine()) { diff -r 939e978ee73a -r 26c1a149107b patches/icedtea-graphics.patch --- a/patches/icedtea-graphics.patch Mon Aug 17 16:34:18 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ ---- ../opienjdkb23/openjdk/jdk/src/share/classes/javax/swing/text/WrappedPlainView.java 2007-10-30 04:37:06.000000000 -0400 -+++ openjdk/jdk/src/share/classes/javax/swing/text/WrappedPlainView.java 2007-11-13 12:50:52.000000000 -0500 -@@ -236,9 +236,6 @@ - Segment segment = SegmentCache.getSharedSegment(); - loadText(segment, p0, p1); - int currentWidth = getWidth(); -- if (currentWidth == Integer.MAX_VALUE) { -- currentWidth = (int) getDefaultSpan(View.X_AXIS); -- } - if (wordWrap) { - p = p0 + Utilities.getBreakLocation(segment, metrics, - tabBase, tabBase + currentWidth, -@@ -324,20 +321,6 @@ - tabSize = getTabSize() * metrics.charWidth('m'); - } - -- /** -- * Return reasonable default values for the view dimensions. The standard -- * text terminal size 80x24 is pretty suitable for the wrapped plain view. -- */ -- private float getDefaultSpan(int axis) { -- switch (axis) { -- case View.X_AXIS: -- return 80 * metrics.getWidths()['M']; -- case View.Y_AXIS: -- return 24 * metrics.getHeight(); -- default: -- throw new IllegalArgumentException("Invalid axis: " + axis); -- } -- } - - // --- TabExpander methods ------------------------------------------ - -@@ -573,19 +556,16 @@ - if (width == Integer.MAX_VALUE) { - // We have been initially set to MAX_VALUE, but we don't - // want this as our preferred. -- width = getDefaultSpan(axis); -+ return 100f; - } - return width; - case View.Y_AXIS: -- if (getDocument().getLength() > 0) { -- if ((lineCount < 0) || widthChanging) { -- breakLines(getStartOffset()); -- } -- return lineCount * metrics.getHeight(); -- } else { -- return getDefaultSpan(axis); -- } -- default: -+ if (lineCount < 0 || widthChanging) { -+ breakLines(getStartOffset()); -+ } -+ int h = lineCount * metrics.getHeight(); -+ return h; -+ default: - throw new IllegalArgumentException("Invalid axis: " + axis); - } - } diff -r 939e978ee73a -r 26c1a149107b patches/icedtea-testenv.patch --- a/patches/icedtea-testenv.patch Mon Aug 17 16:34:18 2009 +0100 +++ b/patches/icedtea-testenv.patch Tue Aug 25 01:27:11 2009 +0100 From cpdev-commits at icedtea.classpath.org Tue Aug 25 01:25:10 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 08:25:10 +0000 Subject: /hg/release/icedtea6-1.6: Bug fixes to ARM interpreter Message-ID: changeset 6bec6d168a87 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=6bec6d168a87 summary: Bug fixes to ARM interpreter diffstat: 2 files changed, 24 insertions(+), 16 deletions(-) ChangeLog | 9 +++++ ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 31 +++++++++----------- diffs (131 lines): diff -r b8d4584ef200 -r 6bec6d168a87 ChangeLog --- a/ChangeLog Thu Aug 20 20:42:36 2009 +0100 +++ b/ChangeLog Tue Aug 25 09:27:59 2009 +0100 @@ -1,3 +1,12 @@ 2009-08-20 Andrew John Hughes + + * cppInterpreter_arm.s + - 4 X bug fixes + - Java PC incorrect at safepoint branch + - constpool pointer not restored at safepoint branch + - wide astore nor popping stack + - native entry does not save r6 + 2009-08-20 Andrew John Hughes * Makefile.am: diff -r b8d4584ef200 -r 6bec6d168a87 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Thu Aug 20 20:42:36 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Tue Aug 25 09:27:59 2009 +0100 @@ -1744,6 +1744,9 @@ branch_taken: cmp r1, #1 bne branch_no_check + sub jpc, jpc, ip @ Point jpc back at the branch + mov tmp1, ip @ Save offset in tmp1 + ldr r3, [istate, #ISTATE_THREAD] mov r0, sp str r3, [sp] @@ -1752,14 +1755,16 @@ branch_taken: str jpc, [istate, #ISTATE_BCP] str stack, [istate, #ISTATE_STACK] bl _ZN20SafepointSynchronize5blockEP10JavaThread + ldr constpool, [istate, #ISTATE_CONSTANTS] ldr r0, [istate, #ISTATE_THREAD] ldr stack, [istate, #ISTATE_STACK] + add constpool, constpool, #CONST_POOL_OFFSET ldr r3, [r0, #THREAD_PENDING_EXC] ldr jpc, [istate, #ISTATE_BCP] cmp r3, #0 ldr locals, [istate, #ISTATE_LOCALS] bne handle_exception - DISPATCH_START 0 + DISPATCH_START_REG tmp1 @ Refetch opcode and update jpc again branch_no_check: DISPATCH_BYTECODE @@ -3061,6 +3066,7 @@ case_wide_aload: DISPATCH 4 case_wide_istore: case_wide_fstore: +case_wide_astore: POP r2 str r2, [locals, -r1, lsl #2] DISPATCH 4 @@ -3075,13 +3081,6 @@ case_wide_lstore: POP2 r2, r3 sub r1, locals, r1, lsl #2 stmda r1, {r2, r3} - DISPATCH 4 -case_wide_astore: - mov r3, r1 - mov r0, stack - mvn r1, #0 - mov r2, locals - bl _ZN19BytecodeInterpreter6astoreEPiiS0_i DISPATCH 4 do_wide_ret: ldr r2, [istate, #ISTATE_METHOD] @@ -3709,7 +3708,7 @@ normal_entry: ALIGN_CODE native_entry: adrl ip, dispatch_init_adcon - stmfd sp!, {r3, r4, r5, r7, r9, r10, r11, lr} + stmfd sp!, {r4, r5, r6, r7, r9, r10, r11, lr} @--- ldmia ip, {dispatch, r7} mov r11, r0 @@ -3925,7 +3924,7 @@ native_entry: ldr r2, [r9, #THREAD_ACTIVE_HANDLES] mov r3, #0 @ ECN: Now that the object is safe on the Java stack str r3, [r2, #128] @ stack, with the Thread SP updated, clear the active_handles. - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_short: mov r0, r0, lsl #16 mov r0, r0, asr #16 @@ -3933,29 +3932,29 @@ native_entry: str r0, [r5, #-4]! .native_return_void: str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_dw: stmdb r5!, {r0, r1} str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_byte: mov r0, r0, lsl #24 mov r0, r0, asr #24 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_char: mov r0, r0, lsl #16 mov r0, r0, lsr #16 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_bool: ands r0, r0, #255 movne r0, #1 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_entry_throw_stack_overflow: str r0, [r9, #THREAD_LAST_JAVA_SP] @@ -3973,7 +3972,7 @@ native_entry: add r5, r5, r3, lsl #2 str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_entry_do_special: stmdb sp!, {r0, r1} mov r0, r9 From gnu_andrew at member.fsf.org Tue Aug 25 05:04:40 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 25 Aug 2009 13:04:40 +0100 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK Message-ID: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before starting an OpenJDK build. If JAVA_HOME is set, an OpenJDK build will fail. Ok to commit? ChangeLog: 2009-08-25 Andrew John Hughes * Makefile.am: Unset JAVA_HOME and JDK_HOME before building. -- 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 -------------- next part -------------- diff -r ea895e1bbf2d Makefile.am --- a/Makefile.am Fri Aug 21 16:24:12 2009 +0200 +++ b/Makefile.am Tue Aug 25 12:27:49 2009 +0100 @@ -183,6 +183,8 @@ ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ JAVAC="" \ + JAVA_HOME="" \ + JDK_HOME="" \ RHINO_JAR="$(RHINO_JAR)" \ DISTRIBUTION_ID="$(DIST_ID)" @@ -264,6 +266,8 @@ ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ JAVAC="" \ + JAVA_HOME="" \ + JDK_HOME="" \ RHINO_JAR="$(RHINO_JAR)" \ JAR_KNOWS_ATFILE="$(JAR_KNOWS_ATFILE)" \ JAR_KNOWS_J_OPTIONS="$(JAR_KNOWS_J_OPTIONS)" \ From langel at redhat.com Tue Aug 25 06:29:54 2009 From: langel at redhat.com (Lillian Angel) Date: Tue, 25 Aug 2009 09:29:54 -0400 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> Message-ID: <4A93E752.1040106@redhat.com> Andrew John Hughes wrote: > This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before > starting an OpenJDK build. If JAVA_HOME is set, an OpenJDK build will > fail. > > Ok to commit? > > ChangeLog: > > 2009-08-25 Andrew John Hughes > > * Makefile.am: > Unset JAVA_HOME and JDK_HOME before building. > > I am not thrilled with the idea of unsetting env vars on a system. I think maybe it would be better for configure to fail and give an error message if either of these are set. Thoughts? Lillian From mark at klomp.org Tue Aug 25 06:54:23 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 25 Aug 2009 15:54:23 +0200 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <4A93E752.1040106@redhat.com> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> <4A93E752.1040106@redhat.com> Message-ID: <1251208463.31892.23.camel@springer.wildebeest.org> On Tue, 2009-08-25 at 09:29 -0400, Lillian Angel wrote: > Andrew John Hughes wrote: > > This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before > > starting an OpenJDK build. If JAVA_HOME is set, an OpenJDK build will > > fail. > > > > Ok to commit? > > > > ChangeLog: > > > > 2009-08-25 Andrew John Hughes > > > > * Makefile.am: > > Unset JAVA_HOME and JDK_HOME before building. > > I am not thrilled with the idea of unsetting env vars on a system. I > think maybe it would be better for configure to fail and give an error > message if either of these are set. Why does the build fail if any of these are set in the first place? I agree that in general it is better to have configure figure out settings. That is really what it is for. The GNU Make manual actually warns not to rely on environment variables: It is not wise for makefiles to depend for their functioning on environment variables set up outside their control, since this would cause different users to get different results from the same makefile. This is against the whole purpose of most makefiles. http://www.gnu.org/software/automake/manual/make/Environment.html Cheers, Mark From gnu_andrew at member.fsf.org Tue Aug 25 07:08:44 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 25 Aug 2009 15:08:44 +0100 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <4A93E752.1040106@redhat.com> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> <4A93E752.1040106@redhat.com> Message-ID: <17c6771e0908250708q2718dc14l81e670d9c13e662@mail.gmail.com> 2009/8/25 Lillian Angel : > Andrew John Hughes wrote: >> >> This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before >> starting an OpenJDK build. ?If JAVA_HOME is set, an OpenJDK build will >> fail. >> >> Ok to commit? >> >> ChangeLog: >> >> 2009-08-25 ?Andrew John Hughes ? >> >> ? ? ? ?* Makefile.am: >> ? ? ? ?Unset JAVA_HOME and JDK_HOME before building. >> >> > > I am not thrilled with the idea of unsetting env vars on a system. I think > maybe it would be better for configure to fail and give an error message if > either of these are set. > > > Thoughts? > Lillian > It already does fail, though later after the user has gone through the pain of extracting and patching OpenJDK. Yes, we could do an earlier check in configure, but why do so when we can unset it for the duration of make? If configure fails, then the user has to do unset JAVA_HOME anyway to make it build, which has the disadvantage that they then lose their JAVA_HOME setting, something which doesn't happen with this fix. The OpenJDK build instructions specify that JAVA_HOME should be unset: http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#linux -- 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 Tue Aug 25 07:10:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 25 Aug 2009 15:10:35 +0100 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <1251208463.31892.23.camel@springer.wildebeest.org> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> <4A93E752.1040106@redhat.com> <1251208463.31892.23.camel@springer.wildebeest.org> Message-ID: <17c6771e0908250710h37293db0qb2e8f8ce23f40293@mail.gmail.com> 2009/8/25 Mark Wielaard : > On Tue, 2009-08-25 at 09:29 -0400, Lillian Angel wrote: >> Andrew John Hughes wrote: >> > This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before >> > starting an OpenJDK build. ?If JAVA_HOME is set, an OpenJDK build will >> > fail. >> > >> > Ok to commit? >> > >> > ChangeLog: >> > >> > 2009-08-25 ?Andrew John Hughes ? >> > >> > ? ? ? ? * Makefile.am: >> > ? ? ? ? Unset JAVA_HOME and JDK_HOME before building. >> >> I am not thrilled with the idea of unsetting env vars on a system. I >> think maybe it would be better for configure to fail and give an error >> message if either of these are set. > > Why does the build fail if any of these are set in the first place? Because Sun designed it to do so. Clearly you don't have JAVA_HOME set by default on your system (some distros do this) or you would have had the fun of the OpenJDK build failing. See: http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#linux > I agree that in general it is better to have configure figure out > settings. That is really what it is for. > > The GNU Make manual actually warns not to rely on environment variables: > > ? ? ? ?It is not wise for makefiles to depend for their functioning on > ? ? ? ?environment variables set up outside their control, since this > ? ? ? ?would cause different users to get different results from the > ? ? ? ?same makefile. This is against the whole purpose of most > ? ? ? ?makefiles. > ? ? ? ?http://www.gnu.org/software/automake/manual/make/Environment.html > Unfortunately, that is how the entire OpenJDK build works. We already set 30-40 variables in Makefile.am. > Cheers, > > Mark > > -- 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 cpdev-commits at icedtea.classpath.org Tue Aug 25 07:16:26 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 14:16:26 +0000 Subject: /hg/icedtea6: Make child JNLPs use the same classloader as paren... Message-ID: changeset 8362dc30d8d3 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8362dc30d8d3 summary: Make child JNLPs use the same classloader as parent for a given instance. diffstat: 4 files changed, 108 insertions(+), 16 deletions(-) ChangeLog | 16 ++++ rt/net/sourceforge/jnlp/JNLPFile.java | 38 ++++++++++ rt/net/sourceforge/jnlp/PluginBridge.java | 6 + rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 64 +++++++++++++----- diffs (211 lines): diff -r ea895e1bbf2d -r 8362dc30d8d3 ChangeLog --- a/ChangeLog Fri Aug 21 16:24:12 2009 +0200 +++ b/ChangeLog Tue Aug 25 10:20:21 2009 -0400 @@ -1,3 +1,19 @@ 2009-08-21 Xerxes R??nby + + * rt/net/sourceforge/jnlp/JNLPFile.java: Add a new key variable that is + unique to each instance. + (JNLPFile): Existing constructor changed to generate a new key on call. + (JNLPFile): New constructor that takes a key. If called, sets the file's + key to it. + (getUniqueKey): Returns the unique key for the instance. + * rt/net/sourceforge/jnlp/PluginBridge.java: Generate new instance + specific unique key. + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (getInstance): Use unique instance keys to determine which classloader to + use, rather than using the URL. + (getInstance): Same. + (initializeExtensions): Provide unique key to getInstance. + 2009-08-21 Xerxes R??nby * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp diff -r ea895e1bbf2d -r 8362dc30d8d3 rt/net/sourceforge/jnlp/JNLPFile.java --- a/rt/net/sourceforge/jnlp/JNLPFile.java Fri Aug 21 16:24:12 2009 +0200 +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Aug 25 10:20:21 2009 -0400 @@ -23,6 +23,7 @@ import java.net.URL; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.LinkedList; import java.util.List; import java.util.Locale; @@ -66,6 +67,9 @@ public class JNLPFile { /** the network location of this JNLP file */ protected URL fileLocation; + + /** A key that uniquely identifies connected instances (main jnlp+ext) */ + protected String uniqueKey = null; /** the URL used to resolve relative URLs in the file */ protected URL codeBase; @@ -171,6 +175,33 @@ public class JNLPFile { parse(root, strict, location); this.fileLocation = location; + + this.uniqueKey = Calendar.getInstance().getTimeInMillis() + "-" + + Math.abs(((new java.util.Random()).nextInt())) + "-" + + location; + + if (JNLPRuntime.isDebug()) + System.err.println("UNIQUEKEY=" + this.uniqueKey); + } + + /** + * Create a JNLPFile from a URL, parent URLm a version and checking for + * updates using the specified policy. + * + * @param location the location of the JNLP file + * @param uniqueKey A string that uniquely identifies connected instances + * @param version the version of the JNLP file + * @param strict whether to enforce the spec when + * @param policy the update policy + * @throws IOException if an IO exception occurred + * @throws ParseException if the JNLP file was invalid + */ + public JNLPFile(URL location, String uniqueKey, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException { + this(location, version, strict, policy); + this.uniqueKey = uniqueKey; + + if (JNLPRuntime.isDebug()) + System.err.println("UNIQUEKEY (override) =" + this.uniqueKey); } /** @@ -245,6 +276,13 @@ public class JNLPFile { */ public URL getFileLocation() { return fileLocation; + } + + /** + * Returns the location of the parent file if it exists, null otherwise + */ + public String getUniqueKey() { + return uniqueKey; } /** diff -r ea895e1bbf2d -r 8362dc30d8d3 rt/net/sourceforge/jnlp/PluginBridge.java --- a/rt/net/sourceforge/jnlp/PluginBridge.java Fri Aug 21 16:24:12 2009 +0200 +++ b/rt/net/sourceforge/jnlp/PluginBridge.java Tue Aug 25 10:20:21 2009 -0400 @@ -24,6 +24,7 @@ package net.sourceforge.jnlp; import java.net.URL; import java.net.MalformedURLException; +import java.util.Calendar; import java.util.Hashtable; import java.util.Locale; import java.util.List; @@ -103,7 +104,10 @@ public class PluginBridge extends JNLPFi codebase.getHost()); else security = null; - + + this.uniqueKey = Calendar.getInstance().getTimeInMillis() + "-" + + Math.abs(((new java.util.Random()).nextInt())) + "-" + + documentBase; } public String getTitle() diff -r ea895e1bbf2d -r 8362dc30d8d3 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Fri Aug 21 16:24:12 2009 +0200 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Aug 25 10:20:21 2009 -0400 @@ -209,21 +209,54 @@ public class JNLPClassLoader extends URL * @param policy the update policy to use when downloading resources */ public static JNLPClassLoader getInstance(JNLPFile file, UpdatePolicy policy) throws LaunchException { + JNLPClassLoader baseLoader = null; JNLPClassLoader loader = null; - URL location = file.getFileLocation(); - - if (location != null) - loader = (JNLPClassLoader) urlToLoader.get(location); + String uniqueKey = file.getUniqueKey(); + + if (uniqueKey != null) + baseLoader = (JNLPClassLoader) urlToLoader.get(uniqueKey); try { - if (loader == null) - loader = new JNLPClassLoader(file, policy); + + // If base loader is null, or the baseloader's file and this + // file is different, initialize a new loader + if (baseLoader == null || + !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation())) { + + loader = new JNLPClassLoader(file, policy); + + // New loader init may have caused extentions to create a + // loader for this unique key. Check. + JNLPClassLoader extLoader = (JNLPClassLoader) urlToLoader.get(uniqueKey); + + if (extLoader != null) { + for (URL u : loader.getURLs()) + extLoader.addURL(u); + + loader = extLoader; + } + + // loader is now current + ext. But we also need to think of + // the baseLoader + if (baseLoader != null) { + for (URL u : loader.getURLs()) + baseLoader.addURL(u); + + loader = baseLoader; + } + + } else { + // if key is same and locations match, this is the loader we want + loader = baseLoader; + } + } catch (LaunchException e) { throw e; } - if (file.getInformation().isSharingAllowed()) - urlToLoader.put(location, loader); + // loaders are mapped to a unique key. Only extensions and parent + // share a key, so it is safe to always share based on it + urlToLoader.put(uniqueKey, loader); return loader; } @@ -236,12 +269,12 @@ public class JNLPClassLoader extends URL * @param version the file's version * @param policy the update policy to use when downloading resources */ - public static JNLPClassLoader getInstance(URL location, Version version, UpdatePolicy policy) + public static JNLPClassLoader getInstance(URL location, String uniqueKey, Version version, UpdatePolicy policy) throws IOException, ParseException, LaunchException { - JNLPClassLoader loader = (JNLPClassLoader) urlToLoader.get(location); - - if (loader == null) - loader = getInstance(new JNLPFile(location, version, false, policy), policy); + JNLPClassLoader loader = (JNLPClassLoader) urlToLoader.get(uniqueKey); + + if (loader == null || !location.equals(loader.getJNLPFile().getFileLocation())) + loader = getInstance(new JNLPFile(location, uniqueKey, version, false, policy), policy); return loader; } @@ -259,8 +292,9 @@ public class JNLPClassLoader extends URL //if (ext != null) { for (int i=0; i < ext.length; i++) { try { - JNLPClassLoader loader = getInstance(ext[i].getLocation(), ext[i].getVersion(), updatePolicy); - loaderList.add(loader); + String uniqueKey = this.getJNLPFile().getUniqueKey(); + JNLPClassLoader loader = getInstance(ext[i].getLocation(), uniqueKey, ext[i].getVersion(), updatePolicy); + loaderList.add(loader); } catch (Exception ex) { ex.printStackTrace(); From cpdev-commits at icedtea.classpath.org Tue Aug 25 07:22:45 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 14:22:45 +0000 Subject: /hg/icedtea6: Patch to detect certificate CN mismatches and offe... Message-ID: changeset 65c5650a98c2 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=65c5650a98c2 summary: Patch to detect certificate CN mismatches and offer user the choice to ignore diffstat: 4 files changed, 180 insertions(+), 26 deletions(-) ChangeLog | 25 ++ rt/net/sourceforge/jnlp/resources/Messages.properties | 1 rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java | 83 +++++++- rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java | 97 ++++++++-- diffs (367 lines): diff -r 8362dc30d8d3 -r 65c5650a98c2 ChangeLog --- a/ChangeLog Tue Aug 25 10:20:21 2009 -0400 +++ b/ChangeLog Tue Aug 25 10:26:42 2009 -0400 @@ -1,3 +1,26 @@ 2009-08-25 Deepak Bhole + + * rt/net/sourceforge/jnlp/resources/Messages.properties: Add new + message key for CN name mismatches. + * rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java + (HttpsCertVerifier): Accept new parameters that indicate certificate trust + status, CN mismatch status, and the hostname. + (getAlreadyTrustPublisher): Use provided isTrusted boolean to get around + checkServerTrusted() synchronization. + (getDetails): Include details about CN mismatch. + (getNamesForCert): New private method. Returns all acceptable names for + a given X509Certificate. + (R): Overloaded the method to return messages that have 2 variables. + * rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java: Extend + X509ExtendedTrustManager rather than X509TrustManager. + (checkClientTrusted): Overloaded method with one that takes a hostname. + (checkServerTrusted): Same. The new overloaded method also checks for CN + mismatch if the certificate is not explicitly trusted. + (isExplicitlyTrusted): Returns if the given certificate chain is part of + the local user trusted DB. + (askUser): Change parameters to accept information about trust, host match + status, and hostname. + 2009-08-25 Deepak Bhole * rt/net/sourceforge/jnlp/JNLPFile.java: Add a new key variable that is @@ -176,7 +199,7 @@ 2009-08-14 Deepak Bhole The address being connected to is: "{1}" SRunWithoutRestrictions=This application will be run without the security restrictions normally provided by java. diff -r 8362dc30d8d3 -r 65c5650a98c2 rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java --- a/rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java Tue Aug 25 10:20:21 2009 -0400 +++ b/rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java Tue Aug 25 10:26:42 2009 -0400 @@ -37,38 +37,49 @@ exception statement from your version. package net.sourceforge.jnlp.security; +import java.io.IOException; import java.security.cert.CertPath; import java.security.cert.Certificate; import java.security.cert.CertificateException; +import java.security.cert.CertificateExpiredException; import java.security.cert.CertificateFactory; import java.security.cert.CertificateNotYetValidException; -import java.security.cert.CertificateExpiredException; +import java.security.cert.CertificateParsingException; import java.security.cert.X509Certificate; import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.tools.KeyTool; +import sun.security.util.DerValue; +import sun.security.util.HostnameChecker; +import sun.security.x509.X500Name; public class HttpsCertVerifier implements CertVerifier { private VariableX509TrustManager tm; private X509Certificate[] chain; private String authType; + private String hostName; + private boolean isTrusted; + private boolean hostMatched; private ArrayList details = new ArrayList(); - public HttpsCertVerifier(VariableX509TrustManager tm, X509Certificate[] chain, String authType) { + public HttpsCertVerifier(VariableX509TrustManager tm, + X509Certificate[] chain, String authType, + boolean isTrusted, boolean hostMatched, + String hostName) { this.tm = tm; this.chain = chain; this.authType = authType; + this.hostName = hostName; + this.isTrusted = isTrusted; + this.hostMatched = hostMatched; } public boolean getAlreadyTrustPublisher() { - try { - tm.checkServerTrusted(chain, authType, true); - return true; - } catch (CertificateException ce) { - return false; - } + return isTrusted; } public ArrayList getCerts() { @@ -91,10 +102,12 @@ public class HttpsCertVerifier implement } public ArrayList getDetails() { + boolean hasExpiredCert=false; boolean hasExpiringCert=false; boolean notYetValidCert=false; boolean isUntrusted=false; + boolean CNMisMatch = !hostMatched; if (! getAlreadyTrustPublisher()) isUntrusted = true; @@ -121,7 +134,9 @@ public class HttpsCertVerifier implement } } - if (isUntrusted || hasExpiredCert || hasExpiringCert || notYetValidCert) { + String altNames = getNamesForCert(chain[0]); + + if (isUntrusted || hasExpiredCert || hasExpiringCert || notYetValidCert || CNMisMatch) { if (isUntrusted) addToDetails(R("SUntrustedCertificate")); if (hasExpiredCert) @@ -130,10 +145,54 @@ public class HttpsCertVerifier implement addToDetails(R("SHasExpiringCert")); if (notYetValidCert) addToDetails(R("SNotYetValidCert")); - } + if (CNMisMatch) + addToDetails(R("SCNMisMatch", altNames, this.hostName)); + } + + return details; } + private String getNamesForCert(X509Certificate c) { + + String names = ""; + + + // We use the specification from + // http://java.sun.com/j2se/1.5.0/docs/api/java/security/cert/X509Certificate.html#getSubjectAlternativeNames() + // to determine the type of address + int ALTNAME_DNS = 2; + int ALTNAME_IP = 7; + + try { + Collection> subjAltNames = c.getSubjectAlternativeNames(); + X500Name subjectName = HostnameChecker.getSubjectX500Name(c); + DerValue derValue = subjectName.findMostSpecificAttribute + (X500Name.commonName_oid); + names += derValue.getAsString(); + + if (subjAltNames != null) { + for (List next : subjAltNames) { + if ( ((Integer)next.get(0)).intValue() == ALTNAME_IP || + ((Integer)next.get(0)).intValue() == ALTNAME_DNS + ) { + names += ", " + (String)next.get(1); + } + } + } + + if (subjAltNames != null) + names = names.substring(2); // remove proceeding ", " + + } catch (CertificateParsingException cpe) { + cpe.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + + return names; + } + private void addToDetails(String detail) { if (!details.contains(detail)) details.add(detail); @@ -141,6 +200,10 @@ public class HttpsCertVerifier implement private static String R(String key) { return JNLPRuntime.getMessage(key); + } + + private static String R(String key, String arg1, String arg2) { + return JNLPRuntime.getMessage(key, new Object[] { arg1, arg2 }); } public Certificate getPublisher() { diff -r 8362dc30d8d3 -r 65c5650a98c2 rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java --- a/rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java Tue Aug 25 10:20:21 2009 -0400 +++ b/rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java Tue Aug 25 10:26:42 2009 -0400 @@ -47,7 +47,10 @@ import javax.net.ssl.TrustManagerFactory import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; +import sun.security.util.HostnameChecker; import sun.security.validator.ValidatorException; + +import com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager; /** * This class implements an X509 Trust Manager. The certificates it trusts are @@ -55,7 +58,7 @@ import sun.security.validator.ValidatorE * different certificates that are not in the keystore. */ -public class VariableX509TrustManager implements X509TrustManager { +public class VariableX509TrustManager extends X509ExtendedTrustManager { KeyStore userKeyStore = null; KeyStore caKeyStore = null; @@ -112,11 +115,11 @@ public class VariableX509TrustManager im } /** - * Check if client is trusted (not support for custom here, only system/user) - */ - public void checkClientTrusted(X509Certificate[] chain, String authType) - throws CertificateException { - + * Check if client is trusted (no support for custom here, only system/user) + */ + public void checkClientTrusted(X509Certificate[] chain, String authType, + String hostName, String algorithm) + throws CertificateException { // First try catrustmanager, then try usertrustmanager try { caTrustManager.checkClientTrusted(chain, authType); @@ -131,9 +134,20 @@ public class VariableX509TrustManager im } } + public void checkClientTrusted(X509Certificate[] chain, String authType) + throws CertificateException { + checkClientTrusted(chain, authType, null, null); + } + + public void checkServerTrusted(X509Certificate[] chain, String authType, + String hostName, String algorithm) + throws CertificateException { + checkServerTrusted(chain, authType, hostName, false); + } + public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { - checkServerTrusted(chain, authType, false); + checkServerTrusted(chain, authType, null, null); } /** @@ -143,17 +157,44 @@ public class VariableX509TrustManager im * @param authType The auth type algorithm * @param checkOnly Whether to "check only" i.e. no user prompt, or to prompt for permission */ - public synchronized void checkServerTrusted(X509Certificate[] chain, String authType, boolean checkOnly) throws CertificateException { + public synchronized void checkServerTrusted(X509Certificate[] chain, + String authType, String hostName, + boolean checkOnly) throws CertificateException { + CertificateException ce = null; + boolean trusted = true; + boolean CNMatched = true; + try { checkAllManagers(chain, authType); - } catch (CertificateException ce) { - + } catch (CertificateException e) { + trusted = false; + ce = e; + } + + // If the certificate is not explicitly trusted, we + // need to prompt the user + if (!isExplicitlyTrusted(chain, authType)) { + + try { + HostnameChecker checker = HostnameChecker + .getInstance(HostnameChecker.TYPE_TLS); + + checker.match(hostName, chain[0]); // only need to match @ 0 for + // CN + + } catch (CertificateException e) { + CNMatched = false; + ce = e; + } + } + + if (!trusted || !CNMatched) { if (checkOnly) { throw ce; } else { - boolean b = askUser(chain,authType); - + boolean b = askUser(chain, authType, trusted, CNMatched, hostName); + if (b) { temporarilyTrust(chain[0]); } @@ -162,7 +203,7 @@ public class VariableX509TrustManager im } } } - + /** * Check system, user and custom trust manager */ @@ -179,6 +220,26 @@ public class VariableX509TrustManager im } } } + + /** + * Return if the user explicitly trusted this i.e. in userTrustManager or temporarilyTrusted + */ + private boolean isExplicitlyTrusted(X509Certificate[] chain, String authType) { + boolean explicitlyTrusted = false; + + try { + userTrustManager.checkServerTrusted(chain, authType); + explicitlyTrusted = true; + } catch (ValidatorException uex) { + if (temporarilyTrusted.contains(chain[0])) + explicitlyTrusted = true; + } catch (CertificateException ce) { + // do nothing, this means that the cert is not explicitly trusted + } + + return explicitlyTrusted; + + } public X509Certificate[] getAcceptedIssuers() { // delegate to default @@ -201,8 +262,14 @@ public class VariableX509TrustManager im * @param authType The authentication algorithm * @return user's response */ - private boolean askUser(X509Certificate[] chain, String authType) { - return SecurityWarningDialog.showCertWarningDialog(SecurityWarningDialog.AccessType.UNVERIFIED, null, new HttpsCertVerifier(this, chain, authType)); + private boolean askUser(X509Certificate[] chain, String authType, + boolean isTrusted, boolean hostMatched, + String hostName) { + return SecurityWarningDialog.showCertWarningDialog( + SecurityWarningDialog.AccessType.UNVERIFIED, null, + new HttpsCertVerifier(this, chain, authType, + isTrusted, hostMatched, + hostName)); } /** From cpdev-commits at icedtea.classpath.org Tue Aug 25 07:26:09 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 14:26:09 +0000 Subject: /hg/icedtea6: Use a custom cookie manager rather than just a cus... Message-ID: changeset 94e9b26a96da in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=94e9b26a96da summary: Use a custom cookie manager rather than just a custom cookiestore. This allows diffstat: 3 files changed, 19 insertions(+), 46 deletions(-) ChangeLog | 13 ++++ plugin/icedtea/sun/applet/PluginCookieInfoRequest.java | 48 +--------------- plugin/icedtea/sun/applet/PluginMain.java | 4 - diffs (120 lines): diff -r 65c5650a98c2 -r 94e9b26a96da ChangeLog --- a/ChangeLog Tue Aug 25 10:26:42 2009 -0400 +++ b/ChangeLog Tue Aug 25 10:30:05 2009 -0400 @@ -1,3 +1,16 @@ 2009-08-25 Deepak Bhole + + * plugin/icedtea/sun/applet/PluginCookieInfoRequest.java + (parseReturn): Store cookie info as a string rather than a list of + HttpCookie objects. + (getObject): Return the new cookie string. + * plugin/icedtea/sun/applet/PluginCookieManager.java: New file, extends + CookieManager as is set as the default cookie manager for the plugin. + * plugin/icedtea/sun/applet/PluginCookieStore.java : Deleted. New design + uses a custom cookiemanager rather than just a custom store. + * plugin/icedtea/sun/applet/PluginMain.java + (init): Wire in the new cookie manager. + 2009-08-25 Deepak Bhole * rt/net/sourceforge/jnlp/resources/Messages.properties: Add new diff -r 65c5650a98c2 -r 94e9b26a96da plugin/icedtea/sun/applet/PluginCookieInfoRequest.java --- a/plugin/icedtea/sun/applet/PluginCookieInfoRequest.java Tue Aug 25 10:26:42 2009 -0400 +++ b/plugin/icedtea/sun/applet/PluginCookieInfoRequest.java Tue Aug 25 10:30:05 2009 -0400 @@ -37,12 +37,6 @@ exception statement from your version. * package sun.applet; -import java.net.HttpCookie; -import java.net.URI; -import java.util.ArrayList; -import java.util.List; - -import com.sun.jndi.toolkit.url.UrlUtil; /** * This class represents a request object for cookie information for a given URI @@ -50,7 +44,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; public class PluginCookieInfoRequest extends PluginCallRequest { - List cookieObjects = new ArrayList(); + String cookieString = new String(); public PluginCookieInfoRequest(String message, String returnString) { super(message, returnString); @@ -63,45 +57,11 @@ public class PluginCookieInfoRequest ext PluginDebug.debug ("PluginCookieInfoRequest GOT: " + cookieInfo); - String encodedURI = cookieInfo.split(" ")[2]; - // Skip the first 3 components. We are guaranteed 3 components, // so no index -1 to worry about cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); - cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); - - URI siteURI; - try - { - siteURI = new URI(UrlUtil.decode(encodedURI, "UTF-8")); - } catch (Exception e) - { - e.printStackTrace(); - return; - } - - if (cookieInfo != null && cookieInfo.length() > 0) - { - String[] cookies = cookieInfo.split(";"); - - for (int i = 0; i < cookies.length; i++) - { - ArrayList l = new ArrayList(); - - String cookie = cookies[i]; - cookie = cookie.trim(); - String cookieName = cookie.substring(0, cookie.indexOf("=")); - String cookieValue = cookie.substring(cookie.indexOf("=")+1); - - HttpCookie httpCookieObj = new HttpCookie(cookieName, cookieValue); - httpCookieObj.setPath(siteURI.getPath()); - httpCookieObj.setVersion(0); // force v0 - - PluginDebug.debug("Adding cookie info COOKIEN=" + cookieName + " and COOKIEV=" + cookieValue); - cookieObjects.add(httpCookieObj); - } - } + cookieString = cookieInfo.substring(cookieInfo.indexOf(' ')+1); setDone(true); } @@ -116,7 +76,7 @@ public class PluginCookieInfoRequest ext return message.startsWith(returnString); } - public List getObject() { - return this.cookieObjects; + public String getObject() { + return this.cookieString; } } diff -r 65c5650a98c2 -r 94e9b26a96da plugin/icedtea/sun/applet/PluginMain.java --- a/plugin/icedtea/sun/applet/PluginMain.java Tue Aug 25 10:26:42 2009 -0400 +++ b/plugin/icedtea/sun/applet/PluginMain.java Tue Aug 25 10:30:05 2009 -0400 @@ -215,12 +215,12 @@ public class PluginMain System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); e.printStackTrace(); } - + // plug in a custom authenticator and proxy selector Authenticator.setDefault(new CustomAuthenticator()); ProxySelector.setDefault(new PluginProxySelector()); - CookieManager ckManager = new CookieManager(new PluginCookieStore(), null); + CookieManager ckManager = new PluginCookieManager(); CookieHandler.setDefault(ckManager); } From cpdev-commits at icedtea.classpath.org Tue Aug 25 07:30:11 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 14:30:11 +0000 Subject: /hg/icedtea6: Fix NPE due to race condition when panel is still ... Message-ID: changeset 80c259fc02d4 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=80c259fc02d4 summary: Fix NPE due to race condition when panel is still being initialized when a diffstat: 2 files changed, 11 insertions(+), 1 deletion(-) ChangeLog | 8 ++++++++ plugin/icedtea/sun/applet/PluginAppletViewer.java | 4 +++- diffs (36 lines): diff -r 94e9b26a96da -r 80c259fc02d4 ChangeLog --- a/ChangeLog Tue Aug 25 10:30:05 2009 -0400 +++ b/ChangeLog Tue Aug 25 10:34:09 2009 -0400 @@ -1,3 +1,11 @@ 2009-08-25 Deepak Bhole + + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (handleMessage): Wait until panel is set before pinging it for + life status. + (showStatus): Replace new lines with spaces, as the status is + on a single line anyway. + 2009-08-25 Deepak Bhole * plugin/icedtea/sun/applet/PluginCookieInfoRequest.java diff -r 94e9b26a96da -r 80c259fc02d4 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Aug 25 10:30:05 2009 -0400 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Aug 25 10:34:09 2009 -0400 @@ -589,7 +589,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; // Wait for the panel to initialize // (happens in a separate thread) - while ((o = panel.getApplet()) == null && ((NetxPanel) panel).isAlive()) { + while (panel == null || (o = panel.getApplet()) == null && ((NetxPanel) panel).isAlive()) { try { Thread.sleep(2000); PluginDebug.debug("Waiting for applet to initialize..."); @@ -876,6 +876,8 @@ import com.sun.jndi.toolkit.url.UrlUtil; public void showStatus(String status) { try { // FIXME: change to postCallRequest + // For statuses, we cannot have a newline + status = status.replace("\n", " "); write("status " + status); } catch (IOException exception) { // Deliberately ignore IOException. showStatus may be From dbhole at redhat.com Tue Aug 25 07:36:14 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 25 Aug 2009 10:36:14 -0400 Subject: 3 plugin patches for 1.6 In-Reply-To: <17c6771e0908241342o72c69abeg59dea393a04ab5df@mail.gmail.com> References: <20090823233652.GA26012@redhat.com> <17c6771e0908241342o72c69abeg59dea393a04ab5df@mail.gmail.com> Message-ID: <20090825143614.GA26384@redhat.com> * Andrew John Hughes [2009-08-24 16:42]: > 2009/8/24 Deepak Bhole : > > Hi, > > > > Attached are 3 plugin patches for the 1.6 release. These are the last of > > the patches that need to make it into 1.6. > > > > Patch 1: allow-cn-mismatch.patch > > Currently, if the hostname of a site does not match the certificate CN, > > the connection fails. This patch gives the user the option to bypass > > that. > > > > Patch 2: cookie-manager.patch > > This is more of a fix for bugs on serverside.. for example, webmin sets > > a cookie named " sid". The current cookie implementation in the plugin > > uses HttpCookie for storing cookies, which strips the initial space. > > Webmin cannot handle this, and fails. With the attached patch, cookies > > are handled in a different manner such that spaces don't get stripped. > > > > Patch 3: npefix-sigsegv.patch > > This patch fixes an NPE that can result if the panel has not been fully > > initialized (encountered on www.tdfx.ca) > > > > It also fixes a SIGSEGV issue that results if an applet tries to set a > > status message with a newline character. > > > > Combined ChangeLog: > > 2009-08-23 ?Deepak Bhole > > > > ? ?* rt/net/sourceforge/jnlp/resources/Messages.properties: Add new message > > ? ?key for CN name mismatches. > > ? ?* rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java > > ? ?(HttpsCertVerifier): Accept new parameters that indicate certificate trust > > ? ?status, CN mismatch status, and the hostname. > > ? ?(getAlreadyTrustPublisher): Use provided isTrusted boolean to get around > > ? ?checkServerTrusted() synchronization. > > ? ?(getDetails): Include details about CN mismatch. > > ? ?(getNamesForCert): New private method. Returns all acceptable names for > > ? ?a given X509Certificate. > > ? ?(R): Overloaded the method to return messages that have 2 variables. > > ? ?* rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java: Extend > > ? ?X509ExtendedTrustManager rather than X509TrustManager. > > ? ?(checkClientTrusted): Overloaded method with one that takes a hostname. > > ? ?(checkServerTrusted): Same. The new overloaded method also checks for CN > > ? ?mismatch if the certificate is not explicitly trusted. > > ? ?(isExplicitlyTrusted): Returns if the given certificate chain is part of > > ? ?the local user trusted DB. > > ? ?(askUser): Change parameters to accept information about trust, host match > > ? ?status, and hostname. > > ? ?* plugin/icedtea/sun/applet/PluginCookieInfoRequest.java > > ? ?(parseReturn): Store cookie info as a string rather than a list of > > ? ?HttpCookie objects. > > ? ?(getObject): Return the new cookie string. > > ? ?* plugin/icedtea/sun/applet/PluginCookieManager.java: New file, extends > > ? ?CookieManager as is set as the default cookie manager for the plugin. > > ? ?* plugin/icedtea/sun/applet/PluginCookieStore.java : Deleted. New design > > ? ?uses a custom cookiemanager rather than just a custom store. > > ? ?* plugin/icedtea/sun/applet/PluginMain.java : Wire in the new cookie > > ? ?manager. > > ? ?* plugin/icedtea/sun/applet/PluginAppletViewer.java > > ? ?(handleMessage): Wait until panel is set before pinging it for life status. > > ? ?(showStatus): Replace new lines with spaces, as the status is on a single > > ? ?line anyway. > > > > Cheers, > > Deepak > > > > > As with Ed and Gary, I feel one of the issues with your patches is > that you are the only one who knows the code deeply enough. This is > something we need to fix. > > I do a scan over the patches and they look ok to me (the third > especially is a trivial fix). I'd file a bug with webmin regarding > the cookie issue, as this is against the spec. which states that the > attribute name should be ' a sequence of non-special, non-white space > characters'. > Agreed. Thanks for going through it! Patches committed as individual sets: http://icedtea.classpath.org/hg/icedtea6/rev/65c5650a98c2 http://icedtea.classpath.org/hg/icedtea6/rev/94e9b26a96da http://icedtea.classpath.org/hg/icedtea6/rev/80c259fc02d4 Cheers, Deepak From cpdev-commits at icedtea.classpath.org Tue Aug 25 07:34:09 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 14:34:09 +0000 Subject: /hg/icedtea6: Adding/removing files missed in previous commit Message-ID: changeset 6a3a77c90d63 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=6a3a77c90d63 summary: Adding/removing files missed in previous commit diffstat: 2 files changed, 88 insertions(+), 73 deletions(-) plugin/icedtea/sun/applet/PluginCookieManager.java | 88 ++++++++++++++++++++ plugin/icedtea/sun/applet/PluginCookieStore.java | 73 ---------------- diffs (169 lines): diff -r 80c259fc02d4 -r 6a3a77c90d63 plugin/icedtea/sun/applet/PluginCookieManager.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedtea/sun/applet/PluginCookieManager.java Tue Aug 25 10:38:03 2009 -0400 @@ -0,0 +1,88 @@ +/* PluginCookieManager -- Cookie manager for the plugin + Copyright (C) 2009 Red Hat + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package sun.applet; + +import java.io.IOException; +import java.net.CookieManager; +import java.net.HttpCookie; +import java.net.URI; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +public class PluginCookieManager extends CookieManager +{ + public Map> get(URI uri, + Map> requestHeaders) throws IOException { + // pre-condition check + if (uri == null || requestHeaders == null) { + throw new IllegalArgumentException("Argument is null"); + } + + Map> cookieMap = new java.util.HashMap>(); + + String cookies = (String) PluginAppletViewer + .requestPluginCookieInfo(uri); + List cookieHeader = new java.util.ArrayList(); + + if (cookies != null && cookies.length() > 0) + cookieHeader.add(cookies); + + // Add anything else that mozilla didn't add + for (HttpCookie cookie : getCookieStore().get(uri)) { + // apply path-matches rule (RFC 2965 sec. 3.3.4) + if (pathMatches(uri.getPath(), cookie.getPath())) { + cookieHeader.add(cookie.toString()); + } + } + + cookieMap.put("Cookie", cookieHeader); + return Collections.unmodifiableMap(cookieMap); + } + + private boolean pathMatches(String path, String pathToMatchWith) { + if (path == pathToMatchWith) + return true; + if (path == null || pathToMatchWith == null) + return false; + if (path.startsWith(pathToMatchWith)) + return true; + + return false; + } +} diff -r 80c259fc02d4 -r 6a3a77c90d63 plugin/icedtea/sun/applet/PluginCookieStore.java --- a/plugin/icedtea/sun/applet/PluginCookieStore.java Tue Aug 25 10:34:09 2009 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* PluginCookieStore -- Storage for cookie information - Copyright (C) 2009 Red Hat - -This file is part of IcedTea. - -IcedTea is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -IcedTea is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with IcedTea; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package sun.applet; - -import java.net.HttpCookie; -import java.net.URI; -import java.util.List; - -import sun.net.www.protocol.http.InMemoryCookieStore; - -public class PluginCookieStore extends InMemoryCookieStore -{ - public List get(URI uri) - { - List cookies; - - // Try to fetch it from the plugin, but if something goes - // wrong, fall back. Don't crash! - try - { - cookies = (List) PluginAppletViewer.requestPluginCookieInfo(uri); - - // If cookies is null, something went wrong. Fall back. - if (cookies == null) throw new NullPointerException("Null cookie"); - - } catch (Exception e) - { - PluginDebug.debug("Unable to fetch cookie information from plugin. " + - "Falling back to default."); - e.printStackTrace(); - cookies = super.get(uri); - } - - PluginDebug.debug("Returning cookies " + cookies + " for site: " + uri); - - return cookies; - } -} From gnu_andrew at member.fsf.org Tue Aug 25 07:49:52 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 25 Aug 2009 15:49:52 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4A898E4F.5020007@sun.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> <4A79F131.7040105@sun.com> <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> <4A84B194.1070108@sun.com> <17c6771e0908140537g6f61faf8h3f912415b2f3e9c3@mail.gmail.com> <4A898E4F.5020007@sun.com> Message-ID: <17c6771e0908250749s5c153aa4m40b15d155e3c5bbe@mail.gmail.com> 2009/8/17 Joseph D. Darcy : > Andrew John Hughes wrote: >> >> 2009/8/14 Joe Darcy : >> >>> >>> Andrew John Hughes wrote: >>> >>>> >>>> 2009/8/5 Tim Bell : >>>> >>>> >>>>> >>>>> Andrew John Hughes wrote: >>>>> >>>>> >>>>> >>>>>> >>>>>> Thanks Tim, that seems to have fixed the permissions issue. >>>>>> >>>>>> >>>>> >>>>> Good. >>>>> >>>>> >>>>> >>>>>> >>>>>> There now seems to be an issue with jcheck, as the merge causes some >>>>>> bugids to be repeated: >>>>>> >>>>>> >>>>> >>>>> Hmmm - how did these changesets come in through two different paths? >>>>> >>>>> >>>>> >>>>>> >>>>>> pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >>>>>> searching for changes >>>>>> remote: adding changesets >>>>>> remote: adding manifests >>>>>> remote: adding file changes >>>>>> remote: added 555 changesets with 4771 changes to 1453 files >>>>>> remote: >>>>>> remote: > Changeset: 100:d821d920b465 >>>>>> remote: > Author: ? ?kvn >>>>>> remote: > Date: ? ? ?2008-03-11 11:04 >>>>>> remote: > >>>>>> remote: > 6623167: C2 crashed in StoreCMNode::Value >>>>>> remote: > Summary: C2 crashed in StoreCMNode::Value because >>>>>> n->in(MemNode::OopStore) is 0. >>>>>> remote: > Reviewed-by: rasbold, never >>>>>> remote: >>>>>> remote: Bugid 6623167 already used in this repository, in revision 20 >>>>>> remote: >>>>>> remote: > Changeset: 104:2c106685d6d0 >>>>>> remote: > Author: ? ?dcubed >>>>>> remote: > Date: ? ? ?2008-03-12 18:06 >>>>>> remote: > >>>>>> remote: > 6497639: 4/3 Profiling Swing application caused JVM crash >>>>>> remote: > Summary: Make RedefineClasses() interoperate better with >>>>>> class sharing. >>>>>> remote: > Reviewed-by: sspitsyn, jmasa >>>>>> remote: >>>>>> remote: Bugid 6497639 already used in this repository, in revision 20 >>>>>> remote: >>>>>> remote: > Changeset: 105:d8b3ef7ee3e5 >>>>>> remote: > Author: ? ?dcubed >>>>>> remote: > Date: ? ? ?2008-03-12 18:07 >>>>>> remote: > >>>>>> remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or >>>>>> assert() failure >>>>>> remote: > Summary: Add should_not_be_cached() to markOop and methodOop >>>>>> and query that status inOopMapCache::lookup() >>>>>> remote: > Reviewed-by: coleenp, sspitsyn, jmasa >>>>>> remote: >>>>>> remote: Bugid 6599425 already used in this repository, in revision 20 >>>>>> remote: >>>>>> remote: > Changeset: 240:65fe2bd88839 >>>>>> remote: > Author: ? ?never >>>>>> remote: > Date: ? ? ?2008-06-05 21:44 >>>>>> remote: > >>>>>> remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse >>>>>> with 1.6.0_05-ea >>>>>> remote: > Reviewed-by: kvn, jrose, rasbold >>>>>> remote: >>>>>> remote: Bugid 6614100 already used in this repository, in revision 20 >>>>>> remote: >>>>>> remote: > Changeset: 286:3e82d72933d0 >>>>>> remote: > Author: ? ?xlu >>>>>> remote: > Date: ? ? ?2008-06-26 14:15 >>>>>> remote: > >>>>>> remote: > 6718830: Hotspot fails to build with gcc 4.3 >>>>>> remote: > Summary: Fixed linux make file and couple adlc code to meet >>>>>> the changes of gcc 4.3 >>>>>> remote: > Reviewed-by: kamg, igor >>>>>> remote: >>>>>> remote: Bugid 6718830 already used in this repository, in revision 32 >>>>>> remote: >>>>>> remote: > Changeset: 289:551f4309f476 >>>>>> remote: > Author: ? ?ohair >>>>>> remote: > Date: ? ? ?2008-07-03 10:46 >>>>>> remote: > >>>>>> remote: > 6695777: Queens.class should be built from source, not put >>>>>> in source repo >>>>>> remote: > Reviewed-by: kvn >>>>>> remote: >>>>>> remote: Bugid 6695777 already used in this repository, in revision 20 >>>>>> remote: >>>>>> remote: > Changeset: 314:54499b980c23 >>>>>> remote: > Author: ? ?swamyv >>>>>> remote: > Date: ? ? ?2008-07-29 13:54 >>>>>> remote: > >>>>>> remote: > 6710791: Remove files or build from source:maf-1_0.jar, >>>>>> jlfg-1_0.jar >>>>>> remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. >>>>>> remote: > Reviewed-by: poonam, jjh >>>>>> remote: >>>>>> remote: Bugid 6710791 already used in this repository, in revision 20 >>>>>> remote: >>>>>> remote: > Changeset: 360:fa4d1d240383 >>>>>> remote: > Author: ? ?never >>>>>> remote: > Date: ? ? ?2008-08-26 15:49 >>>>>> remote: > >>>>>> remote: > 6741642: bad enum definition in ciTypeFlow.hpp >>>>>> remote: > Reviewed-by: rasbold, martin >>>>>> remote: > Contributed-by: doko at ubuntu.com >>>>>> remote: >>>>>> remote: Bugid 6741642 already used in this repository, in revision 22 >>>>>> remote: >>>>>> remote: > Changeset: 589:748572b86af6 >>>>>> remote: > Author: ? ?never >>>>>> remote: > Date: ? ? ?2009-04-07 14:46 >>>>>> remote: > >>>>>> remote: > 6636360: compiler/6595044/Main.java test fails with 64bit >>>>>> java on solaris-sparcv9 with SIGSEGV >>>>>> remote: > Reviewed-by: kvn, twisti >>>>>> remote: >>>>>> remote: Bugid 6636360 already used in this repository, in revision 29 >>>>>> remote: >>>>>> remote: abort: pretxnchangegroup.0.jcheck hook failed >>>>>> remote: transaction abort! >>>>>> remote: rollback completed >>>>>> abort: unexpected response: empty string >>>>>> >>>>>> Is there a way of getting it to ignore these for this one push? ?I >>>>>> don't know of a way to just pull out these nine changesets from the >>>>>> 555 waiting to go... >>>>>> >>>>>> >>>>> >>>>> I think they would need to be added to the jcheck whitelist for all >>>>> time- >>>>> but that is more of a question for Mark or Kelly. >>>>> >>>>> Tim >>>>> >>>>> >>>>> >>>> >>>> The early revisions (20, 32) are from OpenJDK6 which was rebased to >>>> allow HotSpot patches to be applied on top. ?So what happened here is >>>> that, as the fixes were already applied to OpenJDK6, the new >>>> changesets pulled in by the merge will be no-ops but still exist to >>>> keep the change history accurate. >>>> >>>> I think we just need a way of disabling this check. ?OpenJDK6 already >>>> has whitespace and comment checks turned to lax. ?See .jcheck: >>>> http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/0282bf49b0f6. ?There >>>> may already be an option for this bugid check too, but I have no idea >>>> what the format of that file is. >>>> >>>> >>> >>> Andrew, can you please try your push again? >>> >>> I chatted with Mark and the OpenJDK 6 HotSpot Mercurial repository should >>> be >>> configured to do lax checking on the bug ids. >>> >>> Thanks, >>> >>> -Joe >>> >>> >> >> Sorry, same failure still occurs :( >> >> I didn't see any changes to .jcheck, which I would assume are needed >> to fix this (mr added one for the lax comments with the rebase). >> > > *sigh* > > Okay; I'll chat with Mark again to get to the bottom of this. > > -Joe > Any further news? Can we not just turn off jcheck for jdk6? -- 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 cpdev-commits at icedtea.classpath.org Tue Aug 25 07:54:58 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 14:54:58 +0000 Subject: /hg/release/icedtea6-1.6: 4 new changesets Message-ID: changeset da9eb62e065f in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=da9eb62e065f summary: Port from trunk. changeset 66cdb266311e in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=66cdb266311e summary: Import from trunk. changeset 20cd55dd027f in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=20cd55dd027f summary: Import from trunk. changeset 9b85d9f17c40 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=9b85d9f17c40 summary: Import from trunk. diffstat: 12 files changed, 406 insertions(+), 162 deletions(-) ChangeLog | 62 ++++++ plugin/icedtea/sun/applet/PluginAppletViewer.java | 4 plugin/icedtea/sun/applet/PluginCookieInfoRequest.java | 48 ---- plugin/icedtea/sun/applet/PluginCookieManager.java | 88 +++++++++ plugin/icedtea/sun/applet/PluginCookieStore.java | 73 ------- plugin/icedtea/sun/applet/PluginMain.java | 4 rt/net/sourceforge/jnlp/JNLPFile.java | 38 +++ rt/net/sourceforge/jnlp/PluginBridge.java | 6 rt/net/sourceforge/jnlp/resources/Messages.properties | 1 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 64 +++++- rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java | 83 +++++++- rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java | 97 ++++++++-- diffs (truncated from 882 to 500 lines): diff -r 6bec6d168a87 -r 9b85d9f17c40 ChangeLog --- a/ChangeLog Tue Aug 25 09:27:59 2009 +0100 +++ b/ChangeLog Tue Aug 25 10:58:37 2009 -0400 @@ -1,3 +1,63 @@ 2009-08-25 Edward Nevill + + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (handleMessage): Wait until panel is set before pinging it for + life status. + (showStatus): Replace new lines with spaces, as the status is + on a single line anyway. + +2009-08-25 Deepak Bhole + + * plugin/icedtea/sun/applet/PluginCookieInfoRequest.java + (parseReturn): Store cookie info as a string rather than a list of + HttpCookie objects. + (getObject): Return the new cookie string. + * plugin/icedtea/sun/applet/PluginCookieManager.java: New file, extends + CookieManager as is set as the default cookie manager for the plugin. + * plugin/icedtea/sun/applet/PluginCookieStore.java : Deleted. New design + uses a custom cookiemanager rather than just a custom store. + * plugin/icedtea/sun/applet/PluginMain.java + (init): Wire in the new cookie manager. + +2009-08-25 Deepak Bhole + + * rt/net/sourceforge/jnlp/resources/Messages.properties: Add new + message key for CN name mismatches. + * rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java + (HttpsCertVerifier): Accept new parameters that indicate certificate trust + status, CN mismatch status, and the hostname. + (getAlreadyTrustPublisher): Use provided isTrusted boolean to get around + checkServerTrusted() synchronization. + (getDetails): Include details about CN mismatch. + (getNamesForCert): New private method. Returns all acceptable names for + a given X509Certificate. + (R): Overloaded the method to return messages that have 2 variables. + * rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java: Extend + X509ExtendedTrustManager rather than X509TrustManager. + (checkClientTrusted): Overloaded method with one that takes a hostname. + (checkServerTrusted): Same. The new overloaded method also checks for CN + mismatch if the certificate is not explicitly trusted. + (isExplicitlyTrusted): Returns if the given certificate chain is part of + the local user trusted DB. + (askUser): Change parameters to accept information about trust, host match + status, and hostname. + +2009-08-25 Deepak Bhole + + * rt/net/sourceforge/jnlp/JNLPFile.java: Add a new key variable that is + unique to each instance. + (JNLPFile): Existing constructor changed to generate a new key on call. + (JNLPFile): New constructor that takes a key. If called, sets the file's + key to it. + (getUniqueKey): Returns the unique key for the instance. + * rt/net/sourceforge/jnlp/PluginBridge.java: Generate new instance + specific unique key. + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (getInstance): Use unique instance keys to determine which classloader to + use, rather than using the URL. + (getInstance): Same. + (initializeExtensions): Provide unique key to getInstance. + 2009-08-25 Edward Nevill * cppInterpreter_arm.s @@ -520,7 +580,7 @@ 2009-07-10 Deepak Bhole cookieObjects = new ArrayList(); + String cookieString = new String(); public PluginCookieInfoRequest(String message, String returnString) { super(message, returnString); @@ -63,45 +57,11 @@ public class PluginCookieInfoRequest ext PluginDebug.debug ("PluginCookieInfoRequest GOT: " + cookieInfo); - String encodedURI = cookieInfo.split(" ")[2]; - // Skip the first 3 components. We are guaranteed 3 components, // so no index -1 to worry about cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); - cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1); - - URI siteURI; - try - { - siteURI = new URI(UrlUtil.decode(encodedURI, "UTF-8")); - } catch (Exception e) - { - e.printStackTrace(); - return; - } - - if (cookieInfo != null && cookieInfo.length() > 0) - { - String[] cookies = cookieInfo.split(";"); - - for (int i = 0; i < cookies.length; i++) - { - ArrayList l = new ArrayList(); - - String cookie = cookies[i]; - cookie = cookie.trim(); - String cookieName = cookie.substring(0, cookie.indexOf("=")); - String cookieValue = cookie.substring(cookie.indexOf("=")+1); - - HttpCookie httpCookieObj = new HttpCookie(cookieName, cookieValue); - httpCookieObj.setPath(siteURI.getPath()); - httpCookieObj.setVersion(0); // force v0 - - PluginDebug.debug("Adding cookie info COOKIEN=" + cookieName + " and COOKIEV=" + cookieValue); - cookieObjects.add(httpCookieObj); - } - } + cookieString = cookieInfo.substring(cookieInfo.indexOf(' ')+1); setDone(true); } @@ -116,7 +76,7 @@ public class PluginCookieInfoRequest ext return message.startsWith(returnString); } - public List getObject() { - return this.cookieObjects; + public String getObject() { + return this.cookieString; } } diff -r 6bec6d168a87 -r 9b85d9f17c40 plugin/icedtea/sun/applet/PluginCookieManager.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedtea/sun/applet/PluginCookieManager.java Tue Aug 25 10:58:37 2009 -0400 @@ -0,0 +1,88 @@ +/* PluginCookieManager -- Cookie manager for the plugin + Copyright (C) 2009 Red Hat + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package sun.applet; + +import java.io.IOException; +import java.net.CookieManager; +import java.net.HttpCookie; +import java.net.URI; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +public class PluginCookieManager extends CookieManager +{ + public Map> get(URI uri, + Map> requestHeaders) throws IOException { + // pre-condition check + if (uri == null || requestHeaders == null) { + throw new IllegalArgumentException("Argument is null"); + } + + Map> cookieMap = new java.util.HashMap>(); + + String cookies = (String) PluginAppletViewer + .requestPluginCookieInfo(uri); + List cookieHeader = new java.util.ArrayList(); + + if (cookies != null && cookies.length() > 0) + cookieHeader.add(cookies); + + // Add anything else that mozilla didn't add + for (HttpCookie cookie : getCookieStore().get(uri)) { + // apply path-matches rule (RFC 2965 sec. 3.3.4) + if (pathMatches(uri.getPath(), cookie.getPath())) { + cookieHeader.add(cookie.toString()); + } + } + + cookieMap.put("Cookie", cookieHeader); + return Collections.unmodifiableMap(cookieMap); + } + + private boolean pathMatches(String path, String pathToMatchWith) { + if (path == pathToMatchWith) + return true; + if (path == null || pathToMatchWith == null) + return false; + if (path.startsWith(pathToMatchWith)) + return true; + + return false; + } +} diff -r 6bec6d168a87 -r 9b85d9f17c40 plugin/icedtea/sun/applet/PluginCookieStore.java --- a/plugin/icedtea/sun/applet/PluginCookieStore.java Tue Aug 25 09:27:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* PluginCookieStore -- Storage for cookie information - Copyright (C) 2009 Red Hat - -This file is part of IcedTea. - -IcedTea is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -IcedTea is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with IcedTea; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package sun.applet; - -import java.net.HttpCookie; -import java.net.URI; -import java.util.List; - -import sun.net.www.protocol.http.InMemoryCookieStore; - -public class PluginCookieStore extends InMemoryCookieStore -{ - public List get(URI uri) - { - List cookies; - - // Try to fetch it from the plugin, but if something goes - // wrong, fall back. Don't crash! - try - { - cookies = (List) PluginAppletViewer.requestPluginCookieInfo(uri); - - // If cookies is null, something went wrong. Fall back. - if (cookies == null) throw new NullPointerException("Null cookie"); - - } catch (Exception e) - { - PluginDebug.debug("Unable to fetch cookie information from plugin. " + - "Falling back to default."); - e.printStackTrace(); - cookies = super.get(uri); - } - - PluginDebug.debug("Returning cookies " + cookies + " for site: " + uri); - - return cookies; - } -} diff -r 6bec6d168a87 -r 9b85d9f17c40 plugin/icedtea/sun/applet/PluginMain.java --- a/plugin/icedtea/sun/applet/PluginMain.java Tue Aug 25 09:27:59 2009 +0100 +++ b/plugin/icedtea/sun/applet/PluginMain.java Tue Aug 25 10:58:37 2009 -0400 @@ -215,12 +215,12 @@ public class PluginMain System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); e.printStackTrace(); } - + // plug in a custom authenticator and proxy selector Authenticator.setDefault(new CustomAuthenticator()); ProxySelector.setDefault(new PluginProxySelector()); - CookieManager ckManager = new CookieManager(new PluginCookieStore(), null); + CookieManager ckManager = new PluginCookieManager(); CookieHandler.setDefault(ckManager); } diff -r 6bec6d168a87 -r 9b85d9f17c40 rt/net/sourceforge/jnlp/JNLPFile.java --- a/rt/net/sourceforge/jnlp/JNLPFile.java Tue Aug 25 09:27:59 2009 +0100 +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Tue Aug 25 10:58:37 2009 -0400 @@ -23,6 +23,7 @@ import java.net.URL; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.LinkedList; import java.util.List; import java.util.Locale; @@ -66,6 +67,9 @@ public class JNLPFile { /** the network location of this JNLP file */ protected URL fileLocation; + + /** A key that uniquely identifies connected instances (main jnlp+ext) */ + protected String uniqueKey = null; /** the URL used to resolve relative URLs in the file */ protected URL codeBase; @@ -171,6 +175,33 @@ public class JNLPFile { parse(root, strict, location); this.fileLocation = location; + + this.uniqueKey = Calendar.getInstance().getTimeInMillis() + "-" + + Math.abs(((new java.util.Random()).nextInt())) + "-" + + location; + + if (JNLPRuntime.isDebug()) + System.err.println("UNIQUEKEY=" + this.uniqueKey); + } + + /** + * Create a JNLPFile from a URL, parent URLm a version and checking for + * updates using the specified policy. + * + * @param location the location of the JNLP file + * @param uniqueKey A string that uniquely identifies connected instances + * @param version the version of the JNLP file + * @param strict whether to enforce the spec when + * @param policy the update policy + * @throws IOException if an IO exception occurred + * @throws ParseException if the JNLP file was invalid + */ + public JNLPFile(URL location, String uniqueKey, Version version, boolean strict, UpdatePolicy policy) throws IOException, ParseException { + this(location, version, strict, policy); + this.uniqueKey = uniqueKey; + + if (JNLPRuntime.isDebug()) + System.err.println("UNIQUEKEY (override) =" + this.uniqueKey); } /** @@ -245,6 +276,13 @@ public class JNLPFile { */ public URL getFileLocation() { return fileLocation; + } + + /** + * Returns the location of the parent file if it exists, null otherwise + */ + public String getUniqueKey() { + return uniqueKey; } /** diff -r 6bec6d168a87 -r 9b85d9f17c40 rt/net/sourceforge/jnlp/PluginBridge.java --- a/rt/net/sourceforge/jnlp/PluginBridge.java Tue Aug 25 09:27:59 2009 +0100 +++ b/rt/net/sourceforge/jnlp/PluginBridge.java Tue Aug 25 10:58:37 2009 -0400 @@ -24,6 +24,7 @@ package net.sourceforge.jnlp; import java.net.URL; import java.net.MalformedURLException; +import java.util.Calendar; import java.util.Hashtable; import java.util.Locale; import java.util.List; @@ -103,7 +104,10 @@ public class PluginBridge extends JNLPFi codebase.getHost()); else security = null; - + + this.uniqueKey = Calendar.getInstance().getTimeInMillis() + "-" + + Math.abs(((new java.util.Random()).nextInt())) + "-" + + documentBase; } public String getTitle() diff -r 6bec6d168a87 -r 9b85d9f17c40 rt/net/sourceforge/jnlp/resources/Messages.properties --- a/rt/net/sourceforge/jnlp/resources/Messages.properties Tue Aug 25 09:27:59 2009 +0100 +++ b/rt/net/sourceforge/jnlp/resources/Messages.properties Tue Aug 25 10:58:37 2009 -0400 @@ -168,6 +168,7 @@ SNotYetValidCert=Resources contain entri SNotYetValidCert=Resources contain entries whose signer certificate is not yet valid. SUntrustedCertificate=The digital signature was generated with an untrusted certificate. STrustedCertificate=The digital signature was generated with a trusted certificate. +SCNMisMatch=The expected hostname for this certificate is: "{0}"
The address being connected to is: "{1}" SRunWithoutRestrictions=This application will be run without the security restrictions normally provided by java. diff -r 6bec6d168a87 -r 9b85d9f17c40 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Aug 25 09:27:59 2009 +0100 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Aug 25 10:58:37 2009 -0400 @@ -209,21 +209,54 @@ public class JNLPClassLoader extends URL * @param policy the update policy to use when downloading resources */ public static JNLPClassLoader getInstance(JNLPFile file, UpdatePolicy policy) throws LaunchException { + JNLPClassLoader baseLoader = null; JNLPClassLoader loader = null; - URL location = file.getFileLocation(); - - if (location != null) - loader = (JNLPClassLoader) urlToLoader.get(location); + String uniqueKey = file.getUniqueKey(); + + if (uniqueKey != null) + baseLoader = (JNLPClassLoader) urlToLoader.get(uniqueKey); try { - if (loader == null) - loader = new JNLPClassLoader(file, policy); + + // If base loader is null, or the baseloader's file and this + // file is different, initialize a new loader + if (baseLoader == null || + !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation())) { + + loader = new JNLPClassLoader(file, policy); + + // New loader init may have caused extentions to create a + // loader for this unique key. Check. From gnu_andrew at member.fsf.org Tue Aug 25 08:14:32 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 25 Aug 2009 16:14:32 +0100 Subject: /hg/release/icedtea6-1.6: 4 new changesets In-Reply-To: References: Message-ID: <17c6771e0908250814m1e28d23dvb86dc9de6c5d5927@mail.gmail.com> 2009/8/25 : > changeset da9eb62e065f in /hg/release/icedtea6-1.6 > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=da9eb62e065f > summary: Port from trunk. > > changeset 66cdb266311e in /hg/release/icedtea6-1.6 > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=66cdb266311e > summary: Import from trunk. > > changeset 20cd55dd027f in /hg/release/icedtea6-1.6 > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=20cd55dd027f > summary: Import from trunk. > > changeset 9b85d9f17c40 in /hg/release/icedtea6-1.6 > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=9b85d9f17c40 > summary: Import from trunk. > Please either include the proper summary manually or use hg export|hg import to do a proper import of the other changeset. Now users have to look at a complete different repo. to determine what these changes do. -- 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 dbhole at redhat.com Tue Aug 25 08:40:07 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 25 Aug 2009 11:40:07 -0400 Subject: /hg/release/icedtea6-1.6: 4 new changesets In-Reply-To: <17c6771e0908250814m1e28d23dvb86dc9de6c5d5927@mail.gmail.com> References: <17c6771e0908250814m1e28d23dvb86dc9de6c5d5927@mail.gmail.com> Message-ID: <20090825154007.GB26384@redhat.com> * Andrew John Hughes [2009-08-25 11:14]: > 2009/8/25 : > > changeset da9eb62e065f in /hg/release/icedtea6-1.6 > > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=da9eb62e065f > > summary: Port from trunk. > > > > changeset 66cdb266311e in /hg/release/icedtea6-1.6 > > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=66cdb266311e > > summary: Import from trunk. > > > > changeset 20cd55dd027f in /hg/release/icedtea6-1.6 > > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=20cd55dd027f > > summary: Import from trunk. > > > > changeset 9b85d9f17c40 in /hg/release/icedtea6-1.6 > > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=9b85d9f17c40 > > summary: Import from trunk. > > > > Please either include the proper summary manually or use hg export|hg > import to do a proper import of the other changeset. Now users have > to look at a complete different repo. to determine what these changes > do. I am not sure what you mean. The full summary was included in the commit messages...: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=da9eb62e065f "Port from trunk. Fix classloader support such that the same loader is used for parent and all child jnlps for a given instance." Is there something else I should have done? Deepak From cpdev-commits at icedtea.classpath.org Tue Aug 25 09:02:50 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 16:02:50 +0000 Subject: /hg/release/icedtea6-1.6: Added CVEs to NEWS Message-ID: changeset 9f84fb766ec8 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=9f84fb766ec8 summary: Added CVEs to NEWS diffstat: 1 file changed, 11 insertions(+) NEWS | 11 +++++++++++ diffs (21 lines): diff -r 9b85d9f17c40 -r 9f84fb766ec8 NEWS --- a/NEWS Tue Aug 25 10:58:37 2009 -0400 +++ b/NEWS Tue Aug 25 12:05:50 2009 -0400 @@ -1,6 +1,17 @@ New in release 1.6 (UNRELEASED) New in release 1.6 (UNRELEASED) - Added java method tracing using systemtap version 0.9.9+. +- Security fixes for: + CVE-2009-2670 - OpenJDK Untrusted applet System properties access + CVE-2009-2671 CVE-2009-2672 - OpenJDK Proxy mechanism information leaks + CVE-2009-2673 - OpenJDK proxy mechanism allows non-authorized socket connections + CVE-2009-2674 - Java Web Start Buffer JPEG processing integer overflow + CVE-2009-2675 - Java Web Start Buffer unpack200 processing integer overflow + CVE-2009-2625 - OpenJDK XML parsing Denial-Of-Service + CVE-2009-2475 - OpenJDK information leaks in mutable variables + CVE-2009-2476 - OpenJDK OpenType checks can be bypassed + CVE-2009-2689 - OpenJDK JDK13Services grants unnecessary privileges + CVE-2009-2690 - OpenJDK private variable information disclosure New in release 1.5 (2009-05-20) From cpdev-commits at icedtea.classpath.org Tue Aug 25 09:03:31 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 16:03:31 +0000 Subject: /hg/release/icedtea6-1.6: Updated Changelog Message-ID: changeset d8cd6df4b152 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=d8cd6df4b152 summary: Updated Changelog diffstat: 1 file changed, 4 insertions(+) ChangeLog | 4 ++++ diffs (11 lines): diff -r 9f84fb766ec8 -r d8cd6df4b152 ChangeLog --- a/ChangeLog Tue Aug 25 12:05:50 2009 -0400 +++ b/ChangeLog Tue Aug 25 12:06:34 2009 -0400 @@ -1,3 +1,7 @@ 2009-08-25 Deepak Bhole + + * NEWS: Added CVEs. + 2009-08-25 Deepak Bhole * plugin/icedtea/sun/applet/PluginAppletViewer.java From cpdev-commits at icedtea.classpath.org Tue Aug 25 09:04:22 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Tue, 25 Aug 2009 16:04:22 +0000 Subject: /hg/icedtea6: 2009-08-25 Lillian Angel Message-ID: changeset afef68fb795d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=afef68fb795d summary: 2009-08-25 Lillian Angel diffstat: 2 files changed, 15 insertions(+) ChangeLog | 4 ++++ NEWS | 11 +++++++++++ diffs (32 lines): diff -r 6a3a77c90d63 -r afef68fb795d ChangeLog --- a/ChangeLog Tue Aug 25 10:38:03 2009 -0400 +++ b/ChangeLog Tue Aug 25 12:07:24 2009 -0400 @@ -1,3 +1,7 @@ 2009-08-25 Deepak Bhole + + * NEWS: Added CVEs. + 2009-08-25 Deepak Bhole * plugin/icedtea/sun/applet/PluginAppletViewer.java diff -r 6a3a77c90d63 -r afef68fb795d NEWS --- a/NEWS Tue Aug 25 10:38:03 2009 -0400 +++ b/NEWS Tue Aug 25 12:07:24 2009 -0400 @@ -1,6 +1,17 @@ New in release 1.6 (UNRELEASED) New in release 1.6 (UNRELEASED) - Added java method tracing using systemtap version 0.9.9+. +- Security fixes for: + CVE-2009-2670 - OpenJDK Untrusted applet System properties access + CVE-2009-2671 CVE-2009-2672 - OpenJDK Proxy mechanism information leaks + CVE-2009-2673 - OpenJDK proxy mechanism allows non-authorized socket connections + CVE-2009-2674 - Java Web Start Buffer JPEG processing integer overflow + CVE-2009-2675 - Java Web Start Buffer unpack200 processing integer overflow + CVE-2009-2625 - OpenJDK XML parsing Denial-Of-Service + CVE-2009-2475 - OpenJDK information leaks in mutable variables + CVE-2009-2476 - OpenJDK OpenType checks can be bypassed + CVE-2009-2689 - OpenJDK JDK13Services grants unnecessary privileges + CVE-2009-2690 - OpenJDK private variable information disclosure New in release 1.5 (2009-05-20) From bugzilla-daemon at icedtea.classpath.org Tue Aug 25 13:30:52 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 25 Aug 2009 20:30:52 +0000 Subject: [Bug 251] ubuntu 8.04 amd64 - Java applet loop: openjdk-6 icedtea6-plugin Firefox Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=251 ------- Comment #5 from edantes at usa.com 2009-08-25 20:30 ------- My current setup is Ubuntu 9.04 amd64, Firefox 3.5.2 IcedTea6-plugin 1.4.1 (6b14-1.4.1-0ubuntu11) As pointed out below, IcedTea won't load the virtual keyboard on https://www2.bancobrasil.com.br/aapf/login.jsp?aapf.IDH=sim If I press the "Entrar" button anyway, Firefox still goes into a loop. Surprisingly, when using Opera 9.64, which I have installed in this same system. But I just noticed that Opera does not use the IcedTea 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 Joe.Darcy at Sun.COM Tue Aug 25 21:36:27 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Tue, 25 Aug 2009 21:36:27 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0908250749s5c153aa4m40b15d155e3c5bbe@mail.gmail.com> References: <17c6771e0907312044q43080f55y3353927a57dca99f@mail.gmail.com> <4A78DB80.2030504@sun.com> <17c6771e0908041817h48a5fd1dhcfeb93dc1ae9c0ae@mail.gmail.com> <4A78E151.9070304@sun.com> <17c6771e0908050357u792fd707h4f28cb9b08e9e395@mail.gmail.com> <4A79F131.7040105@sun.com> <17c6771e0908051639h4c9a9c79vfdc4f6048d17cca8@mail.gmail.com> <4A84B194.1070108@sun.com> <17c6771e0908140537g6f61faf8h3f912415b2f3e9c3@mail.gmail.com> <4A898E4F.5020007@sun.com> <17c6771e0908250749s5c153aa4m40b15d155e3c5bbe@mail.gmail.com> Message-ID: <4A94BBCB.9020206@sun.com> Andrew John Hughes wrote: > 2009/8/17 Joseph D. Darcy : > >> Andrew John Hughes wrote: >> >>> 2009/8/14 Joe Darcy : >>> >>> >>>> Andrew John Hughes wrote: >>>> >>>> >>>>> 2009/8/5 Tim Bell : >>>>> >>>>> >>>>> >>>>>> Andrew John Hughes wrote: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> Thanks Tim, that seems to have fixed the permissions issue. >>>>>>> >>>>>>> >>>>>>> >>>>>> Good. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> There now seems to be an issue with jcheck, as the merge causes some >>>>>>> bugids to be repeated: >>>>>>> >>>>>>> >>>>>>> >>>>>> Hmmm - how did these changesets come in through two different paths? >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> pushing to ssh://hg.openjdk.java.net/jdk6/jdk6-gate/hotspot >>>>>>> searching for changes >>>>>>> remote: adding changesets >>>>>>> remote: adding manifests >>>>>>> remote: adding file changes >>>>>>> remote: added 555 changesets with 4771 changes to 1453 files >>>>>>> remote: >>>>>>> remote: > Changeset: 100:d821d920b465 >>>>>>> remote: > Author: kvn >>>>>>> remote: > Date: 2008-03-11 11:04 >>>>>>> remote: > >>>>>>> remote: > 6623167: C2 crashed in StoreCMNode::Value >>>>>>> remote: > Summary: C2 crashed in StoreCMNode::Value because >>>>>>> n->in(MemNode::OopStore) is 0. >>>>>>> remote: > Reviewed-by: rasbold, never >>>>>>> remote: >>>>>>> remote: Bugid 6623167 already used in this repository, in revision 20 >>>>>>> remote: >>>>>>> remote: > Changeset: 104:2c106685d6d0 >>>>>>> remote: > Author: dcubed >>>>>>> remote: > Date: 2008-03-12 18:06 >>>>>>> remote: > >>>>>>> remote: > 6497639: 4/3 Profiling Swing application caused JVM crash >>>>>>> remote: > Summary: Make RedefineClasses() interoperate better with >>>>>>> class sharing. >>>>>>> remote: > Reviewed-by: sspitsyn, jmasa >>>>>>> remote: >>>>>>> remote: Bugid 6497639 already used in this repository, in revision 20 >>>>>>> remote: >>>>>>> remote: > Changeset: 105:d8b3ef7ee3e5 >>>>>>> remote: > Author: dcubed >>>>>>> remote: > Date: 2008-03-12 18:07 >>>>>>> remote: > >>>>>>> remote: > 6599425: 4/3 OopMapCache::lookup() can cause later crash or >>>>>>> assert() failure >>>>>>> remote: > Summary: Add should_not_be_cached() to markOop and methodOop >>>>>>> and query that status inOopMapCache::lookup() >>>>>>> remote: > Reviewed-by: coleenp, sspitsyn, jmasa >>>>>>> remote: >>>>>>> remote: Bugid 6599425 already used in this repository, in revision 20 >>>>>>> remote: >>>>>>> remote: > Changeset: 240:65fe2bd88839 >>>>>>> remote: > Author: never >>>>>>> remote: > Date: 2008-06-05 21:44 >>>>>>> remote: > >>>>>>> remote: > 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse >>>>>>> with 1.6.0_05-ea >>>>>>> remote: > Reviewed-by: kvn, jrose, rasbold >>>>>>> remote: >>>>>>> remote: Bugid 6614100 already used in this repository, in revision 20 >>>>>>> remote: >>>>>>> remote: > Changeset: 286:3e82d72933d0 >>>>>>> remote: > Author: xlu >>>>>>> remote: > Date: 2008-06-26 14:15 >>>>>>> remote: > >>>>>>> remote: > 6718830: Hotspot fails to build with gcc 4.3 >>>>>>> remote: > Summary: Fixed linux make file and couple adlc code to meet >>>>>>> the changes of gcc 4.3 >>>>>>> remote: > Reviewed-by: kamg, igor >>>>>>> remote: >>>>>>> remote: Bugid 6718830 already used in this repository, in revision 32 >>>>>>> remote: >>>>>>> remote: > Changeset: 289:551f4309f476 >>>>>>> remote: > Author: ohair >>>>>>> remote: > Date: 2008-07-03 10:46 >>>>>>> remote: > >>>>>>> remote: > 6695777: Queens.class should be built from source, not put >>>>>>> in source repo >>>>>>> remote: > Reviewed-by: kvn >>>>>>> remote: >>>>>>> remote: Bugid 6695777 already used in this repository, in revision 20 >>>>>>> remote: >>>>>>> remote: > Changeset: 314:54499b980c23 >>>>>>> remote: > Author: swamyv >>>>>>> remote: > Date: 2008-07-29 13:54 >>>>>>> remote: > >>>>>>> remote: > 6710791: Remove files or build from source:maf-1_0.jar, >>>>>>> jlfg-1_0.jar >>>>>>> remote: > Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. >>>>>>> remote: > Reviewed-by: poonam, jjh >>>>>>> remote: >>>>>>> remote: Bugid 6710791 already used in this repository, in revision 20 >>>>>>> remote: >>>>>>> remote: > Changeset: 360:fa4d1d240383 >>>>>>> remote: > Author: never >>>>>>> remote: > Date: 2008-08-26 15:49 >>>>>>> remote: > >>>>>>> remote: > 6741642: bad enum definition in ciTypeFlow.hpp >>>>>>> remote: > Reviewed-by: rasbold, martin >>>>>>> remote: > Contributed-by: doko at ubuntu.com >>>>>>> remote: >>>>>>> remote: Bugid 6741642 already used in this repository, in revision 22 >>>>>>> remote: >>>>>>> remote: > Changeset: 589:748572b86af6 >>>>>>> remote: > Author: never >>>>>>> remote: > Date: 2009-04-07 14:46 >>>>>>> remote: > >>>>>>> remote: > 6636360: compiler/6595044/Main.java test fails with 64bit >>>>>>> java on solaris-sparcv9 with SIGSEGV >>>>>>> remote: > Reviewed-by: kvn, twisti >>>>>>> remote: >>>>>>> remote: Bugid 6636360 already used in this repository, in revision 29 >>>>>>> remote: >>>>>>> remote: abort: pretxnchangegroup.0.jcheck hook failed >>>>>>> remote: transaction abort! >>>>>>> remote: rollback completed >>>>>>> abort: unexpected response: empty string >>>>>>> >>>>>>> Is there a way of getting it to ignore these for this one push? I >>>>>>> don't know of a way to just pull out these nine changesets from the >>>>>>> 555 waiting to go... >>>>>>> >>>>>>> >>>>>>> >>>>>> I think they would need to be added to the jcheck whitelist for all >>>>>> time- >>>>>> but that is more of a question for Mark or Kelly. >>>>>> >>>>>> Tim >>>>>> >>>>>> >>>>>> >>>>>> >>>>> The early revisions (20, 32) are from OpenJDK6 which was rebased to >>>>> allow HotSpot patches to be applied on top. So what happened here is >>>>> that, as the fixes were already applied to OpenJDK6, the new >>>>> changesets pulled in by the merge will be no-ops but still exist to >>>>> keep the change history accurate. >>>>> >>>>> I think we just need a way of disabling this check. OpenJDK6 already >>>>> has whitespace and comment checks turned to lax. See .jcheck: >>>>> http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/0282bf49b0f6. There >>>>> may already be an option for this bugid check too, but I have no idea >>>>> what the format of that file is. >>>>> >>>>> >>>>> >>>> Andrew, can you please try your push again? >>>> >>>> I chatted with Mark and the OpenJDK 6 HotSpot Mercurial repository should >>>> be >>>> configured to do lax checking on the bug ids. >>>> >>>> Thanks, >>>> >>>> -Joe >>>> >>>> >>>> >>> Sorry, same failure still occurs :( >>> >>> I didn't see any changes to .jcheck, which I would assume are needed >>> to fix this (mr added one for the lax comments with the rebase). >>> >>> >> *sigh* >> >> Okay; I'll chat with Mark again to get to the bottom of this. >> >> -Joe >> >> > > Any further news? Can we not just turn off jcheck for jdk6? > I spoke with Mark R. and he is working on a jcheck fix to allow your change to go back. -Joe From cpdev-commits at icedtea.classpath.org Tue Aug 25 22:10:29 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Wed, 26 Aug 2009 05:10:29 +0000 Subject: /hg/icedtea6: Fix minor logic bug in earlier commit. Message-ID: changeset f1cd6ab69a53 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f1cd6ab69a53 summary: Fix minor logic bug in earlier commit. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ plugin/icedtea/sun/applet/PluginAppletViewer.java | 2 +- diffs (24 lines): diff -r afef68fb795d -r f1cd6ab69a53 ChangeLog --- a/ChangeLog Tue Aug 25 12:07:24 2009 -0400 +++ b/ChangeLog Wed Aug 26 01:14:21 2009 -0400 @@ -1,3 +1,8 @@ 2009-08-25 Lillian Angel + + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (handleMessage): Fix logic bug introduced in previous commit. + 2009-08-25 Lillian Angel * NEWS: Added CVEs. diff -r afef68fb795d -r f1cd6ab69a53 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Aug 25 12:07:24 2009 -0400 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Wed Aug 26 01:14:21 2009 -0400 @@ -589,7 +589,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; // Wait for the panel to initialize // (happens in a separate thread) - while (panel == null || (o = panel.getApplet()) == null && ((NetxPanel) panel).isAlive()) { + while (panel == null || ((o = panel.getApplet()) == null && ((NetxPanel) panel).isAlive())) { try { Thread.sleep(2000); PluginDebug.debug("Waiting for applet to initialize..."); From cpdev-commits at icedtea.classpath.org Tue Aug 25 22:12:39 2009 From: cpdev-commits at icedtea.classpath.org (cpdev-commits at icedtea.classpath.org) Date: Wed, 26 Aug 2009 05:12:39 +0000 Subject: /hg/release/icedtea6-1.6: Fix minor logic bug introduced in prev... Message-ID: changeset b732a13ecc53 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=b732a13ecc53 summary: Fix minor logic bug introduced in previous commit. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ plugin/icedtea/sun/applet/PluginAppletViewer.java | 2 +- diffs (24 lines): diff -r d8cd6df4b152 -r b732a13ecc53 ChangeLog --- a/ChangeLog Tue Aug 25 12:06:34 2009 -0400 +++ b/ChangeLog Wed Aug 26 01:16:37 2009 -0400 @@ -1,3 +1,8 @@ 2009-08-25 Lillian Angel + + * plugin/icedtea/sun/applet/PluginAppletViewer.java + (handleMessage): Fix logic bug introduced in previous commit. + 2009-08-25 Lillian Angel * NEWS: Added CVEs. diff -r d8cd6df4b152 -r b732a13ecc53 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Aug 25 12:06:34 2009 -0400 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Wed Aug 26 01:16:37 2009 -0400 @@ -589,7 +589,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; // Wait for the panel to initialize // (happens in a separate thread) - while (panel == null || (o = panel.getApplet()) == null && ((NetxPanel) panel).isAlive()) { + while (panel == null || ((o = panel.getApplet()) == null && ((NetxPanel) panel).isAlive())) { try { Thread.sleep(2000); PluginDebug.debug("Waiting for applet to initialize..."); From mark at klomp.org Wed Aug 26 02:01:42 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 26 Aug 2009 11:01:42 +0200 Subject: /hg/release/icedtea6-1.6: 4 new changesets In-Reply-To: <20090825154007.GB26384@redhat.com> References: <17c6771e0908250814m1e28d23dvb86dc9de6c5d5927@mail.gmail.com> <20090825154007.GB26384@redhat.com> Message-ID: <1251277302.5495.3.camel@springer.wildebeest.org> Hi, On Tue, 2009-08-25 at 11:40 -0400, Deepak Bhole wrote: > * Andrew John Hughes [2009-08-25 11:14]: > > > changeset 9b85d9f17c40 in /hg/release/icedtea6-1.6 > > > details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=9b85d9f17c40 > > > summary: Import from trunk. > > > > Please either include the proper summary manually or use hg export|hg > > import to do a proper import of the other changeset. Now users have > > to look at a complete different repo. to determine what these changes > > do. > > I am not sure what you mean. The full summary was included in the commit > messages...: > > http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=da9eb62e065f > > Is there something else I should have done? Nope. This was because the new changeset emails didn't include all info. I changed the hgrc to include the following changeset template for the [notify] extension when sending emails: changegroup = \nchangeset {node|short} in {root}\ndetails: {baseurl}{webroot}?cmd=changeset;node={node|short}\nauthor: {author}\ndate: {date|date}\n\n\t{desc|fill68|tabindent|strip}\n\n That should include all the details anybody will ever want. I hope... If not, please yell and scream, and hopefully provide an updated template description. Cheers, Mark From bugzilla-daemon at icedtea.classpath.org Wed Aug 26 09:39:27 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 26 Aug 2009 16:39:27 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 mark at klomp.org changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #256 is|0 |1 obsolete| | ------- Comment #14 from mark at klomp.org 2009-08-26 16:39 ------- Created an attachment (id=257) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=257&action=view) Corrected patch Corrected patch. Don't have a replicator of the original issue yet though. -- 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 Aug 26 07:49:35 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 26 Aug 2009 14:49:35 +0000 Subject: [Bug 251] ubuntu 8.04 amd64 - Java applet loop: openjdk-6 icedtea6-plugin Firefox Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=251 ------- Comment #6 from jon.vanalten at redhat.com 2009-08-26 14:49 ------- Indeed, the problem exists in older version of the plugin. The version shipping in Ubuntu (1.4.1) is 5-6 months old. Version 1.5 was tagged around 3 months ago, contains a number of fixes, and seems to work for this page, at least as far as the keyboard applet on login page is concerned. Please report the issue to your distro. Here we cannot determine what bits of Icedtea are put into Ubuntu. If further issues remain (ie behaviour after successful login using newer version of plugin), someone with an account at this bank will need to contribute debug info as noted above in order to proceed. -- 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 Wed Aug 26 13:49:39 2009 From: ed at camswl.com (Edward Nevill) Date: Wed, 26 Aug 2009 21:49:39 +0100 Subject: JTreg results for ARM Message-ID: <200908262049.n7QKndXX009606@parsley.camswl.com> Hi, As requested by Matthisa, here are the JTReg results I get for ARM. hotspot and land results are identical. The jdk results are interestingly different. I get Test results: passed: 3,156; failed: 187; error: 13 Matthias gets Test results: passed: 2,859; failed: 123; error: 17 So I seem to be running more tests? Matthias: are you sure the test suite didn't bomb out before completion? Do you have the raw results, IE including all the Passed: tests so I can diff. PS: Despite repeated efforts I have been unable to get a Zero build on x86 to run through JTReg (ie even to complete). Could some kind person please do this, so that I can use it as a 'golden' reference of what we should be passing on ARM. Regards, Ed. --- hotspot --- Test results: passed: 24 --- lang --- Test results: passed: 1,352 --- jdk --- FAILED: com/sun/jdi/AllLineLocations.java FAILED: com/sun/jdi/BadHandshakeTest.java FAILED: com/sun/jdi/EarlyReturnTest.java FAILED: com/sun/jdi/ExclusiveBind.java Error: com/sun/jdi/JITDebug.sh FAILED: com/sun/jdi/MethodExitReturnValuesTest.java FAILED: com/sun/jdi/PopAndInvokeTest.java FAILED: com/sun/jdi/PopAndStepTest.java Error: com/sun/jdi/PopAsynchronousTest.java FAILED: com/sun/jdi/PopSynchronousTest.java FAILED: com/sun/jdi/ProcessAttachTest.sh FAILED: com/sun/jdi/RedefineCrossStart.java FAILED: com/sun/jdi/Redefine-g.sh FAILED: com/sun/jdi/RedefineTTYLineNumber.sh FAILED: com/sun/jdi/RunToExit.java FAILED: com/sun/net/httpserver/bugs/B6361557.java Error: com/sun/tools/attach/BasicTests.sh Error: com/sun/tools/attach/PermissionTests.sh Error: java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html FAILED: java/awt/Focus/ToFrontFocusTest/ToFrontFocus.html FAILED: java/awt/Focus/TranserFocusToWindow/TranserFocusToWindow.java FAILED: java/awt/Frame/MaximizedToIconified/MaximizedToIconified.java FAILED: java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html FAILED: java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.html FAILED: java/awt/print/PrinterJob/ExceptionTest.java FAILED: java/awt/PrintJob/MultipleEnd/MultipleEnd.java FAILED: java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.html FAILED: java/awt/Window/GrabSequence/GrabSequence.java FAILED: java/beans/XMLEncoder/javax_swing_tree_TreePath.java FAILED: java/lang/management/MXBean/MXBeanBehavior.java FAILED: java/lang/Math/IeeeRecommendedTests.java FAILED: java/net/DatagramPacket/Constructor.java Error: java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.java FAILED: java/net/DatagramSocket/PortUnreachable.java FAILED: java/net/DatagramSocket/ReportSocketClosed.java FAILED: java/net/DatagramSocket/Send12k.java FAILED: java/net/DatagramSocket/SendSize.java FAILED: java/net/DatagramSocketImpl/CheckDiscard.java FAILED: java/net/InetAddress/GetLocalHostWithSM.java FAILED: java/net/MulticastSocket/B6427403.java FAILED: java/net/PlainSocketImpl/BigBacklog.java FAILED: java/net/PortUnreachableException/Concurrent.java FAILED: java/net/PortUnreachableException/OneExceptionOnly.java FAILED: java/net/Socket/asyncClose/AsyncClose.java FAILED: java/net/Socket/asyncClose/BrokenPipe.java FAILED: java/net/Socket/setReuseAddress/Basic.java FAILED: java/net/Socket/setReuseAddress/Restart.java FAILED: java/net/Socket/AccurateTimeout.java FAILED: java/net/Socket/CloseAvailable.java FAILED: java/net/Socket/DeadlockTest.java FAILED: java/net/Socket/GetLocalAddress.java FAILED: java/net/Socket/InheritTimeout.java FAILED: java/net/Socket/ReadTimeout.java FAILED: java/net/Socket/SetSoLinger.java FAILED: java/net/Socket/ShutdownBoth.java FAILED: java/net/Socket/SoTimeout.java FAILED: java/net/SocketInputStream/SocketTimeout.java FAILED: java/net/URLConnection/HandleContentTypeWithAttrs.java Error: java/nio/channels/DatagramChannel/Connect.java FAILED: java/nio/channels/DatagramChannel/ConnectedSend.java FAILED: java/nio/channels/DatagramChannel/EmptyBuffer.java FAILED: java/nio/channels/DatagramChannel/ReceiveISA.java FAILED: java/nio/channels/DatagramChannel/Refused.java Error: java/nio/channels/DatagramChannel/Sender.java Error: java/nio/channels/DatagramChannel/SRTest.java FAILED: java/nio/channels/DatagramChannel/ThereCanBeOnlyOne.java FAILED: java/nio/channels/FileChannel/LongTransferTest.java FAILED: java/nio/channels/FileChannel/Transfer.java FAILED: java/nio/channels/Selector/BasicAccept.java FAILED: java/nio/channels/Selector/CloseWhenKeyIdle.java FAILED: java/nio/channels/Selector/SelectAndCancel.java FAILED: java/nio/channels/Selector/SelectorLimit.java FAILED: java/nio/channels/Selector/SelectorTest.java FAILED: java/nio/channels/ServerSocketChannel/AcceptAddress.java Error: java/nio/channels/ServerSocketChannel/AdaptServerSocket.java FAILED: java/nio/channels/ServerSocketChannel/Basic.java FAILED: java/nio/channels/ServerSocketChannel/NonBlockingAccept.java FAILED: java/nio/channels/SocketChannel/CloseAfterConnect.java FAILED: java/nio/channels/SocketChannel/GetChannel.java FAILED: java/nio/channels/SocketChannel/Hangup.java FAILED: java/nio/channels/SocketChannel/OpenLeak.java FAILED: java/nio/channels/SocketChannel/VectorIO.java FAILED: java/nio/channels/SocketChannel/Write.java FAILED: java/nio/channels/AsyncCloseAndInterrupt.java FAILED: java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java FAILED: java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java FAILED: java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java FAILED: java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java FAILED: java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java FAILED: java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java FAILED: java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java FAILED: java/rmi/activation/Activatable/extLoadedImpl/ext.sh FAILED: java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java FAILED: java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java FAILED: java/rmi/activation/Activatable/nestedActivate/NestedActivate.java FAILED: java/rmi/activation/Activatable/nonExistentActivatable/NonExistentActivatable.java FAILED: java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java FAILED: java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java FAILED: java/rmi/activation/Activatable/restartService/RestartService.java FAILED: java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java FAILED: java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java FAILED: java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java FAILED: java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java FAILED: java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java FAILED: java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java FAILED: java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java FAILED: java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java FAILED: java/rmi/activation/CommandEnvironment/SetChildEnv.java FAILED: java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java FAILED: java/rmi/invalidName/InvalidName.java FAILED: java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java FAILED: java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java FAILED: java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java FAILED: java/rmi/transport/checkFQDN/CheckFQDN.java FAILED: java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java FAILED: java/util/concurrent/locks/Lock/TimedAcquireLeak.java FAILED: java/util/concurrent/ThreadPoolExecutor/CoreThreadTimeOut.java FAILED: java/util/logging/LoggingDeadlock2.java FAILED: javax/management/modelmbean/DescriptorSupportSerialTest.java FAILED: javax/management/modelmbean/UnserializableTargetObjectTest.java FAILED: javax/management/mxbean/GenericArrayTypeTest.java FAILED: javax/management/mxbean/MXBeanTest.java FAILED: javax/management/proxy/NotificationEmitterProxy.java FAILED: javax/management/proxy/ProxyObjectMethodsTest.java FAILED: javax/management/remote/mandatory/connection/AddressableTest.java FAILED: javax/management/remote/mandatory/connection/BrokenConnectionTest.java FAILED: javax/management/remote/mandatory/connection/CloseFailedClientTest.java FAILED: javax/management/remote/mandatory/connection/CloseServerTest.java FAILED: javax/management/remote/mandatory/connection/CloseUnconnectedTest.java FAILED: javax/management/remote/mandatory/connection/ConnectionTest.java FAILED: javax/management/remote/mandatory/connection/IdleTimeoutTest.java FAILED: javax/management/remote/mandatory/connection/IIOPURLTest.java FAILED: javax/management/remote/mandatory/connection/MultiOpenCloseTest.java FAILED: javax/management/remote/mandatory/connection/RMIConnectionIdTest.java FAILED: javax/management/remote/mandatory/connection/RMIExitTest.java FAILED: javax/management/remote/mandatory/connection/RMISerializeTest.java FAILED: javax/management/remote/mandatory/connectorServer/ConnectorStopDeadlockTest.java FAILED: javax/management/remote/mandatory/connectorServer/MBSFPreStartPostStartTest.java FAILED: javax/management/remote/mandatory/connectorServer/RMIExporterTest.java FAILED: javax/management/remote/mandatory/loading/DeserializeEncodedURLTest.java FAILED: javax/management/remote/mandatory/loading/MethodResultTest.java FAILED: javax/management/remote/mandatory/loading/MissingClassTest.java FAILED: javax/management/remote/mandatory/loading/RMIDownloadTest.java FAILED: javax/management/remote/mandatory/notif/AddRemoveTest.java FAILED: javax/management/remote/mandatory/notif/DiffHBTest.java FAILED: javax/management/remote/mandatory/notif/EmptyDomainNotificationTest.java FAILED: javax/management/remote/mandatory/notif/ListenerScaleTest.java FAILED: javax/management/remote/mandatory/notif/NotifBufferSizePropertyNameTest.java FAILED: javax/management/remote/mandatory/notif/NotificationAccessControllerTest.java FAILED: javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java FAILED: javax/management/remote/mandatory/notif/NotificationEmissionTest.java FAILED: javax/management/remote/mandatory/notif/NotifReconnectDeadlockTest.java FAILED: javax/management/remote/mandatory/notif/NotSerializableNotifTest.java FAILED: javax/management/remote/mandatory/notif/RMINotifTest.java FAILED: javax/management/remote/mandatory/notif/ServerNotifs.java FAILED: javax/management/remote/mandatory/notif/UnexpectedNotifTest.java FAILED: javax/management/remote/mandatory/passwordAccessFile/NonJMXPrincipalsTest.java FAILED: javax/management/remote/mandatory/passwordAccessFile/PasswordAccessFileTest.java FAILED: javax/management/remote/mandatory/passwordAuthenticator/RMIAltAuthTest.java FAILED: javax/management/remote/mandatory/passwordAuthenticator/RMIPasswdAuthTest.java FAILED: javax/management/remote/mandatory/provider/ProviderTest.java FAILED: javax/management/remote/mandatory/serverError/JMXServerErrorTest.java FAILED: javax/management/remote/mandatory/socketFactories/RMISocketFactoriesTest.java FAILED: javax/management/remote/mandatory/threads/ExecutorTest.java FAILED: javax/management/remote/mandatory/threads/NoServerTimeoutTest.java FAILED: javax/xml/crypto/dsig/GenerationTests.java FAILED: javax/xml/crypto/dsig/ValidationTests.java FAILED: sun/java2d/cmm/ColorConvertOp/ColConvCCMTest.java FAILED: sun/java2d/cmm/ColorConvertOp/ColConvDCMTest.java FAILED: sun/java2d/cmm/ColorConvertOp/MTColConvTest.java Error: sun/java2d/cmm/ColorConvertOp/MTSafetyTest.java FAILED: sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.sh FAILED: sun/management/HotspotThreadMBean/GetInternalThreads.java Error: sun/management/jmxremote/bootstrap/LocalManagementTest.sh FAILED: sun/management/jmxremote/bootstrap/LocalOnlyTest.java FAILED: sun/management/jmxremote/bootstrap/PasswordFilePermissionTest.sh FAILED: sun/management/jmxremote/bootstrap/RmiBootstrapTest.sh FAILED: sun/management/jmxremote/bootstrap/RmiRegistrySslTest.sh FAILED: sun/management/jmxremote/bootstrap/RmiSslBootstrapTest.sh FAILED: sun/management/jmxremote/bootstrap/SSLConfigFilePermissionTest.sh Error: sun/security/ssl/com/sun/net/ssl/internal/ssl/ServerHandshaker/GetPeerHost.java FAILED: sun/tools/jinfo/Basic.sh FAILED: sun/tools/jps/jps-Defaults.sh FAILED: sun/tools/jps/jps-l_1.sh FAILED: sun/tools/jps/jps-l_2.sh FAILED: sun/tools/jps/jps-lm.sh FAILED: sun/tools/jps/jps-m_2.sh FAILED: sun/tools/jps/jps-m.sh FAILED: sun/tools/jps/jps-v_1.sh FAILED: sun/tools/jps/jps-V_2.sh FAILED: sun/tools/jps/jps-vm_1.sh FAILED: sun/tools/jps/jps-Vm_2.sh FAILED: sun/tools/jps/jps-Vvm.sh FAILED: sun/tools/jps/jps-Vvml_2.sh FAILED: sun/tools/jps/jps-Vvml.sh FAILED: sun/tools/jstat/jstatPrintCompilationOutput1.sh FAILED: sun/tools/jstatd/jstatdDefaults.sh FAILED: sun/tools/jstatd/jstatdExternalRegistry.sh FAILED: sun/tools/jstatd/jstatdPort.sh FAILED: sun/tools/jstatd/jstatdServerName.sh Test results: passed: 3,156; failed: 187; error: 13 From ed at camswl.com Wed Aug 26 05:56:25 2009 From: ed at camswl.com (Edward Nevill) Date: Wed, 26 Aug 2009 13:56:25 +0100 Subject: 1.6 changes to make ARM work with gcc 4.1 Message-ID: <200908261256.n7QCuPQg007589@parsley.camswl.com> Hi all, Below is a patch which will make the ARM interpreter build with gcc-4.1 series. I am not sure whether this should go in the 1.6 release or not. On the one hand it is a shame it does not build with 4.1, on the other hand very few people build with 4.1. The basic change is to inline those functions which were causing unresolved symbols on gcc 4.1. The reason the symbols were unresolved was that gcc 4.1 inlined these functions whereas gcc 4.4 did not. Therefore when the assembler tried to call these functions they were unresolved because they had been inlined. Later vsns of gcc seem to get around this by putting the inlined functions in a .comdat section. This is then excluded by ld if it is not referenced. The inlining I have done is pretty much a cut and paste from the gcc 4.4 output. Note that since it is now no longer dependant on the GCC_VERSION I have removed that. I have also reduced the code and data alignment from 64 byte alignment to 8 byte alignment as earlier binutils had problems with 64 byte alignment. This was only a very minor performance optimisation anyway. As I say, I am in two minds whether this should go in 1.6 or not. Your opinions please. Regards, Ed. --- CUT HERE--------------------------------------------------------------- diff -ruNE icedtea6-1.6.orig/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S icedtea6-1.6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- icedtea6-1.6.orig/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2009-08-25 17:59:12.000000000 +0100 +++ icedtea6-1.6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2009-08-25 18:07:37.000000000 +0100 @@ -5,15 +5,6 @@ #define ARMv4 -#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) - -// ECN: DOH!!! gcc 4.4 has changed the name mangling scheme!!! -#if GCC_VERSION >= 40400 -#define oop_store _Z9oop_storeIP7oopDescEvPT_S1_ -#else -#define oop_store _Z9oop_storeIP7oopDescEvPVT_S1_ -#endif - #define stack r4 #define jpc r5 #define dispatch r6 @@ -174,15 +165,15 @@ #define last_implemented_bytecode 248 .macro ALIGN_CODE - .align 6 + .align 3 .endm .macro ALIGN_DATA - .align 6 + .align 3 .endm .macro ALIGN_OPCODE - .align 6 + .align 3 .endm .macro ALIGN_WORD @@ -399,6 +390,237 @@ .text +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, #148] + 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 + mov r4, r2 + mov r7, r0 + mov r5, r1 + bic r6, r6, #0xf000 + mov r8, r2 +1: + ldr r3, [r5, #0] + mov r0, r4 + mov r1, r7 + mov r2, r5 + cmp r4, r3 + bne 2f + blx r6 + cmp r0, #0 + bne 1b + mov r0, r8 + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +2: + mov r8, r3 + 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, #7 +.ThreadInVMfromJavaD_pic: + add r5, pc, r5 + ldr r6, [r0, #0] + mov r4, r0 + ldr r3, [r5, r3] + str r2, [r6, #316] + 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, #316] + ldr r0, [r4, #0] + ldr r3, [r0, #308] + cmp r3, #0 + bne 3f + ldr r3, [r0, #24] + tst r3, #536870912 + 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, #24] + tst r3, #268435456 + 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) + +oop_store: + stmfd sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, oop_store_adcons + ldr r3, oop_store_adcons+4 + mov r5, r0 +.oop_store_pic: + add r4, pc, r4 + mov r6, r1 + ldr r3, [r4, r3] + ldrb r3, [r3, #0] @ zero_extendqisi2 + cmp r3, #0 + bne 3f + ldr r7, oop_store_adcons+8 + ldr r3, [r4, r7] + ldr r3, [r3, #0] + ldr r2, [r3, #8] + cmp r2, #1 + beq 1f + mov r0, r3 + mov r1, r5 + ldr r3, [r3, #0] + mov r2, r6 + mov lr, pc + ldr pc, [r3, #48] +1: + ldr r3, [r4, r7] + str r6, [r5, #0] + ldr r3, [r3, #0] + ldr r2, [r3, #8] + cmp r2, #1 + beq 2f + mov r0, r3 + mov r1, r5 + mov r2, r6 + ldr r3, [r3, #0] + mov lr, pc + ldr pc, [r3, #52] + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +2: + ldr r3, [r3, #76] + mov r2, #0 + strb r2, [r3, r5, lsr #9] + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +3: + ldr r7, oop_store_adcons+8 + ldr r3, [r4, r7] + ldr r3, [r3, #0] + ldr r2, [r3, #8] + cmp r2, #1 + beq 4f + mov r0, r3 + mov r1, r5 + ldr r3, [r3, #0] + mov r2, r6 + mov lr, pc + ldr pc, [r3, #48] +4: + mov r3, #0xffffffa0 + bic r3, r3, #0xf000 + blx r3 + b 1b +oop_store_adcons: + .word _GLOBAL_OFFSET_TABLE_-(.oop_store_pic+8) + .word always_do_update_barrier(GOT) + .word _ZN7oopDesc3_bsE(GOT) + ALIGN_CODE build_normal: ldr ip, [r1, #24] @@ -1750,7 +1972,7 @@ ldr r3, [istate, #ISTATE_THREAD] mov r0, sp str r3, [sp] - bl _ZN17HandleMarkCleanerD1Ev + bl HandleMarkCleanerD ldr r0, [istate, #ISTATE_THREAD] str jpc, [istate, #ISTATE_BCP] str stack, [istate, #ISTATE_STACK] @@ -1917,7 +2139,7 @@ ldr r3, [istate, #ISTATE_THREAD] mov r0, sp str r3, [sp] - bl _ZN17HandleMarkCleanerD1Ev + bl HandleMarkCleanerD ldr r0, [istate, #ISTATE_THREAD] str jpc, [istate, #ISTATE_BCP] str stack, [istate, #ISTATE_STACK] @@ -2487,7 +2709,7 @@ mov r2, tmp_xxx mov r1, r0 mov r0, sl - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp r0, tmp_xxx bne .new_5 subs tmp_xxx, r0, #0 @@ -2650,7 +2872,7 @@ add tmp_xxx, r0, #8 mov r0, tmp_xxx mov r1, tmp_vvv - bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + bl is_subtype_of cmp r0, #0 bne .checkcast_exit mov r0, tmp_xxx @@ -2685,7 +2907,7 @@ mov r0, ip bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ mov r0, sl - bl _ZN18ThreadInVMfromJavaD1Ev + bl ThreadInVMfromJavaD ldr r0, [sp, #112] ldr r3, [r0, #0] ldr stack, [istate, #ISTATE_STACK] @@ -2761,7 +2983,7 @@ cmp r1, r0 beq .instanceof_2 add r0, r0, #8 - bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + bl is_subtype_of cmp r0, #0 streq r0, [stack, #4] beq .instanceof_exit @@ -2802,7 +3024,7 @@ orr tmp1, r3, #1 mov r2, tmp1 str tmp1, [sl, #0] - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp r0, tmp1 beq .monitorenter_exit bic r1, tmp1, #3 @@ -2885,7 +3107,7 @@ orr tmp1, r2, #1 mov r2, tmp1 str tmp1, [sl, #0] - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp r0, tmp1 beq .monitorenter_exit bic r1, tmp1, #3 @@ -2941,7 +3163,7 @@ beq .monitorexit_exit mov r1, sl mov r2, tmp1 - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp tmp1, r0 beq .monitorexit_exit str sl, [tmp1, #4] @@ -2998,7 +3220,7 @@ cmp r0, r1 beq .aastore_exit add r0, r0, #8 - bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + bl is_subtype_of cmp r0, #0 moveq r0, #VMSYMBOLS_ArrayStoreException beq raise_exception @@ -3150,7 +3372,7 @@ ldr r3, [istate, #ISTATE_THREAD] mov r0, sp str r3, [sp] - bl _ZN17HandleMarkCleanerD1Ev + bl HandleMarkCleanerD ldr r0, [istate, #ISTATE_THREAD] str jpc, [istate, #ISTATE_BCP] str stack, [istate, #ISTATE_STACK] @@ -3365,7 +3587,7 @@ mov r0, r2 mov r1, sl mov r2, tmp_xxx - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp tmp_xxx, r0 beq .normal_do_synchronisation_1 b do_execute_java_bytecodes_restore_locals @@ -4141,7 +4363,7 @@ mov tmp_vvv, lr mov r1, tmp1 mov r2, tmp2 - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp tmp2, r0 bxeq tmp_vvv @@ -4221,7 +4443,7 @@ bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ mov r0, sp str tmp1, [sp] - bl _ZN18ThreadInVMfromJavaD1Ev + bl ThreadInVMfromJavaD b handle_exception_with_bcp null_str: .byte 0 @@ -4530,7 +4752,7 @@ beq .handle_exception_23 mov r1, sl ldr r2, [sp, #92] - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr ldr r1, [sp, #92] cmp r1, r0 beq .handle_exception_22 @@ -4552,7 +4774,7 @@ cmp r1, #0 beq .handle_exception_24 add r0, sp, #204 - bl _ZN6HandleC1EP7oopDesc + bl HandleC ldr r1, [sp, #204] ldr r0, [istate, #ISTATE_THREAD] str r1, [sp, #44] @@ -4595,7 +4817,7 @@ ldr r0, [sp, #24] ldr r3, [istate, #ISTATE_THREAD] ldr r1, [r3, #4] - bl _ZN6HandleC1EP7oopDesc + bl HandleC ldr r2, [sp, #212] ldr r0, [istate, #ISTATE_THREAD] str r2, [sp, #44] @@ -4627,7 +4849,7 @@ ldr r3, [istate, #ISTATE_THREAD] add r0, sp, #208 ldr r1, [r3, #4] - bl _ZN6HandleC1EP7oopDesc + bl HandleC ldr r2, [sp, #208] ldr r0, [istate, #ISTATE_THREAD] str r2, [sp, #44] From dbhole at redhat.com Wed Aug 26 08:33:06 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 26 Aug 2009 11:33:06 -0400 Subject: Committing plugin patches without review Message-ID: <20090826153306.GA30182@redhat.com> Hi, Until recently, Omair used to review a lot of my plugin patches. With him gone, plugin patches are ending up waiting for a really long time for approval. I was wondering if anyone objects to me just committing plugin fixes directly and sending an email about the commits? We can always back out the changes if someone finds an issue later.. and this way I don't have to maintain multiple trees on my end waiting for push.. Thanks, Deepak From gnu_andrew at member.fsf.org Wed Aug 26 11:35:02 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 26 Aug 2009 19:35:02 +0100 Subject: 1.6 changes to make ARM work with gcc 4.1 In-Reply-To: <200908261256.n7QCuPQg007589@parsley.camswl.com> References: <200908261256.n7QCuPQg007589@parsley.camswl.com> Message-ID: <17c6771e0908261135q31a1e32dle8f8a347d1fb1a79@mail.gmail.com> 2009/8/26 Edward Nevill : > Hi all, > > Below is a patch which will make the ARM interpreter build with gcc-4.1 > series. > > I am not sure whether this should go in the 1.6 release or not. On the > one hand it is a shame it does not build with 4.1, on the other hand > very few people build with 4.1. > > The basic change is to inline those functions which were causing unresolved > symbols on gcc 4.1. The reason the symbols were unresolved was that > gcc 4.1 inlined these functions whereas gcc 4.4 did not. Therefore > when the assembler tried to call these functions they were unresolved > because they had been inlined. > > Later vsns of gcc seem to get around this by putting the inlined functions > in a .comdat section. This is then excluded by ld if it is not referenced. > > The inlining I have done is pretty much a cut and paste from the gcc 4.4 > output. > > Note that since it is now no longer dependant on the GCC_VERSION I have > removed that. > > I have also reduced the code and data alignment from 64 byte alignment > to 8 byte alignment as earlier binutils had problems with 64 byte alignment. > This was only a very minor performance optimisation anyway. > > As I say, I am in two minds whether this should go in 1.6 or not. Your > opinions please. > > Regards, > Ed. > Does it cause any regressions or have a noticeable effect on users using gcc > 4.1? If not, it's a sensible fix to have in the release which will make it usable by more people. -- 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 Wed Aug 26 11:54:11 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 26 Aug 2009 19:54:11 +0100 Subject: Committing plugin patches without review In-Reply-To: <20090826153306.GA30182@redhat.com> References: <20090826153306.GA30182@redhat.com> Message-ID: <17c6771e0908261154q4e77dbdfud263adbfa889c145@mail.gmail.com> 2009/8/26 Deepak Bhole : > Hi, > > Until recently, Omair used to review a lot of my plugin patches. With > him gone, plugin patches are ending up waiting for a really long time for > approval. I was wondering if anyone objects to me just committing plugin > fixes directly and sending an email about the commits? We can always > back out the changes if someone finds an issue later.. and this way I > don't have to maintain multiple trees on my end waiting for push.. > > Thanks, > Deepak > I agree, with the same provisions and logic I mentioned when the same issue was raised with respect to Ed's patches: * Do the same mail posts as now, just don't wait for a response. The convention we used in GNU Classpath was to prefix the subject with FYI for patches that were to be committed, and RFC for those needed comment. Highlighting posts with patches for review by a visible subject is generally a good idea when the list is used for other traffic; this is the case with all the OpenJDK lists. * Any patches which change the build machinery (Makefile.am, etc.) need review. Ideally all patches would be reviewed, but there just isn't enough people working on IcedTea for this to happen at present. Obviously build fixes are easy for people to test and comment on (and scream about if they break things), but things that change optional features like the plugin, Shark/Zero and ARM assembler are tested less frequently and even fewer people know the inner workings. I guess that one or both of the new Red Hat interns (Jonathan VanAlten and Man Wong) will be able to help out with time, but for now I think this sounds like a reasonable course of action. What do others think? Also, the logic applied on the GCC lists is that minor fixes like typos don't require review, and I think we should also applied the same common sense criteria here. 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 gnu_andrew at member.fsf.org Wed Aug 26 11:57:28 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 26 Aug 2009 19:57:28 +0100 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <17c6771e0908250710h37293db0qb2e8f8ce23f40293@mail.gmail.com> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> <4A93E752.1040106@redhat.com> <1251208463.31892.23.camel@springer.wildebeest.org> <17c6771e0908250710h37293db0qb2e8f8ce23f40293@mail.gmail.com> Message-ID: <17c6771e0908261157r4140c7d7wc2e60f565ca032a8@mail.gmail.com> 2009/8/25 Andrew John Hughes : > 2009/8/25 Mark Wielaard : >> On Tue, 2009-08-25 at 09:29 -0400, Lillian Angel wrote: >>> Andrew John Hughes wrote: >>> > This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before >>> > starting an OpenJDK build. ?If JAVA_HOME is set, an OpenJDK build will >>> > fail. >>> > >>> > Ok to commit? >>> > >>> > ChangeLog: >>> > >>> > 2009-08-25 ?Andrew John Hughes ? >>> > >>> > ? ? ? ? * Makefile.am: >>> > ? ? ? ? Unset JAVA_HOME and JDK_HOME before building. >>> >>> I am not thrilled with the idea of unsetting env vars on a system. I >>> think maybe it would be better for configure to fail and give an error >>> message if either of these are set. >> >> Why does the build fail if any of these are set in the first place? > > Because Sun designed it to do so. Clearly you don't have JAVA_HOME set > by default on your system (some distros do this) or you would have had > the fun of the OpenJDK build failing. > See: http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#linux > >> I agree that in general it is better to have configure figure out >> settings. That is really what it is for. >> >> The GNU Make manual actually warns not to rely on environment variables: >> >> ? ? ? ?It is not wise for makefiles to depend for their functioning on >> ? ? ? ?environment variables set up outside their control, since this >> ? ? ? ?would cause different users to get different results from the >> ? ? ? ?same makefile. This is against the whole purpose of most >> ? ? ? ?makefiles. >> ? ? ? ?http://www.gnu.org/software/automake/manual/make/Environment.html >> > > Unfortunately, that is how the entire OpenJDK build works. ?We already > set 30-40 variables in Makefile.am. > >> Cheers, >> >> Mark >> >> > > > > -- > 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 > So can I push this or not? FWIW, IcedTea7 already has this change and I've not experienced any problems or loss of JAVAC settings 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 gnu_andrew at member.fsf.org Wed Aug 26 12:02:21 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 26 Aug 2009 20:02:21 +0100 Subject: JTreg results for ARM In-Reply-To: <200908262049.n7QKndXX009606@parsley.camswl.com> References: <200908262049.n7QKndXX009606@parsley.camswl.com> Message-ID: <17c6771e0908261202g6c46849bse1aa148e322aaea8@mail.gmail.com> 2009/8/26 Edward Nevill : > Hi, > > As requested by Matthisa, here are the JTReg results I get for ARM. > hotspot and land results are identical. > > The jdk results are interestingly different. > > I get > > Test results: passed: 3,156; failed: 187; error: 13 > > Matthias gets > > Test results: passed: 2,859; failed: 123; error: 17 > > So I seem to be running more tests? > > Matthias: are you sure the test suite didn't bomb out before completion? > Do you have the raw results, IE including all the Passed: tests so I > can diff. > > PS: Despite repeated efforts I have been unable to get a Zero build on > x86 to run through JTReg (ie even to complete). Could some kind person > please do this, so that I can use it as a 'golden' reference of what > we should be passing on ARM. > Wouldn't Zero on ARM be a better initial reference? I can't do x86 but could set an x86_64 run going tonight if that would be of any help. > Regards, > Ed. > -- 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 mark at klomp.org Wed Aug 26 12:09:48 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 26 Aug 2009 21:09:48 +0200 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <17c6771e0908261157r4140c7d7wc2e60f565ca032a8@mail.gmail.com> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> <4A93E752.1040106@redhat.com> <1251208463.31892.23.camel@springer.wildebeest.org> <17c6771e0908250710h37293db0qb2e8f8ce23f40293@mail.gmail.com> <17c6771e0908261157r4140c7d7wc2e60f565ca032a8@mail.gmail.com> Message-ID: <1251313788.25222.8.camel@springer.wildebeest.org> On Wed, 2009-08-26 at 19:57 +0100, Andrew John Hughes wrote: > 2009/8/25 Andrew John Hughes : > > 2009/8/25 Mark Wielaard : > >> On Tue, 2009-08-25 at 09:29 -0400, Lillian Angel wrote: > >>> Andrew John Hughes wrote: > >>> > This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before > >>> > starting an OpenJDK build. If JAVA_HOME is set, an OpenJDK build will > >>> > fail. > >>> > > >>> > Ok to commit? > >>> > > >>> > ChangeLog: > >>> > > >>> > 2009-08-25 Andrew John Hughes > >>> > > >>> > * Makefile.am: > >>> > Unset JAVA_HOME and JDK_HOME before building. > >>> > >>> I am not thrilled with the idea of unsetting env vars on a system. I > >>> think maybe it would be better for configure to fail and give an error > >>> message if either of these are set. > >> > >> Why does the build fail if any of these are set in the first place? > > > > Because Sun designed it to do so. Clearly you don't have JAVA_HOME set > > by default on your system (some distros do this) or you would have had > > the fun of the OpenJDK build failing. > > See: http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#linux > > > >> I agree that in general it is better to have configure figure out > >> settings. That is really what it is for. > >> > >> The GNU Make manual actually warns not to rely on environment variables: > >> > >> It is not wise for makefiles to depend for their functioning on > >> environment variables set up outside their control, since this > >> would cause different users to get different results from the > >> same makefile. This is against the whole purpose of most > >> makefiles. > >> http://www.gnu.org/software/automake/manual/make/Environment.html > >> > > Unfortunately, that is how the entire OpenJDK build works. We already > > set 30-40 variables in Makefile.am. > > > So can I push this or not? FWIW, IcedTea7 already has this change and > I've not experienced any problems or loss of JAVAC settings with it > applied. I might think it is ugly, but it does seem harmless, so if it helps then please do. But it would be good to know what exactly uses JAVA_HOME during the build if it is set. Cheers, Mark From dbhole at icedtea.classpath.org Wed Aug 26 12:02:46 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Wed, 26 Aug 2009 19:02:46 +0000 Subject: /hg/icedtea6: - Support for Chromium and Firefox 3.6 A1 Message-ID: changeset 8353f4e67ec1 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8353f4e67ec1 author: Deepak Bhole date: Wed Aug 26 15:06:47 2009 -0400 - Support for Chromium and Firefox 3.6 A1 - Added object construction support - Port over cookie/cert cn mismatch/etc. fixes from current plugin diffstat: 18 files changed, 869 insertions(+), 385 deletions(-) ChangeLog | 81 +++ plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 54 +- plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 9 plugin/icedteanp/IcedTeaNPPlugin.cc | 269 +++++++--- plugin/icedteanp/IcedTeaNPPlugin.h | 11 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 250 ++++----- plugin/icedteanp/IcedTeaPluginRequestProcessor.h | 23 plugin/icedteanp/IcedTeaPluginUtils.cc | 28 - plugin/icedteanp/IcedTeaPluginUtils.h | 8 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 53 + plugin/icedteanp/IcedTeaScriptablePluginObject.h | 5 plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java | 134 ++++ plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 108 +++- plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 3 plugin/icedteanp/java/sun/applet/PluginCookieInfoRequest.java | 53 - plugin/icedteanp/java/sun/applet/PluginCookieManager.java | 88 +++ plugin/icedteanp/java/sun/applet/PluginCookieStore.java | 73 -- plugin/icedteanp/java/sun/applet/PluginMain.java | 4 diffs (truncated from 2067 to 500 lines): diff -r f1cd6ab69a53 -r 8353f4e67ec1 ChangeLog --- a/ChangeLog Wed Aug 26 01:14:21 2009 -0400 +++ b/ChangeLog Wed Aug 26 15:06:47 2009 -0400 @@ -1,3 +1,84 @@ 2009-08-26 Deepak Bhole + + * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc + (createJavaObjectFromVariant): Add conditional compilation blocks to + handle new API along with old. Call renamed newObjectWithConstructor + function. + (newObject): New function. Creates an object based on the most optimum + cost with arbitrary arguments. + (newObjectWithConstructor): Renamed from newObject(). Also, take source as + an argument to provide to Java. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Change as per above .cc + file changes. + * plugin/icedteanp/IcedTeaNPPlugin.cc: Include XPCOM specific headers only + if xulrunner version is < 1.9.2. Instantiate internal Mozilla objects only + if xulrunner < 1.9.2. + (GCJ_New): Correctly account for documentbase length when allocating tag + memory to prevent corruption. + (GCJ_Destroy): Remove old instance mappings when destroyed. + (GCJ_GetJavaClass): Remove unused method. + (get_cookie_info): Change object signature to include length result. Based + on xulrunner version, either use internal Mozilla API for fetching cookie + info, or use NPN_GetValueForURL. + (plugin_get_documentbase): Define for when xulrunner is >= 1.9.2. + (consume_message): Deal with single proxy URL rather than components. + Update to handle when xulrunner is >= 1.9.2 + (get_proxy_info): Change signature to deal with single url rather than + components. Use NPN_GetValueForURL if xulrunner is >= 1.9.2. + (NP_Initialize): Add pointers for getvalueforurl and setvalueforurl in the + NPPluginFuncs table. Also, handle case for when browser provides the + plugin .so name as the link location rather than target location. + * plugin/icedteanp/IcedTeaNPPlugin.h: Include XPCOM specific headers only + if xulrunner version is < 1.9.2. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (eval): Use the new NPN_PluginThreadAsynCcall function to dispatch events + to main thread asynchronously. + (call): Same. + (setMember): Same. + (getMember): Same. + (storeVariantInJava): Handle changed API when xulrunner >= 1.9.2 + (_setMember): Account for changes in the way that the callerpacks + arguments. + (_getMember): Same. + (_call): Same. + (_eval): Same. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.h: Include Mozilla + specific headers only if xulrunner is < 1.9.2. Remove old ThreadData + struct and add new AyncCallThreadData struct that contains results and + arguments. + * plugin/icedteanp/IcedTeaPluginUtils.cc + (getSourceFromInstance): Provide null source location due to lack of a + secure way to get documentbase. + (printNPVariant): Account for change API in xulrunner 1.9.2. + (NPVariantToString): Same. + * plugin/icedteanp/IcedTeaPluginUtils.h: Include Mozilla specific headers + only if xulrunner is < 1.9.2. + * plugin/icedteanp/IcedTeaScriptablePluginObject.cc + (invoke): Pass exception over to JS engine. + (construct): Implement object construction. + * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Include Mozilla + specific headers only if xulrunner is < 1.9.2. + * plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java + (getMatchingConstructor): New method, returns a matching constructor based + on arguments. + (getMatchingConstructors): New helper method for getMatchingConstructor. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java + (handleMessage): Handle new type of call, "NewObjectWithConstructor". + (checkPermission): Disable checks for the time being, as NPRuntime does + not allow cross-site calling anyway. + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (setStatus): Remove newlines from status messages. + * plugin/icedteanp/sun/applet/PluginCookieInfoRequest.java + (parseReturn): Store cookie info as a string rather than a list of + HttpCookie objects. + (getObject): Return the new cookie string. + * plugin/icedteanp/sun/applet/PluginCookieManager.java: New file, extends + CookieManager as is set as the default cookie manager for the plugin. + * plugin/icedteanp/sun/applet/PluginCookieStore.java : Deleted. New design + uses a custom cookiemanager rather than just a custom store. + * plugin/icedteanp/sun/applet/PluginMain.java + (init): Wire in the new cookie manager. + 2009-08-26 Deepak Bhole * plugin/icedtea/sun/applet/PluginAppletViewer.java diff -r f1cd6ab69a53 -r 8353f4e67ec1 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Aug 26 01:14:21 2009 -0400 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Wed Aug 26 15:06:47 2009 -0400 @@ -122,7 +122,6 @@ JavaRequestProcessor::newMessageOnBus(co { result_ready = true; // nothing else to do } else if ((message_parts->at(4) == "CallMethod") || - (message_parts->at(4) == "CallStaticMethod")) { @@ -656,8 +655,11 @@ JavaRequestProcessor::createJavaObjectFr else if (NPVARIANT_IS_STRING(variant)) { className = "java.lang.String"; - +#if MOZILLA_VERSION_COLLAPSED < 1090200 stringArg += NPVARIANT_TO_STRING(variant).utf8characters; +#else + stringArg += NPVARIANT_TO_STRING(variant).UTF8Characters; +#endif } else { alreadyCreated = true; } @@ -703,7 +705,7 @@ JavaRequestProcessor::createJavaObjectFr std::string arg = std::string(); arg.append(*(java_result->return_string)); args.push_back(arg); - java_result = java_request.newObject("[System]", jsObjectClassID, jsObjectConstructorID, args); + java_result = java_request.newObjectWithConstructor("[System]", jsObjectClassID, jsObjectConstructorID, args); if (java_result->error_occurred) { printf("Unable to create requested object\n"); @@ -808,7 +810,46 @@ JavaRequestProcessor::getObjectClass(std } JavaResultData* -JavaRequestProcessor::newObject(std::string source, std::string objectID, +JavaRequestProcessor::newObject(std::string source, std::string classID, + const NPVariant* args, int argCount) +{ + JavaRequestProcessor* java_request; + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, source, &message); + message += " NewObject "; + message += classID; + message += " "; + + // First, we need to load the arguments into the java-side table + for (int i=0; i < argCount; i++) { + int objectID = createJavaObjectFromVariant(args[i]); + if (objectID == 0) + { + result->error_occurred = true; + result->error_msg->append("Unable to create arguments"); + return result; + } + + char* id = (char*) malloc(sizeof(char)*32); + sprintf(id, "%d", objectID); + message += id; + message += " "; + free(id); + } + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + return result; +} + +JavaResultData* +JavaRequestProcessor::newObjectWithConstructor(std::string source, std::string classID, std::string methodID, std::vector args) { @@ -819,8 +860,8 @@ JavaRequestProcessor::newObject(std::str this->reference = IcedTeaPluginUtilities::getReference(); IcedTeaPluginUtilities::constructMessagePrefix(0, reference, source, &message); - message += " NewObject "; - message += objectID; + message += " NewObjectWithConstructor "; + message += classID; message += " "; message += methodID; message += " "; @@ -980,3 +1021,4 @@ JavaRequestProcessor::getAppletObjectIns return result; } + diff -r f1cd6ab69a53 -r 8353f4e67ec1 plugin/icedteanp/IcedTeaJavaRequestProcessor.h --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.h Wed Aug 26 01:14:21 2009 -0400 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.h Wed Aug 26 15:06:47 2009 -0400 @@ -171,9 +171,14 @@ class JavaRequestProcessor : BusSubscrib /* Returns the class of the given object */ JavaResultData* getObjectClass(std::string objectID); - /* Creates a new object */ + /* Creates a new object with choosable constructor */ JavaResultData* newObject(std::string source, - std::string objectID, std::string methodID, + std::string classID, + const NPVariant* args, int numArgs); + + /* Creates a new object when constructor is undetermined */ + JavaResultData* newObjectWithConstructor(std::string source, std::string classID, + std::string methodID, std::vector args); /* Returns the class ID */ diff -r f1cd6ab69a53 -r 8353f4e67ec1 plugin/icedteanp/IcedTeaNPPlugin.cc --- a/plugin/icedteanp/IcedTeaNPPlugin.cc Wed Aug 26 01:14:21 2009 -0400 +++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Wed Aug 26 15:06:47 2009 -0400 @@ -47,12 +47,15 @@ exception statement from your version. * #include #include +#if MOZILLA_VERSION_COLLAPSED < 1090200 // Documentbase retrieval includes. #include #include #include +#endif // API's into Mozilla +#if MOZILLA_VERSION_COLLAPSED < 1090200 #include #include #include @@ -66,9 +69,10 @@ exception statement from your version. * #include #include #include +#endif // Liveconnect extension - #include "IcedTeaScriptablePluginObject.h" +#include "IcedTeaScriptablePluginObject.h" #include "IcedTeaNPPlugin.h" // Error reporting macros. @@ -132,8 +136,10 @@ exception statement from your version. * #define FAILURE_MESSAGE "gcjwebplugin error: Failed to run %s." \ " For more detail rerun \"firefox -g\" in a terminal window." +#if MOZILLA_VERSION_COLLAPSED < 1090200 // Documentbase retrieval required definition. static NS_DEFINE_IID (kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID); +#endif // Data directory for plugin. static gchar* data_directory = NULL; @@ -180,14 +186,14 @@ PluginRequestProcessor* plugin_req_proc; // Sends messages to Java over the bus JavaMessageSender* java_req_proc; -GQuark ITNP_PLUGIN_ERROR = g_quark_from_string("IcedTeaNPPlugin"); - +#if MOZILLA_VERSION_COLLAPSED < 1090200 // Documentbase retrieval type-punning union. typedef union { void** void_field; nsIPluginTagInfo2** info_field; } info_union; +#endif // Static instance helper functions. // Have the browser allocate a new GCJPluginData structure. @@ -211,8 +217,8 @@ static void plugin_stop_appletviewer (); // Uninitialize GCJPluginData structure static void plugin_data_destroy (NPP instance); -NS_IMETHODIMP get_cookie_info(const char* siteAddr, char** cookieString); -void get_proxy_info(const char* siteAddr, char** proxy_scheme, char** proxy_host, char** proxy_port, GError *error); +NPError get_cookie_info(const char* siteAddr, char** cookieString, uint32_t* len); +NPError get_proxy_info(const char* siteAddr, char** proxy, uint32_t* len); void decode_url(const gchar* url, gchar** decoded_url); void consume_message(gchar* message); void start_jvm_if_needed(); @@ -336,7 +342,7 @@ GCJ_New (NPMIMEType pluginType, NPP inst // Send applet tag message to appletviewer. applet_tag = plugin_create_applet_tag (argc, argn, argv); - tag_message = (gchar*) malloc(strlen(applet_tag)*sizeof(gchar) + 1024); + tag_message = (gchar*) malloc(strlen(applet_tag)*sizeof(gchar) + strlen(documentbase)*sizeof(gchar) + 32); g_sprintf(tag_message, "instance %d tag %s %s", instance_counter, documentbase, applet_tag); //plugin_send_message_to_appletviewer (data, data->instance_string); @@ -636,6 +642,11 @@ GCJ_Destroy (NPP instance, NPSavedData** plugin_data_destroy (instance); } + int id = get_id_from_instance(instance); + + g_hash_table_remove(instance_to_id_map, instance); + g_hash_table_remove(id_to_instance_map, GINT_TO_POINTER(id)); + PLUGIN_DEBUG_0ARG ("GCJ_Destroy return\n"); return NPERR_NO_ERROR; @@ -844,31 +855,22 @@ GCJ_URLNotify (NPP instance, const char* PLUGIN_DEBUG_0ARG ("GCJ_URLNotify return\n"); } -jref -GCJ_GetJavaClass (void) -{ - PLUGIN_DEBUG_0ARG ("GCJ_GetJavaClass\n"); - - PLUGIN_DEBUG_0ARG ("GCJ_GetJavaClass return\n"); - - return 0; -} - -NS_IMETHODIMP -get_cookie_info(const char* siteAddr, char** cookieString) -{ +NPError +get_cookie_info(const char* siteAddr, char** cookieString, uint32_t* len) +{ +#if MOZILLA_VERSION_COLLAPSED < 1090200 nsresult rv; nsCOMPtr sec_man = do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); if (!sec_man) { - return NS_ERROR_FAILURE; + return NPERR_GENERIC_ERROR; } nsCOMPtr io_svc = do_GetService("@mozilla.org/network/io-service;1", &rv); if (NS_FAILED(rv) || !io_svc) { - return NS_ERROR_FAILURE; + return NPERR_GENERIC_ERROR; } nsCOMPtr uri; @@ -877,18 +879,44 @@ get_cookie_info(const char* siteAddr, ch nsCOMPtr cookie_svc = do_GetService("@mozilla.org/cookieService;1", &rv); if (NS_FAILED(rv) || !cookie_svc) { - return NS_ERROR_FAILURE; + return NPERR_GENERIC_ERROR; } rv = cookie_svc->GetCookieString(uri, NULL, cookieString); if (NS_FAILED(rv) || !*cookieString) { - return NS_ERROR_FAILURE; + return NPERR_GENERIC_ERROR; } - return NS_OK; -} - +#else + + // getvalueforurl needs an NPP instance. Quite frankly, there is no easy way + // to know which instance needs the information, as applets on Java side can + // be multi-threaded and the thread making a proxy.cookie request cannot be + // easily tracked. + + // Fortunately, XULRunner does not care about the instance as long as it is + // valid. So we just pick the first valid one and use it. Proxy/Cookie + // information is not instance specific anyway, it is URL specific. + + if (browser_functions.getvalueforurl) + { + GHashTableIter iter; + gpointer id, instance; + + g_hash_table_iter_init (&iter, instance_to_id_map); + g_hash_table_iter_next (&iter, &instance, &id); + + return browser_functions.getvalueforurl((NPP) instance, NPNURLVCookie, siteAddr, cookieString, len); + } else + { + return NPERR_GENERIC_ERROR; + } + +#endif + + return NPERR_NO_ERROR; +} // HELPER FUNCTIONS @@ -906,6 +934,8 @@ plugin_data_new (GCJPluginData** data) PLUGIN_DEBUG_0ARG ("plugin_data_new return\n"); } + + // Documentbase retrieval. This function gets the current document's // documentbase. This function relies on browser-private data so it @@ -913,6 +943,7 @@ plugin_data_new (GCJPluginData** data) // browser. We could not find a way to retrieve the documentbase // using the original Netscape plugin API so we use the XPCOM API // instead. +#if MOZILLA_VERSION_COLLAPSED < 1090200 static gchar* plugin_get_documentbase (NPP instance) { @@ -970,8 +1001,56 @@ plugin_get_documentbase (NPP instance) cleanup_done: PLUGIN_DEBUG_0ARG ("plugin_get_documentbase return\n"); + PLUGIN_DEBUG_1ARG("plugin_get_documentbase returning: %s\n", documentbase_copy); return documentbase_copy; } +#else +static gchar* +plugin_get_documentbase (NPP instance) +{ + PLUGIN_DEBUG_0ARG ("plugin_get_documentbase\n"); + + char const* documentbase = NULL; + gchar* documentbase_copy = NULL; + + // FIXME: This method is not ideal, but there are no known NPAPI call + // for this. See thread for more information: + // http://www.mail-archive.com/chromium-dev at googlegroups.com/msg04844.html + + // Additionally, since it is insecure, we cannot use it for making + // security decisions. + NPObject* window; + NPString script = NPString(); + std::string script_str = std::string(); + NPVariant* location = new NPVariant(); + std::string location_str = std::string(); + + browser_functions.getvalue(instance, NPNVWindowNPObject, &window); + script_str += "window.location.href"; + script.UTF8Characters = script_str.c_str(); + script.UTF8Length = script_str.size(); + browser_functions.evaluate(instance, window, &script, location); + + // Strip everything after the last "/" + gchar** parts = g_strsplit (NPVARIANT_TO_STRING(*location).UTF8Characters, "/", -1); + guint parts_sz = g_strv_length (parts); + + for (int i=0; i < parts_sz - 1; i++) + { + location_str += parts[i]; + location_str += "/"; + } + + documentbase_copy = g_strdup (location_str.c_str()); + + // Release references. + cleanup_done: + PLUGIN_DEBUG_0ARG ("plugin_get_documentbase return\n"); + PLUGIN_DEBUG_1ARG("plugin_get_documentbase returning: %s\n", documentbase_copy); + + return documentbase_copy; +} +#endif // This function displays an error message if the appletviewer has not // been installed correctly. @@ -1135,21 +1214,22 @@ void consume_message(gchar* message) { gchar** parts = g_strsplit (message, " ", 3); if (g_str_has_prefix(parts[1], "PluginProxyInfo")) { - gchar* proxy_scheme = (gchar*) malloc(sizeof(gchar)*32); - gchar* proxy_host = (gchar*) malloc(sizeof(gchar)*64); - gchar* proxy_port = (gchar*) malloc(sizeof(gchar)*8); - - GError *error = g_error_new(ITNP_PLUGIN_ERROR, 0, ""); + gchar* proxy; + uint32_t len; gchar* decoded_url = (gchar*) malloc(strlen(parts[2])*sizeof(gchar) + sizeof(gchar)); decode_url(parts[2], &decoded_url); - get_proxy_info(decoded_url, &proxy_scheme, &proxy_host, &proxy_port, error); gchar* proxy_info; + +#if MOZILLA_VERSION_COLLAPSED < 1090200 + proxy = (char*) malloc(sizeof(char)*2048); +#endif + proxy_info = g_strconcat ("plugin PluginProxyInfo ", NULL); - if (error->code == 0) + if (get_proxy_info(decoded_url, &proxy, &len) == NPERR_NO_ERROR) { - proxy_info = g_strconcat (proxy_info, proxy_scheme, " ", proxy_host, " ", proxy_port, NULL); + proxy_info = g_strconcat (proxy_info, proxy, NULL); } PLUGIN_DEBUG_1ARG("Proxy info: %s\n", proxy_info); @@ -1159,22 +1239,21 @@ void consume_message(gchar* message) { decoded_url = NULL; g_free(proxy_info); proxy_info = NULL; - g_free(proxy_scheme); - proxy_scheme = NULL; - g_free(proxy_host); - proxy_host = NULL; - g_free(proxy_port); - proxy_port = NULL; + From ed at camswl.com Wed Aug 26 13:41:36 2009 From: ed at camswl.com (Edward Nevill) Date: Wed, 26 Aug 2009 21:41:36 +0100 Subject: JTreg results for ARM In-Reply-To: <17c6771e0908261202g6c46849bse1aa148e322aaea8@mail.gmail.com> References: <200908262049.n7QKndXX009606@parsley.camswl.com> <17c6771e0908261202g6c46849bse1aa148e322aaea8@mail.gmail.com> Message-ID: <1251319296.24577.3.camel@mint.camswl.com> On Wed, 2009-08-26 at 20:02 +0100, Andrew John Hughes wrote: > 2009/8/26 Edward Nevill : > > > Wouldn't Zero on ARM be a better initial reference? > > I can't do x86 but could set an x86_64 run going tonight if that would > be of any help. > > > Regards, > > Ed. > > > Yes, both would be good references. Could you do the x86_64 run, no hurry, I am out of the office until Tues. If you could keep the raw results, ie including the tests that passed, so I can diff the results and ensure I am running the same set of tests. Thx, Ed. From gnu_andrew at member.fsf.org Wed Aug 26 14:00:59 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 26 Aug 2009 22:00:59 +0100 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <1251313788.25222.8.camel@springer.wildebeest.org> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> <4A93E752.1040106@redhat.com> <1251208463.31892.23.camel@springer.wildebeest.org> <17c6771e0908250710h37293db0qb2e8f8ce23f40293@mail.gmail.com> <17c6771e0908261157r4140c7d7wc2e60f565ca032a8@mail.gmail.com> <1251313788.25222.8.camel@springer.wildebeest.org> Message-ID: <17c6771e0908261400o533a6c53l8db0384841bf1de7@mail.gmail.com> 2009/8/26 Mark Wielaard : > On Wed, 2009-08-26 at 19:57 +0100, Andrew John Hughes wrote: >> 2009/8/25 Andrew John Hughes : >> > 2009/8/25 Mark Wielaard : >> >> On Tue, 2009-08-25 at 09:29 -0400, Lillian Angel wrote: >> >>> Andrew John Hughes wrote: >> >>> > This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before >> >>> > starting an OpenJDK build. ?If JAVA_HOME is set, an OpenJDK build will >> >>> > fail. >> >>> > >> >>> > Ok to commit? >> >>> > >> >>> > ChangeLog: >> >>> > >> >>> > 2009-08-25 ?Andrew John Hughes ? >> >>> > >> >>> > ? ? ? ? * Makefile.am: >> >>> > ? ? ? ? Unset JAVA_HOME and JDK_HOME before building. >> >>> >> >>> I am not thrilled with the idea of unsetting env vars on a system. I >> >>> think maybe it would be better for configure to fail and give an error >> >>> message if either of these are set. >> >> >> >> Why does the build fail if any of these are set in the first place? >> > >> > Because Sun designed it to do so. Clearly you don't have JAVA_HOME set >> > by default on your system (some distros do this) or you would have had >> > the fun of the OpenJDK build failing. >> > See: http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#linux >> > >> >> I agree that in general it is better to have configure figure out >> >> settings. That is really what it is for. >> >> >> >> The GNU Make manual actually warns not to rely on environment variables: >> >> >> >> ? ? ? ?It is not wise for makefiles to depend for their functioning on >> >> ? ? ? ?environment variables set up outside their control, since this >> >> ? ? ? ?would cause different users to get different results from the >> >> ? ? ? ?same makefile. This is against the whole purpose of most >> >> ? ? ? ?makefiles. >> >> ? ? ? ?http://www.gnu.org/software/automake/manual/make/Environment.html >> >> >> > Unfortunately, that is how the entire OpenJDK build works. ?We already >> > set 30-40 variables in Makefile.am. >> > >> So can I push this or not? ?FWIW, IcedTea7 already has this change and >> I've not experienced any problems or loss of JAVAC settings with it >> applied. > > I might think it is ugly, but it does seem harmless, so if it helps then > please do. But it would be good to know what exactly uses JAVA_HOME > during the build if it is set. > > Cheers, > > Mark > > The OpenJDK build crashes out straight away if JAVA_HOME is set. Grepping through the source code, it seems parts of the HotSpot build rely on it, including test_gamma which uses JAVA_HOME to find the location of its libraries. I'm guessing it will introduce the kind of issues we see with Ant in that another JDK (specified by JAVA_HOME) is being used during the build, and causes problems in some cases. I can remove the Makefile code that causes the build to stop and see what happens, but I'm guessing there will be corner cases we won't immediately spot. The HotSpot build seems to set JAVA_HOME itself so one would hope this always arrives the env setting, but there must be a reason Sun chose to blacklist this originally. JAVAC is another case by the way. I added a line to unset this, because if it is set the CORBA build tries to compile using it. As it is missing all the flags it needs to do so, it inevitably fails to build: # Invoking the Java compiler. In leaf makefiles, choose as follows: # -- Use JAVAC if you want to take full control of what options get # passed to javac. # -- Use JAVAC_CMD if you want to take the defaults given to you. I don't know if any other distros do so, but Gentoo sets JAVAC to just the path of the javac binary, which is not enough to build. -- 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 Wed Aug 26 14:12:39 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 26 Aug 2009 22:12:39 +0100 Subject: JTreg results for ARM In-Reply-To: <1251319296.24577.3.camel@mint.camswl.com> References: <200908262049.n7QKndXX009606@parsley.camswl.com> <17c6771e0908261202g6c46849bse1aa148e322aaea8@mail.gmail.com> <1251319296.24577.3.camel@mint.camswl.com> Message-ID: <17c6771e0908261412m5cc3282di8c314686fb9c27fb@mail.gmail.com> 2009/8/26 Edward Nevill : > On Wed, 2009-08-26 at 20:02 +0100, Andrew John Hughes wrote: >> 2009/8/26 Edward Nevill : >> > >> Wouldn't Zero on ARM be a better initial reference? >> >> I can't do x86 but could set an x86_64 run going tonight if that would >> be of any help. >> >> > Regards, >> > Ed. >> > >> > > Yes, both would be good references. Could you do the x86_64 run, no > hurry, I am out of the office until Tues. If you could keep the raw > results, ie including the tests that passed, so I can diff the results > and ensure I am running the same set of tests. > > Thx, > Ed. > > > Ok, in that case I'll set it going Friday so it has more time. From the vague memories I have of trying it on PPC, it takes a long time :) -- 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 Wed Aug 26 16:05:04 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 27 Aug 2009 00:05:04 +0100 Subject: [PATCH FOR REVIEW]: Unset JAVA_HOME and JDK_HOME prior to building OpenJDK In-Reply-To: <17c6771e0908261400o533a6c53l8db0384841bf1de7@mail.gmail.com> References: <17c6771e0908250504q5d6aa89bxaf46fa837d222444@mail.gmail.com> <4A93E752.1040106@redhat.com> <1251208463.31892.23.camel@springer.wildebeest.org> <17c6771e0908250710h37293db0qb2e8f8ce23f40293@mail.gmail.com> <17c6771e0908261157r4140c7d7wc2e60f565ca032a8@mail.gmail.com> <1251313788.25222.8.camel@springer.wildebeest.org> <17c6771e0908261400o533a6c53l8db0384841bf1de7@mail.gmail.com> Message-ID: <17c6771e0908261605p2d0cbfe1tc67dae25f245a76b@mail.gmail.com> 2009/8/26 Andrew John Hughes : > 2009/8/26 Mark Wielaard : >> On Wed, 2009-08-26 at 19:57 +0100, Andrew John Hughes wrote: >>> 2009/8/25 Andrew John Hughes : >>> > 2009/8/25 Mark Wielaard : >>> >> On Tue, 2009-08-25 at 09:29 -0400, Lillian Angel wrote: >>> >>> Andrew John Hughes wrote: >>> >>> > This simple patch for IcedTea6 unsets JAVA_HOME and JDK_HOME before >>> >>> > starting an OpenJDK build. ?If JAVA_HOME is set, an OpenJDK build will >>> >>> > fail. >>> >>> > >>> >>> > Ok to commit? >>> >>> > >>> >>> > ChangeLog: >>> >>> > >>> >>> > 2009-08-25 ?Andrew John Hughes ? >>> >>> > >>> >>> > ? ? ? ? * Makefile.am: >>> >>> > ? ? ? ? Unset JAVA_HOME and JDK_HOME before building. >>> >>> >>> >>> I am not thrilled with the idea of unsetting env vars on a system. I >>> >>> think maybe it would be better for configure to fail and give an error >>> >>> message if either of these are set. >>> >> >>> >> Why does the build fail if any of these are set in the first place? >>> > >>> > Because Sun designed it to do so. Clearly you don't have JAVA_HOME set >>> > by default on your system (some distros do this) or you would have had >>> > the fun of the OpenJDK build failing. >>> > See: http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#linux >>> > >>> >> I agree that in general it is better to have configure figure out >>> >> settings. That is really what it is for. >>> >> >>> >> The GNU Make manual actually warns not to rely on environment variables: >>> >> >>> >> ? ? ? ?It is not wise for makefiles to depend for their functioning on >>> >> ? ? ? ?environment variables set up outside their control, since this >>> >> ? ? ? ?would cause different users to get different results from the >>> >> ? ? ? ?same makefile. This is against the whole purpose of most >>> >> ? ? ? ?makefiles. >>> >> ? ? ? ?http://www.gnu.org/software/automake/manual/make/Environment.html >>> >> >>> > Unfortunately, that is how the entire OpenJDK build works. ?We already >>> > set 30-40 variables in Makefile.am. >>> > >>> So can I push this or not? ?FWIW, IcedTea7 already has this change and >>> I've not experienced any problems or loss of JAVAC settings with it >>> applied. >> >> I might think it is ugly, but it does seem harmless, so if it helps then >> please do. But it would be good to know what exactly uses JAVA_HOME >> during the build if it is set. >> >> Cheers, >> >> Mark >> >> > > The OpenJDK build crashes out straight away if JAVA_HOME is set. > Grepping through the source code, it seems parts of the HotSpot build > rely on it, including test_gamma which uses JAVA_HOME to find the > location of its libraries. ?I'm guessing it will introduce the kind of > issues we see with Ant in that another JDK (specified by JAVA_HOME) is > being used during the build, and causes problems in some cases. ?I can > remove the Makefile code that causes the build to stop and see what > happens, but I'm guessing there will be corner cases we won't > immediately spot. ?The HotSpot build seems to set JAVA_HOME itself so > one would hope this always arrives the env setting, but there must be > a reason Sun chose to blacklist this originally. > > JAVAC is another case by the way. ?I added a line to unset this, > because if it is set the CORBA build tries to compile using it. ?As it > is missing all the flags it needs to do so, it inevitably fails to > build: > > # Invoking the Java compiler. ? In leaf makefiles, choose as follows: > # ?-- Use JAVAC if you want to take full control of what options get > # ? ? passed to javac. > # ?-- Use JAVAC_CMD if you want to take the defaults given to you. > > I don't know if any other distros do so, but Gentoo sets JAVAC to just > the path of the javac binary, which is not enough to build. > -- > 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 > Here's the error: ERROR: Your JAVA_HOME environment variable is set. This will most likely cause the build to fail. Please unset it and start your build again. Exiting because of the above error(s). Just commenting 'JAVA_HOME=' out of my OpenJDK (upstream, not IcedTea) build script hits that in seconds. -- 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 Aug 26 16:18:35 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 26 Aug 2009 23:18:35 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED ------- Comment #15 from gnu_andrew at member.fsf.org 2009-08-26 23:18 ------- I've posted a revised version to the i18n lists: http://mail.openjdk.java.net/pipermail/i18n-dev/2009-August/000136.html which does the same, but looks in tz.properties for the fix, rather than using a value hardcoded into either the HotSpot (mjw's fix) or JDK (keith's fix) sources. This has the advantage that the value is easier to change and standard OpenJDK builds won't start trying to use whatever is in /usr/share/javazi. As that's the version being reviewed, I'd suggest we replace the one in IcedTea with this. As demonstrated in the mail, I've tested this both with and without said properties file using strace. I haven't been able to replicate the bug though (at least as given). I ran the testcase from http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 with -Djava.security.manager -Djava.security.debug=access,failure,debug and got an exception being thrown, but no recursion. access: access allowed (java.util.PropertyPermission java.home read) access: access allowed (java.io.FilePermission /usr/lib64/icedtea6/jre/lib/zi/ZoneInfoMappings read) access: access allowed (java.io.FilePermission /usr/lib64/icedtea6/jre/lib/zi/ZoneInfoMappings read) access: access allowed (java.io.FilePermission /usr/lib64/icedtea6/jre/lib/zi/ZoneInfoMappings read) access: access allowed (java.io.FilePermission /usr/lib64/icedtea6/jre/lib/zi/ZoneInfoMappings read) access: access allowed (java.io.FilePermission /usr/lib64/icedtea6/jre/lib/zi/ZoneInfoMappings read) Asia/Amman access: access allowed (java.util.PropertyPermission user.zoneinfo.dir read) access: access denied (java.io.FilePermission /usr/share/javazi/ZoneInfoMappings read) java.lang.Exception: Stack trace at java.lang.Thread.dumpStack(Thread.java:1223) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:332) at java.security.AccessController.checkPermission(AccessController.java:553) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.exists(File.java:748) at sun.util.calendar.ZoneInfoFile.readZoneInfoFile(ZoneInfoFile.java:1034) at sun.util.calendar.ZoneInfoFile.createZoneInfo(ZoneInfoFile.java:575) at sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:545) at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:600) at java.util.TimeZone.getTimeZone(TimeZone.java:486) at java.util.TimeZone.getTimeZone(TimeZone.java:482) at CalTest2.main(CalTest2.java:13) I have a feeling part of the failure may be because /usr/share/javazi doesn't exist, either here or on RHEL. Interestingly, I don't get any output with the new patch applied to OpenJDK7. -- 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 Aug 27 02:53:03 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 27 Aug 2009 09:53:03 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #16 from mark at klomp.org 2009-08-27 09:53 ------- (In reply to comment #15) > I've posted a revised version to the i18n lists: > > http://mail.openjdk.java.net/pipermail/i18n-dev/2009-August/000136.html > > which does the same, but looks in tz.properties for the fix, rather than using > a value hardcoded into either the HotSpot (mjw's fix) or JDK (keith's fix) > sources. This has the advantage that the value is easier to change and > standard OpenJDK builds won't start trying to use whatever is in > /usr/share/javazi. As that's the version being reviewed, I'd suggest we > replace the one in IcedTea with this. Yes, that is nicer. But lets take it one step at a time. Lets first make sure the current bug is fixed without needing any packaging changes. I agree it would be nice to have a better integrated fix. But imho that shouldn't make it necessary for a distro to replicate the whole zoneinfo as is done currently. Please open a new bug for this. > I haven't been able to replicate the bug though (at least as given). I ran the > testcase from http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 with > -Djava.security.manager -Djava.security.debug=access,failure,debug and got an > exception being thrown, but no recursion. Yeah, that is a way to trigger readZoneInfoFile() and show at least a direct call is sane now even with a security manager in place. The bug is specifically that there is recursion over the x509 certificate validity date being printed as trigger for the zoneinfo access in the AccessController. It would be good to actually have a way to replicate that 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. From bugzilla-daemon at icedtea.classpath.org Thu Aug 27 03:20:38 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 27 Aug 2009 10:20:38 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #17 from gnu_andrew at member.fsf.org 2009-08-27 10:20 ------- 'But imho that shouldn't make it necessary for a distro to replicate the whole zoneinfo as is done currently. Please open a new bug for this.' I don't get where you pick this suggestion up from. The new patch doesn't change anything about how it works now, other than that the /usr/share/tzdata setting is made by IcedTea placing a tz.properties in the build rather than hacking the source code. -- 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 Aug 27 03:55:55 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 27 Aug 2009 12:55:55 +0200 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack Message-ID: <4A96663B.1040109@ubuntu.com> This was reported as https://edge.launchpad.net/bugs/409736 Java is marked to have an executable stack[1]. This is potentially dangerous, and is simply an oversight from one of the compiled assembly files. Adding stack markings to the assembly solves the issue. sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java passes both stock and and with non-exec-stack. gcc -fstack-protector is the default on Ubuntu. I'd like to see this patch for the IcedTea 1.6 release as well. Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: p2.diff Type: text/x-diff Size: 1535 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090827/f82588b0/p2.diff From doko at ubuntu.com Thu Aug 27 03:59:28 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 27 Aug 2009 12:59:28 +0200 Subject: [patch] fix buffer overflow in debugger's socket handler Message-ID: <4A966710.4040307@ubuntu.com> Description: buffer not large enough for maximum size of debugger warning. (Largest error could be 73 bytes long: "handshake failed - received >Here's a poke < - excepted >JDWP-Handshake<") Ubuntu: https://launchpad.net/bugs/419018 Upstream: https://bugs.openjdk.java.net/show_bug.cgi?id=100103 This should go both to the IC6 trunk and the 1.6 branch. Matthias From doko at ubuntu.com Thu Aug 27 04:00:10 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 27 Aug 2009 13:00:10 +0200 Subject: [patch] fix buffer overflow in debugger's socket handler In-Reply-To: <4A966710.4040307@ubuntu.com> References: <4A966710.4040307@ubuntu.com> Message-ID: <4A96673A.90908@ubuntu.com> On 27.08.2009 12:59, Matthias Klose wrote: > Description: buffer not large enough for maximum size of debugger warning. > (Largest error could be 73 bytes long: "handshake failed - received >Here's > a poke < - excepted >JDWP-Handshake<") > Ubuntu: https://launchpad.net/bugs/419018 > Upstream: https://bugs.openjdk.java.net/show_bug.cgi?id=100103 > > This should go both to the IC6 trunk and the 1.6 branch. -------------- next part -------------- A non-text attachment was scrubbed... Name: p1.diff Type: text/x-diff Size: 1729 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090827/cd531534/p1.diff From gnu_andrew at member.fsf.org Thu Aug 27 04:04:07 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 27 Aug 2009 12:04:07 +0100 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <4A96663B.1040109@ubuntu.com> References: <4A96663B.1040109@ubuntu.com> Message-ID: <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> 2009/8/27 Matthias Klose : > This was reported as https://edge.launchpad.net/bugs/409736 > > Java is marked to have an executable stack[1]. This is potentially > dangerous, and is simply an oversight from one of the compiled assembly > files. Adding stack markings to the assembly solves the issue. > > sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java passes > both stock and and with non-exec-stack. > > gcc -fstack-protector is the default on Ubuntu. I'd like to see this patch > for the IcedTea 1.6 release as well. > > ?Matthias > I've heard about this issue before from Gentoo users and the fix, if it truly is this simple, would be good to have. Are you sending this patch upstream? It would be good to have some feedback from the HotSpot developers before we commit this for a release. Does this affect SPARC too? -- 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 mark at klomp.org Thu Aug 27 04:25:32 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 27 Aug 2009 13:25:32 +0200 Subject: icedtea push commit changeset messages Message-ID: <1251372332.3909.12.camel@springer.wildebeest.org> Hi Tim, I changed the icedtea hg push commit changeset messages so they clearly come from the icedtea user that does the pushing (and then the message has the actual author of each commit in the body). This helps showing who wrote the patch versus who applied the patch to a particular repo. But this causes all these messages to be held for moderation on distro-pkg-dev. Would it be possible to whitelist these messages? They will always come from @icedtea.classpath.org and will have a X-hg-notification: header. Thanks, Mark From gbenson at redhat.com Thu Aug 27 06:06:04 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 27 Aug 2009 14:06:04 +0100 Subject: icedtea push commit changeset messages In-Reply-To: <1251372332.3909.12.camel@springer.wildebeest.org> References: <1251372332.3909.12.camel@springer.wildebeest.org> Message-ID: <20090827130604.GC3580@redhat.com> Hi Mark, Can you not make them come from the email address of the committer? Everyone ought to be subscribed to distro-pkg-dev right? Cheers, Gary Mark Wielaard wrote: > Hi Tim, > > I changed the icedtea hg push commit changeset messages so they > clearly come from the icedtea user that does the pushing (and then > the message has the actual author of each commit in the body). This > helps showing who wrote the patch versus who applied the patch to a > particular repo. > > But this causes all these messages to be held for moderation on > distro-pkg-dev. Would it be possible to whitelist these messages? > They will always come from @icedtea.classpath.org and will > have a X-hg-notification: header. > > Thanks, > > Mark -- http://gbenson.net/ From mark at klomp.org Thu Aug 27 06:28:19 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 27 Aug 2009 15:28:19 +0200 Subject: icedtea push commit changeset messages In-Reply-To: <20090827130604.GC3580@redhat.com> References: <1251372332.3909.12.camel@springer.wildebeest.org> <20090827130604.GC3580@redhat.com> Message-ID: <1251379699.3909.32.camel@springer.wildebeest.org> Hi Gary, On Thu, 2009-08-27 at 14:06 +0100, Gary Benson wrote: > Can you not make them come from the email address of the committer? > Everyone ought to be subscribed to distro-pkg-dev right? It is the pusher of the changeset, not the committer. Almost always they are the same. But the change was done to show that doesn't have to be the case. You could push a commit authored by someone else for example to backport it to a release branch. And this also makes clear that you can push commits for people who don't have push rights (yet). But yes, everybody that pushes to the repo ought to be subscribed to the mailinglist indeed. But we don't know with which email address. If we could be certain of that address, then we could synthesize a server-side ~/.hgrc for them with that address. Then the emails would look like they come from that address instead. I rather have the push messages come from the actual hg server account though. Just to make sure they all go through. Making them look like they actually come from some other address might twart some smtp server that obey SPF records. Cheers, Mark From andrew at icedtea.classpath.org Thu Aug 27 03:51:42 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 27 Aug 2009 10:51:42 +0000 Subject: /hg/icedtea6: Unset JAVA_HOME and JDK_HOME to avoid build failures. Message-ID: changeset 9ef034b06fa2 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9ef034b06fa2 author: Andrew John Hughes date: Thu Aug 27 11:54:41 2009 +0100 Unset JAVA_HOME and JDK_HOME to avoid build failures. 2009-08-25 Andrew John Hughes * Makefile.am: Unset JAVA_HOME and JDK_HOME before building. diffstat: 2 files changed, 10 insertions(+) ChangeLog | 6 ++++++ Makefile.am | 4 ++++ diffs (41 lines): diff -r 8353f4e67ec1 -r 9ef034b06fa2 ChangeLog --- a/ChangeLog Wed Aug 26 15:06:47 2009 -0400 +++ b/ChangeLog Thu Aug 27 11:54:41 2009 +0100 @@ -1,3 +1,8 @@ 2009-08-26 Deepak Bhole + + * Makefile.am: + Unset JAVA_HOME and JDK_HOME before building. + 2009-08-26 Deepak Bhole * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc @@ -148,6 +153,7 @@ 2009-08-25 Deepak Bhole >>>>>> other 2009-08-21 Xerxes R??nby * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp diff -r 8353f4e67ec1 -r 9ef034b06fa2 Makefile.am --- a/Makefile.am Wed Aug 26 15:06:47 2009 -0400 +++ b/Makefile.am Thu Aug 27 11:54:41 2009 +0100 @@ -183,6 +183,8 @@ ICEDTEA_ENV = \ ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ JAVAC="" \ + JAVA_HOME="" \ + JDK_HOME="" \ RHINO_JAR="$(RHINO_JAR)" \ DISTRIBUTION_ID="$(DIST_ID)" @@ -264,6 +266,8 @@ ICEDTEA_ENV_ECJ = \ ALT_PARALLEL_COMPILE_JOBS="$(PARALLEL_JOBS)" \ HOTSPOT_BUILD_JOBS="$(PARALLEL_JOBS)" \ JAVAC="" \ + JAVA_HOME="" \ + JDK_HOME="" \ RHINO_JAR="$(RHINO_JAR)" \ JAR_KNOWS_ATFILE="$(JAR_KNOWS_ATFILE)" \ JAR_KNOWS_J_OPTIONS="$(JAR_KNOWS_J_OPTIONS)" \ From doko at ubuntu.com Thu Aug 27 08:40:56 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 27 Aug 2009 17:40:56 +0200 Subject: [patch] don't require the pulseaudio binary installed Message-ID: <4A96A908.5050303@ubuntu.com> As discussed on irc, we never use the pulseaudio binary during the build, a test run shows no regressions with the binary removed. Will merge to the 1.6 branch and 1.7. Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: pulse.diff Type: text/x-diff Size: 1352 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090827/a48c4466/pulse.diff From doko at icedtea.classpath.org Thu Aug 27 08:39:07 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Thu, 27 Aug 2009 15:39:07 +0000 Subject: /hg/icedtea6: 2009-08-27 Matthias Klose Message-ID: changeset 1aba471c0799 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1aba471c0799 author: doko at ubuntu.com date: Thu Aug 27 17:33:25 2009 +0200 2009-08-27 Matthias Klose * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. * INSTALL: Don't require the pulseaudio binary. diffstat: 4 files changed, 5 insertions(+), 15 deletions(-) ChangeLog | 5 +++++ INSTALL | 1 - acinclude.m4 | 9 --------- configure.ac | 5 ----- diffs (57 lines): diff -r 9ef034b06fa2 -r 1aba471c0799 ChangeLog --- a/ChangeLog Thu Aug 27 11:54:41 2009 +0100 +++ b/ChangeLog Thu Aug 27 17:33:25 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-25 Andrew John Hughes + + * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. + * INSTALL: Don't require the pulseaudio binary. + 2009-08-25 Andrew John Hughes * Makefile.am: diff -r 9ef034b06fa2 -r 1aba471c0799 INSTALL --- a/INSTALL Thu Aug 27 11:54:41 2009 +0100 +++ b/INSTALL Thu Aug 27 17:33:25 2009 +0200 @@ -33,7 +33,6 @@ rhino (can be disabled using --without-r For building the PulseAudio based mixer, you will need pulseaudio-libs-devel >= 0.9.11 -pulseaudio >= 0.9.11 For building VisualVM, you will need netbeans = 6.5 diff -r 9ef034b06fa2 -r 1aba471c0799 acinclude.m4 --- a/acinclude.m4 Thu Aug 27 11:54:41 2009 +0100 +++ b/acinclude.m4 Thu Aug 27 17:33:25 2009 +0200 @@ -642,15 +642,6 @@ AC_DEFUN([FIND_RHINO_JAR], AC_SUBST(RHINO_JAR) ]) -AC_DEFUN([FIND_PULSEAUDIO], -[ - AC_PATH_PROG(PULSEAUDIO_BIN, "pulseaudio") - if test -z "${PULSEAUDIO_BIN}"; then - AC_MSG_ERROR("pulseaudio was not found.") - fi - AC_SUBST(PULSEAUDIO_BIN) -]) - AC_DEFUN([ENABLE_OPTIMIZATIONS], [ AC_MSG_CHECKING(whether to disable optimizations) diff -r 9ef034b06fa2 -r 1aba471c0799 configure.ac --- a/configure.ac Thu Aug 27 11:54:41 2009 +0100 +++ b/configure.ac Thu Aug 27 17:33:25 2009 +0200 @@ -246,11 +246,6 @@ then FIND_NETBEANS fi -if test "x${enable_pulse_java}" = "xyes" -then - FIND_PULSEAUDIO -fi - dnl pkgconfig cannot be used to finid these headers and libraries. AC_CHECK_HEADERS([cups/cups.h cups/ppd.h],[] ,[AC_MSG_ERROR("CUPS headers were not found - From doko at icedtea.classpath.org Thu Aug 27 08:42:51 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Thu, 27 Aug 2009 15:42:51 +0000 Subject: /hg/release/icedtea6-1.6: 2009-08-27 Matthias Klose changeset ce4af55508b6 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=ce4af55508b6 author: doko at ubuntu.com date: Thu Aug 27 17:37:13 2009 +0200 2009-08-27 Matthias Klose * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. * INSTALL: Don't require the pulseaudio binary. diffstat: 4 files changed, 5 insertions(+), 15 deletions(-) ChangeLog | 5 +++++ INSTALL | 1 - acinclude.m4 | 9 --------- configure.ac | 5 ----- diffs (57 lines): diff -r b732a13ecc53 -r ce4af55508b6 ChangeLog --- a/ChangeLog Wed Aug 26 01:16:37 2009 -0400 +++ b/ChangeLog Thu Aug 27 17:37:13 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-26 Deepak Bhole + + * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. + * INSTALL: Don't require the pulseaudio binary. + 2009-08-26 Deepak Bhole * plugin/icedtea/sun/applet/PluginAppletViewer.java diff -r b732a13ecc53 -r ce4af55508b6 INSTALL --- a/INSTALL Wed Aug 26 01:16:37 2009 -0400 +++ b/INSTALL Thu Aug 27 17:37:13 2009 +0200 @@ -33,7 +33,6 @@ rhino (can be disabled using --without-r For building the PulseAudio based mixer, you will need pulseaudio-libs-devel >= 0.9.11 -pulseaudio >= 0.9.11 For building VisualVM, you will need netbeans = 6.5 diff -r b732a13ecc53 -r ce4af55508b6 acinclude.m4 --- a/acinclude.m4 Wed Aug 26 01:16:37 2009 -0400 +++ b/acinclude.m4 Thu Aug 27 17:37:13 2009 +0200 @@ -642,15 +642,6 @@ AC_DEFUN([FIND_RHINO_JAR], AC_SUBST(RHINO_JAR) ]) -AC_DEFUN([FIND_PULSEAUDIO], -[ - AC_PATH_PROG(PULSEAUDIO_BIN, "pulseaudio") - if test -z "${PULSEAUDIO_BIN}"; then - AC_MSG_ERROR("pulseaudio was not found.") - fi - AC_SUBST(PULSEAUDIO_BIN) -]) - AC_DEFUN([ENABLE_OPTIMIZATIONS], [ AC_MSG_CHECKING(whether to disable optimizations) diff -r b732a13ecc53 -r ce4af55508b6 configure.ac --- a/configure.ac Wed Aug 26 01:16:37 2009 -0400 +++ b/configure.ac Thu Aug 27 17:37:13 2009 +0200 @@ -246,11 +246,6 @@ then FIND_NETBEANS fi -if test "x${enable_pulse_java}" = "xyes" -then - FIND_PULSEAUDIO -fi - dnl pkgconfig cannot be used to finid these headers and libraries. AC_CHECK_HEADERS([cups/cups.h cups/ppd.h],[] ,[AC_MSG_ERROR("CUPS headers were not found - From doko at icedtea.classpath.org Thu Aug 27 08:46:02 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Thu, 27 Aug 2009 15:46:02 +0000 Subject: /hg/icedtea: 2009-08-27 Matthias Klose Message-ID: changeset d719734879cc in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=d719734879cc author: doko at ubuntu.com date: Thu Aug 27 17:40:22 2009 +0200 2009-08-27 Matthias Klose * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. * INSTALL: Don't require the pulseaudio binary. diffstat: 4 files changed, 5 insertions(+), 15 deletions(-) ChangeLog | 5 +++++ INSTALL | 1 - acinclude.m4 | 9 --------- configure.ac | 5 ----- diffs (57 lines): diff -r 26c1a149107b -r d719734879cc ChangeLog --- a/ChangeLog Tue Aug 25 01:27:11 2009 +0100 +++ b/ChangeLog Thu Aug 27 17:40:22 2009 +0200 @@ -1,3 +1,8 @@ 2009-08-24 Andrew John Hughes + + * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. + * INSTALL: Don't require the pulseaudio binary. + 2009-08-24 Andrew John Hughes * patches/icedtea-graphics.patch: diff -r 26c1a149107b -r d719734879cc INSTALL --- a/INSTALL Tue Aug 25 01:27:11 2009 +0100 +++ b/INSTALL Thu Aug 27 17:40:22 2009 +0200 @@ -33,7 +33,6 @@ rhino (can be disabled using --without-r For building the PulseAudio based mixer, you will need pulseaudio-libs-devel >= 0.9.11 -pulseaudio >= 0.9.11 For building VisualVM, you will need netbeans = 6.5 diff -r 26c1a149107b -r d719734879cc acinclude.m4 --- a/acinclude.m4 Tue Aug 25 01:27:11 2009 +0100 +++ b/acinclude.m4 Thu Aug 27 17:40:22 2009 +0200 @@ -650,15 +650,6 @@ AC_DEFUN([FIND_RHINO_JAR], AC_SUBST(RHINO_JAR) ]) -AC_DEFUN([FIND_PULSEAUDIO], -[ - AC_PATH_PROG(PULSEAUDIO_BIN, "pulseaudio") - if test -z "${PULSEAUDIO_BIN}"; then - AC_MSG_ERROR("pulseaudio was not found.") - fi - AC_SUBST(PULSEAUDIO_BIN) -]) - AC_DEFUN([DISABLE_OPTIMIZATIONS], [ AC_MSG_CHECKING([whether to disable optimizations and build with -O0 -g]) diff -r 26c1a149107b -r d719734879cc configure.ac --- a/configure.ac Tue Aug 25 01:27:11 2009 +0100 +++ b/configure.ac Thu Aug 27 17:40:22 2009 +0200 @@ -253,11 +253,6 @@ then FIND_NETBEANS fi -if test "x${enable_pulse_java}" = "xyes" -then - FIND_PULSEAUDIO -fi - if test "x${ENABLE_NIMBUS}" = "xyes" then if test "x${ENABLE_NIMBUS_GENERATION}" = "xyes" From doko at icedtea.classpath.org Thu Aug 27 08:49:10 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Thu, 27 Aug 2009 15:49:10 +0000 Subject: /hg/icedtea6: 2009-08-27 Kees Cook Message-ID: changeset 24f3605b8aa8 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=24f3605b8aa8 author: doko at ubuntu.com date: Thu Aug 27 17:43:31 2009 +0200 2009-08-27 Kees Cook * patches/openjdk/oj100103-debugger-socket-overflow.patch: New. Fix buffer overflow in debugger's socket handler. https://bugs.openjdk.java.net/show_bug.cgi?id=100103 diffstat: 3 files changed, 24 insertions(+) ChangeLog | 6 +++++ Makefile.am | 1 patches/openjdk/oj100103-debugger-socket-overflow.patch | 17 +++++++++++++++ diffs (45 lines): diff -r 1aba471c0799 -r 24f3605b8aa8 ChangeLog --- a/ChangeLog Thu Aug 27 17:33:25 2009 +0200 +++ b/ChangeLog Thu Aug 27 17:43:31 2009 +0200 @@ -1,3 +1,9 @@ 2009-08-27 Matthias Klose + + * patches/openjdk/oj100103-debugger-socket-overflow.patch: New. + Fix buffer overflow in debugger's socket handler. + https://bugs.openjdk.java.net/show_bug.cgi?id=100103 + 2009-08-27 Matthias Klose * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. diff -r 1aba471c0799 -r 24f3605b8aa8 Makefile.am --- a/Makefile.am Thu Aug 27 17:33:25 2009 +0200 +++ b/Makefile.am Thu Aug 27 17:43:31 2009 +0200 @@ -706,6 +706,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-disable-cc-incompatible-sanity-checks.patch \ patches/icedtea-explicit-target-arch.patch \ patches/openjdk/6648816.patch \ + patches/openjdk/oj100103-debugger-socket-overflow.patch \ $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp diff -r 1aba471c0799 -r 24f3605b8aa8 patches/openjdk/oj100103-debugger-socket-overflow.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/oj100103-debugger-socket-overflow.patch Thu Aug 27 17:43:31 2009 +0200 @@ -0,0 +1,17 @@ +Description: buffer not large enough for maximum size of debugger warning. + (Largest error could be 73 bytes long: "handshake failed - received >Here's + a poke < - excepted >JDWP-Handshake<") +Ubuntu: https://launchpad.net/bugs/419018 +Upstream: https://bugs.openjdk.java.net/show_bug.cgi?id=100103 + +--- openjdk/jdk/src/share/transport/socket/socketTransport.c~ 2009-08-25 21:19:38.000000000 -0700 ++++ openjdk/jdk/src/share/transport/socket/socketTransport.c 2009-08-25 21:19:55.000000000 -0700 +@@ -168,7 +168,7 @@ handshake(int fd, jlong timeout) { + } + for (i=0; i<(int)strlen(hello); i++) { + if (b[i] != hello[i]) { +- char msg[64]; ++ char msg[80]; + strcpy(msg, "handshake failed - received >"); + strncat(msg, b, strlen(hello)); + strcat(msg, "< - excepted >"); From doko at icedtea.classpath.org Thu Aug 27 08:51:03 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Thu, 27 Aug 2009 15:51:03 +0000 Subject: /hg/release/icedtea6-1.6: 2009-08-27 Kees Cook changeset 64057113c917 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=64057113c917 author: doko at ubuntu.com date: Thu Aug 27 17:43:31 2009 +0200 2009-08-27 Kees Cook * patches/openjdk/oj100103-debugger-socket-overflow.patch: New. Fix buffer overflow in debugger's socket handler. https://bugs.openjdk.java.net/show_bug.cgi?id=100103 diffstat: 3 files changed, 24 insertions(+) ChangeLog | 6 +++++ Makefile.am | 1 patches/openjdk/oj100103-debugger-socket-overflow.patch | 17 +++++++++++++++ diffs (45 lines): diff -r ce4af55508b6 -r 64057113c917 ChangeLog --- a/ChangeLog Thu Aug 27 17:37:13 2009 +0200 +++ b/ChangeLog Thu Aug 27 17:43:31 2009 +0200 @@ -1,3 +1,9 @@ 2009-08-27 Matthias Klose + + * patches/openjdk/oj100103-debugger-socket-overflow.patch: New. + Fix buffer overflow in debugger's socket handler. + https://bugs.openjdk.java.net/show_bug.cgi?id=100103 + 2009-08-27 Matthias Klose * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. diff -r ce4af55508b6 -r 64057113c917 Makefile.am --- a/Makefile.am Thu Aug 27 17:37:13 2009 +0200 +++ b/Makefile.am Thu Aug 27 17:43:31 2009 +0200 @@ -702,6 +702,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-disable-cc-incompatible-sanity-checks.patch \ patches/icedtea-explicit-target-arch.patch \ patches/openjdk/6648816.patch \ + patches/openjdk/oj100103-debugger-socket-overflow.patch \ $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp diff -r ce4af55508b6 -r 64057113c917 patches/openjdk/oj100103-debugger-socket-overflow.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/oj100103-debugger-socket-overflow.patch Thu Aug 27 17:43:31 2009 +0200 @@ -0,0 +1,17 @@ +Description: buffer not large enough for maximum size of debugger warning. + (Largest error could be 73 bytes long: "handshake failed - received >Here's + a poke < - excepted >JDWP-Handshake<") +Ubuntu: https://launchpad.net/bugs/419018 +Upstream: https://bugs.openjdk.java.net/show_bug.cgi?id=100103 + +--- openjdk/jdk/src/share/transport/socket/socketTransport.c~ 2009-08-25 21:19:38.000000000 -0700 ++++ openjdk/jdk/src/share/transport/socket/socketTransport.c 2009-08-25 21:19:55.000000000 -0700 +@@ -168,7 +168,7 @@ handshake(int fd, jlong timeout) { + } + for (i=0; i<(int)strlen(hello); i++) { + if (b[i] != hello[i]) { +- char msg[64]; ++ char msg[80]; + strcpy(msg, "handshake failed - received >"); + strncat(msg, b, strlen(hello)); + strcat(msg, "< - excepted >"); From doko at icedtea.classpath.org Thu Aug 27 08:54:09 2009 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Thu, 27 Aug 2009 15:54:09 +0000 Subject: /hg/icedtea6: 2009-08-27 Kees Cook Message-ID: changeset be41014d9d9b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=be41014d9d9b author: doko at ubuntu.com date: Thu Aug 27 17:48:27 2009 +0200 2009-08-27 Kees Cook * patches/hotspot/default/icedtea-gcc-stack-markings.patch: New. Adding stack markings to the x86 assembly for not using executable stack. diffstat: 3 files changed, 21 insertions(+) ChangeLog | 6 ++++++ Makefile.am | 1 + patches/hotspot/default/icedtea-gcc-stack-markings.patch | 14 ++++++++++++++ diffs (42 lines): diff -r 24f3605b8aa8 -r be41014d9d9b ChangeLog --- a/ChangeLog Thu Aug 27 17:43:31 2009 +0200 +++ b/ChangeLog Thu Aug 27 17:48:27 2009 +0200 @@ -1,3 +1,9 @@ 2009-08-27 Kees Cook + + * patches/hotspot/default/icedtea-gcc-stack-markings.patch: New. + Adding stack markings to the x86 assembly for not using executable + stack. + 2009-08-27 Kees Cook * patches/openjdk/oj100103-debugger-socket-overflow.patch: New. diff -r 24f3605b8aa8 -r be41014d9d9b Makefile.am --- a/Makefile.am Thu Aug 27 17:43:31 2009 +0200 +++ b/Makefile.am Thu Aug 27 17:48:27 2009 +0200 @@ -707,6 +707,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-explicit-target-arch.patch \ patches/openjdk/6648816.patch \ patches/openjdk/oj100103-debugger-socket-overflow.patch \ + patches/hotspot/$(HSBUILD)/icedtea-gcc-stack-markings.patch \ $(DISTRIBUTION_PATCHES) stamps/extract.stamp: stamps/download.stamp diff -r 24f3605b8aa8 -r be41014d9d9b patches/hotspot/default/icedtea-gcc-stack-markings.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-gcc-stack-markings.patch Thu Aug 27 17:48:27 2009 +0200 @@ -0,0 +1,14 @@ +--- openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s~ 2009-08-06 01:08:57.000000000 -0700 ++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s 2009-08-06 01:09:27.000000000 -0700 +@@ -650,3 +650,4 @@ _Atomic_cmpxchg_long: + popl %ebx + ret + ++.section .note.GNU-stack, "", @progbits +--- openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s~ 2009-08-06 01:08:57.000000000 -0700 ++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s 2009-08-06 01:09:27.000000000 -0700 +@@ -400,3 +400,4 @@ _Atomic_cmpxchg_long: + addq $4,%rdx + jg 4b + ret ++.section .note.GNU-stack, "", @progbits From gnu_andrew at member.fsf.org Thu Aug 27 09:00:54 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 27 Aug 2009 17:00:54 +0100 Subject: [patch] fix buffer overflow in debugger's socket handler In-Reply-To: <4A966710.4040307@ubuntu.com> References: <4A966710.4040307@ubuntu.com> Message-ID: <17c6771e0908270900q5e50cf02rf522c0c695241198@mail.gmail.com> 2009/8/27 Matthias Klose : > Description: buffer not large enough for maximum size of debugger warning. > ?(Largest error could be 73 bytes long: "handshake failed - received >Here's > ?a poke < - excepted >JDWP-Handshake<") > Ubuntu: https://launchpad.net/bugs/419018 > Upstream: https://bugs.openjdk.java.net/show_bug.cgi?id=100103 > > This should go both to the IC6 trunk and the 1.6 branch. > > ?Matthias > Patches should be approved before being committed to the release branch, and ideally for HEAD as well. I don't see any comments on this post, yet the patch was just pushed to both. -- 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 Tim.Bell at Sun.COM Thu Aug 27 09:06:15 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Thu, 27 Aug 2009 09:06:15 -0700 Subject: icedtea push commit changeset messages In-Reply-To: <1251372332.3909.12.camel@springer.wildebeest.org> References: <1251372332.3909.12.camel@springer.wildebeest.org> Message-ID: <4A96AEF7.7060709@sun.com> Hi Mark > I changed the icedtea hg push commit changeset messages so they clearly > come from the icedtea user that does the pushing (and then the message > has the actual author of each commit in the body). This helps showing > who wrote the patch versus who applied the patch to a particular repo. I noticed that. > But this causes all these messages to be held for moderation on > distro-pkg-dev. Would it be possible to whitelist these messages? They > will always come from @icedtea.classpath.org and will have a > X-hg-notification: header. The first messages from each user will be held for moderation and I will white list the sender as I approve it. After that, no problem. Tim From bugzilla-daemon at icedtea.classpath.org Thu Aug 27 09:33:52 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 27 Aug 2009 16:33:52 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 ------- Comment #13 from gnu_andrew at member.fsf.org 2009-08-27 16:33 ------- Just tried adding this on Gentoo and I'm getting: java.lang.RuntimeException: Could not parse key values at sun.security.pkcs11.P11Key$P11ECPublicKey.fetchValues(P11Key.java:1026) at sun.security.pkcs11.P11Key$P11ECPublicKey.getEncodedInternal(P11Key.java:1036) at sun.security.pkcs11.P11Key.getEncoded(P11Key.java:126) at sun.security.x509.CertificateX509Key.encode(CertificateX509Key.java:105) at sun.security.x509.X509CertInfo.emit(X509CertInfo.java:819) at sun.security.x509.X509CertInfo.encode(X509CertInfo.java:189) at sun.security.x509.X509CertImpl.sign(X509CertImpl.java:528) at sun.security.x509.X509CertImpl.sign(X509CertImpl.java:486) at sun.security.x509.CertAndKeyGen.getSelfCertificate(CertAndKeyGen.java:288) at sun.security.tools.KeyTool.doGenKeyPair(KeyTool.java:1223) at sun.security.tools.KeyTool.doCommands(KeyTool.java:827) at sun.security.tools.KeyTool.run(KeyTool.java:194) at sun.security.tools.KeyTool.main(KeyTool.java:188) Caused by: java.io.IOException: Point does not match field size at sun.security.ec.ECParameters.decodePoint(ECParameters.java:92) at sun.security.pkcs11.P11ECKeyFactory.decodePoint(P11ECKeyFactory.java:78) at sun.security.pkcs11.P11Key$P11ECPublicKey.fetchValues(P11Key.java:1023) ... 12 more This is with dev-libs/nss-3.12.3-r1 -- 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 Aug 27 09:36:50 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 27 Aug 2009 16:36:50 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 ------- Comment #14 from gnu_andrew at member.fsf.org 2009-08-27 16:36 ------- To replicate, you need an IcedTea6 build in ${java.home}. Then create ${java.home}/jre/lib/security/nss.cfg as follows: name = NSS nssLibraryDirectory = ${nsslibdir} nssDbMode = noDb attributes = compatibility where nsslibdir can be found by running pkg-config --variable=libdir nss You then link this in by adding the following line to ${java.home}/jre/lib/security/java.security: security.provider.9=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg Then run: ${java.home}/bin/keytool -v -genkeypair -keyalg EC -keysize 256 -keystore ectest.jks -storepass test12 -dname "CN=ECC Test" -- 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 Thu Aug 27 09:50:38 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 27 Aug 2009 17:50:38 +0100 Subject: [patch] fix buffer overflow in debugger's socket handler In-Reply-To: <20090827163635.GL10947@outflux.net> References: <4A966710.4040307@ubuntu.com> <17c6771e0908270900q5e50cf02rf522c0c695241198@mail.gmail.com> <20090827163635.GL10947@outflux.net> Message-ID: <17c6771e0908270950k329305epbee4404bd34974af@mail.gmail.com> 2009/8/27 Kees Cook : > Hi, > > On Thu, Aug 27, 2009 at 05:00:54PM +0100, Andrew John Hughes wrote: >> 2009/8/27 Matthias Klose : >> > Description: buffer not large enough for maximum size of debugger warning. >> > ?(Largest error could be 73 bytes long: "handshake failed - received >Here's >> > ?a poke < - excepted >JDWP-Handshake<") >> > Ubuntu: https://launchpad.net/bugs/419018 >> > Upstream: https://bugs.openjdk.java.net/show_bug.cgi?id=100103 >> > >> > This should go both to the IC6 trunk and the 1.6 branch. >> > >> > ?Matthias >> > >> >> Patches should be approved before being committed to the release >> branch, and ideally for HEAD as well. ?I don't see any comments on >> this post, yet the patch was just pushed to both. > > I haven't seen the commit, but it should also probably match the very > recent upstream commit, which is slightly different from my more minimal > approach: > > http://cr.openjdk.java.net/~alanb/6432567/webrev.00/jdk.patch > > -Kees > > -- > Kees Cook > Ubuntu Security Team > Except that's not an upstream commit, just a webrev: http://cr.openjdk.java.net/~alanb/6432567/webrev.00/ There is no upstream commit yet as far as I can see: http://hg.openjdk.java.net/jdk7/tl/jdk And the patch committed to IcedTea6 doesn't contain the test case. It shoudl also use the Sun bug ID (6432567) which is how it will be committed to tl. -- 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 Aug 27 10:01:06 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 27 Aug 2009 18:01:06 +0100 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <20090827162542.GJ10947@outflux.net> References: <4A96663B.1040109@ubuntu.com> <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> <20090827162542.GJ10947@outflux.net> Message-ID: <17c6771e0908271001i4e32911awf0f0b1e8c6eba726@mail.gmail.com> 2009/8/27 Kees Cook : > Hi Andrew, > > On Thu, Aug 27, 2009 at 12:04:07PM +0100, Andrew John Hughes wrote: >> 2009/8/27 Matthias Klose : >> > This was reported as https://edge.launchpad.net/bugs/409736 >> > >> > Java is marked to have an executable stack[1]. This is potentially >> > dangerous, and is simply an oversight from one of the compiled assembly >> > files. Adding stack markings to the assembly solves the issue. >> > >> > sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java passes >> > both stock and and with non-exec-stack. >> > >> > gcc -fstack-protector is the default on Ubuntu. I'd like to see this patch >> > for the IcedTea 1.6 release as well. >> > >> > ?Matthias >> > >> >> I've heard about this issue before from Gentoo users and the fix, if >> it truly is this simple, would be good to have. > > The question tends to be one of portability. ?In cases were non-gcc is > used, ifdef's need to be built around the flag line. ?I can provide some > examples, if needed. > I don't see an immediate problem, as they only affect x86/linux and x86_64/linux where the compiler is gcc. >> Are you sending this patch upstream? ?It would be good to have some >> feedback from the HotSpot developers before we commit this for a >> release. >> >> Does this affect SPARC too? > > I'm not familiar with SPARC hardware, but if it supports "execute" memory > protections, then it is a valuable change there too. ?It it doesn't, it > won't hurt anything, IIUC. > > -Kees > > -- > Kees Cook > Ubuntu Security Team > Do you have an SCA, either via Ubuntu or personally? A webrev needs to be prepared against one of the HotSpot forests and posted to hotspot-dev. If this is the compiler, hotspot-comp is appropriate and twisti can review it ;) -- 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 fweimer at bfk.de Thu Aug 27 10:14:00 2009 From: fweimer at bfk.de (Florian Weimer) Date: Thu, 27 Aug 2009 17:14:00 +0000 Subject: [patch] fix buffer overflow in debugger's socket handler In-Reply-To: <17c6771e0908270950k329305epbee4404bd34974af@mail.gmail.com> (Andrew John Hughes's message of "Thu\, 27 Aug 2009 17\:50\:38 +0100") References: <4A966710.4040307@ubuntu.com> <17c6771e0908270900q5e50cf02rf522c0c695241198@mail.gmail.com> <20090827163635.GL10947@outflux.net> <17c6771e0908270950k329305epbee4404bd34974af@mail.gmail.com> Message-ID: <82r5uxtc13.fsf@mid.bfk.de> * Andrew John Hughes: > Except that's not an upstream commit, just a webrev: > http://cr.openjdk.java.net/~alanb/6432567/webrev.00/ Where has the webrev been posted? It really should use snprintf(), and the for loop could probably be replaced with strncmp()... -- Florian Weimer BFK edv-consulting GmbH http://www.bfk.de/ Kriegsstra?e 100 tel: +49-721-96201-1 D-76133 Karlsruhe fax: +49-721-96201-99 From dbhole at icedtea.classpath.org Thu Aug 27 10:12:20 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 27 Aug 2009 17:12:20 +0000 Subject: /hg/icedtea6: - Fix static instantiation support for xulrunner >... Message-ID: changeset c2ab93e26ed7 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c2ab93e26ed7 author: Deepak Bhole date: Thu Aug 27 13:16:24 2009 -0400 - Fix static instantiation support for xulrunner >= 1.9.2 - Remove JS <-> Class source match check, as NPAPI does not allow cross-site calls anyway ChangeLog: * plugin/icedteanp/IcedTeaNPPlugin.cc (GCJ_New): Use arg count to determine whether or not a send an applet tag to Java side. Set a new is_applet_instance variable in GCJPluginData. (get_scriptable_object): Use the new is_applet_instance variable in instance->pdata to determine what kind of object to return. * plugin/icedteanp/IcedTeaNPPlugin.h: Add a new is_applet_instance bool to GCJPluginData, which determines whether it is an applet instance or a dummy one. * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java (checkPermission): Disable js src == class src check, as NPAPI does not allow cross site scripting. diffstat: 4 files changed, 35 insertions(+), 39 deletions(-) ChangeLog | 14 ++++ plugin/icedteanp/IcedTeaNPPlugin.cc | 31 +++++----- plugin/icedteanp/IcedTeaNPPlugin.h | 2 plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 27 -------- diffs (146 lines): diff -r be41014d9d9b -r c2ab93e26ed7 ChangeLog --- a/ChangeLog Thu Aug 27 17:48:27 2009 +0200 +++ b/ChangeLog Thu Aug 27 13:16:24 2009 -0400 @@ -1,3 +1,17 @@ 2009-08-27 Kees Cook + + * plugin/icedteanp/IcedTeaNPPlugin.cc + (GCJ_New): Use arg count to determine whether or not a send an applet tag + to Java side. Set a new is_applet_instance variable in GCJPluginData. + (get_scriptable_object): Use the new is_applet_instance variable in + instance->pdata to determine what kind of object to return. + * plugin/icedteanp/IcedTeaNPPlugin.h: Add a new is_applet_instance bool to + GCJPluginData, which determines whether it is an applet instance or a + dummy one. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java + (checkPermission): Disable js src == class src check, as NPAPI does not + allow cross site scripting. + 2009-08-27 Kees Cook * patches/hotspot/default/icedtea-gcc-stack-markings.patch: New. diff -r be41014d9d9b -r c2ab93e26ed7 plugin/icedteanp/IcedTeaNPPlugin.cc --- a/plugin/icedteanp/IcedTeaNPPlugin.cc Thu Aug 27 17:48:27 2009 +0200 +++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Thu Aug 27 13:16:24 2009 -0400 @@ -334,11 +334,8 @@ GCJ_New (NPMIMEType pluginType, NPP inst // Documentbase retrieval. documentbase = plugin_get_documentbase (instance); - if (documentbase) - { - // => dummy plugin instantiation - - + if (documentbase && argc != 0) + { // Send applet tag message to appletviewer. applet_tag = plugin_create_applet_tag (argc, argn, argv); @@ -347,6 +344,13 @@ GCJ_New (NPMIMEType pluginType, NPP inst //plugin_send_message_to_appletviewer (data, data->instance_string); plugin_send_message_to_appletviewer (tag_message); + + data->is_applet_instance = true; + } + + if (argc == 0) + { + data->is_applet_instance = false; } g_mutex_unlock (data->appletviewer_mutex); @@ -1979,8 +1983,6 @@ NP_Initialize (NPNetscapeFuncs* browserT filename[filename_size] = '\0'; } - printf("FILENAME=%s\n", filename); - if (!filename) { PLUGIN_ERROR ("Failed to create plugin shared object filename."); @@ -2205,15 +2207,10 @@ NPObject* NPObject* get_scriptable_object(NPP instance) { - - printf("Calling plugin_get_documentbase\n"); - gchar* document_base = plugin_get_documentbase(instance); NPObject* obj; - - if (!document_base) // dummy instance/package? - { - obj = IcedTeaScriptablePluginObject::get_scriptable_java_package_object(instance, ""); - } else + GCJPluginData* data = (GCJPluginData*) instance->pdata; + + if (data->is_applet_instance) // dummy instance/package? { JavaRequestProcessor java_request = JavaRequestProcessor(); JavaResultData* java_result; @@ -2246,6 +2243,10 @@ get_scriptable_object(NPP instance) applet_class_id.append(*(java_result->return_string)); obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(instance, applet_class_id, instance_id); + + } else + { + obj = IcedTeaScriptablePluginObject::get_scriptable_java_package_object(instance, ""); } return obj; diff -r be41014d9d9b -r c2ab93e26ed7 plugin/icedteanp/IcedTeaNPPlugin.h --- a/plugin/icedteanp/IcedTeaNPPlugin.h Thu Aug 27 17:48:27 2009 +0200 +++ b/plugin/icedteanp/IcedTeaNPPlugin.h Thu Aug 27 13:16:24 2009 -0400 @@ -84,6 +84,8 @@ struct GCJPluginData guint32 window_height; // The source location for this instance gchar* source; + // If this is an actual applet instance, or a dummy instance for static calls + bool is_applet_instance; }; // Queue processing threads diff -r be41014d9d9b -r c2ab93e26ed7 plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java Thu Aug 27 17:48:27 2009 +0200 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java Thu Aug 27 13:16:24 2009 -0400 @@ -1122,36 +1122,15 @@ public class PluginAppletSecurityContext /** * Checks if the calling script is allowed to access the specified class * - * See http://java.sun.com/j2se/1.3/docs/guide/plugin/security.html#liveconnect for details - * * @param jsSrc The source of the script * @param target The target class that the script is trying to access * @param acc AccessControlContext for this execution * @throws AccessControlException If the script has insufficient permissions */ public void checkPermission(String jsSrc, Class target, AccessControlContext acc) throws AccessControlException { - - // target classloader == null => primordial loader. Allow this. - if (target.getClassLoader() == null) - return; - - URL classSrcURL = this.classLoaders.get(target.getClassLoader()); - URL jsSrcURL = null; - try { - jsSrcURL = new URL(jsSrc); - } catch (Exception e) { - e.printStackTrace(); - } - - PluginDebug.debug("target = " + target + " jsSrc=" + jsSrc + " classSrc=" + classSrcURL); - - // NPRuntime does not allow cross-site calling. The code below is kept - // in case that changes in the future.. - - // if src is not a file and class loader does not map to the same base, UniversalBrowserRead (BrowserReadPermission) must be set - //if (!jsSrc.equals("file://") && !jsSrc.equals("[System]") && !classSrcURL.equals(jsSrcURL)) { - // acc.checkPermission(new BrowserReadPermission()); - //} + // NPRuntime does not allow cross-site calling. We therefore always + // allow this, for the time being + return; } private void write(int reference, String message) { From bugzilla-daemon at icedtea.classpath.org Thu Aug 27 10:18:08 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 27 Aug 2009 17:18:08 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 ------- Comment #15 from gnu_andrew at member.fsf.org 2009-08-27 17:18 ------- A little debugging finds that: array length: 67 field size: 256 n = 32 array: [4, 65, 4, -26, -5, 56, -82, -53, -122, 32, 102, -86, -64, -59, 84, 5, 110, 1, -49, 38, -7, 3, -97, 122, -36, -18, 99, -126, -83, 83, 34, 12, -38, -84, 43, 83, -38, -25, -58, 9, -30, -37, 108, -43, 35, -118, -15, 53, 104, -26, -45, -51, 3, -83, 100, -119, -108, 25, 75, -37, 39, 9, 50, -121, 105, 68, 96] The check that throws the exception is the failure of array length to equal (n*2)+1 (65) in this case. The array returned by NSS has two extra bytes. n is calculated from the field size of 256 by adding 7 and shifting right 3. If the field size was 257, it would thus match the array size but this is not a legal EC key size. -- 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 kees at ubuntu.com Thu Aug 27 09:22:35 2009 From: kees at ubuntu.com (Kees Cook) Date: Thu, 27 Aug 2009 09:22:35 -0700 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <4A96663B.1040109@ubuntu.com> References: <4A96663B.1040109@ubuntu.com> Message-ID: <20090827162235.GI10947@outflux.net> Hi, On Thu, Aug 27, 2009 at 12:55:55PM +0200, Matthias Klose wrote: > This was reported as https://edge.launchpad.net/bugs/409736 > > Java is marked to have an executable stack[1]. This is potentially > dangerous, and is simply an oversight from one of the compiled > assembly files. Adding stack markings to the assembly solves the > issue. > > sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java > passes both stock and and with non-exec-stack. > > gcc -fstack-protector is the default on Ubuntu. I'd like to see this > patch for the IcedTea 1.6 release as well. Just to clarify: these stack markings have to do with the memory protections[1] for every Java's invocation (and is not related to -fstack-protector). For systems with NX hardware (or NX-emulation patches) this improves the overall security in Java against exploitable of memory corruption bugs. If these patches are not okay, we can also set ASFLAGS to include "-Wa,--noexecstack". Thanks, -Kees [1] https://wiki.ubuntu.com/SecurityTeam/Roadmap/ExecutableStacks -- Kees Cook Ubuntu Security Team From kees at ubuntu.com Thu Aug 27 09:25:42 2009 From: kees at ubuntu.com (Kees Cook) Date: Thu, 27 Aug 2009 09:25:42 -0700 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> References: <4A96663B.1040109@ubuntu.com> <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> Message-ID: <20090827162542.GJ10947@outflux.net> Hi Andrew, On Thu, Aug 27, 2009 at 12:04:07PM +0100, Andrew John Hughes wrote: > 2009/8/27 Matthias Klose : > > This was reported as https://edge.launchpad.net/bugs/409736 > > > > Java is marked to have an executable stack[1]. This is potentially > > dangerous, and is simply an oversight from one of the compiled assembly > > files. Adding stack markings to the assembly solves the issue. > > > > sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java passes > > both stock and and with non-exec-stack. > > > > gcc -fstack-protector is the default on Ubuntu. I'd like to see this patch > > for the IcedTea 1.6 release as well. > > > > ?Matthias > > > > I've heard about this issue before from Gentoo users and the fix, if > it truly is this simple, would be good to have. The question tends to be one of portability. In cases were non-gcc is used, ifdef's need to be built around the flag line. I can provide some examples, if needed. > Are you sending this patch upstream? It would be good to have some > feedback from the HotSpot developers before we commit this for a > release. > > Does this affect SPARC too? I'm not familiar with SPARC hardware, but if it supports "execute" memory protections, then it is a valuable change there too. It it doesn't, it won't hurt anything, IIUC. -Kees -- Kees Cook Ubuntu Security Team From kees at ubuntu.com Thu Aug 27 09:36:35 2009 From: kees at ubuntu.com (Kees Cook) Date: Thu, 27 Aug 2009 09:36:35 -0700 Subject: [patch] fix buffer overflow in debugger's socket handler In-Reply-To: <17c6771e0908270900q5e50cf02rf522c0c695241198@mail.gmail.com> References: <4A966710.4040307@ubuntu.com> <17c6771e0908270900q5e50cf02rf522c0c695241198@mail.gmail.com> Message-ID: <20090827163635.GL10947@outflux.net> Hi, On Thu, Aug 27, 2009 at 05:00:54PM +0100, Andrew John Hughes wrote: > 2009/8/27 Matthias Klose : > > Description: buffer not large enough for maximum size of debugger warning. > > ?(Largest error could be 73 bytes long: "handshake failed - received >Here's > > ?a poke < - excepted >JDWP-Handshake<") > > Ubuntu: https://launchpad.net/bugs/419018 > > Upstream: https://bugs.openjdk.java.net/show_bug.cgi?id=100103 > > > > This should go both to the IC6 trunk and the 1.6 branch. > > > > ?Matthias > > > > Patches should be approved before being committed to the release > branch, and ideally for HEAD as well. I don't see any comments on > this post, yet the patch was just pushed to both. I haven't seen the commit, but it should also probably match the very recent upstream commit, which is slightly different from my more minimal approach: http://cr.openjdk.java.net/~alanb/6432567/webrev.00/jdk.patch -Kees -- Kees Cook Ubuntu Security Team From mark at klomp.org Thu Aug 27 11:08:15 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 27 Aug 2009 20:08:15 +0200 Subject: icedtea push commit changeset messages In-Reply-To: <4A96AEF7.7060709@sun.com> References: <1251372332.3909.12.camel@springer.wildebeest.org> <4A96AEF7.7060709@sun.com> Message-ID: <1251396495.3834.5.camel@springer.wildebeest.org> Hi Tim, On Thu, 2009-08-27 at 09:06 -0700, Tim Bell wrote: > > But this causes all these messages to be held for moderation on > > distro-pkg-dev. Would it be possible to whitelist these messages? They > > will always come from @icedtea.classpath.org and will have a > > X-hg-notification: header. > > The first messages from each user will be held for moderation > and I will white list the sender as I approve it. After that, > no problem. OK, thanks. Can we add a backup list maintainer to cover other timezones and make it possible for you to go on vacation from time to time? Cheers, Mark From Tim.Bell at Sun.COM Thu Aug 27 11:30:21 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Thu, 27 Aug 2009 11:30:21 -0700 Subject: icedtea push commit changeset messages In-Reply-To: <1251396495.3834.5.camel@springer.wildebeest.org> References: <1251372332.3909.12.camel@springer.wildebeest.org> <4A96AEF7.7060709@sun.com> <1251396495.3834.5.camel@springer.wildebeest.org> Message-ID: <4A96D0BD.2090006@sun.com> Hi Mark > OK, thanks. Can we add a backup list maintainer to cover other timezones > and make it possible for you to go on vacation from time to time? Good idea - is anyone interested in helping moderate distro-pkg-dev? I inherited the role when the previous moderator moved on. I don't mind doing it, but having someone else as backup is a very good idea. Tim From bugzilla-daemon at icedtea.classpath.org Thu Aug 27 11:30:09 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 27 Aug 2009 18:30:09 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 ------- Comment #16 from gnu_andrew at member.fsf.org 2009-08-27 18:30 ------- The problem is that the Java code doesn't support an DER encoded key. >From mozilla/security/nss/lib/softoken/pkcs11.c in NSS: /* special note: We can't just use the first byte to determine * between these 2 cases because both EC_POINT_FORM_UNCOMPRESSED * and SEC_ASN1_OCTET_STRING are 0x04 */ /* handle the non-DER encoded case (UNCOMPRESSED only) */ if (pubKey->u.ec.publicValue.data[0] == EC_POINT_FORM_UNCOMPRESSED && pubKey->u.ec.publicValue.len == keyLen) { break; /* key was not DER encoded, no need to unwrap */ } /* if we ever support compressed, handle it here */ /* handle the encoded case */ if ((pubKey->u.ec.publicValue.data[0] == SEC_ASN1_OCTET_STRING) && pubKey->u.ec.publicValue.len > keyLen) { SECItem publicValue; SECStatus rv; rv = SEC_QuickDERDecodeItem(arena, &publicValue, SEC_ASN1_GET(SEC_OctetStringTemplate), &pubKey->u.ec.publicValue); /* nope, didn't decode correctly */ if ((rv != SECSuccess) || (publicValue.data[0] != EC_POINT_FORM_UNCOMPRESSED) || (publicValue.len != keyLen)) { crv = CKR_ATTRIBUTE_VALUE_INVALID; break; } /* replace our previous with the decoded key */ pubKey->u.ec.publicValue = publicValue; break; } -- 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 Thu Aug 27 12:46:05 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 27 Aug 2009 20:46:05 +0100 Subject: icedtea push commit changeset messages In-Reply-To: <4A96D0BD.2090006@sun.com> References: <1251372332.3909.12.camel@springer.wildebeest.org> <4A96AEF7.7060709@sun.com> <1251396495.3834.5.camel@springer.wildebeest.org> <4A96D0BD.2090006@sun.com> Message-ID: <17c6771e0908271246t5228c26clf486ae2c5389936@mail.gmail.com> 2009/8/27 Tim Bell : > Hi Mark >> OK, thanks. Can we add a backup list maintainer to cover other timezones >> and make it possible for you to go on vacation from time to time? > > Good idea - is anyone interested in helping moderate distro-pkg-dev? > > I inherited the role when the previous moderator moved on. ?I don't > mind doing it, but having someone else as backup is a very good idea. > > Tim > I'd be happy to do so. -- 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 mark at klomp.org Thu Aug 27 14:12:32 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 27 Aug 2009 23:12:32 +0200 Subject: icedtea push commit changeset messages In-Reply-To: <17c6771e0908271246t5228c26clf486ae2c5389936@mail.gmail.com> References: <1251372332.3909.12.camel@springer.wildebeest.org> <4A96AEF7.7060709@sun.com> <1251396495.3834.5.camel@springer.wildebeest.org> <4A96D0BD.2090006@sun.com> <17c6771e0908271246t5228c26clf486ae2c5389936@mail.gmail.com> Message-ID: <1251407552.3834.73.camel@springer.wildebeest.org> On Thu, 2009-08-27 at 20:46 +0100, Andrew John Hughes wrote: > 2009/8/27 Tim Bell : > > Good idea - is anyone interested in helping moderate distro-pkg-dev? > > > > I inherited the role when the previous moderator moved on. I don't > > mind doing it, but having someone else as backup is a very good idea. > > > I'd be happy to do so. I wouldn't mind also, but I am in the same timezone as Andrew (well +1), so that might be a little redundant. Cheers, Mark From gnu_andrew at member.fsf.org Thu Aug 27 16:03:50 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 28 Aug 2009 00:03:50 +0100 Subject: [patch] fix buffer overflow in debugger's socket handler In-Reply-To: <82r5uxtc13.fsf@mid.bfk.de> References: <4A966710.4040307@ubuntu.com> <17c6771e0908270900q5e50cf02rf522c0c695241198@mail.gmail.com> <20090827163635.GL10947@outflux.net> <17c6771e0908270950k329305epbee4404bd34974af@mail.gmail.com> <82r5uxtc13.fsf@mid.bfk.de> Message-ID: <17c6771e0908271603pd33bd9fpfe0d3ae066955d98@mail.gmail.com> 2009/8/27 Florian Weimer : > * Andrew John Hughes: > >> Except that's not an upstream commit, just a webrev: >> http://cr.openjdk.java.net/~alanb/6432567/webrev.00/ > > Where has the webrev been posted? > Err... in the link above :) If you mean where did I get the link, it's on the bug report Matthias mentioned and is now being discussed on the serviceability list: http://mail.openjdk.java.net/pipermail/serviceability-dev/2009-August/001403.html > It really should use snprintf(), and the for loop could probably be > replaced with strncmp()... > It seems the Sun engineers agree with you, as do I. > -- > Florian Weimer ? ? ? ? ? ? ? ? > BFK edv-consulting GmbH ? ? ? http://www.bfk.de/ > Kriegsstra?e 100 ? ? ? ? ? ? ?tel: +49-721-96201-1 > D-76133 Karlsruhe ? ? ? ? ? ? fax: +49-721-96201-99 > -- 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 Thu Aug 27 16:20:20 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 27 Aug 2009 23:20:20 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |ASSIGNED ------- Comment #17 from gnu_andrew at member.fsf.org 2009-08-27 23:20 ------- Tracked this bug down to a lack of DER decoding in ECParameters: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-August/000708.html -- 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 Tim.Bell at Sun.COM Thu Aug 27 16:24:44 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Thu, 27 Aug 2009 16:24:44 -0700 Subject: additional list moderators for distro-pkg-dev@ojn Message-ID: <4A9715BC.10507@sun.com> I wrote: > is anyone interested in helping moderate distro-pkg-dev? > > I inherited the role when the previous moderator moved on. I don't > mind doing it, but having someone else as backup is a very good idea. Andrew John Hughes wrote: > I'd be happy to do so. Mark Wielaard wrote: > I wouldn't mind also, but I am in the same timezone as Andrew (well +1), > so that might be a little redundant. Andrew, Mark- thank you. I will contact you off-list after I set a moderator password and get this configured. Tim Bell From bugzilla-daemon at icedtea.classpath.org Fri Aug 28 02:54:33 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 28 Aug 2009 09:54:33 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #18 from mark at klomp.org 2009-08-28 09:54 ------- (In reply to comment #17) > 'But imho that shouldn't make it necessary for a distro to replicate the whole > zoneinfo as is done currently. Please open a new bug for this.' > > I don't get where you pick this suggestion up from. The new patch doesn't > change anything about how it works now, other than that the /usr/share/tzdata > setting is made by IcedTea placing a tz.properties in the build rather than > hacking the source code. I see, you suggest to synthesize this tz.properties file for the distro, so it doesn't have to do that itself. OK. But this still goes beyond simply fixing the issue of the reporter. And I would like to just get a replicator for the original issue reported and fix it in the simplest way possible. Without completely redesigning the support for tzdata at this point. Even though that is a good idea. BTW. I thought your suggestion was to make this property point "in tree" or "out tree" depending on how the tzdata is packaged. That seems a good idea to me. Since currently we always generate the tzdata in tree, which is redundant if the distro also generates it "out tree". I would like to see a fix for that (which definitely deserves its own 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 gbenson at redhat.com Fri Aug 28 03:04:06 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 28 Aug 2009 11:04:06 +0100 Subject: Shark tweak Message-ID: <20090828100406.GA3556@redhat.com> Hi all, This small tweak allows Shark to handle cases where HotSpot's typeflow pass detects an object reference that is always NULL. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r c2ab93e26ed7 -r ba0c7c6c4896 ChangeLog --- a/ChangeLog Thu Aug 27 13:16:24 2009 -0400 +++ b/ChangeLog Fri Aug 28 11:01:49 2009 +0100 @@ -1,3 +1,8 @@ +2009-08-28 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkEntryState::SharkEntryState): Handle T_NULL. + 2009-08-27 Deepak Bhole * plugin/icedteanp/IcedTeaNPPlugin.cc diff -r c2ab93e26ed7 -r ba0c7c6c4896 ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Thu Aug 27 13:16:24 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Aug 28 11:01:49 2009 +0100 @@ -216,6 +216,10 @@ value = SharkValue::create_generic(type, NULL, i == 0 && !is_static()); break; + case ciTypeFlow::StateVector::T_NULL: + value = SharkValue::null(); + break; + case ciTypeFlow::StateVector::T_BOTTOM: break; From gbenson at icedtea.classpath.org Fri Aug 28 02:58:47 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Fri, 28 Aug 2009 09:58:47 +0000 Subject: /hg/icedtea6: 2009-08-28 Gary Benson Message-ID: changeset ba0c7c6c4896 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ba0c7c6c4896 author: Gary Benson date: Fri Aug 28 11:01:49 2009 +0100 2009-08-28 Gary Benson * ports/hotspot/src/share/vm/shark/sharkState.cpp (SharkEntryState::SharkEntryState): Handle T_NULL. diffstat: 2 files changed, 9 insertions(+) ChangeLog | 5 +++++ ports/hotspot/src/share/vm/shark/sharkState.cpp | 4 ++++ diffs (26 lines): diff -r c2ab93e26ed7 -r ba0c7c6c4896 ChangeLog --- a/ChangeLog Thu Aug 27 13:16:24 2009 -0400 +++ b/ChangeLog Fri Aug 28 11:01:49 2009 +0100 @@ -1,3 +1,8 @@ 2009-08-27 Deepak Bhole + + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkEntryState::SharkEntryState): Handle T_NULL. + 2009-08-27 Deepak Bhole * plugin/icedteanp/IcedTeaNPPlugin.cc diff -r c2ab93e26ed7 -r ba0c7c6c4896 ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Thu Aug 27 13:16:24 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Aug 28 11:01:49 2009 +0100 @@ -216,6 +216,10 @@ SharkEntryState::SharkEntryState(SharkTo value = SharkValue::create_generic(type, NULL, i == 0 && !is_static()); break; + case ciTypeFlow::StateVector::T_NULL: + value = SharkValue::null(); + break; + case ciTypeFlow::StateVector::T_BOTTOM: break; From gbenson at icedtea.classpath.org Fri Aug 28 06:24:30 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Fri, 28 Aug 2009 13:24:30 +0000 Subject: /hg/icedtea6: 2009-08-28 Gary Benson Message-ID: changeset 188db4af2dc5 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=188db4af2dc5 author: Gary Benson date: Fri Aug 28 09:18:57 2009 -0400 2009-08-28 Gary Benson * patches/icedtea-cc-interp-backedge.patch: Various fixes to backedge counting and OSR migration code. * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp (BytecodeInterpreter::osr_buf): New accessor. (BytecodeInterpreter::osr_entry): Likewise. * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp (CppInterpreter::main_loop): Handle do_osr messages. * ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp (Interpreter::invoke_osr): New method. * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp (ZeroEntry::osr_entry_t): New type. (ZeroEntry::invoke_osr): New method. * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp (SharkBuilder::osr_migration_end): New method. * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::osr_migration_end): Likewise. * ports/hotspot/src/share/vm/shark/sharkType.hpp (SharkType::_osr_entry_point_type): New field. (SharkType::osr_entry_point_type): New method. * ports/hotspot/src/share/vm/shark/sharkType.cpp (SharkType::_osr_entry_point_type): New field. (SharkType::initialize): Initialize the above. * ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp (SharkCacher::process_local_slot): Made virtual. (SharkNormalEntryCacher): New class. (SharkOSREntryCacher): Likewise. * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp (SharkOSREntryCacher::CreateAddressOfOSRBufEntry): New method. (SharkOSREntryCacher::process_monitor): Likewise. (SharkOSREntryCacher::process_local_slot): Likewise. * ports/hotspot/src/share/vm/shark/sharkState.hpp (SharkEntryState): Renamed as... (SharkNormalEntryState): ...this. (SharkOSREntryState::SharkOSREntryState): New class. * ports/hotspot/src/share/vm/shark/sharkState.cpp (SharkEntryState::SharkEntryState): Renamed as... (SharkNormalEntryState::SharkNormalEntryState): ...this. (SharkOSREntryState::SharkOSREntryState): New method. * ports/hotspot/src/share/vm/shark/sharkFunction.hpp (SharkFunction::is_osr): New method. (SharkFunction::entry_point_type): Likewise. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Handle OSR typeflows. * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp (SharkCompiler::supports_osr): Return true instead of false. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::compile_method): Remove method-isn't-OSR assertion, and add code to generate OSR typeflows. diffstat: 18 files changed, 339 insertions(+), 27 deletions(-) ChangeLog | 61 ++++++++++++ patches/icedtea-cc-interp-backedge.patch | 19 +++ ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp | 8 + ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 13 ++ ports/hotspot/src/cpu/zero/vm/entry_zero.hpp | 8 + ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp | 7 + ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 5 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 1 ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp | 48 +++++++++ ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp | 45 ++++++++ ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 7 - ports/hotspot/src/share/vm/shark/sharkCompiler.hpp | 2 ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 44 +++++--- ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 14 ++ ports/hotspot/src/share/vm/shark/sharkState.cpp | 47 ++++++++- ports/hotspot/src/share/vm/shark/sharkState.hpp | 20 ++- ports/hotspot/src/share/vm/shark/sharkType.cpp | 12 ++ ports/hotspot/src/share/vm/shark/sharkType.hpp | 5 diffs (truncated from 621 to 500 lines): diff -r ba0c7c6c4896 -r 188db4af2dc5 ChangeLog --- a/ChangeLog Fri Aug 28 11:01:49 2009 +0100 +++ b/ChangeLog Fri Aug 28 09:18:57 2009 -0400 @@ -1,3 +1,64 @@ 2009-08-28 Gary Benson + + * patches/icedtea-cc-interp-backedge.patch: Various fixes + to backedge counting and OSR migration code. + + * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp + (BytecodeInterpreter::osr_buf): New accessor. + (BytecodeInterpreter::osr_entry): Likewise. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + (CppInterpreter::main_loop): Handle do_osr messages. + + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp + (Interpreter::invoke_osr): New method. + + * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp + (ZeroEntry::osr_entry_t): New type. + (ZeroEntry::invoke_osr): New method. + + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp + (SharkBuilder::osr_migration_end): New method. + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::osr_migration_end): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkType.hpp + (SharkType::_osr_entry_point_type): New field. + (SharkType::osr_entry_point_type): New method. + * ports/hotspot/src/share/vm/shark/sharkType.cpp + (SharkType::_osr_entry_point_type): New field. + (SharkType::initialize): Initialize the above. + + * ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp + (SharkCacher::process_local_slot): Made virtual. + (SharkNormalEntryCacher): New class. + (SharkOSREntryCacher): Likewise. + * ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp + (SharkOSREntryCacher::CreateAddressOfOSRBufEntry): New method. + (SharkOSREntryCacher::process_monitor): Likewise. + (SharkOSREntryCacher::process_local_slot): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkState.hpp + (SharkEntryState): Renamed as... + (SharkNormalEntryState): ...this. + (SharkOSREntryState::SharkOSREntryState): New class. + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkEntryState::SharkEntryState): Renamed as... + (SharkNormalEntryState::SharkNormalEntryState): ...this. + (SharkOSREntryState::SharkOSREntryState): New method. + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp + (SharkFunction::is_osr): New method. + (SharkFunction::entry_point_type): Likewise. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Handle OSR typeflows. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.hpp + (SharkCompiler::supports_osr): Return true instead of false. + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::compile_method): Remove method-isn't-OSR + assertion, and add code to generate OSR typeflows. + 2009-08-28 Gary Benson * ports/hotspot/src/share/vm/shark/sharkState.cpp diff -r ba0c7c6c4896 -r 188db4af2dc5 patches/icedtea-cc-interp-backedge.patch --- a/patches/icedtea-cc-interp-backedge.patch Fri Aug 28 11:01:49 2009 +0100 +++ b/patches/icedtea-cc-interp-backedge.patch Fri Aug 28 09:18:57 2009 -0400 @@ -1,7 +1,24 @@ diff -r e0f4330c215b openjdk/hotspot/src diff -r e0f4330c215b openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp --- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Feb 20 16:46:08 2009 +0000 +++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Feb 20 17:12:20 2009 +0000 -@@ -296,9 +296,6 @@ +@@ -281,7 +281,7 @@ + + #define DO_BACKEDGE_CHECKS(skip, branch_pc) \ + if ((skip) <= 0) { \ +- if (UseCompiler && UseLoopCounter) { \ ++ if (UseLoopCounter) { \ + bool do_OSR = UseOnStackReplacement; \ + BACKEDGE_COUNT->increment(); \ + if (do_OSR) do_OSR = BACKEDGE_COUNT->reached_InvocationLimit(); \ +@@ -289,16 +289,12 @@ + nmethod* osr_nmethod; \ + OSR_REQUEST(osr_nmethod, branch_pc); \ + if (osr_nmethod != NULL && osr_nmethod->osr_entry_bci() != InvalidOSREntryBci) { \ +- intptr_t* buf; \ +- CALL_VM(buf=SharedRuntime::OSR_migration_begin(THREAD), handle_exception); \ ++ intptr_t* buf = SharedRuntime::OSR_migration_begin(THREAD); \ + istate->set_msg(do_osr); \ + istate->set_osr_buf((address)buf); \ istate->set_osr_entry(osr_nmethod->osr_entry()); \ return; \ } \ diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp Fri Aug 28 09:18:57 2009 -0400 @@ -95,6 +95,14 @@ { return _result._to_call._callee_entry_point; } + inline address osr_buf() + { + return _result._osr._osr_buf; + } + inline address osr_entry() + { + return _result._osr._osr_entry; + } public: const char *name_of_field_at_address(address addr); diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Aug 28 09:18:57 2009 -0400 @@ -156,6 +156,19 @@ void CppInterpreter::main_loop(int recur assert(HAS_PENDING_EXCEPTION, "should do"); break; } + else if (istate->msg() == BytecodeInterpreter::do_osr) { + // Unwind the current frame + thread->pop_zero_frame(); + + // Remove any extension of the previous frame + int extra_locals = method->max_locals() - method->size_of_parameters(); + stack->set_sp(stack->sp() + extra_locals); + + // Jump into the OSR method + Interpreter::invoke_osr( + method, istate->osr_entry(), istate->osr_buf(), THREAD); + return; + } else { ShouldNotReachHere(); } diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/cpu/zero/vm/entry_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/entry_zero.hpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/entry_zero.hpp Fri Aug 28 09:18:57 2009 -0400 @@ -32,6 +32,10 @@ class ZeroEntry { public: typedef void (*method_entry_t)(methodOop method, intptr_t base_pc, TRAPS); + typedef void (*osr_entry_t)(methodOop method, + address osr_buf, + intptr_t base_pc, + TRAPS); private: method_entry_t _entry_point; @@ -51,6 +55,10 @@ class ZeroEntry { { entry_point()(method, (intptr_t) this, THREAD); } + void invoke_osr(methodOop method, address osr_buf, TRAPS) const + { + ((osr_entry_t) entry_point())(method, osr_buf, (intptr_t) this, THREAD); + } public: static ByteSize entry_point_offset() diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp Fri Aug 28 09:18:57 2009 -0400 @@ -27,6 +27,13 @@ static void invoke_method(methodOop method, address entry_point, TRAPS) { ((ZeroEntry *) entry_point)->invoke(method, THREAD); + } + static void invoke_osr(methodOop method, + address entry_point, + address osr_buf, + TRAPS) + { + ((ZeroEntry *) entry_point)->invoke_osr(method, osr_buf, THREAD); } public: diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Fri Aug 28 09:18:57 2009 -0400 @@ -360,6 +360,11 @@ Value* SharkBuilder::unsafe_field_offset return make_function((address) Unsafe_field_offset_to_byte_offset, "l", "l"); } +Value* SharkBuilder::osr_migration_end() +{ + return make_function((address) SharedRuntime::OSR_migration_end, "C", "v"); +} + // Uncommon trap Value* SharkBuilder::uncommon_trap() diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Fri Aug 28 09:18:57 2009 -0400 @@ -128,6 +128,7 @@ class SharkBuilder : public llvm::IRBuil llvm::Value* exp(); llvm::Value* fabs(); llvm::Value* unsafe_field_offset_to_byte_offset(); + llvm::Value* osr_migration_end(); // Intrinsics and external functions, part 3: Uncommon trap. // This is a special case in that it is invoked like a non-VM diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp Fri Aug 28 09:18:57 2009 -0400 @@ -185,6 +185,27 @@ void SharkCacher::process_stack_slot(int } } +void SharkOSREntryCacher::process_monitor(int index, + int box_offset, + int obj_offset) +{ + if (max_monitors() > 1) + Unimplemented(); // XXX which order will they be in? + + // Copy the monitor from the OSR buffer to the frame + int src_offset = max_locals() + index * 2; + builder()->CreateStore( + builder()->CreateLoad( + CreateAddressOfOSRBufEntry(src_offset, SharkType::intptr_type())), + function()->CreateAddressOfFrameEntry( + box_offset, SharkType::intptr_type())); + builder()->CreateStore( + builder()->CreateLoad( + CreateAddressOfOSRBufEntry(src_offset + 1, SharkType::oop_type())), + function()->CreateAddressOfFrameEntry( + obj_offset, SharkType::oop_type())); +} + void SharkCacher::process_oop_tmp_slot(Value** value, int offset) { // Cache the temporary oop @@ -221,6 +242,33 @@ void SharkCacher::process_local_slot(int } } +Value* SharkOSREntryCacher::CreateAddressOfOSRBufEntry(int offset, + const Type* type) +{ + Value *result = builder()->CreateStructGEP(osr_buf(), offset); + if (type != SharkType::intptr_type()) + result = builder()->CreateBitCast(result, PointerType::getUnqual(type)); + return result; +} + +void SharkOSREntryCacher::process_local_slot(int index, + SharkValue** addr, + int offset) +{ + SharkValue *value = *addr; + + // Read the value from the OSR buffer if necessary + if (local_slot_needs_read(index, value)) { + *addr = SharkValue::create_generic( + value->type(), + builder()->CreateLoad( + CreateAddressOfOSRBufEntry( + adjusted_offset(value, max_locals() - 1 - index), + SharkType::to_stackType(value->basic_type()))), + value->zero_checked()); + } +} + void SharkDecacher::write_value_to_frame(const Type* type, Value* value, int offset) diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp --- a/ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCacheDecache.hpp Fri Aug 28 09:18:57 2009 -0400 @@ -34,6 +34,8 @@ // - SharkJavaCallCacher // - SharkVMCallCacher // - SharkFunctionEntryCacher +// - SharkNormalEntryCacher +// - SharkOSREntryCacher class SharkCacherDecacher : public SharkStateScanner { protected: @@ -329,7 +331,7 @@ class SharkCacher : public SharkCacherDe void process_oop_tmp_slot(llvm::Value** value, int offset); virtual void process_method_slot(llvm::Value** value, int offset); - void process_local_slot(int index, SharkValue** value, int offset); + virtual void process_local_slot(int index, SharkValue** value, int offset); // Stack slot helper protected: @@ -410,8 +412,47 @@ class SharkFunctionEntryCacher : public // Local slot helper protected: - virtual bool local_slot_needs_read(int index, SharkValue* value) + bool local_slot_needs_read(int index, SharkValue* value) { return value != NULL; } }; + +class SharkNormalEntryCacher : public SharkFunctionEntryCacher { + public: + SharkNormalEntryCacher(SharkFunction* function, llvm::Value* method) + : SharkFunctionEntryCacher(function, method) {} +}; + +class SharkOSREntryCacher : public SharkFunctionEntryCacher { + public: + SharkOSREntryCacher(SharkFunction* function, + llvm::Value* method, + llvm::Value* osr_buf) + : SharkFunctionEntryCacher(function, method), + _osr_buf( + builder()->CreateBitCast( + osr_buf, + llvm::PointerType::getUnqual( + llvm::ArrayType::get( + SharkType::intptr_type(), + max_locals() + max_monitors() * 2)))) {} + + private: + llvm::Value* _osr_buf; + + private: + llvm::Value* osr_buf() const + { + return _osr_buf; + } + + // Callbacks + protected: + void process_monitor(int index, int box_offset, int obj_offset); + void process_local_slot(int index, SharkValue** value, int offset); + + // Helper + private: + llvm::Value* CreateAddressOfOSRBufEntry(int offset, const llvm::Type* type); +}; diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Aug 28 09:18:57 2009 -0400 @@ -90,7 +90,6 @@ void SharkCompiler::compile_method(ciEnv void SharkCompiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci) { assert(is_initialized(), "should be"); - assert(entry_bci == InvocationEntryBci, "OSR is not supported"); ResourceMark rm; const char *name = methodname(target); @@ -117,7 +116,11 @@ void SharkCompiler::compile_method(ciEnv } // Do the typeflow analysis - ciTypeFlow *flow = target->get_flow_analysis(); + ciTypeFlow *flow; + if (entry_bci == InvocationEntryBci) + flow = target->get_flow_analysis(); + else + flow = target->get_osr_flow_analysis(entry_bci); if (env->failing()) return; if (SharkPrintTypeflowOf != NULL) { diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkCompiler.hpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.hpp Fri Aug 28 09:18:57 2009 -0400 @@ -33,7 +33,7 @@ class SharkCompiler : public AbstractCom // Missing feature tests bool supports_native() { return false; } - bool supports_osr() { return false; } + bool supports_osr() { return true; } // Customization bool needs_adapters() { return false; } diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Fri Aug 28 09:18:57 2009 -0400 @@ -32,7 +32,7 @@ void SharkFunction::initialize(const cha { // Create the function _function = Function::Create( - SharkType::entry_point_type(), + entry_point_type(), GlobalVariable::InternalLinkage, name); @@ -40,6 +40,11 @@ void SharkFunction::initialize(const cha Function::arg_iterator ai = function()->arg_begin(); Argument *method = ai++; method->setName("method"); + Argument *osr_buf = NULL; + if (is_osr()) { + osr_buf = ai++; + osr_buf->setName("osr_buf"); + } Argument *base_pc = ai++; base_pc->setName("base_pc"); code_buffer()->set_base_pc(base_pc); @@ -62,8 +67,8 @@ void SharkFunction::initialize(const cha // Walk the tree from the start block to determine which // blocks are entered and which blocks require phis - SharkTopLevelBlock *start_block = block(0); - assert(start_block->start() == 0, "blocks out of order"); + SharkTopLevelBlock *start_block = block(flow()->start_block_num()); + assert(start_block->start() == flow()->start_bci(), "blocks out of order"); start_block->enter(); // Initialize all entered blocks @@ -84,17 +89,28 @@ void SharkFunction::initialize(const cha SharkType::methodOop_type(), "method_slot"))); - // Lock if necessary - SharkState *entry_state = new SharkEntryState(start_block, method); - if (is_synchronized()) { - SharkTopLevelBlock *locker = - new SharkTopLevelBlock(this, start_block->ciblock()); - locker->add_incoming(entry_state); - - set_block_insertion_point(start_block->entry_block()); - locker->acquire_method_lock(); - - entry_state = locker->current_state(); + // Create the entry state + SharkState *entry_state; + if (is_osr()) { + entry_state = new SharkOSREntryState(start_block, method, osr_buf); + + // Free the OSR buffer + builder()->CreateCall(builder()->osr_migration_end(), osr_buf); + } + else { + entry_state = new SharkNormalEntryState(start_block, method); + + // Lock if necessary + if (is_synchronized()) { + SharkTopLevelBlock *locker = + new SharkTopLevelBlock(this, start_block->ciblock()); + locker->add_incoming(entry_state); + + set_block_insertion_point(start_block->entry_block()); + locker->acquire_method_lock(); + + entry_state = locker->current_state(); + } } // Transition into the method proper diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkFunction.hpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Fri Aug 28 09:18:57 2009 -0400 @@ -71,6 +71,20 @@ class SharkFunction : public SharkTarget GrowableArray* deferred_zero_checks() { return &_deferred_zero_checks; + } + + // On-stack replacement + private: + bool is_osr() const + { + return flow()->is_osr_flow(); + } + const llvm::FunctionType* entry_point_type() const + { + if (is_osr()) + return SharkType::osr_entry_point_type(); + else + return SharkType::entry_point_type(); } // Block management diff -r ba0c7c6c4896 -r 188db4af2dc5 ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Aug 28 11:01:49 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Aug 28 09:18:57 2009 -0400 @@ -193,7 +193,8 @@ void SharkState::replace_all(SharkValue* } } -SharkEntryState::SharkEntryState(SharkTopLevelBlock* block, Value* method) +SharkNormalEntryState::SharkNormalEntryState(SharkTopLevelBlock* block, + Value* method) : SharkState(block) { assert(!block->stack_depth_at_entry(), "entry block shouldn't have stack"); @@ -232,7 +233,49 @@ SharkEntryState::SharkEntryState(SharkTo } set_local(i, value); } - SharkFunctionEntryCacher(block->function(), method).scan(this); + SharkNormalEntryCacher(block->function(), method).scan(this); +} + +SharkOSREntryState::SharkOSREntryState(SharkTopLevelBlock* block, + Value* method, + Value* osr_buf) From gbenson at redhat.com Fri Aug 28 06:37:08 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 28 Aug 2009 14:37:08 +0100 Subject: Shark OSR support Message-ID: <20090828133708.GC3556@redhat.com> Hi all, This patch adds support for on-stack replacement (OSR) to Shark. OSR allows long running methods to be JIT compiled while they are running. After a certain number of backedges, the interpreter packs the method's stack frame into a buffer and compiles a special version of the method that will unpack the buffer and start at the backedge in question. This allows methods to be compiled that wouldn't normally, and probably makes the JIT warm up faster. If you're running with -J-XX:+PrintCompilation you'll see OSR compilations in the log, marked with '%' signs: 1 java.lang.String::hashCode (60 bytes) 2 java.lang.String::indexOf (152 bytes) 3 java.lang.String::charAt (33 bytes) 4 sun.nio.cs.UTF_8$Encoder::encodeArrayLoop (490 bytes) 1% java.lang.String::indexOf @ 65 (163 bytes) 2% java.io.UnixFileSystem::normalize @ 13 (75 bytes) 3% sun.nio.cs.UTF_8$Decoder::decodeArrayLoop @ 76 (553 bytes) 5 java.lang.String::equals (91 bytes) 6 ! java.io.BufferedReader::readLine (300 bytes) 7 java.lang.String::lastIndexOf (157 bytes) 8 java.io.UnixFileSystem::normalize (75 bytes) 9 java.lang.Object:: (1 bytes) 10 sun.nio.cs.UTF_8$Decoder::decodeArrayLoop (553 bytes) 11 java.lang.String::compareTo (147 bytes) 4%s java.util.Hashtable::contains @ 31 (66 bytes) 12 java.lang.Math::min (11 bytes) ... Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- A non-text attachment was scrubbed... Name: patch.2 Type: application/x-troff-man Size: 23786 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090828/65913bd5/patch.2 From bugzilla-daemon at icedtea.classpath.org Fri Aug 28 10:08:02 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 28 Aug 2009 17:08:02 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #19 from mark at klomp.org 2009-08-28 17:08 ------- The fix doesn't seem complete. See also this discussion on security-dev: http://mail.openjdk.java.net/pipermail/security-dev/2009-August/001140.html -- 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 Aug 28 10:31:48 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 28 Aug 2009 17:31:48 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #20 from mark at klomp.org 2009-08-28 17:31 ------- Created an attachment (id=258) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=258&action=view) icedtea-timezone-default-permission.patch This icedtea-timezone-default-permission.patch (as discussed on security-dev mentioned in comment #19) plus the Corrected patch from attachment id #257 seem to solve the reported 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. From kees at ubuntu.com Fri Aug 28 13:51:47 2009 From: kees at ubuntu.com (Kees Cook) Date: Fri, 28 Aug 2009 13:51:47 -0700 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <17c6771e0908271001i4e32911awf0f0b1e8c6eba726@mail.gmail.com> References: <4A96663B.1040109@ubuntu.com> <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> <20090827162542.GJ10947@outflux.net> <17c6771e0908271001i4e32911awf0f0b1e8c6eba726@mail.gmail.com> Message-ID: <20090828205147.GF10947@outflux.net> Hi, On Thu, Aug 27, 2009 at 06:01:06PM +0100, Andrew John Hughes wrote: > 2009/8/27 Kees Cook : > > On Thu, Aug 27, 2009 at 12:04:07PM +0100, Andrew John Hughes wrote: > >> 2009/8/27 Matthias Klose : > >> > This was reported as https://edge.launchpad.net/bugs/409736 > >> > > >> > Java is marked to have an executable stack[1]. This is potentially > >> > dangerous, and is simply an oversight from one of the compiled assembly > >> > files. Adding stack markings to the assembly solves the issue. > >> > > >> > sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java passes > >> > both stock and and with non-exec-stack. > >> > > >> > gcc -fstack-protector is the default on Ubuntu. I'd like to see this patch > >> > for the IcedTea 1.6 release as well. > >> > > >> > ?Matthias > >> > > >> > >> I've heard about this issue before from Gentoo users and the fix, if > >> it truly is this simple, would be good to have. > > > > The question tends to be one of portability. ?In cases were non-gcc is > > used, ifdef's need to be built around the flag line. ?I can provide some > > examples, if needed. > > > > I don't see an immediate problem, as they only affect x86/linux and > x86_64/linux where the compiler is gcc. Okay, sounds good. > >> Are you sending this patch upstream? ?It would be good to have some > >> feedback from the HotSpot developers before we commit this for a > >> release. > >> > >> Does this affect SPARC too? > > > > I'm not familiar with SPARC hardware, but if it supports "execute" memory > > protections, then it is a valuable change there too. ?It it doesn't, it > > won't hurt anything, IIUC. > > Do you have an SCA, either via Ubuntu or personally? A webrev needs to > be prepared against one of the HotSpot forests and posted to > hotspot-dev. If this is the compiler, hotspot-comp is appropriate and > twisti can review it ;) I haven't signed it yet, but these two (identical) lines are unlikely to be attributable to me anyway, they're common knowledge for this area of work. I'll go figure out what I need to do for the SCA for future stuff, though. Thanks! -Kees -- Kees Cook Ubuntu Security Team From bugzilla-daemon at icedtea.classpath.org Sat Aug 29 12:44:56 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 29 Aug 2009 19:44:56 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #6 from mark at klomp.org 2009-08-29 19:44 ------- The problem is this rule for Zone Asia/Amman: Rule Jordan 2002 max - Mar lastThu 24:00 1:00 S Which is explained as: # > The Council of Ministers decided in 2002 to adopt the principle of timely # > submission of the summer at 60 minutes as of midnight on the last Thursday # > of the month of March of each year. # # So - this means the midnight between Thursday and Friday since 2002. As can be seen by running the testcase: $ java CalTest2 ***begin*** Asia/Amman 7200000 Asia/Amman true 3600000 Exception in thread "main" java.lang.IllegalArgumentException: Illegal start time 86400000 at java.util.SimpleTimeZone.decodeStartRule(SimpleTimeZone.java:1376) at java.util.SimpleTimeZone.decodeRules(SimpleTimeZone.java:1340) at java.util.SimpleTimeZone.(SimpleTimeZone.java:350) at sun.util.calendar.ZoneInfo.getLastRuleInstance(ZoneInfo.java:648) at sun.util.calendar.ZoneInfo.getLastRule(ZoneInfo.java:631) at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:283) at sun.util.calendar.ZoneInfo.getOffset(ZoneInfo.java:229) at CalTest2.main(CalTest2.java:15) that 86400000 = 24 hours * 60 minutes * 60 seconds * 1000 miliseconds. Which means "at the end of the day". But SimpleTimeZone doesn't accept that: if (startTime < 0 || startTime >= millisPerDay) { throw new IllegalArgumentException( "Illegal start time " + startTime); } The simplest solution would be to change that >= to an > in decodeStartRule() and probably also in decodeEndRule(). But I haven't looked at the rest of the code to see if that would cause trouble sometime 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 Sat Aug 29 14:02:17 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 29 Aug 2009 21:02:17 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #7 from mark at klomp.org 2009-08-29 21:02 ------- Created an attachment (id=259) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=259&action=view) icedtea-simpletimezone-relax.patch Attached patch relaxes the guards for start and end rule. Needs more testing. Also being discussed at: http://thread.gmane.org/gmane.comp.java.openjdk.i18n.devel/139 -- 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 Sat Aug 29 17:11:29 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 30 Aug 2009 01:11:29 +0100 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <20090828205147.GF10947@outflux.net> References: <4A96663B.1040109@ubuntu.com> <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> <20090827162542.GJ10947@outflux.net> <17c6771e0908271001i4e32911awf0f0b1e8c6eba726@mail.gmail.com> <20090828205147.GF10947@outflux.net> Message-ID: <17c6771e0908291711k75543e2en81a3236ed8045fd@mail.gmail.com> 2009/8/28 Kees Cook : > Hi, > > On Thu, Aug 27, 2009 at 06:01:06PM +0100, Andrew John Hughes wrote: >> 2009/8/27 Kees Cook : >> > On Thu, Aug 27, 2009 at 12:04:07PM +0100, Andrew John Hughes wrote: >> >> 2009/8/27 Matthias Klose : >> >> > This was reported as https://edge.launchpad.net/bugs/409736 >> >> > >> >> > Java is marked to have an executable stack[1]. This is potentially >> >> > dangerous, and is simply an oversight from one of the compiled assembly >> >> > files. Adding stack markings to the assembly solves the issue. >> >> > >> >> > sun/security/ssl/javax/net/ssl/NewAPIs/SessionCacheSizeTests.java passes >> >> > both stock and and with non-exec-stack. >> >> > >> >> > gcc -fstack-protector is the default on Ubuntu. I'd like to see this patch >> >> > for the IcedTea 1.6 release as well. >> >> > >> >> > ?Matthias >> >> > >> >> >> >> I've heard about this issue before from Gentoo users and the fix, if >> >> it truly is this simple, would be good to have. >> > >> > The question tends to be one of portability. ?In cases were non-gcc is >> > used, ifdef's need to be built around the flag line. ?I can provide some >> > examples, if needed. >> > >> >> I don't see an immediate problem, as they only affect x86/linux and >> x86_64/linux where the compiler is gcc. > > Okay, sounds good. > >> >> Are you sending this patch upstream? ?It would be good to have some >> >> feedback from the HotSpot developers before we commit this for a >> >> release. >> >> >> >> Does this affect SPARC too? >> > >> > I'm not familiar with SPARC hardware, but if it supports "execute" memory >> > protections, then it is a valuable change there too. ?It it doesn't, it >> > won't hurt anything, IIUC. >> >> Do you have an SCA, either via Ubuntu or personally? A webrev needs to >> be prepared against one of the HotSpot forests and posted to >> hotspot-dev. ?If this is the compiler, hotspot-comp is appropriate and >> twisti can review it ;) > > I haven't signed it yet, but these two (identical) lines are unlikely > to be attributable to me anyway, they're common knowledge for this area > of work. > > I'll go figure out what I need to do for the SCA for future stuff, though. > I agree with you, and we'd have allowed it for GNU Classpath. But Sun require an SCA for everything. > Thanks! > > -Kees > > -- > Kees Cook > Ubuntu Security Team > -- 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 mjw at icedtea.classpath.org Sun Aug 30 09:12:01 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Sun, 30 Aug 2009 16:12:01 +0000 Subject: /hg/icedtea6: PR377. SimpleTimeZone checks too strict for Asia/A... Message-ID: changeset b8b498cda0b0 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b8b498cda0b0 author: Mark Wielaard date: Sun Aug 30 17:58:20 2009 +0200 PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: New test. * patches/icedtea-simpletimezone-relax.patch: New patch. * Makefile.am: Add new patch. * HACKING: Describe new patch. diffstat: 5 files changed, 58 insertions(+), 2 deletions(-) ChangeLog | 9 +++ HACKING | 6 +- Makefile.am | 1 overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java | 23 ++++++++++ patches/icedtea-simpletimezone-relax.patch | 21 +++++++++ diffs (95 lines): diff -r 188db4af2dc5 -r b8b498cda0b0 ChangeLog --- a/ChangeLog Fri Aug 28 09:18:57 2009 -0400 +++ b/ChangeLog Sun Aug 30 17:58:20 2009 +0200 @@ -1,3 +1,12 @@ 2009-08-28 Gary Benson + + PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. + * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: + New test. + * patches/icedtea-simpletimezone-relax.patch: New patch. + * Makefile.am: Add new patch. + * HACKING: Describe new patch. + 2009-08-28 Gary Benson * patches/icedtea-cc-interp-backedge.patch: Various fixes diff -r 188db4af2dc5 -r b8b498cda0b0 HACKING --- a/HACKING Fri Aug 28 09:18:57 2009 -0400 +++ b/HACKING Sun Aug 30 17:58:20 2009 +0200 @@ -114,8 +114,10 @@ The following patches are only applied t * icedtea-lucene-crash.patch: Fix lucene bad code generation bug #6707044. * icedtea-6700047-loopopts.patch: Fix partial peeling issue, bug #6700047. * icedtea-6712835-ifnode.patch: Fix infinite loop in PhaseIterGVN::transform. -* icedtea-timezone.patch : Makes java only look for time zone information in /etc/sysconfig/clock if /etc/localtime is not found (fix - for rh-489586) +* icedtea-timezone.patch : Makes java only look for time zone information in + /etc/sysconfig/clock if /etc/localtime is not found (fix for rh-489586) +* icedtea-simpletimezone-relax.patch: Fix for PR377, Jordan end of day rule + in Asia/Amman TimeZone. SimpleTimeZone checks too strict. * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. * openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext diff -r 188db4af2dc5 -r b8b498cda0b0 Makefile.am --- a/Makefile.am Fri Aug 28 09:18:57 2009 -0400 +++ b/Makefile.am Sun Aug 30 17:58:20 2009 +0200 @@ -540,6 +540,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-rmi_amd64.patch \ patches/icedtea-tools.patch \ patches/icedtea-timezone.patch \ + patches/icedtea-simpletimezone-relax.patch \ patches/icedtea-use-system-tzdata.patch \ patches/icedtea-headers.patch \ patches/hotspot/$(HSBUILD)/icedtea-headers.patch \ diff -r 188db4af2dc5 -r b8b498cda0b0 overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java Sun Aug 30 17:58:20 2009 +0200 @@ -0,0 +1,23 @@ +/* + * @test + * @bug 0000377 + * @summary SimpleTimeZone should accept start/end rules at end of day + */ + +import java.util.Calendar; +import java.util.SimpleTimeZone; + +public class EndOfDay +{ + public static void main(String[] args) + { + SimpleTimeZone stz; + stz = new SimpleTimeZone(0, "End/Day", + Calendar.MARCH, -1, Calendar.FRIDAY, + 24 * 60 * 60 * 1000, + Calendar.APRIL, 1, Calendar.THURSDAY, + 24 * 60 * 60 * 1000, + 3600000); + System.err.println(stz); + } +} diff -r 188db4af2dc5 -r b8b498cda0b0 patches/icedtea-simpletimezone-relax.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-simpletimezone-relax.patch Sun Aug 30 17:58:20 2009 +0200 @@ -0,0 +1,21 @@ +diff -r 348fce38de3f src/share/classes/java/util/SimpleTimeZone.java +--- openjdk/jdk/src/share/classes/java/util/SimpleTimeZone.java Fri Jun 26 19:50:44 2009 +0400 ++++ openjdk/jdk/src/share/classes/java/util/SimpleTimeZone.java Sat Aug 29 22:36:41 2009 +0200 +@@ -1372,7 +1372,7 @@ + throw new IllegalArgumentException( + "Illegal start month " + startMonth); + } +- if (startTime < 0 || startTime >= millisPerDay) { ++ if (startTime < 0 || startTime > millisPerDay) { + throw new IllegalArgumentException( + "Illegal start time " + startTime); + } +@@ -1419,7 +1419,7 @@ + throw new IllegalArgumentException( + "Illegal end month " + endMonth); + } +- if (endTime < 0 || endTime >= millisPerDay) { ++ if (endTime < 0 || endTime > millisPerDay) { + throw new IllegalArgumentException( + "Illegal end time " + endTime); + } From mark at klomp.org Sun Aug 30 09:15:36 2009 From: mark at klomp.org (Mark Wielaard) Date: Sun, 30 Aug 2009 18:15:36 +0200 Subject: Jordan (Asia/Amman) versus SimpleTimeZone In-Reply-To: <4A9A71D4.50109@sun.com> References: <1251578474.3908.20.camel@springer.wildebeest.org> <4A9A71D4.50109@sun.com> Message-ID: <1251648936.5795.17.camel@springer.wildebeest.org> Hi Sean (CC distro-pkg-dev added), On Sun, 2009-08-30 at 13:34 +0100, Sean Coffey wrote: > Mark Wielaard wrote: > > I was debugging the following bug report: > > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 > > "TimeZone.getOffset() fails for some TZ" > > The issue is caused because there is a start rule in the Asia/Amman > > timezone that starts at the end of a day. SimpleTimeZone doesn't allow > > that. I have a simple "fix" (attached), but I haven't fully tested it > > yet, and don't know if there could be other problems with allowing a > > rule to start on the last milisecond of a day. > > > > I noticed there is a similar bug report here: > > http://bugs.sun.com/view_bug.do?bug_id=6851214 > > That is marked as "State 11-Closed, Verified, bug". > > There is however very little information on how this was fixed. > > Does anybody on this list know more? > > Yes - that's the same fix that was put in the JDK releases. > The issue is only relevant for the Asia/Amman TZ as you mentioned. Thanks for the update and confirmation of the fix. I added it to IcedTea6 plus a new testcase for the general issue. 2009-08-30 Mark Wielaard PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: New test. * patches/icedtea-simpletimezone-relax.patch: New patch. * Makefile.am: Add new patch. * HACKING: Describe new patch. Thanks, Mark -------------- next part -------------- A non-text attachment was scrubbed... Name: pr377.patch Type: text/x-patch Size: 3671 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090830/0c937604/pr377.patch From bugzilla-daemon at icedtea.classpath.org Sun Aug 30 09:13:54 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 30 Aug 2009 16:13:54 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 mark at klomp.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #8 from mark at klomp.org 2009-08-30 16:13 ------- changeset: 1688:b8b498cda0b0 tag: tip user: Mark Wielaard date: Sun Aug 30 17:58:20 2009 +0200 files: ChangeLog HACKING Makefile.am overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java patches/icedtea-simpletimezone-relax.patch description: PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: New test. * patches/icedtea-simpletimezone-relax.patch: New patch. * Makefile.am: Add new patch. * HACKING: Describe new patch. -- 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 Sun Aug 30 10:06:23 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 30 Aug 2009 18:06:23 +0100 Subject: Jordan (Asia/Amman) versus SimpleTimeZone In-Reply-To: <1251648936.5795.17.camel@springer.wildebeest.org> References: <1251578474.3908.20.camel@springer.wildebeest.org> <4A9A71D4.50109@sun.com> <1251648936.5795.17.camel@springer.wildebeest.org> Message-ID: <17c6771e0908301006v54b9490an7475003c238f31b0@mail.gmail.com> 2009/8/30 Mark Wielaard : > Hi Sean (CC distro-pkg-dev added), > > On Sun, 2009-08-30 at 13:34 +0100, Sean Coffey wrote: >> Mark Wielaard wrote: >> > I was debugging the following bug report: >> > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 >> > "TimeZone.getOffset() fails for some TZ" >> > The issue is caused because there is a start rule in the Asia/Amman >> > timezone that starts at the end of a day. SimpleTimeZone doesn't allow >> > that. I have a simple "fix" (attached), but I haven't fully tested it >> > yet, and don't know if there could be other problems with allowing a >> > rule to start on the last milisecond of a day. >> > >> > I noticed there is a similar bug report here: >> > http://bugs.sun.com/view_bug.do?bug_id=6851214 >> > That is marked as "State 11-Closed, Verified, bug". >> > There is however very little information on how this was fixed. >> > Does anybody on this list know more? >> >> Yes - that's the same fix that was put in the JDK releases. >> The issue is only relevant for the Asia/Amman TZ as you mentioned. > > Thanks for the update and confirmation of the fix. > I added it to IcedTea6 plus a new testcase for the general issue. > > 2009-08-30 ?Mark Wielaard ? > > ? ?PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. > ? ?* overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: > ? ?New test. > ? ?* patches/icedtea-simpletimezone-relax.patch: New patch. > ? ?* Makefile.am: Add new patch. > ? ?* HACKING: Describe new patch. > > Thanks, > > Mark > Hi Mark, Thanks for tracking down this issue. Could you add the Sun bug ID somewhere too, either in the HACKING file or better still update the wiki (http://icedtea.classpath.org/wiki/IcedTea_JDK6_Patches) with this patch? Long term, we either need to submit your fix or backport the Sun one when it appears in OpenJDK7 so that this is applied upstream. 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 mark at klomp.org Sun Aug 30 10:49:14 2009 From: mark at klomp.org (Mark Wielaard) Date: Sun, 30 Aug 2009 19:49:14 +0200 Subject: Jordan (Asia/Amman) versus SimpleTimeZone In-Reply-To: <17c6771e0908301006v54b9490an7475003c238f31b0@mail.gmail.com> References: <1251578474.3908.20.camel@springer.wildebeest.org> <4A9A71D4.50109@sun.com> <1251648936.5795.17.camel@springer.wildebeest.org> <17c6771e0908301006v54b9490an7475003c238f31b0@mail.gmail.com> Message-ID: <1251654554.5795.18.camel@springer.wildebeest.org> Hi Andrew, On Sun, 2009-08-30 at 18:06 +0100, Andrew John Hughes wrote: > Thanks for tracking down this issue. Could you add the Sun bug ID > somewhere too, either in the HACKING file or better still update the > wiki (http://icedtea.classpath.org/wiki/IcedTea_JDK6_Patches) with > this patch? Patch already described in HACKING file. All relevant URLs added to the wiki. Cheers, Mark From gnu_andrew at member.fsf.org Sun Aug 30 11:04:42 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 30 Aug 2009 19:04:42 +0100 Subject: Jordan (Asia/Amman) versus SimpleTimeZone In-Reply-To: <1251654554.5795.18.camel@springer.wildebeest.org> References: <1251578474.3908.20.camel@springer.wildebeest.org> <4A9A71D4.50109@sun.com> <1251648936.5795.17.camel@springer.wildebeest.org> <17c6771e0908301006v54b9490an7475003c238f31b0@mail.gmail.com> <1251654554.5795.18.camel@springer.wildebeest.org> Message-ID: <17c6771e0908301104m2c416284l50c8990ac9d8096a@mail.gmail.com> 2009/8/30 Mark Wielaard : > Hi Andrew, > > On Sun, 2009-08-30 at 18:06 +0100, Andrew John Hughes wrote: >> Thanks for tracking down this issue. ?Could you add the Sun bug ID >> somewhere too, either in the HACKING file or better still update the >> wiki (http://icedtea.classpath.org/wiki/IcedTea_JDK6_Patches) with >> this patch? > > Patch already described in HACKING file. > All relevant URLs added to the wiki. > > Cheers, > > Mark > > Thanks, that's much appreciated. I've shifted the wiki entry up a little to retain the alphabetical ordering of the patches. -- 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 mjw at redhat.com Sun Aug 30 23:33:55 2009 From: mjw at redhat.com (Mark Wielaard) Date: Mon, 31 Aug 2009 08:33:55 +0200 Subject: Fix for PR381 Stackoverflow error with SecurityManager, signed jar and debug Message-ID: <1251700435.3836.49.camel@springer.wildebeest.org> Hi, The following fixes PR381 Stackoverflow error with SecurityManager, signed jar and debug. Thanks to Martin and Anil for walking me through an instance of this issue with JBoss. That made it easy to create a testcase (also included in the overlays). The fix is in two parts. The first is and extension of Keith's work to get at the system installed tzdata. Now doing everything inside an AccessController.doPrivileged block. The second is a fix for a similar issue in Timezone when setDefaultZone() is called, which as the testcase shows happens for any Date.toString() call. A similar fix was also in openjdk7 b22, but apparently lost since b22 was from "before hg", I took the jdk7 version. I'll add it to the wiki. 2009-08-31 Mark Wielaard Keith Seitz PR381 Stackoverflow error with SecurityManager, signed jar and debug * patches/icedtea-use-system-tzdata.patch: Updated to initialize JAVAZI_DIR once and inside a AccessController.doPrivileged() block. * patches/icedtea-timezone-default-permission.patch: New patch. * overlays/openjdk/jdk/test/java/util/TimeZone/ (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): New test. * Makefile.am: Add new patch. * HACKING: Describe new patch. See also the discussions in the bug report and on security-dev. Cheers, Mark -------------- next part -------------- A non-text attachment was scrubbed... Name: datetimezonepermission.patch Type: text/x-patch Size: 10435 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090831/8398a1d8/datetimezonepermission.patch From bugzilla-daemon at icedtea.classpath.org Sun Aug 30 23:31:40 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 31 Aug 2009 06:31:40 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 mark at klomp.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED ------- Comment #21 from mark at klomp.org 2009-08-31 06:31 ------- changeset: 1689:21edcf84dc76 tag: tip user: Mark Wielaard date: Mon Aug 31 07:45:07 2009 +0200 files: ChangeLog HACKING Makefile.am overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh patches/icedtea-timezone-default-permission.patch patches/icedtea-use-system-tzdata.patch description: PR381 Stackoverflow error with SecurityManager, signed jar and debug 2009-08-31 Mark Wielaard Keith Seitz * patches/icedtea-use-system-tzdata.patch: Updated to initialize JAVAZI_DIR once and inside a AccessController.doPrivileged() block. * patches/icedtea-timezone-default-permission.patch: New patch. * overlays/openjdk/jdk/test/java/util/TimeZone/ (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): New test. * Makefile.am: Add new patch. * HACKING: Describe new patch. -- 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 mjw at icedtea.classpath.org Sun Aug 30 23:35:03 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Mon, 31 Aug 2009 06:35:03 +0000 Subject: /hg/icedtea6: PR381 Stackoverflow error with SecurityManager, si... Message-ID: changeset 21edcf84dc76 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=21edcf84dc76 author: Mark Wielaard date: Mon Aug 31 07:45:07 2009 +0200 PR381 Stackoverflow error with SecurityManager, signed jar and debug 2009-08-31 Mark Wielaard Keith Seitz * patches/icedtea-use-system-tzdata.patch: Updated to initialize JAVAZI_DIR once and inside a AccessController.doPrivileged() block. * patches/icedtea-timezone-default-permission.patch: New patch. * overlays/openjdk/jdk/test/java/util/TimeZone/ (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): New test. * Makefile.am: Add new patch. * HACKING: Describe new patch. diffstat: 7 files changed, 182 insertions(+), 32 deletions(-) ChangeLog | 13 + HACKING | 4 Makefile.am | 1 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java | 40 +++++ overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh | 61 ++++++++ patches/icedtea-timezone-default-permission.patch | 23 +++ patches/icedtea-use-system-tzdata.patch | 72 +++++----- diffs (269 lines): diff -r b8b498cda0b0 -r 21edcf84dc76 ChangeLog --- a/ChangeLog Sun Aug 30 17:58:20 2009 +0200 +++ b/ChangeLog Mon Aug 31 07:45:07 2009 +0200 @@ -1,3 +1,16 @@ 2009-08-30 Mark Wielaard + Keith Seitz + + PR381 Stackoverflow error with SecurityManager, signed jar and debug + * patches/icedtea-use-system-tzdata.patch: Updated to initialize + JAVAZI_DIR once and inside a AccessController.doPrivileged() block. + * patches/icedtea-timezone-default-permission.patch: New patch. + * overlays/openjdk/jdk/test/java/util/TimeZone/ + (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): + New test. + * Makefile.am: Add new patch. + * HACKING: Describe new patch. + 2009-08-30 Mark Wielaard PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. diff -r b8b498cda0b0 -r 21edcf84dc76 HACKING --- a/HACKING Sun Aug 30 17:58:20 2009 +0200 +++ b/HACKING Mon Aug 31 07:45:07 2009 +0200 @@ -116,6 +116,10 @@ The following patches are only applied t * icedtea-6712835-ifnode.patch: Fix infinite loop in PhaseIterGVN::transform. * icedtea-timezone.patch : Makes java only look for time zone information in /etc/sysconfig/clock if /etc/localtime is not found (fix for rh-489586) +* icedtea-timezone-default-permission.patch: Partial fix for PR381 + (in combination with icedtea-use-system-tzdata.patch) security check + debug printing overflow. Also in openjdk7 b22, but apparently lost + since b22 was from "before hg". * icedtea-simpletimezone-relax.patch: Fix for PR377, Jordan end of day rule in Asia/Amman TimeZone. SimpleTimeZone checks too strict. * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. diff -r b8b498cda0b0 -r 21edcf84dc76 Makefile.am --- a/Makefile.am Sun Aug 30 17:58:20 2009 +0200 +++ b/Makefile.am Mon Aug 31 07:45:07 2009 +0200 @@ -540,6 +540,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-rmi_amd64.patch \ patches/icedtea-tools.patch \ patches/icedtea-timezone.patch \ + patches/icedtea-timezone-default-permission.patch \ patches/icedtea-simpletimezone-relax.patch \ patches/icedtea-use-system-tzdata.patch \ patches/icedtea-headers.patch \ diff -r b8b498cda0b0 -r 21edcf84dc76 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,40 @@ +/* Testcase for PR381 Stackoverflow error with security manager, signed jars + and -Djava.security.debug set. + +Copyright (c) 2009, Red Hat Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. +*/ + + +import java.util.Date; + +/** + * Test class. Create a test keystore and dummy cert, create a jar file to + * sign with the test class in it. Sign it run it with the security manager + * on, plus accesscontroller debugging, will go into infinite recursion + * trying to get enough permissions for printing Date of failing + * certificate, unless fix is applied. + */ +public class TimeZoneDatePermissionCheck +{ + public static void main(String[] args) + { + System.out.println(new Date()); + } +} diff -r b8b498cda0b0 -r 21edcf84dc76 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,61 @@ +# Testcase for PR381 Stackoverflow error with security manager, signed jars +# and -Djava.security.debug set. +# +# Copyright (c) 2009, Red Hat Inc. +# +# This file is part of IcedTea. +# +# IcedTea is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# IcedTea is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IcedTea; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. + +# @test +# @bug 0000381 +# @summary Stackoverflow error with security manager, signed jars and debug. +# @build TimeZoneDatePermissionCheck +# @run shell TimeZoneDatePermissionCheck.sh + +# Set default if not run under jtreg from test dir itself +if [ "${TESTCLASSES}" = "" ] ; then + TESTCLASSES="." +fi +if [ "${TESTJAVA}" = "" ] ; then + TESTJAVA=/usr +fi + +# create a test keystore and dummy cert +rm -f ${TESTCLASSES}/timezonedatetest.store +${TESTJAVA}/bin/keytool -genkeypair -alias testcert \ + -keystore ${TESTCLASSES}/timezonedatetest.store \ + -storepass testpass -validity 360 \ + -dname "cn=Mark Wildebeest, ou=FreeSoft, o=Red Hat, c=NL" \ + -keypass testpass + +# create a jar file to sign with the test class in it. +rm -f ${TESTCLASSES}/timezonedatetest.jar +${TESTJAVA}/bin/jar cf \ + ${TESTCLASSES}/timezonedatetest.jar \ + -C ${TESTCLASSES} TimeZoneDatePermissionCheck.class + +# sign it +${TESTJAVA}/bin/jarsigner \ + -keystore ${TESTCLASSES}/timezonedatetest.store \ + -storepass testpass ${TESTCLASSES}/timezonedatetest.jar testcert + +# run it with the security manager on, plus accesscontroller debugging +# will go into infinite recursion trying to get enough permissions for +# printing Date of failing certificate unless fix is applied. +${TESTJAVA}/bin/java -Djava.security.manager \ + -Djava.security.debug=access,failure,policy \ + -cp ${TESTCLASSES}/timezonedatetest.jar TimeZoneDatePermissionCheck diff -r b8b498cda0b0 -r 21edcf84dc76 patches/icedtea-timezone-default-permission.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-timezone-default-permission.patch Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,23 @@ +--- openjdk7/jdk/src/share/classes/java/util/TimeZone.java 2009-08-04 18:54:13.026104895 +0200 ++++ openjdk/jdk/src/share/classes/java/util/TimeZone.java 2009-08-04 18:53:09.035985858 +0200 +@@ -602,11 +602,7 @@ + } + }); + +- if (hasPermission()) { +- defaultTimeZone = tz; +- } else { +- defaultZoneTL.set(tz); +- } ++ defaultTimeZone = tz; + return tz; + } + +@@ -637,6 +633,7 @@ + if (hasPermission()) { + synchronized (TimeZone.class) { + defaultTimeZone = zone; ++ defaultZoneTL.set(null); + } + } else { + defaultZoneTL.set(zone); diff -r b8b498cda0b0 -r 21edcf84dc76 patches/icedtea-use-system-tzdata.patch --- a/patches/icedtea-use-system-tzdata.patch Sun Aug 30 17:58:20 2009 +0200 +++ b/patches/icedtea-use-system-tzdata.patch Mon Aug 31 07:45:07 2009 +0200 @@ -1,14 +1,34 @@ ---- ../openjdkb23/openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2007-10-30 04:38:28.000000000 -0400 -+++ openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2007-11-13 13:16:52.000000000 -0500 -@@ -28,6 +28,7 @@ - import java.io.File; - import java.io.FileInputStream; - import java.io.FileNotFoundException; -+import java.security.AccessControlException; - import java.io.IOException; - import java.lang.ref.SoftReference; - import java.security.AccessController; -@@ -1021,11 +1022,29 @@ +--- openjdk6.orig/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Sat Mar 15 13:43:05 2008 -0400 ++++ openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Fri Aug 21 11:34:56 2009 +0200 +@@ -465,6 +465,27 @@ + */ + public static final byte TAG_TZDataVersion = 68; + ++ // Cached location of the TZDATA files ++ private static final String JAVAZI_DIR = setup_JAVAZI_DIR(); ++ ++ private static String setup_JAVAZI_DIR() { ++ try { ++ final String dir = AccessController.doPrivileged ++ (new sun.security.action.GetPropertyAction("user.zoneinfo.dir")); ++ return AccessController.doPrivileged ++ (new PrivilegedExceptionAction() { ++ public String run() { ++ File f = new File(dir, "ZoneInfoMappings"); ++ if (f.exists()) ++ return dir; ++ return null; ++ } ++ }); ++ } catch (PrivilegedActionException e) { ++ return null; ++ } ++ } ++ + /** + * Excluded zones item tag. (Added in Mustang) + */ +@@ -1021,11 +1042,17 @@ byte[] buffer = null; try { @@ -17,29 +37,17 @@ - final String fname = homeDir + File.separator + "lib" + File.separator - + "zi" + File.separator + fileName; - buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { -+ String zi_dir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("user.zoneinfo.dir")); -+ File dir = null; -+ if (zi_dir != null) -+ dir = new File(zi_dir); + -+ // Some minimal sanity checking -+ if (dir != null) { -+ try { -+ File f = new File(dir, "ZoneInfoMappings"); -+ if (!f.exists()) -+ dir = null; -+ } catch (AccessControlException ace) { -+ dir = null; -+ } -+ } ++ String zi_dir = JAVAZI_DIR; ++ if (zi_dir == null) { ++ // Fall back to JDK-supplied tzdata ++ String homeDir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("java.home")); ++ zi_dir = homeDir + File.separator + "lib" + File.separator ++ + "zi"; ++ } + -+ if (dir == null) { -+ String homeDir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("java.home")); -+ zi_dir = homeDir + File.separator + "lib" + File.separator -+ + "zi"; -+ } -+ final String fname = zi_dir + File.separator + fileName; -+ buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { ++ final String fname = zi_dir + File.separator + fileName; ++ buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException { File file = new File(fname); if (!file.canRead()) { From Christian.Thalinger at Sun.COM Mon Aug 31 00:09:57 2009 From: Christian.Thalinger at Sun.COM (Christian Thalinger) Date: Mon, 31 Aug 2009 09:09:57 +0200 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <17c6771e0908291711k75543e2en81a3236ed8045fd@mail.gmail.com> References: <4A96663B.1040109@ubuntu.com> <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> <20090827162542.GJ10947@outflux.net> <17c6771e0908271001i4e32911awf0f0b1e8c6eba726@mail.gmail.com> <20090828205147.GF10947@outflux.net> <17c6771e0908291711k75543e2en81a3236ed8045fd@mail.gmail.com> Message-ID: <4A9B7745.4020900@Sun.COM> Andrew John Hughes wrote: >>> Do you have an SCA, either via Ubuntu or personally? A webrev needs to >>> be prepared against one of the HotSpot forests and posted to >>> hotspot-dev. If this is the compiler, hotspot-comp is appropriate and >>> twisti can review it ;) >> I haven't signed it yet, but these two (identical) lines are unlikely >> to be attributable to me anyway, they're common knowledge for this area >> of work. >> >> I'll go figure out what I need to do for the SCA for future stuff, though. >> > > I agree with you, and we'd have allowed it for GNU Classpath. > But Sun require an SCA for everything. Yes, please sign the SCA and submit a patch for review. -- Christian From mjw at icedtea.classpath.org Mon Aug 31 06:56:39 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Mon, 31 Aug 2009 13:56:39 +0000 Subject: /hg/release/icedtea6-1.5: PR381 Stackoverflow error with Securit... Message-ID: changeset d70ae78f89c2 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=d70ae78f89c2 author: Mark Wielaard date: Mon Aug 31 07:45:07 2009 +0200 PR381 Stackoverflow error with SecurityManager, signed jar and debug 2009-08-31 Mark Wielaard Keith Seitz * patches/icedtea-use-system-tzdata.patch: Updated to initialize JAVAZI_DIR once and inside a AccessController.doPrivileged() block. * patches/icedtea-timezone-default-permission.patch: New patch. * overlays/openjdk/jdk/test/java/util/TimeZone/ (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): New test. * Makefile.am: Add new patch. * HACKING: Describe new patch. diffstat: 7 files changed, 184 insertions(+), 34 deletions(-) ChangeLog | 13 + HACKING | 8 - Makefile.am | 1 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java | 40 +++++ overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh | 61 ++++++++ patches/icedtea-timezone-default-permission.patch | 23 +++ patches/icedtea-use-system-tzdata.patch | 72 +++++----- diffs (273 lines): diff -r 99966695a8f7 -r d70ae78f89c2 ChangeLog --- a/ChangeLog Thu Aug 20 20:42:36 2009 +0100 +++ b/ChangeLog Mon Aug 31 07:45:07 2009 +0200 @@ -1,3 +1,16 @@ 2009-08-20 Andrew John Hughes + Keith Seitz + + PR381 Stackoverflow error with SecurityManager, signed jar and debug + * patches/icedtea-use-system-tzdata.patch: Updated to initialize + JAVAZI_DIR once and inside a AccessController.doPrivileged() block. + * patches/icedtea-timezone-default-permission.patch: New patch. + * overlays/openjdk/jdk/test/java/util/TimeZone/ + (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): + New test. + * Makefile.am: Add new patch. + * HACKING: Describe new patch. + 2009-08-20 Andrew John Hughes * Makefile.am: diff -r 99966695a8f7 -r d70ae78f89c2 HACKING --- a/HACKING Thu Aug 20 20:42:36 2009 +0100 +++ b/HACKING Mon Aug 31 07:45:07 2009 +0200 @@ -112,8 +112,12 @@ The following patches are only applied t * icedtea-lucene-crash.patch: Fix lucene bad code generation bug #6707044. * icedtea-6700047-loopopts.patch: Fix partial peeling issue, bug #6700047. * icedtea-6712835-ifnode.patch: Fix infinite loop in PhaseIterGVN::transform. -* icedtea-timezone.patch : Makes java only look for time zone information in /etc/sysconfig/clock if /etc/localtime is not found (fix - for rh-489586) +* icedtea-timezone.patch : Makes java only look for time zone information in + /etc/sysconfig/clock if /etc/localtime is not found (fix for rh-489586) +* icedtea-timezone-default-permission.patch: Partial fix for PR381 + (in combination with icedtea-use-system-tzdata.patch) security check + debug printing overflow. Also in openjdk7 b22, but apparently lost + since b22 was from "before hg". * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. * openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext diff -r 99966695a8f7 -r d70ae78f89c2 Makefile.am --- a/Makefile.am Thu Aug 20 20:42:36 2009 +0100 +++ b/Makefile.am Mon Aug 31 07:45:07 2009 +0200 @@ -522,6 +522,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-tools.patch \ patches/icedtea-demos.patch \ patches/icedtea-timezone.patch \ + patches/icedtea-timezone-default-permission.patch \ patches/icedtea-use-system-tzdata.patch \ patches/icedtea-headers.patch \ patches/hotspot/$(HSBUILD)/icedtea-headers.patch \ diff -r 99966695a8f7 -r d70ae78f89c2 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,40 @@ +/* Testcase for PR381 Stackoverflow error with security manager, signed jars + and -Djava.security.debug set. + +Copyright (c) 2009, Red Hat Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. +*/ + + +import java.util.Date; + +/** + * Test class. Create a test keystore and dummy cert, create a jar file to + * sign with the test class in it. Sign it run it with the security manager + * on, plus accesscontroller debugging, will go into infinite recursion + * trying to get enough permissions for printing Date of failing + * certificate, unless fix is applied. + */ +public class TimeZoneDatePermissionCheck +{ + public static void main(String[] args) + { + System.out.println(new Date()); + } +} diff -r 99966695a8f7 -r d70ae78f89c2 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,61 @@ +# Testcase for PR381 Stackoverflow error with security manager, signed jars +# and -Djava.security.debug set. +# +# Copyright (c) 2009, Red Hat Inc. +# +# This file is part of IcedTea. +# +# IcedTea is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# IcedTea is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IcedTea; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. + +# @test +# @bug 0000381 +# @summary Stackoverflow error with security manager, signed jars and debug. +# @build TimeZoneDatePermissionCheck +# @run shell TimeZoneDatePermissionCheck.sh + +# Set default if not run under jtreg from test dir itself +if [ "${TESTCLASSES}" = "" ] ; then + TESTCLASSES="." +fi +if [ "${TESTJAVA}" = "" ] ; then + TESTJAVA=/usr +fi + +# create a test keystore and dummy cert +rm -f ${TESTCLASSES}/timezonedatetest.store +${TESTJAVA}/bin/keytool -genkeypair -alias testcert \ + -keystore ${TESTCLASSES}/timezonedatetest.store \ + -storepass testpass -validity 360 \ + -dname "cn=Mark Wildebeest, ou=FreeSoft, o=Red Hat, c=NL" \ + -keypass testpass + +# create a jar file to sign with the test class in it. +rm -f ${TESTCLASSES}/timezonedatetest.jar +${TESTJAVA}/bin/jar cf \ + ${TESTCLASSES}/timezonedatetest.jar \ + -C ${TESTCLASSES} TimeZoneDatePermissionCheck.class + +# sign it +${TESTJAVA}/bin/jarsigner \ + -keystore ${TESTCLASSES}/timezonedatetest.store \ + -storepass testpass ${TESTCLASSES}/timezonedatetest.jar testcert + +# run it with the security manager on, plus accesscontroller debugging +# will go into infinite recursion trying to get enough permissions for +# printing Date of failing certificate unless fix is applied. +${TESTJAVA}/bin/java -Djava.security.manager \ + -Djava.security.debug=access,failure,policy \ + -cp ${TESTCLASSES}/timezonedatetest.jar TimeZoneDatePermissionCheck diff -r 99966695a8f7 -r d70ae78f89c2 patches/icedtea-timezone-default-permission.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-timezone-default-permission.patch Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,23 @@ +--- openjdk7/jdk/src/share/classes/java/util/TimeZone.java 2009-08-04 18:54:13.026104895 +0200 ++++ openjdk/jdk/src/share/classes/java/util/TimeZone.java 2009-08-04 18:53:09.035985858 +0200 +@@ -602,11 +602,7 @@ + } + }); + +- if (hasPermission()) { +- defaultTimeZone = tz; +- } else { +- defaultZoneTL.set(tz); +- } ++ defaultTimeZone = tz; + return tz; + } + +@@ -637,6 +633,7 @@ + if (hasPermission()) { + synchronized (TimeZone.class) { + defaultTimeZone = zone; ++ defaultZoneTL.set(null); + } + } else { + defaultZoneTL.set(zone); diff -r 99966695a8f7 -r d70ae78f89c2 patches/icedtea-use-system-tzdata.patch --- a/patches/icedtea-use-system-tzdata.patch Thu Aug 20 20:42:36 2009 +0100 +++ b/patches/icedtea-use-system-tzdata.patch Mon Aug 31 07:45:07 2009 +0200 @@ -1,14 +1,34 @@ ---- ../openjdkb23/openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2007-10-30 04:38:28.000000000 -0400 -+++ openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2007-11-13 13:16:52.000000000 -0500 -@@ -28,6 +28,7 @@ - import java.io.File; - import java.io.FileInputStream; - import java.io.FileNotFoundException; -+import java.security.AccessControlException; - import java.io.IOException; - import java.lang.ref.SoftReference; - import java.security.AccessController; -@@ -1021,11 +1022,29 @@ +--- openjdk6.orig/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Sat Mar 15 13:43:05 2008 -0400 ++++ openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Fri Aug 21 11:34:56 2009 +0200 +@@ -465,6 +465,27 @@ + */ + public static final byte TAG_TZDataVersion = 68; + ++ // Cached location of the TZDATA files ++ private static final String JAVAZI_DIR = setup_JAVAZI_DIR(); ++ ++ private static String setup_JAVAZI_DIR() { ++ try { ++ final String dir = AccessController.doPrivileged ++ (new sun.security.action.GetPropertyAction("user.zoneinfo.dir")); ++ return AccessController.doPrivileged ++ (new PrivilegedExceptionAction() { ++ public String run() { ++ File f = new File(dir, "ZoneInfoMappings"); ++ if (f.exists()) ++ return dir; ++ return null; ++ } ++ }); ++ } catch (PrivilegedActionException e) { ++ return null; ++ } ++ } ++ + /** + * Excluded zones item tag. (Added in Mustang) + */ +@@ -1021,11 +1042,17 @@ byte[] buffer = null; try { @@ -17,29 +37,17 @@ - final String fname = homeDir + File.separator + "lib" + File.separator - + "zi" + File.separator + fileName; - buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { -+ String zi_dir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("user.zoneinfo.dir")); -+ File dir = null; -+ if (zi_dir != null) -+ dir = new File(zi_dir); + -+ // Some minimal sanity checking -+ if (dir != null) { -+ try { -+ File f = new File(dir, "ZoneInfoMappings"); -+ if (!f.exists()) -+ dir = null; -+ } catch (AccessControlException ace) { -+ dir = null; -+ } -+ } ++ String zi_dir = JAVAZI_DIR; ++ if (zi_dir == null) { ++ // Fall back to JDK-supplied tzdata ++ String homeDir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("java.home")); ++ zi_dir = homeDir + File.separator + "lib" + File.separator ++ + "zi"; ++ } + -+ if (dir == null) { -+ String homeDir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("java.home")); -+ zi_dir = homeDir + File.separator + "lib" + File.separator -+ + "zi"; -+ } -+ final String fname = zi_dir + File.separator + fileName; -+ buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { ++ final String fname = zi_dir + File.separator + fileName; ++ buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException { File file = new File(fname); if (!file.canRead()) { From mjw at redhat.com Mon Aug 31 07:00:14 2009 From: mjw at redhat.com (Mark Wielaard) Date: Mon, 31 Aug 2009 16:00:14 +0200 Subject: Fix for PR381 Stackoverflow error with SecurityManager, signed jar and debug In-Reply-To: <1251700435.3836.49.camel@springer.wildebeest.org> References: <1251700435.3836.49.camel@springer.wildebeest.org> Message-ID: <1251727214.3836.105.camel@springer.wildebeest.org> Hi, On Mon, 2009-08-31 at 08:33 +0200, Mark Wielaard wrote: > 2009-08-31 Mark Wielaard > Keith Seitz > > PR381 Stackoverflow error with SecurityManager, signed jar and debug > * patches/icedtea-use-system-tzdata.patch: Updated to initialize > JAVAZI_DIR once and inside a AccessController.doPrivileged() block. > * patches/icedtea-timezone-default-permission.patch: New patch. > * overlays/openjdk/jdk/test/java/util/TimeZone/ > (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): > New test. > * Makefile.am: Add new patch. > * HACKING: Describe new patch. Lillian requested this changeset also be pushed on the 1.5 branch, which I have just done after some quick build/smoke testing that everything looked fine after the transplant. Should this also go onto the 1.6 branch? Cheers, Mark From langel at icedtea.classpath.org Mon Aug 31 07:19:53 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Mon, 31 Aug 2009 14:19:53 +0000 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.2 for changeset... Message-ID: changeset 4d6173b707ea in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=4d6173b707ea author: langel date: Mon Aug 31 10:23:01 2009 -0400 Added tag icedtea6-1.5.2 for changeset d70ae78f89c2 diffstat: 1 file changed, 1 insertion(+) .hgtags | 1 + diffs (8 lines): diff -r d70ae78f89c2 -r 4d6173b707ea .hgtags --- a/.hgtags Mon Aug 31 07:45:07 2009 +0200 +++ b/.hgtags Mon Aug 31 10:23:01 2009 -0400 @@ -16,3 +16,4 @@ 07de70c5883a637ea2ef4aba3f8472edd7e12f1e 07de70c5883a637ea2ef4aba3f8472edd7e12f1e icedtea6-1.5rc2 ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 +d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 From langel at icedtea.classpath.org Mon Aug 31 07:23:06 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Mon, 31 Aug 2009 14:23:06 +0000 Subject: /hg/release/icedtea6-1.5: 2009-08-31 Lillian Angel changeset cae52872f2d5 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=cae52872f2d5 author: langel date: Mon Aug 31 10:26:15 2009 -0400 2009-08-31 Lillian Angel * configure.ac: bumped version. diffstat: 2 files changed, 5 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ configure.ac | 2 +- diffs (20 lines): diff -r 4d6173b707ea -r cae52872f2d5 ChangeLog --- a/ChangeLog Mon Aug 31 10:23:01 2009 -0400 +++ b/ChangeLog Mon Aug 31 10:26:15 2009 -0400 @@ -1,3 +1,7 @@ 2009-08-31 Mark Wielaard + + * configure.ac: bumped version. + 2009-08-31 Mark Wielaard Keith Seitz diff -r 4d6173b707ea -r cae52872f2d5 configure.ac --- a/configure.ac Mon Aug 31 10:23:01 2009 -0400 +++ b/configure.ac Mon Aug 31 10:26:15 2009 -0400 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.5.1], [distro-pkg -AC_INIT([icedtea6], [1.5.1], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.5.2], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From aph at redhat.com Mon Aug 31 07:53:16 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 31 Aug 2009 15:53:16 +0100 Subject: IcedTea 1.6 release ready to go Message-ID: <4A9BE3DC.3030302@redhat.com> We've almost completed our testing at Red Hat, with full JCK and no JTreg regressions. x86_64 JCK is still running, but assuming that it passes: As far as I'm concerned, 1.6 is ready for release. Does anyone have any concerns? Doko? If anyone knows of any reason why this release should not now be made, let them speak now or forever hold their peace... Andrew.