JavaNativeMethodImpl_OpenJDK6.st
branchcvs_MAIN
changeset 3360 1a8899091305
parent 3347 6451a6e52db9
parent 3324 a58245c0e83a
child 3386 ddcff50a1fdc
--- a/JavaNativeMethodImpl_OpenJDK6.st	Fri Feb 14 14:27:26 2014 +0100
+++ b/JavaNativeMethodImpl_OpenJDK6.st	Wed Jan 28 03:12:08 2015 +0100
@@ -1,5 +1,5 @@
 "
- COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+ COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko
                             SWING Research Group, Czech Technical University in Prague
 
  This software is furnished under a license and may be used
@@ -15,14 +15,14 @@
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:'JavaVMData'
-	category:'Languages-Java-Support-OpenJDK6'
+	category:'Languages-Java-Support-Java 6'
 !
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'documentation'!
 
 copyright
 "
- COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+ COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko
                             SWING Research Group, Czech Technical University in Prague
 
  This software is furnished under a license and may be used
@@ -739,7 +739,7 @@
 
     file isNil ifTrue:[
         JavaVM
-    throwIOExceptionWithMessage:('stream with file descriptor %1 closed or was never open'
+            throwIOExceptionWithMessage:('stream with file descriptor %1 closed or was never open'
             bindWith:fileNo).
         ^ nil
     ].
@@ -840,7 +840,7 @@
         ^nil.
     ].
 
-    "Possibly box/unbox arguments"
+    "/ Possibly box/unbox arguments
     args notEmptyOrNil ifTrue:[
         bargs := Array new: (bargss := method numArgs).
         bi := 1.
@@ -897,13 +897,48 @@
         ].
     ].
 
+    "/ Apparently, invocation of interface method initializes the class,
+    "/ so check whether the method is an interface one and if so, initialize
+    "/ the interface...
+    (isConstructor not and:[method isStatic not and:[method javaClass interfaces notEmpty]]) ifTrue:[
+        | selector ifacesQ ifacesSeen |
+
+        selector := method selector.
+        ifacesQ := OrderedCollection with: (method javaClass interfaces).
+        ifacesSeen := Set new.
+        [ ifacesQ notEmpty ] whileTrue:[
+            | ifaces newIfaces m |
+
+            ifaces := ifacesQ removeFirst.
+            ifaces do:[:iface |
+                (ifacesSeen includes: iface) ifFalse:[
+                    ifacesSeen add: iface.
+                    m := iface compiledMethodAt: selector.
+                    m notNil ifTrue:[
+                        "/ OK, it's an interface method, initialize the class
+                        m javaClass classInit.
+                    ].
+                ].
+            ].
+            m isNil ifTrue:[
+                newIfaces := Set new.
+                ifaces do:[:iface| newIfaces addAll: iface interfaces ].
+                newIfaces notEmpty ifTrue:[
+                    ifacesQ add: newIfaces.
+                ].
+            ] ifFalse:[
+                "/ It's an inteface method, so clear the queue to terminate the loop.
+                ifacesQ := #()
+            ].
+        ]
+    ].
+
+
     "Fire the method"
     [
-        method isStatic ifTrue:[
-            retval := method valueWithReceiver: method javaClass arguments: bargs.
-        ] ifFalse:[
-            retval := method valueWithReceiver: obj arguments: bargs.
-        ].
+        retval := method isStatic
+            ifTrue:[ method valueWithReceiver: method javaClass arguments: bargs ]
+            ifFalse:[ method valueWithReceiver: obj arguments: bargs ].
     ] on: (JavaVM classForName:'java.lang.Throwable' definedBy:nil) do:[:ex |
         executionEx := ex.
     ].
@@ -924,7 +959,7 @@
     ^retval.
 
     "Created: / 05-07-2012 / 23:48:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 30-01-2013 / 14:00:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 11-11-2013 / 21:30:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'helpers - zip'!
@@ -3135,15 +3170,15 @@
 
     |path|
 
-    "/ mhmh - what is done here ?
-
+    "/ build a colon-separated string
     path := ''.
-    LibPath do:[:comp | path size == 0 ifTrue:[
-                            path := path , comp
-                        ] ifFalse:[
-                            path := path , ':' , comp
-                        ]
-               ].
+    LibPath do:[:comp | 
+        path size == 0 ifTrue:[
+            path := path , comp
+        ] ifFalse:[
+            path := path , ':' , comp
+        ]
+    ].
 
     ^ Java as_String:path
 
@@ -3732,14 +3767,15 @@
             nextPutAll:' [';
             nextPutAll:(con method javaClass sourceFile);
             nextPutAll:' ';
-            nextPutAll:(con quickLineNumber displayString);
+            nextPutAll:(con lineNumber displayString);
             nextPutAll:']'.
         out cr
     ].
     out nextPutLine:'----------------------------------------------------'
 
-    "Created: / 4.1.1998 / 14:27:40 / cg"
-    "Modified: / 10.11.1998 / 14:19:32 / cg"
+    "Created: / 04-01-1998 / 14:27:40 / cg"
+    "Modified: / 10-11-1998 / 14:19:32 / cg"
+    "Modified: / 11-09-2013 / 03:09:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _URLConnection_close: nativeContext
@@ -4749,7 +4785,7 @@
     ].
 
     stFont device isNil ifTrue:[
-        stFont := stFont on:Screen current.
+        stFont := stFont on:Display.
         jFont instVarNamed:'pData' put:stFont.
     ].
     w := stFont widthOf:cp from:offs+1 to:offs+lenght.
@@ -4778,14 +4814,14 @@
     stFont isNil ifTrue:[
         stFont := Font family:'helvetica' size:size.
     ].
-    stFont := stFont on:Screen current.
+    stFont := stFont on:Display.
 self halt.
 "/    stFont := jFont instVarNamed:'pData'.
 "/    stFont isNil ifTrue:[
 "/        self halt
 "/    ].
 
-    stFont := stFont on:Screen current.
+    stFont := stFont on:Display.
     jFont instVarNamed:'pData' put:stFont.
 
     jMetrics instVarNamed:'ascent'     put:stFont ascent.
@@ -6601,7 +6637,8 @@
     "get multi-font string-segment width.
      Not yet supported - use standard strings width"
 
-    |jMetrics jFont jFontDescr stFont w cp lenght|
+    |jMetrics jFont jFontDescr stFont w
+     bool1 cp offs lenght bp int1|
 
     jMetrics := nativeContext receiver.
     jFont := nativeContext argAt:1.
@@ -6615,7 +6652,7 @@
     ].
 
     stFont device isNil ifTrue:[
-        stFont := stFont on:Screen current.
+        stFont := stFont on:Display.
         jFont instVarNamed:'pData' put:stFont.
     ].
     w := stFont widthOf:cp from:1 to:lenght.
@@ -6797,6 +6834,13 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_com_sun_imageio_plugins_jpeg_JPEGImageReader_setSource: this _: a1 _: a2
+
+    <javanative: 'com/sun/imageio/plugins/jpeg/JPEGImageReader' name: 'setSource(J)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _com_sun_imageio_plugins_jpeg_JPEGImageReader_setSource: this _: a1 _: a2 _: a3
 
     <javanative: 'com/sun/imageio/plugins/jpeg/JPEGImageReader' name: 'setSource(JLjavax/imageio/stream/ImageInputStream;)V'>
@@ -6825,6 +6869,13 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs: this _: a1 _: a2
+
+    <javanative: 'com/sun/imageio/plugins/jpeg/JPEGImageWriter' name: 'initWriterIDs(Ljava/lang/Class;Ljava/lang/Class;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs: this _: a1 _: a2 _: a3
 
     <javanative: 'com/sun/imageio/plugins/jpeg/JPEGImageWriter' name: 'initWriterIDs(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;)V'>
@@ -6839,6 +6890,13 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_com_sun_imageio_plugins_jpeg_JPEGImageWriter_setDest: this _: a1 _: a2
+
+    <javanative: 'com/sun/imageio/plugins/jpeg/JPEGImageWriter' name: 'setDest(J)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _com_sun_imageio_plugins_jpeg_JPEGImageWriter_setDest: this _: a1 _: a2 _: a3
 
     <javanative: 'com/sun/imageio/plugins/jpeg/JPEGImageWriter' name: 'setDest(JLjavax/imageio/stream/ImageOutputStream;)V'>
@@ -8275,12 +8333,12 @@
         ^ (JavaVM classForName:'java.io.UnixFileSystem' definedBy:nil) new
     ].
     OperatingSystem isMSWINDOWSlike ifTrue: [
-        ^ (Java classForName: 'java.io.WinNTFileSystem') new
+        ^ (JavaVM classForName: 'java.io.WinNTFileSystem' definedBy: nil) new
     ].
     self error: 'Unknown/Unsupported platform'
 
     "Created: / 09-12-2010 / 17:58:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 01-04-2011 / 18:09:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 10:58:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_ObjectInputStream_bytesToDoubles: this _: a1 _: a2 _: a3 _: a4
@@ -8432,7 +8490,7 @@
     ].
     ^file position
 
-    "Modified: / 06-07-2012 / 12:40:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-11-2013 / 11:10:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_RandomAccessFile_initIDs: this
@@ -8448,7 +8506,7 @@
 
     <javanative: 'java/io/RandomAccessFile' name: 'length()J'>
 
-        |file sz|
+    | file sz |
 
     file := self validateFile:this.
 
@@ -8456,10 +8514,12 @@
         ('JAVA: length of ' , file pathName) infoPrintCR.
     ].
 
-    sz := file size.
+    file flush.
+    sz := file fileSize.
     ^ sz.
 
-    "Created: / 4.2.1998 / 13:27:58 / cg"
+    "Created: / 04-02-1998 / 13:27:58 / cg"
+    "Modified (format): / 13-11-2013 / 10:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_RandomAccessFile_open: this _:a1 _: a2
@@ -8496,6 +8556,11 @@
 
     dir := (filename := nm utf8Encoded asFilename) directory pathName.
 
+    filename isDirectory ifTrue:[
+        JavaVM throwFileNotFoundException: nm , ' is directory, not file'.
+        ^ nil.
+    ].
+
     (PermittedDirectories notNil
     and:[PermittedDirectories includes:dir]) ifFalse:[
         FileOpenConfirmation ifTrue:[
@@ -8524,7 +8589,8 @@
     ].
 
     (filename exists not and:[readonly]) ifTrue:[
-        JavaVM throwIOExceptionWithMessage:'File ' , nm , ' does not exist'
+        JavaVM throwIOExceptionWithMessage:'File ' , nm , ' does not exist'.
+        ^ nil.
     ].
 
     readonly ifTrue:[
@@ -8535,6 +8601,7 @@
             JavaVM throwIOExceptionWithMessage:('cannot open ' , nm , ' for writing').
         ].
     ].
+    stream binary.
 
 
     fileNo := self addOpenFile:stream.
@@ -8549,7 +8616,7 @@
 
     "Created: / 04-02-1998 / 00:14:48 / cg"
     "Modified: / 12-11-1998 / 21:29:46 / cg"
-    "Modified: / 23-07-2012 / 19:37:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-11-2013 / 11:07:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_RandomAccessFile_read: this
@@ -8602,18 +8669,57 @@
     "Modified (comment): / 06-07-2012 / 12:39:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_io_RandomAccessFile_setLength: this _: a1 _: a2
+_java_io_RandomAccessFile_setLength: this _: newLength _: ignored
 
     <javanative: 'java/io/RandomAccessFile' name: 'setLength(J)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    "
+    /**
+     * Sets the length of this file.
+     *
+     * <p> If the present length of the file as returned by the
+     * <code>length</code> method is greater than the <code>newLength</code>
+     * argument then the file will be truncated.  In this case, if the file
+     * offset as returned by the <code>getFilePointer</code> method is greater
+     * than <code>newLength</code> then after this method returns the offset
+     * will be equal to <code>newLength</code>.
+     *
+     * <p> If the present length of the file as returned by the
+     * <code>length</code> method is smaller than the <code>newLength</code>
+     * argument then the file will be extended.  In this case, the contents of
+     * the extended portion of the file are not defined.
+     *
+     * @param      newLength    The desired length of the file
+     * @exception  IOException  If an I/O error occurs
+     * @since      1.2
+     */
+    "
+
+    | file sz |
+
+    file := self validateFile:this.
+
+    FileIOTrace ifTrue:[
+        ('JAVA: length of ' , file pathName) infoPrintCR.
+    ].
+
+    file flush.
+    sz := file fileSize.
+    file truncateTo: newLength .
+    sz > newLength ifTrue:[
+        file position0Based: newLength.
+    ].
+    ^ sz.
+
+    "Modified: / 13-11-2013 / 11:10:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_RandomAccessFile_write: this _: a1
 
     <javanative: 'java/io/RandomAccessFile' name: 'write(I)V'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    ^ self _java_io_FileOutputStream_write: this _:a1
+
+    "Modified: / 13-11-2013 / 11:03:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_RandomAccessFile_writeBytes: this _:bytes _: offset _: count
@@ -8685,6 +8791,25 @@
     "Modified: / 05-12-2011 / 23:04:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_java_io_UnixFileSystem_createFileExclusively: this _: name
+
+    <javanative: 'java/io/UnixFileSystem' name: 'createFileExclusively(Ljava/lang/String;)Z'>
+
+    | path file result |
+
+    path := Java as_ST_String: name.
+    [
+        file := FileStream basicNew.
+        result := (file openFile: path withMode: #(CREATE_NEW GENERIC_READ_WRITE) attributes: nil) notNil ifTrue:[1] ifFalse:[0].
+        file close.
+    ] on: OpenError do:[
+        result := 0.
+    ].
+    ^ result.
+
+    "Modified: / 12-11-2013 / 23:52:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 _java_io_UnixFileSystem_createFileExclusively: this _:a1 _: a2
 
     <javanative: 'java/io/UnixFileSystem' name: 'createFileExclusively(Ljava/lang/String;Z)Z'>
@@ -8956,6 +9081,114 @@
     "Modified: / 10-08-2011 / 13:40:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_java_io_Win32FileSystem_canonicalize0: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'canonicalize0(Ljava/lang/String;)Ljava/lang/String;'>
+
+    ^ self _java_io_WinNTFileSystem_canonicalize0: this _: a1
+
+    "Modified: / 11-11-2013 / 22:00:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_canonicalizeWithPrefix0: this _: a1 _: a2
+
+    <javanative: 'java/io/Win32FileSystem' name: 'canonicalizeWithPrefix0(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;'>
+
+    ^ self _java_io_WinNTFileSystem_canonicalizeWithPrefix0: this _: a1 _: a2
+
+    "Modified: / 11-11-2013 / 22:01:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_checkAccess: this _: a1 _: a2
+
+    <javanative: 'java/io/Win32FileSystem' name: 'checkAccess(Ljava/io/File;I)Z'>
+
+    ^ self _java_io_WinNTFileSystem_checkAccess: this _: a1 _: a2
+
+    "Modified: / 11-11-2013 / 22:01:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_createDirectory: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'createDirectory(Ljava/io/File;)Z'>
+
+    ^ self _java_io_WinNTFileSystem_createDirectory: this _: a1
+
+    "Modified: / 11-11-2013 / 22:01:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_createFileExclusively: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'createFileExclusively(Ljava/lang/String;)Z'>
+
+    ^ self _java_io_WinNTFileSystem_createFileExclusively: this _: a1
+
+    "Modified: / 11-11-2013 / 22:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_createFileExclusively: this _: a1 _: a2 
+
+    <javanative: 'java/io/Win32FileSystem' name: 'createFileExclusively(Ljava/lang/String;Z)Z'>
+
+    ^ self _java_io_WinNTFileSystem_createFileExclusively: this _: a1 _: a2
+
+    "Modified: / 12-02-2014 / 10:51:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_delete0: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'delete0(Ljava/io/File;)Z'>
+
+    ^ self _java_io_WinNTFileSystem_delete0: this _: a1
+
+    "Modified: / 11-02-2014 / 18:30:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_getBooleanAttributes: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'getBooleanAttributes(Ljava/io/File;)I'>
+
+    ^ self _java_io_WinNTFileSystem_getBooleanAttributes: this _: a1
+
+    "Modified: / 11-02-2014 / 18:30:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_getDriveDirectory: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'getDriveDirectory(I)Ljava/lang/String;'>
+
+    ^ self _java_io_WinNTFileSystem_getDriveDirectory: this _: a1
+
+    "Modified: / 11-02-2014 / 18:30:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_getLastModifiedTime: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'getLastModifiedTime(Ljava/io/File;)J'>
+
+    ^ self _java_io_WinNTFileSystem_getLastModifiedTime: this _: a1
+
+    "Modified: / 11-02-2014 / 18:30:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_getLength: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'getLength(Ljava/io/File;)J'>
+
+    ^ self _java_io_WinNTFileSystem_getLength: this _: a1
+
+    "Modified: / 11-02-2014 / 18:30:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_getSpace0: this _: a1 _: a2
+
+    <javanative: 'java/io/Win32FileSystem' name: 'getSpace0(Ljava/io/File;I)J'>
+
+    ^ self _java_io_WinNTFileSystem_getSpace0: this _: a1 _: a2
+
+    "Modified: / 11-02-2014 / 18:30:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 _java_io_Win32FileSystem_initIDs: this
 
     <javanative: 'java/io/Win32FileSystem' name: 'initIDs()V'>
@@ -8963,6 +9196,71 @@
     "Intentionally left blank"
 !
 
+_java_io_Win32FileSystem_list: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'list(Ljava/io/File;)[Ljava/lang/String;'>
+
+    ^ self _java_io_WinNTFileSystem_list: this _: a1
+
+    "Modified: / 11-02-2014 / 18:30:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_listRoots0: this
+
+    <javanative: 'java/io/Win32FileSystem' name: 'listRoots0()I'>
+
+    | driveMask codePointA |
+
+    driveMask := 0.
+    codePointA := $A codePoint.
+    OperatingSystem getDriveList do:[:each |
+        driveMask := driveMask | (1 << (each first codePoint - codePointA))
+    ].
+    ^driveMask
+
+    "
+    self _java_io_Win32FileSystem_listRoots0: nil.
+    "
+
+    "Modified: / 12-02-2014 / 10:45:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_rename0: this _: a1 _: a2
+
+    <javanative: 'java/io/Win32FileSystem' name: 'rename0(Ljava/io/File;Ljava/io/File;)Z'>
+
+    ^ self _java_io_WinNTFileSystem_rename0: this _: a1 _: a2
+
+    "Modified: / 11-02-2014 / 18:31:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_setLastModifiedTime: this _: a1 _: a2 _: a3
+
+    <javanative: 'java/io/Win32FileSystem' name: 'setLastModifiedTime(Ljava/io/File;J)Z'>
+
+    ^ self _java_io_WinNTFileSystem_setLastModifiedTime: this _: a1 _: a2 _: a3
+
+    "Modified: / 11-02-2014 / 18:31:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_setPermission: this _: a1 _: a2 _: a3 _: a4
+
+    <javanative: 'java/io/Win32FileSystem' name: 'setPermission(Ljava/io/File;IZZ)Z'>
+
+    ^ self _java_io_WinNTFileSystem_setPermission: this _: a1 _: a2 _: a3 _: a4
+
+    "Modified: / 11-02-2014 / 18:31:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_Win32FileSystem_setReadOnly: this _: a1
+
+    <javanative: 'java/io/Win32FileSystem' name: 'setReadOnly(Ljava/io/File;)Z'>
+
+    ^ self _java_io_WinNTFileSystem_setReadOnly: this _: a1
+
+    "Modified: / 11-02-2014 / 18:31:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 _java_io_WinNTFileSystem_canonicalize0: this _:a1
 
     <javanative: 'java/io/WinNTFileSystem' name: 'canonicalize0(Ljava/lang/String;)Ljava/lang/String;'>
@@ -8998,31 +9296,56 @@
 
     <javanative: 'java/io/WinNTFileSystem' name: 'checkAccess(Ljava/io/File;I)Z'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    ^ self _java_io_UnixFileSystem_checkAccess: this _:a1 _: a2
+
+    "Modified: / 12-02-2014 / 09:39:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_WinNTFileSystem_createDirectory: this _:a1
 
     <javanative: 'java/io/WinNTFileSystem' name: 'createDirectory(Ljava/io/File;)Z'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_io_WinNTFileSystem_createFileExclusively: this _:a1
+    ^ self _java_io_UnixFileSystem_createDirectory: this _:a1
+
+    "Modified: / 12-02-2014 / 09:39:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_WinNTFileSystem_createFileExclusively: this _: name
 
     <javanative: 'java/io/WinNTFileSystem' name: 'createFileExclusively(Ljava/lang/String;)Z'>
 
-    ^ self _java_io_UnixFileSystem_createFileExclusively: this _:a1
+    | path file result |
+
+    path := Java as_ST_String: name.
+    [
+        file := FileStream basicNew.
+        result := (file openFile: path withMode: #(GENERIC_READ_WRITE FILE_SHARE_READ FILE_SHARE_WRITE  CREATE_NEW) attributes: nil)  notNil ifTrue:[1] ifFalse:[0].
+        file close.
+    ] on: OpenError do:[
+        result := 0.
+    ].
+    ^ result.
 
     "Modified: / 18-08-2011 / 17:26:11 / jv"
-    "Modified: / 30-01-2013 / 14:17:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-11-2013 / 23:52:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_WinNTFileSystem_createFileExclusively: this _: a1 _: a2 
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'createFileExclusively(Ljava/lang/String;Z)Z'>
+
+    ^self _java_io_UnixFileSystem_createFileExclusively: this _: a1 _: a2
+
+    "Modified: / 12-02-2014 / 09:59:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_WinNTFileSystem_delete0: this _:a1
 
     <javanative: 'java/io/WinNTFileSystem' name: 'delete0(Ljava/io/File;)Z'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    ^ self _java_io_UnixFileSystem_delete0: this _:a1
+
+    "Modified: / 12-02-2014 / 09:39:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_WinNTFileSystem_getBooleanAttributes: this _:a1
@@ -9035,6 +9358,13 @@
     "Modified: / 30-01-2013 / 14:17:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_java_io_WinNTFileSystem_getDriveDirectory: this _: a1
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'getDriveDirectory(I)Ljava/lang/String;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _java_io_WinNTFileSystem_getLastModifiedTime: this _:a1
 
     <javanative: 'java/io/WinNTFileSystem' name: 'getLastModifiedTime(Ljava/io/File;)J'>
@@ -9055,6 +9385,22 @@
     "Modified: / 30-01-2013 / 14:17:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_java_io_WinNTFileSystem_getSpace0: this _: a1 _: a2
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'getSpace0(Ljava/io/File;I)J'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_java_io_WinNTFileSystem_initIDs: this
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'initIDs()V'>
+
+    ^ self _java_io_UnixFileSystem_initIDs: this
+
+    "Modified: / 11-02-2014 / 19:54:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 _java_io_WinNTFileSystem_list: this _:a1
 
     <javanative: 'java/io/WinNTFileSystem' name: 'list(Ljava/io/File;)[Ljava/lang/String;'>
@@ -9063,6 +9409,42 @@
 
     "Modified: / 01-09-2011 / 21:46:37 / jv"
     "Modified: / 30-01-2013 / 14:17:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_WinNTFileSystem_rename0: this _: a1 _: a2
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'rename0(Ljava/io/File;Ljava/io/File;)Z'>
+
+    ^ self _java_io_UnixFileSystem_rename0: this _: a1 _: a2
+
+    "Modified (format): / 11-02-2014 / 20:09:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_WinNTFileSystem_setLastModifiedTime: this _: a1 _: a2 _: a3 
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'setLastModifiedTime(Ljava/io/File;J)Z'>
+
+    ^ self _java_io_UnixFileSystem_setLastModifiedTime: this _: a1 _: a2 _: a3
+
+    "Modified: / 03-02-2014 / 09:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_WinNTFileSystem_setPermission: this _: a1 _: a2 _: a3 _: a4
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'setPermission(Ljava/io/File;IZZ)Z'>
+
+    ^ self _java_io_UnixFileSystem_setPermission: this _: a1 _: a2 _: a3 _: a4
+
+    "Modified: / 11-02-2014 / 19:56:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_io_WinNTFileSystem_setReadOnly: this _: a1
+
+    <javanative: 'java/io/WinNTFileSystem' name: 'setReadOnly(Ljava/io/File;)Z'>
+
+    ^ self _java_io_UnixFileSystem_setReadOnly: this _: a1
+
+    "Modified: / 11-02-2014 / 19:56:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - java.lang'!
@@ -9091,8 +9473,10 @@
     jLibName := a1.
     libName := (Java as_ST_String: jLibName) asFilename baseName.
     (index := SimulatedNativeLibs indexOf: libName) ~~ 0 ifTrue: [
-        "/        ('JAVA: builtIn nativeLibLoad simulated: ' , libName) printNL.
-        nativeLoader instVarNamed: 'handle' put: index.
+        "/ Do not load pkcs11.so/dll - this is not supported yet
+        (libName ~= 'libj2pkcs11.so'  and:[libName ~= 'j2pkcs11.dll']) ifTrue:[
+            nativeLoader instVarNamed: 'handle' put: index.
+        ].
         ^ self
         "/ void
     ].
@@ -9126,6 +9510,7 @@
     "Modified: / 06-02-1998 / 03:12:17 / cg"
     "Created: / 10-12-2010 / 15:11:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 03-11-2011 / 18:25:08 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 23-09-2013 / 23:21:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_ClassLoader_NativeLibrary_unload: this
@@ -9149,13 +9534,34 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_java_lang_ClassLoader_defineClass0: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 
+
+    <javanative: 'java/lang/ClassLoader' name: 'defineClass0(Ljava/lang/String;[BIILjava/security/ProtectionDomain;Z)Ljava/lang/Class;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _java_lang_ClassLoader_defineClass1: this _:a1 _: a2 _: a3 _: a4 _: a5 _: a6
     <javanative: 'java/lang/ClassLoader' name: 'defineClass1(Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;'>
     "
      private native Class defineClass1(String name, byte[] b, int off, int len,
                                       ProtectionDomain pd, String source);"
 
-    | className  b  off  len  pd bs  cls |
+    ^ self
+        _java_lang_ClassLoader_defineClass1: this _:a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: 1"verify"
+
+    "Modified: / 22-04-2014 / 22:32:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_lang_ClassLoader_defineClass1: this _:a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: verify
+    <javanative: 'java/lang/ClassLoader' name: 'defineClass1(Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;Z)Ljava/lang/Class;'>
+    "
+     private native Class defineClass1(String name, byte[] b, int off, int len,
+                                      ProtectionDomain pd, String source,
+                                      Boolean verify);"
+
+    | className  b  off  len  pd bs cls |
+
     className := Java as_ST_String: a1.
     cls := nil.
     b := a2.
@@ -9164,6 +9570,7 @@
     len := a4.
     pd := a5.
     "/source := Java as_ST_String: a6.
+
     bs := (off = 0 and: [ len = b size ])
         ifTrue: [ b readStream ]
         ifFalse: [ bs := (b copyFrom: off + 1 to: off + len) readStream ].
@@ -9176,7 +9583,7 @@
     "if name starts with java.* or package is signed by something else and we are not signed, throw security exception"
     "ClassLoadersTest>>testEyeOpeningClassLoaderLoadObject"
     "18.11. mh revised - they really test it against java., totally ignoring boot class path.. That surpsised me"
-    (cls name startsWith: 'java/') ifTrue: [
+    (cls binaryName startsWith: 'java/') ifTrue: [
         JavaVM throwSecurityExceptionWith:'className=' , cls name
     ].
     self assert: cls classLoader == this.
@@ -9188,7 +9595,7 @@
 
     "Modified: / 08-12-2011 / 20:56:51 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
     "Modified: / 10-09-2012 / 22:21:22 / m"
-    "Modified: / 02-05-2013 / 10:00:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-04-2014 / 22:32:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_ClassLoader_defineClass2: this _: a1 _: a2 _: a3 _: a4 _: a5
@@ -9205,6 +9612,13 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_java_lang_ClassLoader_defineClass2: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+
+    <javanative: 'java/lang/ClassLoader' name: 'defineClass2(Ljava/lang/String;Ljava/nio/ByteBuffer;IILjava/security/ProtectionDomain;Ljava/lang/String;Z)Ljava/lang/Class;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _java_lang_ClassLoader_findBootstrapClass: this _:a1
     <javanative: 'java/lang/ClassLoader' name: 'findBootstrapClass(Ljava/lang/String;)Ljava/lang/Class;'>
     "Return class loaded by bootstrap (primordial) classloader or null.
@@ -9215,14 +9629,14 @@
     class := ClassRegistry
                 classForName: nm asSlashedJavaClassName
                 loader: nil
-                ifAbsentPut: [ class := JavaVM usePrimordialCLToLoadClassNamed: nm. ].
+                ifAbsentPut: [ class := JavaVM loadClassNamed: nm usingClassLoader: nil ].
 
     ^ class notNil
         ifTrue: [ Reflection javaClassObjectForClass: class ]
         ifFalse: [ JavaVM throwClassNotFoundException:nm ].
 
-    "Modified: / 30-10-2011 / 21:45:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 02-11-2011 / 20:13:41 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 14-09-2013 / 23:13:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_ClassLoader_findLoadedClass0: this _:a1
@@ -9331,51 +9745,97 @@
     "Created: / 24-11-2010 / 08:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_lang_Class_forName0: this _:a1 _: a2 _: a3
+_java_lang_Class_forName0: this _: classname _: initialize _: loader
     <javanative: 'java/lang/Class' name: 'forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;'>
-    |nm initialize loader class descriptor|
-
-    nm := Java as_ST_String:a1.
-     "Using Class.forName() to get a primitive type is not allowed"
+
+    | nm nmAsJavaString dim class classObject  |
+
+    nmAsJavaString := classname.
+    nm := Java as_ST_String:classname.
+    "/ Using Class.forName() to get a primitive type is not allowed"
     (nm size == 1 and:[JavaDescriptor baseTypes includesKey:nm first]) ifTrue:[
         ^ JavaVM throwClassNotFoundException:nm.
     ].
     (JavaDescriptor baseTypesByTypeName includesKey:nm) ifTrue:[
         ^ JavaVM throwClassNotFoundException:nm.
     ].
-    initialize := a2.
-    loader := a3.
-
-    (nm first == $[) ifTrue:[
-    JavaClassReader classLoaderQuerySignal answer:loader do:[
-        |nms|
-
-        nms := nm readStream.
-        descriptor := JavaDescriptor readFrom:nms
-                    onError:[^ JavaVM throwClassNotFoundException:nm].
-        nms atEnd ifFalse:[
-            ^ JavaVM throwClassNotFoundException:nm
-        ].
-        class := descriptor javaClass.
-    ].
-    ] ifFalse:[
-        class := JavaVM classForName:nm definedBy: loader.
-    ].
-
-
-    class isNil ifTrue:[
-        ^ JavaVM throwClassNotFoundException:nm
-    ].
-    ((initialize ~~ 0)
-        and:[class isJavaArrayClass not and:[class isJavaPrimitiveType not]])
+
+    "/ Could be array type, check and compute dimension\
+    dim := 0.
+    [ dim < nm size and:[(nm at: dim + 1) == $[] ] whileTrue:[ dim := dim + 1 ].
+    "/ Check for malformed class name (like "[[[")
+    dim = nm size ifTrue:[
+        JavaVM throwClassNotFoundException:nm.
+        ^ nil
+    ].
+    dim > 0 ifTrue:[
+        (nm at: dim + 1) == $L ifTrue:[
+            "/ Reference type array...
+            nm last ~~ $; ifTrue:[
+                JavaVM throwClassNotFoundException:nm.
+                ^ nil
+            ].
+            (dim + 2) >= (nm size - 1) ifTrue:[
+                JavaVM throwClassNotFoundException:nm.
+                ^ nil
+            ].
+            nm := nm copyFrom: dim + 2 to: nm size - 1.
+            nmAsJavaString := Java as_String: nm.
+        ] ifFalse:[
+            "/ Primitive type array
+            nm size ~~ (dim + 1) ifTrue:[
+                JavaVM throwClassNotFoundException:nm.
+                ^ nil
+            ].
+            class := JavaDescriptor baseTypes at: nm last ifAbsent:[
+                JavaVM throwClassNotFoundException:nm.
+                ^ nil
+            ].
+            dim timesRepeat: [ class := class javaArrayClass ].
+            ^ JavaVM javaClassObjectForClass:class.
+        ].
+    ].
+
+    loader isNil ifTrue:[
+        "/OK. return class loaded by primordial class loader
+
+        class :=  JavaVM classForName: nm definedBy: nil.
+        class isNil ifTrue:[ ^ JavaVM throwClassNotFoundException:nm ].
+        ((initialize ~~ 0)
+            and:[class isJavaArrayClass not
+            and:[class isJavaPrimitiveType not]])
             ifTrue:[
-                [class classInit] on:Error do:[self throwExceptionInInitializerError:nm]
+                "/JV: Should be removed/rewieved once bug #47 is closed.
+                [ class classInit ] on: Error do:[ self throwExceptionInInitializerError:nm ]
             ].
-    ^ JavaVM javaClassObjectForClass:class.
+        dim timesRepeat: [ class := class javaArrayClass ].
+        classObject := JavaVM javaClassObjectForClass:class.
+    ] ifFalse:[
+        "/ Custom class loader, call loadClass(String, boolean)...
+        classObject :=  loader
+                            perform:#'loadClass(Ljava/lang/String;Z)Ljava/lang/Class;'
+                            with: nmAsJavaString
+                            with: initialize.
+        dim > 0 ifTrue:[
+            class := JavaVM classForJavaClassObject:classObject.
+            dim timesRepeat: [ class := class javaArrayClass ].
+            classObject := JavaVM javaClassObjectForClass:class.
+        ].
+    ].
+    ^ classObject
 
     "Created: / 24-11-2010 / 09:03:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 02-11-2011 / 19:12:43 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 07-05-2013 / 12:18:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-11-2013 / 23:02:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_lang_Class_forName0: this _: classname _: initialize _: loader _: caller
+
+    <javanative: 'java/lang/Class' name: 'forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class;'>
+
+    ^ self _java_lang_Class_forName0: this _: classname _: initialize _: loader
+
+    "Modified: / 04-11-2014 / 09:16:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getClassLoader0: this
@@ -9399,15 +9859,14 @@
         |cls|
 
     cls := Reflection classForJavaClassObject:this.
-    cls isJavaPrimitiveType ifTrue:[
-        self breakPoint:#jv.
-        ^ nil
-    ].
-    ^ Reflection javaClassObjectForClass:cls javaComponentClass
+    cls isJavaArrayClass ifTrue:[
+        ^ Reflection javaClassObjectForClass:cls javaComponentClass
+    ].
+    ^ nil
 
     "Created: / 12-11-1998 / 18:54:46 / cg"
-    "Modified: / 20-12-2010 / 22:56:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-01-2011 / 15:18:59 / Marcel Hlopko <hlopik@gmail.com>"
+    "Modified: / 08-11-2013 / 23:05:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getConstantPool: this
@@ -9432,18 +9891,13 @@
 
     <javanative: 'java/lang/Class' name: 'getDeclaredClasses0()[Ljava/lang/Class;'>
 
-    | class innerPrefix inners |
+    | class inners |
     class := Reflection classForJavaClassObject: this.
-    innerPrefix := class name , '$'.
-    inners := Set new.
-    JAVA allClassesDo:[:cls|
-        ((cls name startsWith: innerPrefix) and:[(cls name indexOf: $$ startingAt: innerPrefix size) == 0]) ifTrue:[
-            inners add: (Reflection javaClassObjectForClass: cls)
-        ].
-    ].
-    ^(Java at: 'java.lang.Class') javaArrayClass withAll: inners
+    inners := class innerClasses.
+    ^inners collect: [:cls | Reflection javaClassObjectForClass: cls] as: (Java at: 'java.lang.Class') javaArrayClass
 
     "Created: / 19-01-2013 / 23:41:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-08-2014 / 17:00:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getDeclaredConstructors0: this _:a1
@@ -9494,8 +9948,8 @@
     "Modified: / 01-08-2012 / 11:15:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_lang_Class_getDeclaringClass: this
-    <javanative: 'java/lang/Class' name: 'getDeclaringClass()Ljava/lang/Class;'>
+_java_lang_Class_getDeclaringClass0: this
+    <javanative: 'java/lang/Class' name: 'getDeclaringClass0()Ljava/lang/Class;'>
     "
      /**
      * If the class or interface represented by this {@code Class} object
@@ -9509,26 +9963,55 @@
      * @since JDK1.1
      */"
 
-    | cls  enclosingClsName  enclosingCls |
+    | cls declaringClass |
 
     cls := Reflection classForJavaClassObject: this.
     (cls isJavaPrimitiveType or: [ cls isJavaArrayClass ]) ifTrue: [ ^ nil ].
-    (cls name includes: $$) ifFalse: [ ^ nil ].
-    enclosingClsName := cls name copyTo: (cls name lastIndexOf: $$) - 1.
-    enclosingCls := JavaVM classForName:enclosingClsName definedBy:nil.
-    enclosingCls isNil ifTrue: [ self error: 'Cannot fins declaring class' ].
-    ^ Reflection javaClassObjectForClass: enclosingCls
-
-    "Modified: / 13-08-2011 / 02:01:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    declaringClass := cls declaringClass.
+    declaringClass notNil ifTrue:[
+        ^ Reflection javaClassObjectForClass: declaringClass
+    ].
+    ^ nil
+
+    "Modified: / 04-08-2014 / 22:54:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_lang_Class_getDeclaringClass: this
+    <javanative: 'java/lang/Class' name: 'getDeclaringClass()Ljava/lang/Class;'>
+
+    ^ self _java_lang_Class_getDeclaringClass0: this
+
+    "Modified: / 04-08-2014 / 22:39:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getEnclosingMethod0: this
 
     <javanative: 'java/lang/Class' name: 'getEnclosingMethod0()[Ljava/lang/Object;'>
 
-    ^nil "/Not true"
-
-    "Modified: / 14-08-2011 / 20:05:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Returns an Object[3]:
+        info[0] =  enclosing class as Class
+        ifno[1] = enclosing method name as String
+        info[2] = enclosing method descriptor as String
+
+    or nil if there's no enclosing method attribute.
+    "
+
+    | cls attr info|
+
+    info := nil.
+    cls := JavaVM reflection classForJavaClassObject: this.
+    attr := cls getAttribute: #EnclosingMethod.
+    attr notNil ifTrue:[ 
+        info := _java_lang_Object_CLASS javaArrayClass new: 3.
+        info at: 1 put: (JavaVM reflection javaClassObjectForClass: ((cls constantPool at: attr first) resolve: false)).
+        attr second ~~ 0 ifTrue:[ 
+            info at: 2 put: (Java as_String: (cls constantPool at: attr second) name).
+            info at: 3 put: (Java as_String: (cls constantPool at: attr second) descriptor).
+        ].
+    ].
+    ^ info.
+
+    "Modified: / 03-12-2014 / 13:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getGenericSignature: this
@@ -9555,13 +10038,13 @@
     jClass := this.
     cls := Reflection classForJavaClassObject:jClass.
     interfaces := cls javaMirror getInterfaces.
-    jInterfaces := (JavaVM classForName:'java.lang.Class' definedBy:nil) javaArrayClass new:interfaces size.
+    jInterfaces := _java_lang_Class_CLASS javaArrayClass new:interfaces size.
     interfaces
         withIndexDo:[:iface :idx | jInterfaces at:idx put:(Reflection javaClassObjectForClass:iface) ].
     ^ jInterfaces
 
     "Modified: / 28-01-2011 / 15:19:11 / Marcel Hlopko <hlopik@gmail.com>"
-    "Modified: / 22-08-2012 / 11:08:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:25:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getModifiers: this
@@ -9690,53 +10173,52 @@
     "Modified: / 28-01-2011 / 15:19:24 / Marcel Hlopko <hlopik@gmail.com>"
 !
 
-_java_lang_Class_isAssignableFrom: this _:a1
-
+_java_lang_Class_isAssignableFrom:this _:a1 
     <javanative: 'java/lang/Class' name: 'isAssignableFrom(Ljava/lang/Class;)Z'>
-
-        "
-    /**
-     * Determines if the class or interface represented by this
-     * {@code Class} object is either the same as, or is a superclass or
-     * superinterface of, the class or interface represented by the specified
-     * {@code Class} parameter. It returns {@code true} if so;
-     * otherwise it returns {@code false}. If this {@code Class}
-     * object represents a primitive type, this method returns
-     * {@code true} if the specified {@code Class} parameter is
-     * exactly this {@code Class} object; otherwise it returns
-     * {@code false}.
-     *
-     * <p> Specifically, this method tests whether the type represented by the
-     * specified {@code Class} parameter can be converted to the type
-     * represented by this {@code Class} object via an identity conversion
-     * or via a widening reference conversion. See <em>The Java Language
-     * Specification</em>, sections 5.1.1 and 5.1.4 , for details.
-     *
-     * @param cls the {@code Class} object to be checked
-     * @return the {@code boolean} value indicating whether objects of the
-     * type {@code cls} can be assigned to objects of this class
-     * @exception NullPointerException if the specified Class parameter is
-     *            null.
-     * @since JDK1.1
-     */
-    "
-    | clsObj me other |
+    "
+/**
+ * Determines if the class or interface represented by this
+ * {@code Class} object is either the same as, or is a superclass or
+ * superinterface of, the class or interface represented by the specified
+ * {@code Class} parameter. It returns {@code true} if so;
+ * otherwise it returns {@code false}. If this {@code Class}
+ * object represents a primitive type, this method returns
+ * {@code true} if the specified {@code Class} parameter is
+ * exactly this {@code Class} object; otherwise it returns
+ * {@code false}.
+ *
+ * <p> Specifically, this method tests whether the type represented by the
+ * specified {@code Class} parameter can be converted to the type
+ * represented by this {@code Class} object via an identity conversion
+ * or via a widening reference conversion. See <em>The Java Language
+ * Specification</em>, sections 5.1.1 and 5.1.4 , for details.
+ *
+ * @param cls the {@code Class} object to be checked
+ * @return the {@code boolean} value indicating whether objects of the
+ * type {@code cls} can be assigned to objects of this class
+ * @exception NullPointerException if the specified Class parameter is
+ *            null.
+ * @since JDK1.1
+ */"
+    
+    | clsObj  me  other |
+
     clsObj := a1.
-    clsObj ifNil:[^JavaVM throwNullPointerException].
-    me := Reflection classForJavaClassObject: this.
-    other := Reflection classForJavaClassObject: clsObj.
-
+    clsObj isNil ifTrue:[
+        ^ JavaVM throwNullPointerException
+    ].
+    me := Reflection classForJavaClassObject:this.
+    other := Reflection classForJavaClassObject:clsObj.
+    
     "/    Determines if the class or interface represented by this
     "/    @code Class} object is either the same as, or is a superclass or
     "/    superinterface of, the class or interface represented by the specified
     "/    {@code Class} parameter.
-
-    ^(other includesBehavior: me)
-        ifTrue:[1]
-        ifFalse:[0]
+    
+    ^ (other includesBehavior:me) ifTrue:[ 1 ] ifFalse:[ 0 ]
 
     "Created: / 12-11-1998 / 18:54:16 / cg"
-    "Modified: / 05-02-2011 / 23:38:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-08-2014 / 15:55:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_isInstance: this _:a1
@@ -9837,10 +10319,10 @@
 
     <javanative: 'java/lang/Class' name: 'registerNatives()V'>
 
-
      "Nothing to do, native method are bound lazily"
 
     "Created: / 20-10-2010 / 11:13:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:44:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_setProtectionDomain0: this _: a1
@@ -9919,7 +10401,7 @@
     "Modified: / 09-02-2012 / 22:56:37 / mh <hlopik@gmail.com>"
 !
 
-_java_lang_Double_doubleToRawLongBits: this _:a1 _: a2
+_java_lang_Double_doubleToRawLongBits: this _: d _: ignored
 
     <javanative: 'java/lang/Double' name: 'doubleToRawLongBits(D)J'>
 
@@ -9961,76 +10443,78 @@
      * @since 1.3
      */
     "
-      | f b |
-    f := a1.
-    (f =  0.0) ifTrue:[^0].
-    (f = -0.0) ifTrue:[^(1 bitShift: 63)].
-
-    b := ByteArray streamContents:[:s|Float storeBinaryIEEEDouble:f on:s MSB: UninterpretedBytes isBigEndian].
-    ^ LargeInteger digitBytes: b MSB: UninterpretedBytes isBigEndian.
-
-
-"/    | f |
-"/    f := nativeContext argAt:1.
-"/    f class == Float ifFalse:[ ^self throwIllegalArgumentException: 'Not a float'].
-"/%{
-"/    __int64__ *i = &(__floatVal(f));
-"/    RETURN (__MKINT64( i ));
-"/%}.
-"/    self primitiveFailed.
+"/      | b |
+"/
+"/    (d =  0.0) ifTrue:[^0].
+"/    (d = -0.0) ifTrue:[^(1 bitShift: 63)].
+"/
+"/    b := ByteArray streamContents:[:s|Float storeBinaryIEEEDouble:d on:s MSB: UninterpretedBytes isBigEndian].
+"/    ^ LargeInteger digitBytes: b MSB: UninterpretedBytes isBigEndian.
+
+
+"/    d class == Float ifFalse:[ ^self throwIllegalArgumentException: 'Not a double'].
+%{
+    union {
+        double dbl;
+        __int64__ l;
+    } u;
+    u.dbl = __floatVal(d);
+    RETURN ( __MKINT64( &(u.l) ) );
+%}.
+    self primitiveFailed.
 
     "Created: / 10-11-2010 / 14:48:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-12-2012 / 23:23:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-_java_lang_Double_longBitsToDouble: this _:a1 _: a2
+    "Modified: / 14-11-2013 / 00:09:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+!
+
+_java_lang_Double_longBitsToDouble: this _:i _: a2
 
     <javanative: 'java/lang/Double' name: 'longBitsToDouble(J)D'>
 
-    |i aFloat|
-
-    i := a1.
-
-    aFloat := Float new.
-    UninterpretedBytes isBigEndian ifTrue:[
-        aFloat basicAt:1 put:((i bitShift:-56) bitAnd:16rFF).
-        aFloat basicAt:2 put:((i bitShift:-48) bitAnd:16rFF).
-        aFloat basicAt:3 put:((i bitShift:-40) bitAnd:16rFF).
-        aFloat basicAt:4 put:((i bitShift:-32) bitAnd:16rFF).
-        aFloat basicAt:5 put:((i bitShift:-24) bitAnd:16rFF).
-        aFloat basicAt:6 put:((i bitShift:-16) bitAnd:16rFF).
-        aFloat basicAt:7 put:((i bitShift:-8) bitAnd:16rFF).
-        aFloat basicAt:8 put:(i bitAnd:16rFF).
-    ] ifFalse:[
-        aFloat basicAt:1 put:(i bitAnd:16rFF).
-        aFloat basicAt:2 put:((i bitShift:-8) bitAnd:16rFF).
-        aFloat basicAt:3 put:((i bitShift:-16) bitAnd:16rFF).
-        aFloat basicAt:4 put:((i bitShift:-24) bitAnd:16rFF).
-        aFloat basicAt:5 put:((i bitShift:-32) bitAnd:16rFF).
-        aFloat basicAt:6 put:((i bitShift:-40) bitAnd:16rFF).
-        aFloat basicAt:7 put:((i bitShift:-48) bitAnd:16rFF).
-        aFloat basicAt:8 put:((i bitShift:-56) bitAnd:16rFF).
-    ].
-
-    ^ aFloat.
-
-
-"/    | i f|
+"/    | aFloat|
 "/
-"/    i := nativeContext argAt:1.
-"/    f := Float new.
-"/%{
-"/    long long l;
-"/    l = __longIntVal(i);
-"/    double *d = &l;
-"/    __floatVal(f) = *d;
-"/%}.
-"/    ^f
-
-    "Modified: / 16-12-2012 / 23:24:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-_java_lang_Float_floatToRawIntBits: this _:a1
+"/    aFloat := Float new.
+"/    UninterpretedBytes isBigEndian ifTrue:[
+"/        aFloat basicAt:1 put:((i bitShift:-56) bitAnd:16rFF).
+"/        aFloat basicAt:2 put:((i bitShift:-48) bitAnd:16rFF).
+"/        aFloat basicAt:3 put:((i bitShift:-40) bitAnd:16rFF).
+"/        aFloat basicAt:4 put:((i bitShift:-32) bitAnd:16rFF).
+"/        aFloat basicAt:5 put:((i bitShift:-24) bitAnd:16rFF).
+"/        aFloat basicAt:6 put:((i bitShift:-16) bitAnd:16rFF).
+"/        aFloat basicAt:7 put:((i bitShift:-8) bitAnd:16rFF).
+"/        aFloat basicAt:8 put:(i bitAnd:16rFF).
+"/    ] ifFalse:[
+"/        aFloat basicAt:1 put:(i bitAnd:16rFF).
+"/        aFloat basicAt:2 put:((i bitShift:-8) bitAnd:16rFF).
+"/        aFloat basicAt:3 put:((i bitShift:-16) bitAnd:16rFF).
+"/        aFloat basicAt:4 put:((i bitShift:-24) bitAnd:16rFF).
+"/        aFloat basicAt:5 put:((i bitShift:-32) bitAnd:16rFF).
+"/        aFloat basicAt:6 put:((i bitShift:-40) bitAnd:16rFF).
+"/        aFloat basicAt:7 put:((i bitShift:-48) bitAnd:16rFF).
+"/        aFloat basicAt:8 put:((i bitShift:-56) bitAnd:16rFF).
+"/    ].
+"/
+"/    ^ aFloat.
+
+
+    | f |
+
+    f := Float new.
+%{
+    union {
+        double dbl;
+        __int64__ l;
+    } u;
+    __signedLong64IntVal(i, &(u.l));
+    __floatVal(f) = u.dbl;
+%}.
+    ^f
+
+    "Modified: / 14-11-2013 / 20:05:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_lang_Float_floatToRawIntBits: this _:f
 
     <javanative: 'java/lang/Float' name: 'floatToRawIntBits(F)I'>
 
@@ -10071,50 +10555,57 @@
      * @since 1.3
      */
     "
-    | f b |
-    f := a1.
-    f class == ShortFloat ifFalse:[ Reflection throwIllegalArgumentException:'Not a float'].
 %{
-        int *ival = &__shortFloatVal(f);
-        RETURN (__MKINT(*ival));
+    union {
+        float flt;
+        INT i;
+    } u;
+    u.flt = __shortFloatVal(f);
+    RETURN ( __MKINT( u.i ) );
 %}.
     self primitiveFailed.
 
     "Created: / 09-11-2010 / 20:59:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-12-2012 / 11:16:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-_java_lang_Float_intBitsToFloat: this _:a1
+    "Modified: / 14-11-2013 / 23:11:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_java_lang_Float_intBitsToFloat: this _: ii
 
     <javanative: 'java/lang/Float' name: 'intBitsToFloat(I)F'>
 
-    | i f|
-
-    i := a1.
-    f := ShortFloat new.
+    | ff |
+
+    ff := ShortFloat new.
 %{
-    int ival = __intVal(i);
-    float *fval = &ival;
-    __shortFloatVal(f) = *fval;
+    union {
+        float flt;
+        INT i;
+    } u;
+    u.i = __signedLongIntVal(ii);
+    __shortFloatVal(ff) = u.flt;
 %}.
-    ^f
-
-    "Modified: / 16-12-2012 / 10:39:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    ^ff
+
+    "Modified: / 14-11-2013 / 23:07:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Object_clone: this
 
     <javanative: 'java/lang/Object' name: 'clone()Ljava/lang/Object;'>
 
-        "clone an object"
-
-    |o rslt|
-
-    o := this.
-    rslt := o shallowCopy.
-    ^ rslt
-
-    "Created: / 4.1.1998 / 19:39:26 / cg"
+    "clone an object"
+
+    | cls |
+
+    cls := this class.
+    cls isCloneable == false ifTrue:[
+        JavaVM throwCloneNotSupportedException.
+        ^ nil.
+    ].
+    ^ this shallowCopy.
+
+    "Created: / 04-01-1998 / 19:39:26 / cg"
+    "Modified: / 12-11-2013 / 02:03:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Object_getClass: this
@@ -10170,12 +10661,10 @@
 _java_lang_Object_registerNatives: this
 
     <javanative: 'java/lang/Object' name: 'registerNatives()V'>
-
-
     "Nothing to do, native method are bound lazily"
 
     "Created: / 19-10-2010 / 12:42:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 20-10-2010 / 10:57:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:44:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Object_wait: this _:a1 _: a2
@@ -10399,14 +10888,14 @@
         ctx := ctx sender.
     ].
 
-    jclasses := (JavaVM classForName:'java.lang.Class' definedBy:nil) javaArrayClass new: classes size.
+    jclasses := _java_lang_Class_CLASS javaArrayClass new: classes size.
     1 to: classes size do:[:i|
         jclasses at: i put: (Reflection javaClassObjectForClass: (classes at: i)).
     ].
     ^jclasses
 
     "Created: / 12-11-1998 / 18:56:06 / cg"
-    "Modified: / 15-11-2011 / 00:27:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:25:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Shutdown_halt0: this _:a1
@@ -10429,70 +10918,65 @@
 
     <javanative: 'java/lang/StrictMath' name: 'IEEEremainder(DD)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_lang_StrictMath_acos: this _: a1
-
-    <javanative: 'java/lang/StrictMath' name: 'acos(D)D'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jremainder ( double , double );
+    RETURN ( __MKFLOAT( jremainder ( __floatVal ( a1 ) , __floatVal ( a3 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_acos: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'acos(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_lang_StrictMath_asin: this _: a1
-
-    <javanative: 'java/lang/StrictMath' name: 'asin(D)D'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jacos ( double );
+    RETURN ( __MKFLOAT( jacos ( __floatVal ( a1 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_asin: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'asin(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_lang_StrictMath_atan2: this _: a1 _: a2 _: a3
-
-    <javanative: 'java/lang/StrictMath' name: 'atan2(DD)D'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jasin ( double );
+    RETURN ( __MKFLOAT( jasin ( __floatVal ( a1 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_atan2: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'java/lang/StrictMath' name: 'atan2(DD)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_lang_StrictMath_atan: this _: a1
-
-    <javanative: 'java/lang/StrictMath' name: 'atan(D)D'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jatan2 ( double , double );
+    RETURN ( __MKFLOAT( jatan2 ( __floatVal ( a1 ) , __floatVal ( a3 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_atan: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'atan(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jatan ( double );
+    RETURN ( __MKFLOAT( jatan ( __floatVal ( a1 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_cbrt: this _:a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'cbrt(D)D'>
 
-    ^ JavaMathSupport cbrt: a1
+%{
+    extern double jcbrt ( double );
+    RETURN ( __MKFLOAT( jcbrt ( __floatVal ( a1 ) ) ) );
+%}
 
     "Modified: / 07-09-2011 / 17:34:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10501,7 +10985,10 @@
 
     <javanative: 'java/lang/StrictMath' name: 'ceil(D)D'>
 
-    ^ a1 ceiling
+%{
+    extern double jceil ( double );
+    RETURN ( __MKFLOAT( jceil ( __floatVal ( a1 ) ) ) );
+%}
 
     "Modified: / 21-08-2012 / 18:01:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10510,7 +10997,11 @@
 
     <javanative: 'java/lang/StrictMath' name: 'cos(D)D'>
 
-    ^ JavaMathSupport cos: a1
+%{
+    extern double jcos ( double );
+    RETURN ( __MKFLOAT( jcos ( __floatVal ( a1 ) ) ) );
+%}
+
 
     "Modified: / 07-09-2011 / 17:34:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10519,33 +11010,10 @@
 
     <javanative: 'java/lang/StrictMath' name: 'cosh(D)D'>
 
-    "
-    /**
-     * Returns the hyperbolic cosine of a {@code double} value.
-     * The hyperbolic cosine of <i>x</i> is defined to be
-     * (<i>e<sup>x</sup>&nbsp;+&nbsp;e<sup>-x</sup></i>)/2
-     * where <i>e</i> is {@linkplain Math#E Euler's number}.
-     *
-     * <p>Special cases:
-     * <ul>
-     *
-     * <li>If the argument is NaN, then the result is NaN.
-     *
-     * <li>If the argument is infinite, then the result is positive
-     * infinity.
-     *
-     * <li>If the argument is zero, then the result is {@code 1.0}.
-     *
-     * </ul>
-     *
-     * @param   x The number whose hyperbolic cosine is to be returned.
-     * @return  The hyperbolic cosine of {@code x}.
-     * @since 1.5
-     */
-    public static native double cosh(double x);
-    "
-
-    ^JavaMathSupport cosh: a1
+%{
+    extern double jcosh ( double );
+    RETURN ( __MKFLOAT( jcosh ( __floatVal ( a1 ) ) ) );
+%}
 
     "Modified: / 06-09-2011 / 19:25:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10554,15 +11022,20 @@
 
     <javanative: 'java/lang/StrictMath' name: 'exp(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jexp ( double );
+    RETURN ( __MKFLOAT( jexp ( __floatVal ( a1 ) ) ) );
+%}
 !
 
 _java_lang_StrictMath_expm1: this _:a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'expm1(D)D'>
 
-    ^ JavaMathSupport expm1: a1
-
+%{
+    extern double jexpm1 ( double );
+    RETURN ( __MKFLOAT( jexpm1 ( __floatVal ( a1 ) ) ) );
+%}
     "Modified: / 07-09-2011 / 17:34:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
@@ -10570,8 +11043,10 @@
 
     <javanative: 'java/lang/StrictMath' name: 'floor(D)D'>
 
-   ^ JavaMathSupport floor: a1
-
+%{
+    extern double jfloor ( double );
+    RETURN ( __MKFLOAT( jfloor ( __floatVal ( a1 ) ) ) );
+%}
     "Modified: / 07-09-2011 / 17:33:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
@@ -10579,42 +11054,52 @@
 
     <javanative: 'java/lang/StrictMath' name: 'hypot(DD)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jhypot ( double, double );
+    RETURN ( __MKFLOAT( jhypot ( __floatVal ( a1 ) , __floatVal ( a3 ) ) ) );
+%}
 !
 
 _java_lang_StrictMath_log10: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'log10(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jlog10 ( double );
+    RETURN ( __MKFLOAT( jlog10 ( __floatVal ( a1 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_log1p: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'log1p(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_lang_StrictMath_log: this _: a1
-
-    <javanative: 'java/lang/StrictMath' name: 'log(D)D'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jlog1p ( double );
+    RETURN ( __MKFLOAT( jlog1p ( __floatVal ( a1 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_log: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'log(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jlog ( double );
+    RETURN ( __MKFLOAT( jlog ( __floatVal ( a1 ) ) ) );
+%}
 !
 
 _java_lang_StrictMath_pow: this _:a1 _: a2 _: a3 _: a4
 
     <javanative: 'java/lang/StrictMath' name: 'pow(DD)D'>
 
-    ^JavaMathSupport pow: a1 to: a3
+%{
+    extern double jpow ( double, double );
+    RETURN ( __MKFLOAT( jpow ( __floatVal ( a1 ) , __floatVal ( a3 ) ) ) );
+%}
 
     "Modified: / 07-09-2011 / 17:33:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10623,7 +11108,10 @@
 
     <javanative: 'java/lang/StrictMath' name: 'sin(D)D'>
 
-    ^ JavaMathSupport sin: a1
+%{
+    extern double jsin ( double );
+    RETURN ( __MKFLOAT( jsin ( __floatVal ( a1 ) ) ) );
+%}
 
     "Modified: / 08-02-2013 / 10:49:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10632,35 +11120,10 @@
 
     <javanative: 'java/lang/StrictMath' name: 'sinh(D)D'>
 
-    "
-    /**
-     * Returns the hyperbolic sine of a {@code double} value.
-     * The hyperbolic sine of <i>x</i> is defined to be
-     * (<i>e<sup>x</sup>&nbsp;-&nbsp;e<sup>-x</sup></i>)/2
-     * where <i>e</i> is {@linkplain Math#E Euler's number}.
-     *
-     * <p>Special cases:
-     * <ul>
-     *
-     * <li>If the argument is NaN, then the result is NaN.
-     *
-     * <li>If the argument is infinite, then the result is an infinity
-     * with the same sign as the argument.
-     *
-     * <li>If the argument is zero, then the result is a zero with the
-     * same sign as the argument.
-     *
-     * </ul>
-     *
-     * @param   x The number whose hyperbolic sine is to be returned.
-     * @return  The hyperbolic sine of {@code x}.
-     * @since 1.5
-     */
-    public static native double sinh(double x);
-
-    "
-
-    ^ JavaMathSupport sinh: a1
+ %{
+    extern double jsinh ( double );
+    RETURN ( __MKFLOAT( jsinh ( __floatVal ( a1 ) ) ) );
+%}
 
     "Modified: / 06-09-2011 / 19:36:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 07-09-2011 / 17:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -10670,7 +11133,10 @@
 
     <javanative: 'java/lang/StrictMath' name: 'sqrt(D)D'>
 
-    ^a1 sqrt
+%{
+    extern double jsqrt ( double );
+    RETURN ( __MKFLOAT( jsqrt ( __floatVal ( a1 ) ) ) );
+%}
 
     "Modified: / 17-07-2012 / 20:53:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10679,46 +11145,20 @@
 
     <javanative: 'java/lang/StrictMath' name: 'tan(D)D'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+%{
+    extern double jtan ( double );
+    RETURN ( __MKFLOAT( jtan ( __floatVal ( a1 ) ) ) );
+%}
+
 !
 
 _java_lang_StrictMath_tanh: this _:a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'tanh(D)D'>
-    "
-    /**
-     * Returns the hyperbolic tangent of a {@code double} value.
-     * The hyperbolic tangent of <i>x</i> is defined to be
-     * (<i>e<sup>x</sup>&nbsp;-&nbsp;e<sup>-x</sup></i>)/(<i>e<sup>x</sup>&nbsp;+&nbsp;e<sup>-x</sup></i>),
-     * in other words, {@linkplain Math#sinh
-     * sinh(<i>x</i>)}/{@linkplain Math#cosh cosh(<i>x</i>)}.  Note
-     * that the absolute value of the exact tanh is always less than
-     * 1.
-     *
-     * <p>Special cases:
-     * <ul>
-     *
-     * <li>If the argument is NaN, then the result is NaN.
-     *
-     * <li>If the argument is zero, then the result is a zero with the
-     * same sign as the argument.
-     *
-     * <li>If the argument is positive infinity, then the result is
-     * {@code +1.0}.
-     *
-     * <li>If the argument is negative infinity, then the result is
-     * {@code -1.0}.
-     *
-     * </ul>
-     *
-     * @param   x The number whose hyperbolic tangent is to be returned.
-     * @return  The hyperbolic tangent of {@code x}.
-     * @since 1.5
-     */
-    public static native double tanh(double x);
-    "
-
-    ^ JavaMathSupport tanh: a1
+%{
+    extern double jtanh ( double );
+    RETURN ( __MKFLOAT( jtanh ( __floatVal ( a1 ) ) ) );
+%}
 
     "Modified: / 07-09-2011 / 17:32:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10857,7 +11297,7 @@
 
     <javanative: 'java/lang/System' name: 'initProperties(Ljava/util/Properties;)Ljava/util/Properties;'>
 
-        |props stProps|
+    |props stProps|
 
     props := a1.
     stProps := JavaVM systemProperties.
@@ -10892,6 +11332,9 @@
     name := Java as_ST_String: a1.
 
     OperatingSystem isUNIXlike ifTrue:[
+        OperatingSystem isOSXlike ifTrue:[
+            ^Java as_String: ('lib' , name , '.jnilib').
+        ].
         ^Java as_String: ('lib' , name , '.so').
     ].
 
@@ -10917,11 +11360,10 @@
 _java_lang_System_registerNatives: this
 
     <javanative: 'java/lang/System' name: 'registerNatives()V'>
-
-
     "Nothing to do, native method are bound lazily"
 
     "Created: / 20-10-2010 / 10:56:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:44:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_System_setErr0: this _:a1
@@ -10985,14 +11427,14 @@
     | t  p nctx |
     p := Processor activeProcess.
     t := JavaVM javaThreadForSTProcess: p.
-    (nctx := self nativeContext) sender receiver class name
-        = 'java/util/concurrent/locks/ReentrantLock$NonfairSync'
-            ifTrue: [
-                | owner |
-                owner := (nctx sender receiver
-                            perform: #'getExclusiveOwnerThread()Ljava/lang/Thread;').
-                (owner notNil and: [ owner ~= t ]) ifTrue: [ self breakPoint: #mh. ]
-            ].
+"/    (nctx := self nativeContext) sender receiver class name
+"/        = 'java/util/concurrent/locks/ReentrantLock$NonfairSync'
+"/            ifTrue: [
+"/                | owner |
+"/                owner := (nctx sender receiver
+"/                            perform: #'getExclusiveOwnerThread()Ljava/lang/Thread;').
+"/                (owner notNil and: [ owner ~= t ]) ifTrue: [ self breakPoint: #mh. ]
+"/            ].
     t notNil ifTrue: [ ^ t ].
     t := JavaVM newThread: p name.
     t instVarNamed: 'tid' put: p id.
@@ -11128,6 +11570,13 @@
     "Modified: / 6.2.1998 / 02:15:08 / cg"
 !
 
+_java_lang_Thread_setNativeName: this _: a1 
+
+    <javanative: 'java/lang/Thread' name: 'setNativeName(Ljava/lang/String;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _java_lang_Thread_setPriority0: this _:a1
 
     <javanative: 'java/lang/Thread' name: 'setPriority0(I)V'>
@@ -11155,9 +11604,7 @@
     | millis |
     millis := a1.
     millis < 0 ifTrue: [
-        Reflection
-    throwIllegalArgumentException:('negative timeout: %1 in Thread.sleep'
-            bindWith:millis)
+        JavaVM throwIllegalArgumentException:('negative timeout: %1 in Thread.sleep' bindWith:millis)
     ].
     Logger
         log: ('%1 going to sleep for %2'
@@ -11169,7 +11616,7 @@
 
     "Modified: / 08-01-1999 / 16:42:52 / cg"
     "Modified: / 30-11-2011 / 13:58:36 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 16-01-2013 / 19:49:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-11-2013 / 22:55:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Thread_start0: this
@@ -11295,7 +11742,7 @@
             "/ cleanup ...
             list add: con shallowCopy
         ].
-        con := con sender
+        con := nil"/con sender
     ].
     exceptionObject instVarNamed: 'backtrace' put: (list asArray).
     ^ nil.
@@ -11396,25 +11843,33 @@
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - java.lang.reflect'!
 
-_java_lang_reflect_Array_get: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'get(Ljava/lang/Object;I)Ljava/lang/Object;'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_lang_reflect_Array_get: this _: a1 _: a2
+_java_lang_reflect_Array_get: this _: arr _: idx
 
     <javanative: 'java/lang/reflect/Array' name: 'get(Ljava/lang/Object;I)Ljava/lang/Object;'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
-_java_lang_reflect_Array_getBoolean: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getBoolean(Ljava/lang/Object;I)Z'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    | e |
+
+    arr isNil ifTrue:[ 
+        JavaVM throwNullPointerException: 'array argumen is null'.
+        ^ self.
+    ].
+
+    arr isJavaArray ifFalse:[ 
+        JavaVM throwIllegalArgumentException: 'array argument is not an array'.
+    ].
+
+    (idx between: 0 and: arr size - 1) ifFalse:[ 
+        JavaVM throwArrayIndexOutOfBoundsException: arr _: idx. 
+        ^ self.
+    ].
+
+    e := arr at: idx + 1.
+    arr class javaComponentClass isJavaPrimitiveType ifTrue:[ 
+        e := arr class javaComponentClass javaBox: e.  
+    ].
+    ^ e
+
+    "Modified: / 10-04-2014 / 15:31:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_reflect_Array_getBoolean: this _: a1 _: a2
@@ -11424,13 +11879,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_getByte: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getByte(Ljava/lang/Object;I)B'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_getByte: this _: a1 _: a2
 
     <javanative: 'java/lang/reflect/Array' name: 'getByte(Ljava/lang/Object;I)B'>
@@ -11438,13 +11886,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_getChar: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getChar(Ljava/lang/Object;I)C'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_getChar: this _: a1 _: a2
 
     <javanative: 'java/lang/reflect/Array' name: 'getChar(Ljava/lang/Object;I)C'>
@@ -11452,13 +11893,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_getDouble: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getDouble(Ljava/lang/Object;I)D'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_getDouble: this _: a1 _: a2
 
     <javanative: 'java/lang/reflect/Array' name: 'getDouble(Ljava/lang/Object;I)D'>
@@ -11466,13 +11900,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_getFloat: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getFloat(Ljava/lang/Object;I)F'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_getFloat: this _: a1 _: a2
 
     <javanative: 'java/lang/reflect/Array' name: 'getFloat(Ljava/lang/Object;I)F'>
@@ -11480,13 +11907,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_getInt: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getInt(Ljava/lang/Object;I)I'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_getInt: this _: a1 _: a2
 
     <javanative: 'java/lang/reflect/Array' name: 'getInt(Ljava/lang/Object;I)I'>
@@ -11503,13 +11923,6 @@
     "Modified: / 17-08-2011 / 09:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_lang_reflect_Array_getLong: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getLong(Ljava/lang/Object;I)J'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_getLong: this _: a1 _: a2
 
     <javanative: 'java/lang/reflect/Array' name: 'getLong(Ljava/lang/Object;I)J'>
@@ -11517,13 +11930,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_getShort: this _: a1
-
-    <javanative: 'java/lang/reflect/Array' name: 'getShort(Ljava/lang/Object;I)S'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_getShort: this _: a1 _: a2
 
     <javanative: 'java/lang/reflect/Array' name: 'getShort(Ljava/lang/Object;I)S'>
@@ -11620,12 +12026,12 @@
 
     <javanative: 'java/lang/reflect/Array' name: 'set(Ljava/lang/Object;ILjava/lang/Object;)V'>
 
-    | index  |
+    | index valueToStore |
 
     index := index0 + 1.
 
     array isJavaArray ifFalse:[
-        JavaVM throwIllegalArgumentException:'passed object is not an array'.
+        JavaVM throwIllegalArgumentException:'array argument is not an array'.
         ^nil.
     ].
     index < 1 ifTrue:[
@@ -11644,16 +12050,16 @@
         JavaVM throwIllegalArgumentException:'type-incompatible value'.
         ^nil.
     ].
-    array at: index put: value.
-
-    "Modified: / 23-04-2013 / 23:44:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-_java_lang_reflect_Array_setBoolean: this _: a1 _: a2
-
-    <javanative: 'java/lang/reflect/Array' name: 'setBoolean(Ljava/lang/Object;IZ)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+
+    valueToStore := value.
+    array class javaComponentClass isJavaPrimitiveType ifTrue:[ 
+        valueToStore := array class javaComponentClass javaUnbox: value.
+    ].
+
+
+    array at: index put: valueToStore.
+
+    "Modified: / 10-04-2014 / 15:32:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_reflect_Array_setBoolean: this _: a1 _: a2 _: a3
@@ -11663,13 +12069,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_setByte: this _: a1 _: a2
-
-    <javanative: 'java/lang/reflect/Array' name: 'setByte(Ljava/lang/Object;IB)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_setByte: this _: a1 _: a2 _: a3
 
     <javanative: 'java/lang/reflect/Array' name: 'setByte(Ljava/lang/Object;IB)V'>
@@ -11677,13 +12076,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_setChar: this _: a1 _: a2
-
-    <javanative: 'java/lang/reflect/Array' name: 'setChar(Ljava/lang/Object;IC)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_setChar: this _: a1 _: a2 _: a3
 
     <javanative: 'java/lang/reflect/Array' name: 'setChar(Ljava/lang/Object;IC)V'>
@@ -11691,13 +12083,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_setDouble: this _: a1 _: a2 _: a3
-
-    <javanative: 'java/lang/reflect/Array' name: 'setDouble(Ljava/lang/Object;ID)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_setDouble: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'java/lang/reflect/Array' name: 'setDouble(Ljava/lang/Object;ID)V'>
@@ -11705,13 +12090,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_setFloat: this _: a1 _: a2
-
-    <javanative: 'java/lang/reflect/Array' name: 'setFloat(Ljava/lang/Object;IF)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_setFloat: this _: a1 _: a2 _: a3
 
     <javanative: 'java/lang/reflect/Array' name: 'setFloat(Ljava/lang/Object;IF)V'>
@@ -11719,13 +12097,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_setInt: this _: a1 _: a2
-
-    <javanative: 'java/lang/reflect/Array' name: 'setInt(Ljava/lang/Object;II)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_setInt: this _: a1 _: a2 _: a3
 
     <javanative: 'java/lang/reflect/Array' name: 'setInt(Ljava/lang/Object;II)V'>
@@ -11733,13 +12104,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_setLong: this _: a1 _: a2 _: a3
-
-    <javanative: 'java/lang/reflect/Array' name: 'setLong(Ljava/lang/Object;IJ)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_setLong: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'java/lang/reflect/Array' name: 'setLong(Ljava/lang/Object;IJ)V'>
@@ -11747,13 +12111,6 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_lang_reflect_Array_setShort: this _: a1 _: a2
-
-    <javanative: 'java/lang/reflect/Array' name: 'setShort(Ljava/lang/Object;IS)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
 _java_lang_reflect_Array_setShort: this _: a1 _: a2 _: a3
 
     <javanative: 'java/lang/reflect/Array' name: 'setShort(Ljava/lang/Object;IS)V'>
@@ -11855,7 +12212,7 @@
         holder := inet4Address instVarNamed: #holder.
         holder
             instVarNamed: #family put: 1; "/IPv4
-            instVarNamed: #address put: (sockaddr address doubleWordAt: 1 MSB: true);
+            instVarNamed: #address put: (sockaddr address signedDoubleWordAt: 1 MSB: true);
             instVarNamed: #hostName put: a1.
         inet4Address
             instVarNamed: #canonicalHostName put: a1.
@@ -11863,7 +12220,7 @@
         inet4Address := (JavaVM classForName:'java.net.Inet4Address' definedBy:nil) newCleared.
         inet4Address
             instVarNamed: #family put: 1; "/IPv4
-            instVarNamed: #address put: (sockaddr address doubleWordAt: 1 MSB: true);
+            instVarNamed: #address put: (sockaddr address signedDoubleWordAt: 1 MSB: true);
             instVarNamed: #hostName put: a1;
             instVarNamed: #canonicalHostName put: a1.
     ].
@@ -12088,8 +12445,8 @@
     ].
 
     sockaddr := IPSocketAddress new.
-    sockaddr hostAddress: (jaddr perform: #'getAddress()[B').    
-    sockaddr port: port.      
+    sockaddr hostAddress: (jaddr perform: #'getAddress()[B').
+    sockaddr port: port.
 
     sock := self validateFile:this.
 
@@ -12166,7 +12523,7 @@
 
     | sock sockaddr |
 
-    sock := self validateFile: this. 
+    sock := self validateFile: this.
     sockaddr := IPSocketAddress new.
     sock connectTo: sockaddr port: (this instVarNamed: #localPort)
 
@@ -12245,7 +12602,7 @@
 
     | sock sockaddr dbuffer offset len address tout |
 
-    sock := self validateFile: this. 
+    sock := self validateFile: this.
     sockaddr := IPSocketAddress new.
     dbuffer := packet instVarAt: _java_net_DatagramPacket_buf_ID.
     offset  := packet instVarAt: _java_net_DatagramPacket_offset_ID.
@@ -12281,10 +12638,10 @@
     sock := self validateFile:this.
     address := packet instVarAt: _java_net_DatagramPacket_address_ID.
     address isNil ifTrue:[
-        JavaVM throwNullPointerException: 'null address in datagram packet'. 
+        JavaVM throwNullPointerException: 'null address in datagram packet'.
     ].
     sockaddr := IPSocketAddress new.
-    sockaddr hostAddress: (address perform: #'getAddress()[B').    
+    sockaddr hostAddress: (address perform: #'getAddress()[B').
     sockaddr port: (packet instVarAt: _java_net_DatagramPacket_port_ID).
     sockaddr port == 0 ifTrue:[
         JavaVM throwIOExceptionWithMessage: 'port 0 is reserved'.
@@ -12325,20 +12682,20 @@
 
     | sock ret |
 
-    sock := self validateFile: this.         
+    sock := self validateFile: this.
 
 "/    case IP_TOS:
     optid == 16r1002 ifTrue:[
         self breakPoint: #jv.
-        ^Java as_Integer:-1 "/Unsupported           
+        ^Java as_Integer:-1 "/Unsupported
     ].
 
 "/    case SO_BINDADDR:
     optid == 16rF ifTrue:[
         | addr |
-"/        ^ Java as_Integer: (sock getSocketAddress doubleWordAt:1) 
+"/        ^ Java as_Integer: (sock getSocketAddress doubleWordAt:1)
         addr := sock getFullSocketAddress.
-        ^ (JavaVM classForName:'java.net.Inet4Address') basicNew 
+        ^ (JavaVM classForName:'java.net.Inet4Address') basicNew
                 perform: #'<init>(Ljava/lang/String;[B)V'
                 with: (Java as_String: addr hostName)
                 with: (addr hostAddress);
@@ -12550,8 +12907,8 @@
     |sock sockaddr ok err|
 
     sockaddr := IPSocketAddress new.
-    sockaddr hostAddress: (addr perform: #'getAddress()[B').    
-    sockaddr port: port.    
+    sockaddr hostAddress: (addr perform: #'getAddress()[B').
+    sockaddr port: port.
 
     sock := self validateFile:this.
     sock notNil ifTrue:[
@@ -12598,8 +12955,8 @@
     ].
 
     sockaddr := IPSocketAddress new.
-    sockaddr hostAddress: (jaddr perform: #'getAddress()[B').    
-    sockaddr port: port.           
+    sockaddr hostAddress: (jaddr perform: #'getAddress()[B').
+    sockaddr port: port.
 
     sock := self validateFile:this.
 
@@ -12779,11 +13136,14 @@
     "Modified: / 17-08-2012 / 15:27:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_net_PlainSocketImpl_socketSendUrgentData: this _: a1
+_java_net_PlainSocketImpl_socketSendUrgentData: this _: data
 
     <javanative: 'java/net/PlainSocketImpl' name: 'socketSendUrgentData(I)V'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    | sock |
+
+    sock := self validateFile: this.
+    sock nextPut: (data & 16rFF)
 !
 
 _java_net_PlainSocketImpl_socketSetOption: this _:a1 _: a2 _: a3
@@ -12861,11 +13221,14 @@
     "Modified: / 14-08-2013 / 15:37:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_net_PlainSocketImpl_socketShutdown: this _: a1
-
+_java_net_PlainSocketImpl_socketShutdown: this _: what
     <javanative: 'java/net/PlainSocketImpl' name: 'socketShutdown(I)V'>
-
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    "Shuts down either reading (what = 0) or writing (what = 1) end of a socket"
+
+    | sock |
+
+    sock := self validateFile: this.
+    sock shutdown: what.
 !
 
 _java_net_SocketInputStream_init: this
@@ -13207,12 +13570,12 @@
         ].
         con := con sender.
     ].
-    ^(JavaVM classForName:'java.lang.Class' definedBy:nil) javaArrayClass withAll: chain
+    ^_java_lang_Class_CLASS javaArrayClass withAll: chain
 
     "Created: / 05-01-1998 / 02:47:00 / cg"
     "Modified: / 24-12-1998 / 00:34:57 / cg"
     "Modified: / 28-01-2011 / 15:31:28 / Marcel Hlopko <hlopik@gmail.com>"
-    "Modified: / 09-03-2013 / 17:37:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:25:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_TimeZone_getSystemGMTOffsetID: this
@@ -13414,7 +13777,7 @@
     level := a1.
     strategy := a2.
     nowrap := a3.
-    deflater := JavaZipSupport deflaterFor: self.
+    deflater := JavaZipDeflater new vm: self.
     deflater init: strategy level: level nowrap: nowrap.
     1 to: ZipInflaters size do:[:i|
         (ZipInflaters at: i) isNil ifTrue:[
@@ -13426,7 +13789,7 @@
     ^ZipInflaters size.
     "/^deflater
 
-    "Modified: / 25-10-2012 / 20:25:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-07-2014 / 00:36:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_zip_Deflater_initIDs: this
@@ -13541,7 +13904,7 @@
 
     | nowrap inflater |
     nowrap := a1.
-    inflater := JavaZipSupport inflaterFor: self.
+    inflater := JavaZipInflater new vm: self.  
     inflater init: nowrap.
     1 to: ZipInflaters size do:[:i|
         (ZipInflaters at: i) isNil ifTrue:[
@@ -13553,7 +13916,7 @@
     ^ ZipInflaters size.
 
     "Created: / 01-02-1998 / 20:14:01 / cg"
-    "Modified: / 25-10-2012 / 20:25:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-07-2014 / 00:36:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_zip_Inflater_initIDs: this
@@ -13595,28 +13958,25 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_java_util_zip_ZipEntry_initFields: this _:a1 _: a2
-
+_java_util_zip_ZipEntry_initFields:this _:a1 _:a2 
     <javanative: 'java/util/zip/ZipEntry' name: 'initFields(J)V'>
-
-        | entry jzentry zmember |
+    | entry  jzentry  zmember |
 
     entry := this.
     jzentry := a1.
-    zmember := ZipEntryCache at: jzentry.
-
+    zmember := ZipEntryCache at:jzentry.
     entry
-        instVarNamed: #name     put: (Java as_String: zmember fileName);
-        instVarNamed: #time     put: -1"zmember lastModFileTime";
-        instVarNamed: #crc      put: zmember crc32;
-        instVarNamed: #size     put: zmember uncompressedSize;
-        instVarNamed: #csize    put: zmember compressedSize;
-        instVarNamed: #method   put: zmember compressionMethod;
-        instVarNamed: #extra    put: zmember extraField;
-        instVarNamed: #comment  put: (zmember fileComment ifNotNil:[Java as_String: zmember fileComment]).
+        instVarNamed:#name put:(Java as_String:zmember fileName);
+        instVarNamed:#time put:-1;
+        instVarNamed:#crc put:zmember crc32;
+        instVarNamed:#size put:zmember uncompressedSize;
+        instVarNamed:#csize put:zmember compressedSize;
+        instVarNamed:#method put:zmember compressionMethod;
+        instVarNamed:#extra put:zmember extraField;
+        instVarNamed:#comment put:(zmember fileComment notNil ifTrue:[ Java as_String:zmember fileComment ]).
 
     "Created: / 01-04-2011 / 13:04:24 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 05-12-2011 / 23:42:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-08-2014 / 15:52:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_zip_ZipEntry_initIDs: this
@@ -13645,9 +14005,18 @@
 
     <javanative: 'java/util/zip/ZipFile' name: 'freeEntry(JJ)V'>
 
-    jzentry = 0 ifFalse: [ ZipEntryCache at: jzentry put: nil ].
-
-    "Modified: / 30-01-2013 / 13:47:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    jzentry = 0 ifFalse: [
+        ZipEntryCacheLock critical:[
+            "/Logger
+            "/    log: 'java.util.zip.ZipFile.freeEntry() called for ', jzentry printString
+            "/    severity: #debug
+            "/    facility: 'JVM'.
+            ZipEntryCache at: jzentry put: ZipEntryCacheFirstFree.
+            ZipEntryCacheFirstFree := jzentry.
+        ].
+    ].
+
+    "Modified: / 10-12-2013 / 00:55:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_zip_ZipFile_getCSize: this _:a1 _: a2
@@ -13676,16 +14045,31 @@
     member isNil ifTrue: [
         ^ 0
     ] ifFalse: [
-        ^ ZipEntryCache indexOf: member ifAbsent:[
-            ZipEntryCache add: member.
-            ZipEntryCache size.
-        ]
-    ]
+        "/^ ZipEntryCache indexOf: member ifAbsent:[
+            | index |
+
+            ZipEntryCacheLock critical:[
+                ZipEntryCacheFirstFree == 0 ifTrue:[
+                    ZipEntryCache add: member.
+                    index := ZipEntryCache size.
+                ] ifFalse:[
+                    index := ZipEntryCacheFirstFree.
+                    ZipEntryCacheFirstFree := ZipEntryCache at: index.
+                    ZipEntryCache at: index put: member.
+                ].
+            ].
+            "/Logger
+            "/    log: 'java.util.zip.ZipFile.getEntry()  called for ', index printString
+            "/    severity: #debug
+            "/    facility: 'JVM'.
+            ^ index.
+        "/"].
+    ].
 
     "Created: / 27-03-2011 / 16:59:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
     "Modified: / 01-04-2011 / 16:03:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
     "Modified: / 18-08-2011 / 19:44:56 / jv"
-    "Modified: / 20-07-2012 / 19:27:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-07-2014 / 01:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_zip_ZipFile_getMethod: this _:a1 _: a2
@@ -13706,22 +14090,24 @@
 
     <javanative: 'java/util/zip/ZipFile' name: 'getNextEntry(JI)J'>
 
-    | zipArchive i |
+    | zipArchive member jzentry |
 
     zipArchive := self getZipArchiveAt:jzfile.
-    i := 0.
-    zipArchive zipMembersDo:[:member |
-        index == i ifTrue:[
-            ^ ZipEntryCache indexOf: member ifAbsent:[
-                ZipEntryCache add: member.
-                ZipEntryCache size.
-            ]
-        ].
-        i := i + 1.
-    ].
-    ^0
-
-    "Modified: / 30-01-2013 / 13:48:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    (index between: 0 and: zipArchive members size - 1) ifFalse:[ ^ 0 ].
+    member := zipArchive members at: index + 1.
+    ZipEntryCacheLock critical:[
+        ZipEntryCacheFirstFree == 0 ifTrue:[
+            ZipEntryCache add: member.
+            jzentry := ZipEntryCache size.
+        ] ifFalse:[
+            jzentry := ZipEntryCacheFirstFree.
+            ZipEntryCacheFirstFree := ZipEntryCache at: jzentry.
+            ZipEntryCache at: jzentry put: member.
+        ].
+    ].
+    ^ jzentry.
+
+    "Modified: / 25-07-2014 / 01:45:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_zip_ZipFile_getSize: this _:a1 _: a2
@@ -13791,7 +14177,7 @@
         ZipCacheLastAccessed notNil ifTrue:[
             ZipCacheLastAccessed closeFile.
         ].
-        zar := ZipArchive readingFrom: result readStream.
+        zar := JavaZipFile readingFrom: result readStream.
         zar checkZipArchive ifFalse:[
             JavaVM throwZipException:'Cannot open zip file: not a zip archive'.
         ].
@@ -13808,7 +14194,7 @@
     ]
 
     "Modified: / 01-04-2011 / 15:35:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 23-04-2013 / 00:52:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-07-2014 / 01:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_zip_ZipFile_read: this _:a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9
@@ -13835,7 +14221,7 @@
     "Modified: / 01-05-2011 / 16:22:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_util_zip_ZipFile_startsWithLOC: this _: a1 _: a2 
+_java_util_zip_ZipFile_startsWithLOC: this _: a1 _: a2
 
     <javanative: 'java/util/zip/ZipFile' name: 'startsWithLOC(J)Z'>
 
@@ -13845,6 +14231,120 @@
     "Modified: / 27-07-2013 / 19:09:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - org.GNOME.Accessibility'!
+
+_org_GNOME_Accessibility_AtkWrapper_componentAdded: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'componentAdded(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_componentRemoved: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'componentRemoved(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_dispatchKeyEvent: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'dispatchKeyEvent(Lorg/GNOME/Accessibility/AtkKeyEvent;)Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_emitSignal: this _: a1 _: a2 _: a3
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'emitSignal(Ljavax/accessibility/AccessibleContext;I[Ljava/lang/Object;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_focusNotify: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'focusNotify(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_initNativeLibrary: this
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'initNativeLibrary()Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_loadAtkBridge: this
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'loadAtkBridge()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_objectStateChange: this _: a1 _: a2 _: a3
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'objectStateChange(Ljavax/accessibility/AccessibleContext;Ljava/lang/Object;Z)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowActivate: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowActivate(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowClose: this _: a1 _: a2
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowClose(Ljavax/accessibility/AccessibleContext;Z)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowDeactivate: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowDeactivate(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowMaximize: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowMaximize(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowMinimize: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowMinimize(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowOpen: this _: a1 _: a2
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowOpen(Ljavax/accessibility/AccessibleContext;Z)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowRestore: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowRestore(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_GNOME_Accessibility_AtkWrapper_windowStateChange: this _: a1
+
+    <javanative: 'org/GNOME/Accessibility/AtkWrapper' name: 'windowStateChange(Ljavax/accessibility/AccessibleContext;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+! !
+
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - org.apache.tomcat.jni'!
 
 _org_apache_tomcat_jni_Library_aprVersionString: this
@@ -13903,6 +14403,337 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 ! !
 
+!JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - org.classpath.icedtea.pulseaudio'!
+
+_org_classpath_icedtea_pulseaudio_ContextEvent_init_constants: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/ContextEvent' name: 'init_constants()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_EventLoop_nativeUpdateSourcePortNameList: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/EventLoop' name: 'nativeUpdateSourcePortNameList()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_EventLoop_nativeUpdateTargetPortNameList: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/EventLoop' name: 'nativeUpdateTargetPortNameList()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_EventLoop_native_iterate: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/EventLoop' name: 'native_iterate(I)I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_EventLoop_native_setup: this _: a1 _: a2
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/EventLoop' name: 'native_setup(Ljava/lang/String;Ljava/lang/String;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_EventLoop_native_shutdown: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/EventLoop' name: 'native_shutdown()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Operation_init_constants: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Operation' name: 'init_constants()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Operation_native_get_state: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Operation' name: 'native_get_state()J'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Operation_native_ref: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Operation' name: 'native_ref()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Operation_native_unref: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Operation' name: 'native_unref()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_set_volume: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/PulseAudioSourcePort' name: 'native_set_volume(F)[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_update_volume: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/PulseAudioSourcePort' name: 'native_update_volume()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_set_volume: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/PulseAudioTargetPort' name: 'native_set_volume(F)[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_update_volume: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/PulseAudioTargetPort' name: 'native_update_volume()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_bytesInBuffer: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'bytesInBuffer()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_init_constants: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'init_constants()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_connect_playback: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_connect_playback(Ljava/lang/String;IIIIIJ[B[B)I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_connect_record: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_connect_record(Ljava/lang/String;IIIIIJ[B[B)I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_cork: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_cork(I)[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_disconnect: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_disconnect()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_drain: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_drain()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_drop: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_drop()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_flush: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_flush()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_buffer_attr: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_buffer_attr()Lorg/classpath/icedtea/pulseaudio/StreamBufferAttributes;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_context: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_context()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_device_index: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_device_index()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_device_name: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_device_name()Ljava/lang/String;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_index: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_index()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_latency: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_latency()J'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_sample_spec: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_sample_spec()Lorg/classpath/icedtea/pulseaudio/StreamSampleSpecification;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_state: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_state()J'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_get_time: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_get_time()J'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_is_corked: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_is_corked()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_is_suspended: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_is_suspended()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_new: this _: a1 _: a2 _: a3 _: a4 _: a5
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_new([BLjava/lang/String;Ljava/lang/String;II)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_peek: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_peek()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_readable_size: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_readable_size()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_set_buffer_attr: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_set_buffer_attr(Lorg/classpath/icedtea/pulseaudio/StreamBufferAttributes;)[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_set_name: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_set_name(Ljava/lang/String;)[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_trigger: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_trigger()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_unref: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_unref()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_updateTimingInfo: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_updateTimingInfo()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_update_sample_rate: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_update_sample_rate(I)[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_writable_size: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_writable_size()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_pa_stream_write: this _: a1 _: a2 _: a3
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_pa_stream_write([BII)I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_set_volume: this _: a1
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_set_volume(F)[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_org_classpath_icedtea_pulseaudio_Stream_native_update_volume: this
+
+    <javanative: 'org/classpath/icedtea/pulseaudio/Stream' name: 'native_update_volume()[B'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+! !
+
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - stx.libjava'!
 
 _stx_libjava_ClassLoader_findClassS: this _:a1
@@ -13913,14 +14744,14 @@
     nm := Java as_ST_String: a1.
     (nm startsWith: 'SMALLTALK.') ifFalse:[
         JavaVM
-    throwClassNotFoundException:('No such smalltalk class (%1)' bindWith:nm).
+            throwClassNotFoundException:('No such smalltalk class (%1)' bindWith:nm).
         ^self
     ].
     nm := nm copyFrom: 'SMALLTALK.' size + 1.
     cls := Smalltalk at: nm asSymbol.
     cls isNil ifTrue:[
         JavaVM
-    throwClassNotFoundException:('No such smalltalk class (%1)' bindWith:nm).
+            throwClassNotFoundException:('No such smalltalk class (%1)' bindWith:nm).
         ^self
     ].
     ^Reflection javaClassObjectForClass: cls.
@@ -13954,9 +14785,11 @@
 
 _stx_libjava_tests_lang_MonitorTests_abort: this
     <javanative: 'stx/libjava/tests/lang/MonitorTests' name: 'abort()V'>
-        AbortOperationRequest raiseRequest.
+
+    AbortOperationRequest raiseRequest.
 
     "Modified: / 10-09-2012 / 22:56:16 / m"
+    "Modified: / 08-10-2013 / 23:15:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - stx.libjava.tests.vm'!
@@ -13983,15 +14816,15 @@
     "Modified: / 04-11-2011 / 21:50:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - stx.libjava.tools.compiler.ecj'!
-
-_stx_libjava_tools_compiler_ecj_CompilerEnvironment_findClassBytesForClass0: this _: jclass
-
-    <javanative: 'stx/libjava/tools/compiler/ecj/CompilerEnvironment' name: 'findClassBytesForClass0(Ljava/lang/Class;)[B'>
+!JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - stx.libjava.tools.environment'!
+
+_stx_libjava_tools_environment_Environment_findClassBytesForClass0: this _: jclass
+
+    <javanative: 'stx/libjava/tools/environment/Environment' name: 'findClassBytesForClass0(Ljava/lang/Class;)[B'>
 
     ^(JavaVM reflection classForJavaClassObject: jclass) classfileBytes
 
-    "Modified: / 30-03-2013 / 00:43:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 11-09-2013 / 23:53:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - sun.awt'!
@@ -15985,6 +16818,20 @@
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - sun.font'!
 
+_sun_font_FileFontStrike__getGlyphImageFromWindows: this _: a1 _: a2 _: a3 _: a4 _: a5
+
+    <javanative: 'sun/font/FileFontStrike' name: '_getGlyphImageFromWindows(Ljava/lang/String;IIIZ)J'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_font_FileFontStrike_initNative: this
+
+    <javanative: 'sun/font/FileFontStrike' name: 'initNative()Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _sun_font_FontManager_getFont2D: this _: a1
 
     <javanative: 'sun/font/FontManager' name: 'getFont2D(Ljava/awt/Font;)Lsun/font/Font2D;'>
@@ -17502,6 +18349,141 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 ! !
 
+!JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - sun.jkernel'!
+
+_sun_jkernel_DownloadManager_addToTotalDownloadSize: this _: a1 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'addToTotalDownloadSize(I)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_askUserToRetryDownloadOrQuit: this _: a1 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'askUserToRetryDownloadOrQuit(I)Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_bundleInstallComplete: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'bundleInstallComplete()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_bundleInstallStart: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'bundleInstallStart()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_displayError: this _: a1 _: a2 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'displayError(ILjava/lang/String;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_downloadFromURLImpl: this _: a1 _: a2 _: a3 _: a4 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'downloadFromURLImpl(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Z)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_getCurrentProcessId: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'getCurrentProcessId()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_getDebugKey: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'getDebugKey()Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_getUrlFromRegistry: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'getUrlFromRegistry()Ljava/lang/String;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_getVisitorId0: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'getVisitorId0()Ljava/lang/String;'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_isIEProtectedMode: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'isIEProtectedMode()Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_isJBrokerRunning: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'isJBrokerRunning()Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_isWindowsVista: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'isWindowsVista()Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_launchJBroker: this _: a1 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'launchJBroker(Ljava/lang/String;)Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_moveDirWithBrokerImpl: this _: a1 _: a2 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'moveDirWithBrokerImpl(Ljava/lang/String;Ljava/lang/String;)Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_moveFileWithBrokerImpl: this _: a1 _: a2 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'moveFileWithBrokerImpl(Ljava/lang/String;Ljava/lang/String;)Z'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_postDownloadComplete: this 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'postDownloadComplete()V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_postDownloadError: this _: a1 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'postDownloadError(I)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
+_sun_jkernel_DownloadManager_startBackgroundDownloadWithBrokerImpl: this _: a1 
+
+    <javanative: 'sun/jkernel/DownloadManager' name: 'startBackgroundDownloadWithBrokerImpl(Ljava/lang/String;)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+! !
+
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - sun.management'!
 
 _sun_management_ClassLoadingImpl_setVerboseClass: this _: a1
@@ -17602,6 +18584,13 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_sun_management_HotSpotDiagnostic_dumpHeap0: this _: a1 _: a2
+
+    <javanative: 'sun/management/HotSpotDiagnostic' name: 'dumpHeap0(Ljava/lang/String;Z)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _sun_management_HotSpotDiagnostic_dumpHeap: this _: a1 _: a2
 
     <javanative: 'sun/management/HotSpotDiagnostic' name: 'dumpHeap(Ljava/lang/String;Z)V'>
@@ -18096,7 +19085,12 @@
 
     <javanative: 'sun/misc/Perf' name: 'createLong(Ljava/lang/String;IIJ)Ljava/nio/ByteBuffer;'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    | memory |
+
+    memory := JavaVM performance counters at: (Java as_ST_String: a1) ifAbsentPut:[ ByteArray new: 8].
+    ^JAVA java nio HeapByteBuffer new: memory with: 0 with: 8.
+
+    "Modified: / 20-02-2013 / 00:13:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _sun_misc_Perf_detach: this _: a1
@@ -18124,7 +19118,9 @@
 
     <javanative: 'sun/misc/Perf' name: 'registerNatives()V'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    "Nothing to do here"
+
+    "Modified: / 11-02-2013 / 02:53:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _sun_misc_Signal_findSignal: this _:a1
@@ -18312,7 +19308,8 @@
                                                   int expected,
                                                   int new);
     "
-    | o offset expected real new ok |
+    | o offset expected real new ok isArray|
+
     o := a1.
     offset := a2.
     "offset is long, so nativeContext at:3 is dummy nil!!!!!!"
@@ -18320,15 +19317,16 @@
     new := a5.
 
     OperatingSystem blockInterrupts.
-    o isArray ifTrue:[
+    (isArray := o isArray) ifTrue:[
         real := o at: offset.
     ] ifFalse:[
         real := o instVarAt: offset.
     ].
     (real == expected) ifTrue:[
-        o isArray ifTrue:[
+        isArray ifTrue:[
             o at: offset put: new.
         ] ifFalse:[
+            offset :=
             o instVarAt: offset put: new.
         ].
         ok := 1
@@ -18363,6 +19361,13 @@
     "Modified (format): / 11-07-2012 / 10:25:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_sun_misc_Unsafe_copyMemory: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 
+
+    <javanative: 'sun/misc/Unsafe' name: 'copyMemory(Ljava/lang/Object;JLjava/lang/Object;JJ)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _sun_misc_Unsafe_defineClass: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/misc/Unsafe' name: 'defineClass(Ljava/lang/String;[BII)Ljava/lang/Class;'>
@@ -18886,7 +19891,7 @@
                 tout := nil.
             ].
         ] ifFalse:[
-            "/ It's nanos in this case !!!!!!    
+            "/ It's nanos in this case !!!!!!
             tout := (millisOrNanos / 1000000) rounded
         ]
     ] ifFalse:[
@@ -19437,7 +20442,9 @@
 
     <javanative: 'sun/misc/Unsafe' name: 'throwException(Ljava/lang/Throwable;)V'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    ^ JavaVM _ATHROW: a1.
+
+    "Modified: / 07-11-2013 / 23:41:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _sun_misc_Unsafe_tryMonitorEnter: this
@@ -19605,6 +20612,13 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_sun_nio_ch_DatagramChannelImpl_send0: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6
+
+    <javanative: 'sun/nio/ch/DatagramChannelImpl' name: 'send0(Ljava/io/FileDescriptor;JILjava/net/InetAddress;I)I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _sun_nio_ch_DatagramDispatcher_read0: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/nio/ch/DatagramDispatcher' name: 'read0(Ljava/io/FileDescriptor;JI)I'>
@@ -20082,6 +21096,13 @@
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
+_sun_nio_ch_Net_bind0: this _: a1 _: a2 _: a3 _: a4
+
+    <javanative: 'sun/nio/ch/Net' name: 'bind0(Ljava/io/FileDescriptor;ZLjava/net/InetAddress;I)V'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _sun_nio_ch_Net_bind: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/nio/ch/Net' name: 'bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V'>
@@ -20112,6 +21133,13 @@
     "Modified: / 10-05-2012 / 17:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_sun_nio_ch_Net_isExclusiveBindAvailable: this
+
+    <javanative: 'sun/nio/ch/Net' name: 'isExclusiveBindAvailable()I'>
+
+    ^ JavaVM unimplementedNativeMethodSignal raise
+!
+
 _sun_nio_ch_Net_localInetAddress: this _: a1
 
     <javanative: 'sun/nio/ch/Net' name: 'localInetAddress(Ljava/io/FileDescriptor;)Ljava/net/InetAddress;'>
@@ -20483,6 +21511,28 @@
     "Modified: / 30-01-2013 / 14:16:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_sun_reflect_Reflection_getCallerClass0: this _: a1
+
+    <javanative: 'sun/reflect/Reflection' name: 'getCallerClass0(I)Ljava/lang/Class;'>
+
+    "/ Until there is hotspot @CallerSensitive support,
+    "/ depth must always be 2 to get the immediate caller
+    ^ self _sun_reflect_Reflection_getCallerClass: this _: 2
+
+    "Modified (comment): / 11-11-2013 / 21:18:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_sun_reflect_Reflection_getCallerClass: this
+
+    <javanative: 'sun/reflect/Reflection' name: 'getCallerClass()Ljava/lang/Class;'>
+
+    "/ Until there is hotspot @CallerSensitive support,
+    "/ depth must always be 2 to get the immediate caller
+    ^ self _sun_reflect_Reflection_getCallerClass0: this _: 2
+
+    "Modified (comment): / 11-11-2013 / 21:18:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 _sun_reflect_Reflection_getCallerClass: this _:a1
 
     <javanative: 'sun/reflect/Reflection' name: 'getCallerClass(I)Ljava/lang/Class;'>
@@ -20504,12 +21554,35 @@
     framesToSkip := a1.
     framesSkipped := 0.
     frame := self nativeContext.
+
+    "The callstack here may look like:
+
+    (0 native ctx) JAVA::sun::reflect::Reflection(JAVA::sun::reflect::Reflection) >> getCallerClass()Ljava/lang/Class;  {1380352} [0]
+    (1           ) JavaNativeMethod(CompiledCode) >> valueWithReceiver:arguments:selector:search:sender: [88]) {7286784} [17]
+    (2           ) JavaNativeMethod(JavaMethod) >> valueWithReceiver:arguments:selector:search:sender:  [88]) {4497408} [7]
+    (3           ) JavaVM class >> _INVOKESTATIC_R: sun/reflect/Reflection.getCallerClass {4157440} [9]
+    (4           ) JAVA::sun::misc::Unsafe(JAVA::sun::misc::Unsafe) >> getUnsafe()Lsun/misc/Unsafe;  {4501504} [88]
+
+    in case Reflection,getCallerClass() has been called from JIT-compiled code
+    and methodref to Reflection.getCallerClass() has not yet been resolved
+    (in that case JIT code sends #_INVOKESTATIC_R:. Care about this now.
+    "
+    frame sender selector == #valueWithReceiver:arguments:selector:search:sender: ifTrue:[
+        frame := frame sender.
+        frame sender selector == #valueWithReceiver:arguments:selector:search:sender: ifTrue:[
+            frame := frame sender.
+        ].
+        frame sender selector == #'_INVOKESTATIC_R:' ifTrue:[
+            frame := frame sender.
+        ].
+    ].
+
     [ framesSkipped == framesToSkip ] whileFalse:[
         frame := frame sender.
         "Frames for java,lang.reflect.Method.invoke() does not count, sigh.
          What a crappy implementation"
         (frame selector == #'invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;'
-            and:[ frame receiver class name = #'java/lang/reflect/Method']) ifFalse:[
+            and:[ frame receiver class binaryName = #'java/lang/reflect/Method']) ifFalse:[
                 framesSkipped := framesSkipped + 1
             ]
     ].
@@ -20523,7 +21596,7 @@
         ifFalse:[nil]
 
     "Created: / 25-10-2010 / 16:32:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 30-01-2013 / 14:12:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-01-2014 / 11:35:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _sun_reflect_Reflection_getClassAccessFlags: this _:a1
@@ -20776,35 +21849,35 @@
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - sun.security.pkcs11'!
 
-_sun_security_pkcs11_Secmod_nssGetLibraryHandle: this _: a1 
+_sun_security_pkcs11_Secmod_nssGetLibraryHandle: this _: a1
 
     <javanative: 'sun/security/pkcs11/Secmod' name: 'nssGetLibraryHandle(Ljava/lang/String;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_Secmod_nssGetModuleList: this _: a1 _: a2 
+_sun_security_pkcs11_Secmod_nssGetModuleList: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/Secmod' name: 'nssGetModuleList(J)Ljava/lang/Object;'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_Secmod_nssInit: this _: a1 _: a2 _: a3 _: a4 
+_sun_security_pkcs11_Secmod_nssInit: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/security/pkcs11/Secmod' name: 'nssInit(Ljava/lang/String;JLjava/lang/String;)Z'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_Secmod_nssLoadLibrary: this _: a1 
+_sun_security_pkcs11_Secmod_nssLoadLibrary: this _: a1
 
     <javanative: 'sun/security/pkcs11/Secmod' name: 'nssLoadLibrary(Ljava/lang/String;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_Secmod_nssVersionCheck: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_Secmod_nssVersionCheck: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/Secmod' name: 'nssVersionCheck(JLjava/lang/String;)Z'>
 
@@ -20813,417 +21886,419 @@
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - sun.security.pkcs11.wrapper'!
 
-_sun_security_pkcs11_wrapper_PKCS11_C_CloseSession: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_CloseSession: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_CloseSession(J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_CopyObject: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_CopyObject: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_CopyObject(JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_CreateObject: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_CreateObject: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_CreateObject(J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Decrypt: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 
+_sun_security_pkcs11_wrapper_PKCS11_C_Decrypt: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Decrypt(J[BII[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DecryptFinal: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_DecryptFinal: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DecryptFinal(JJ[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DecryptInit: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_DecryptInit: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DecryptInit(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DecryptUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12 
+_sun_security_pkcs11_wrapper_PKCS11_C_DecryptUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DecryptUpdate(JJ[BIIJ[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DeriveKey: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 
+_sun_security_pkcs11_wrapper_PKCS11_C_DeriveKey: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DeriveKey(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DestroyObject: this _: a1 _: a2 _: a3 _: a4 
+_sun_security_pkcs11_wrapper_PKCS11_C_DestroyObject: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DestroyObject(JJ)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DigestFinal: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_DigestFinal: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DigestFinal(J[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DigestInit: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_DigestInit: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DigestInit(JLsun/security/pkcs11/wrapper/CK_MECHANISM;)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DigestKey: this _: a1 _: a2 _: a3 _: a4 
+_sun_security_pkcs11_wrapper_PKCS11_C_DigestKey: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DigestKey(JJ)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DigestSingle: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 
+_sun_security_pkcs11_wrapper_PKCS11_C_DigestSingle: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DigestSingle(JLsun/security/pkcs11/wrapper/CK_MECHANISM;[BII[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_DigestUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_DigestUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_DigestUpdate(JJ[BII)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Encrypt: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 
+_sun_security_pkcs11_wrapper_PKCS11_C_Encrypt: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Encrypt(J[BII[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_EncryptFinal: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_EncryptFinal: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_EncryptFinal(JJ[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_EncryptInit: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_EncryptInit: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_EncryptInit(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_EncryptUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12 
+_sun_security_pkcs11_wrapper_PKCS11_C_EncryptUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_EncryptUpdate(JJ[BIIJ[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Finalize: this _: a1 
+_sun_security_pkcs11_wrapper_PKCS11_C_Finalize: this _: a1
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Finalize(Ljava/lang/Object;)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_FindObjects: this _: a1 _: a2 _: a3 _: a4 
+_sun_security_pkcs11_wrapper_PKCS11_C_FindObjects: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_FindObjects(JJ)[J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_FindObjectsFinal: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_FindObjectsFinal: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_FindObjectsFinal(J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_FindObjectsInit: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_FindObjectsInit: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_FindObjectsInit(J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GenerateKey: this _: a1 _: a2 _: a3 _: a4 
+_sun_security_pkcs11_wrapper_PKCS11_C_GenerateKey: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GenerateKey(JLsun/security/pkcs11/wrapper/CK_MECHANISM;[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GenerateKeyPair: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_GenerateKeyPair: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GenerateKeyPair(JLsun/security/pkcs11/wrapper/CK_MECHANISM;[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GenerateRandom: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_GenerateRandom: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GenerateRandom(J[B)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetAttributeValue: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetAttributeValue: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetAttributeValue(JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetInfo: this 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetInfo: this
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetInfo()Lsun/security/pkcs11/wrapper/CK_INFO;'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetMechanismInfo: this _: a1 _: a2 _: a3 _: a4 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetMechanismInfo: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetMechanismInfo(JJ)Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetMechanismList: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetMechanismList: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetMechanismList(J)[J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetOperationState: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetOperationState: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetOperationState(J)[B'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetSessionInfo: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetSessionInfo: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetSessionInfo(J)Lsun/security/pkcs11/wrapper/CK_SESSION_INFO;'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetSlotInfo: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetSlotInfo: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetSlotInfo(J)Lsun/security/pkcs11/wrapper/CK_SLOT_INFO;'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetSlotList: this _: a1 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetSlotList: this _: a1
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetSlotList(Z)[J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_GetTokenInfo: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_GetTokenInfo: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_GetTokenInfo(J)Lsun/security/pkcs11/wrapper/CK_TOKEN_INFO;'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Initialize: this _: a1 
+_sun_security_pkcs11_wrapper_PKCS11_C_Initialize: this _: a1
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Initialize(Ljava/lang/Object;)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Login: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_Login: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Login(JJ[C)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Logout: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_C_Logout: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Logout(J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_OpenSession: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 
+_sun_security_pkcs11_wrapper_PKCS11_C_OpenSession: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_OpenSession(JJLjava/lang/Object;Lsun/security/pkcs11/wrapper/CK_NOTIFY;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SeedRandom: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_SeedRandom: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SeedRandom(J[B)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SetAttributeValue: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_SetAttributeValue: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SetAttributeValue(JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SetOperationState: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_SetOperationState: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SetOperationState(J[BJJ)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Sign: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_Sign: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Sign(J[B)[B'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SignFinal: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_SignFinal: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SignFinal(JI)[B'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SignInit: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_SignInit: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SignInit(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SignRecover: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 
+_sun_security_pkcs11_wrapper_PKCS11_C_SignRecover: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SignRecover(J[BII[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SignRecoverInit: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_SignRecoverInit: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SignRecoverInit(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_SignUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_SignUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_SignUpdate(JJ[BII)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_UnwrapKey: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_UnwrapKey: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_UnwrapKey(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J[B[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_Verify: this _: a1 _: a2 _: a3 _: a4 
+_sun_security_pkcs11_wrapper_PKCS11_C_Verify: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_Verify(J[B[B)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_VerifyFinal: this _: a1 _: a2 _: a3 
+_sun_security_pkcs11_wrapper_PKCS11_C_VerifyFinal: this _: a1 _: a2 _: a3
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_VerifyFinal(J[B)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_VerifyInit: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_VerifyInit: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_VerifyInit(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_VerifyRecover: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 
+_sun_security_pkcs11_wrapper_PKCS11_C_VerifyRecover: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_VerifyRecover(J[BII[BII)I'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_VerifyRecoverInit: this _: a1 _: a2 _: a3 _: a4 _: a5 
+_sun_security_pkcs11_wrapper_PKCS11_C_VerifyRecoverInit: this _: a1 _: a2 _: a3 _: a4 _: a5
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_VerifyRecoverInit(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_VerifyUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_VerifyUpdate: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_VerifyUpdate(JJ[BII)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_C_WrapKey: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 
+_sun_security_pkcs11_wrapper_PKCS11_C_WrapKey: this _: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'C_WrapKey(JLsun/security/pkcs11/wrapper/CK_MECHANISM;JJ)[B'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_connect: this _: a1 _: a2 
+_sun_security_pkcs11_wrapper_PKCS11_connect: this _: a1 _: a2
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'connect(Ljava/lang/String;Ljava/lang/String;)V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_disconnect: this 
+_sun_security_pkcs11_wrapper_PKCS11_disconnect: this
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'disconnect()V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_finalizeLibrary: this 
+_sun_security_pkcs11_wrapper_PKCS11_finalizeLibrary: this
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'finalizeLibrary()V'>
 
     ^ JavaVM unimplementedNativeMethodSignal raise
 !
 
-_sun_security_pkcs11_wrapper_PKCS11_initializeLibrary: this 
+_sun_security_pkcs11_wrapper_PKCS11_initializeLibrary: this
 
     <javanative: 'sun/security/pkcs11/wrapper/PKCS11' name: 'initializeLibrary()V'>
 
-    ^ JavaVM unimplementedNativeMethodSignal raise
+    "Nothing to do be default"
+
+    "Modified: / 23-09-2013 / 23:13:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - sun.security.provider'!
@@ -21317,11 +22392,11 @@
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.7 2014-01-16 14:31:51 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.8 2015-01-28 02:10:50 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.7 2014-01-16 14:31:51 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.8 2015-01-28 02:10:50 vrany Exp $'
 !
 
 version_HG