diff --git a/build.xml b/build.xml
index 4f82ee3..b74041a 100644
--- a/build.xml
+++ b/build.xml
@@ -542,14 +542,8 @@
     </target>
 
     <target name="-init-classlib-hdk-for-clean">
- <!--       <ant antfile="classlib/build.xml"
-             target="-init-hdk-for-clean" inheritAll="false" >
-            <propertyset refid="required.props" />
-            <property name="keep.working" value="true" />
-            <property name="hy.target" location="${hy.target}"/>
-            <property name="common.resources" location="common_resources" />
-        </ant>
--->    </target>
+        <init-hdk/>
+    </target>
 
     <target name="-init-hdk">
         <ant antfile="${vm.dir.loc}/build.xml"
diff --git a/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/BufferedInputStreamTest.java b/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/BufferedInputStreamTest.java
index 8744ddb..4efbbba 100644
--- a/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/BufferedInputStreamTest.java
+++ b/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/BufferedInputStreamTest.java
@@ -1,524 +1,524 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.harmony.luni.tests.java.io;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import junit.framework.TestCase;
-import tests.support.Support_PlatformFile;
-
-public class BufferedInputStreamTest extends TestCase {
-
-    public String fileName;
-
-    private BufferedInputStream is;
-
-    private FileInputStream isFile;
-
-    byte[] ibuf = new byte[4096];
-
-    public String fileString = "Test_All_Tests\nTest_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_java_io_DataInputStream\nTest_java_io_File\nTest_java_io_FileDescriptor\nTest_java_io_FileInputStream\nTest_java_io_FileNotFoundException\nTest_java_io_FileOutputStream\nTest_java_io_FilterInputStream\nTest_java_io_FilterOutputStream\nTest_java_io_InputStream\nTest_java_io_IOException\nTest_java_io_OutputStream\nTest_java_io_PrintStream\nTest_java_io_RandomAccessFile\nTest_java_io_SyncFailedException\nTest_java_lang_AbstractMethodError\nTest_java_lang_ArithmeticException\nTest_java_lang_ArrayIndexOutOfBoundsException\nTest_java_lang_ArrayStoreException\nTest_java_lang_Boolean\nTest_java_lang_Byte\nTest_java_lang_Character\nTest_java_lang_Class\nTest_java_lang_ClassCastException\nTest_java_lang_ClassCircularityError\nTest_java_lang_ClassFormatError\nTest_java_lang_ClassLoader\nTest_java_lang_ClassNotFoundException\nTest_java_lang_CloneNotSupportedException\nTest_java_lang_Double\nTest_java_lang_Error\nTest_java_lang_Exception\nTest_java_lang_ExceptionInInitializerError\nTest_java_lang_Float\nTest_java_lang_IllegalAccessError\nTest_java_lang_IllegalAccessException\nTest_java_lang_IllegalArgumentException\nTest_java_lang_IllegalMonitorStateException\nTest_java_lang_IllegalThreadStateException\nTest_java_lang_IncompatibleClassChangeError\nTest_java_lang_IndexOutOfBoundsException\nTest_java_lang_InstantiationError\nTest_java_lang_InstantiationException\nTest_java_lang_Integer\nTest_java_lang_InternalError\nTest_java_lang_InterruptedException\nTest_java_lang_LinkageError\nTest_java_lang_Long\nTest_java_lang_Math\nTest_java_lang_NegativeArraySizeException\nTest_java_lang_NoClassDefFoundError\nTest_java_lang_NoSuchFieldError\nTest_java_lang_NoSuchMethodError\nTest_java_lang_NullPointerException\nTest_java_lang_Number\nTest_java_lang_NumberFormatException\nTest_java_lang_Object\nTest_java_lang_OutOfMemoryError\nTest_java_lang_RuntimeException\nTest_java_lang_SecurityManager\nTest_java_lang_Short\nTest_java_lang_StackOverflowError\nTest_java_lang_String\nTest_java_lang_StringBuffer\nTest_java_lang_StringIndexOutOfBoundsException\nTest_java_lang_System\nTest_java_lang_Thread\nTest_java_lang_ThreadDeath\nTest_java_lang_ThreadGroup\nTest_java_lang_Throwable\nTest_java_lang_UnknownError\nTest_java_lang_UnsatisfiedLinkError\nTest_java_lang_VerifyError\nTest_java_lang_VirtualMachineError\nTest_java_lang_vm_Image\nTest_java_lang_vm_MemorySegment\nTest_java_lang_vm_ROMStoreException\nTest_java_lang_vm_VM\nTest_java_lang_Void\nTest_java_net_BindException\nTest_java_net_ConnectException\nTest_java_net_DatagramPacket\nTest_java_net_DatagramSocket\nTest_java_net_DatagramSocketImpl\nTest_java_net_InetAddress\nTest_java_net_NoRouteToHostException\nTest_java_net_PlainDatagramSocketImpl\nTest_java_net_PlainSocketImpl\nTest_java_net_Socket\nTest_java_net_SocketException\nTest_java_net_SocketImpl\nTest_java_net_SocketInputStream\nTest_java_net_SocketOutputStream\nTest_java_net_UnknownHostException\nTest_java_util_ArrayEnumerator\nTest_java_util_Date\nTest_java_util_EventObject\nTest_java_util_HashEnumerator\nTest_java_util_Hashtable\nTest_java_util_Properties\nTest_java_util_ResourceBundle\nTest_java_util_tm\nTest_java_util_Vector\n";
-
-    /*
-     * @tests java.io.BufferedInputStream(InputStream)
-     */
-    public void test_ConstructorLjava_io_InputStream() {
-        try {
-            BufferedInputStream str = new BufferedInputStream(null);
-            str.read();
-            fail("Expected an IOException");
-        } catch (IOException e) {
-            // Expected
-        }
-    }
-
-    /*
-     * @tests java.io.BufferedInputStream(InputStream)
-     */
-    public void test_ConstructorLjava_io_InputStreamI() throws IOException {
-        try {
-            BufferedInputStream str = new BufferedInputStream(null, 1);
-            str.read();
-            fail("Expected an IOException");
-        } catch (IOException e) {
-            // Expected
-        }
-
-        // Test for method java.io.BufferedInputStream(java.io.InputStream, int)
-
-        // Create buffer with exact size of file
-        is = new BufferedInputStream(isFile, this.fileString.length());
-        // Ensure buffer gets filled by evaluating one read
-        is.read();
-        // Close underlying FileInputStream, all but 1 buffered bytes should
-        // still be available.
-        isFile.close();
-        // Read the remaining buffered characters, no IOException should
-        // occur.
-        is.skip(this.fileString.length() - 2);
-        is.read();
-        try {
-            // is.read should now throw an exception because it will have to
-            // be filled.
-            is.read();
-            fail("Exception should have been triggered by read()");
-        } catch (IOException e) {
-            // Expected
-        }
-
-        // regression test for harmony-2407
-        new MockBufferedInputStream(null);
-        assertNotNull(MockBufferedInputStream.buf);
-        MockBufferedInputStream.buf = null;
-        new MockBufferedInputStream(null, 100);
-        assertNotNull(MockBufferedInputStream.buf);
-    }
-
-    static class MockBufferedInputStream extends BufferedInputStream {
-        static byte[] buf;
-
-        MockBufferedInputStream(InputStream is) throws IOException {
-            super(is);
-            buf = super.buf;
-        }
-
-        MockBufferedInputStream(InputStream is, int size) throws IOException {
-            super(is, size);
-            buf = super.buf;
-        }
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#available()
-     */
-    public void test_available() throws IOException {
-        assertTrue("Returned incorrect number of available bytes", is
-                .available() == fileString.length());
-
-        // Test that a closed stream throws an IOE for available()
-        BufferedInputStream bis = new BufferedInputStream(
-                new ByteArrayInputStream(new byte[] { 'h', 'e', 'l', 'l', 'o',
-                        ' ', 't', 'i', 'm' }));
-        int available = bis.available();
-        bis.close();
-        assertTrue(available != 0);
-
-        try {
-            bis.available();
-            fail("Expected test to throw IOE.");
-        } catch (IOException ex) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#close()
-     */
-    public void test_close() throws IOException {
-        new BufferedInputStream(isFile).close();
-
-        // regression for HARMONY-667
-        BufferedInputStream buf = new BufferedInputStream(null, 5);
-        buf.close();
-
-        InputStream in = new InputStream() {
-            Object lock = new Object();
-
-            @Override
-            public int read() {
-                return 1;
-            }
-
-            @Override
-            public int read(byte[] buf, int offset, int length) {
-                synchronized (lock) {
-                    try {
-                        lock.wait(3000);
-                    } catch (InterruptedException e) {
-                        // Ignore
-                    }
-                }
-                return 1;
-            }
-
-            @Override
-            public void close() {
-                synchronized (lock) {
-                    lock.notifyAll();
-                }
-            }
-        };
-        final BufferedInputStream bufin = new BufferedInputStream(in);
-        Thread thread = new Thread(new Runnable() {
-            public void run() {
-                try {
-                    Thread.sleep(1000);
-                    bufin.close();
-                } catch (Exception e) {
-                    // Ignored
-                }
-            }
-        });
-        thread.start();
-        try {
-            bufin.read(new byte[100], 0, 99);
-            fail("Should throw IOException");
-        } catch (IOException e) {
-            // Expected
-        }
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#mark(int)
-     */
-    public void test_markI() throws IOException {
-        byte[] buf1 = new byte[100];
-        byte[] buf2 = new byte[100];
-        is.skip(3000);
-        is.mark(1000);
-        is.read(buf1, 0, buf1.length);
-        is.reset();
-        is.read(buf2, 0, buf2.length);
-        is.reset();
-        assertTrue("Failed to mark correct position", new String(buf1, 0,
-                buf1.length).equals(new String(buf2, 0, buf2.length)));
-
-        byte[] bytes = new byte[256];
-        for (int i = 0; i < 256; i++) {
-            bytes[i] = (byte) i;
-        }
-        InputStream in = new BufferedInputStream(
-                new ByteArrayInputStream(bytes), 12);
-        in.skip(6);
-        in.mark(14);
-        in.read(new byte[14], 0, 14);
-        in.reset();
-        assertTrue("Wrong bytes", in.read() == 6 && in.read() == 7);
-
-        in = new BufferedInputStream(new ByteArrayInputStream(bytes), 12);
-        in.skip(6);
-        in.mark(8);
-        in.skip(7);
-        in.reset();
-        assertTrue("Wrong bytes 2", in.read() == 6 && in.read() == 7);
-
-        BufferedInputStream buf = new BufferedInputStream(
-                new ByteArrayInputStream(new byte[] { 0, 1, 2, 3, 4 }), 2);
-        buf.mark(3);
-        bytes = new byte[3];
-        int result = buf.read(bytes);
-        assertEquals(3, result);
-        assertEquals("Assert 0:", 0, bytes[0]);
-        assertEquals("Assert 1:", 1, bytes[1]);
-        assertEquals("Assert 2:", 2, bytes[2]);
-        assertEquals("Assert 3:", 3, buf.read());
-
-        buf = new BufferedInputStream(new ByteArrayInputStream(new byte[] { 0,
-                1, 2, 3, 4 }), 2);
-        buf.mark(3);
-        bytes = new byte[4];
-        result = buf.read(bytes);
-        assertEquals(4, result);
-        assertEquals("Assert 4:", 0, bytes[0]);
-        assertEquals("Assert 5:", 1, bytes[1]);
-        assertEquals("Assert 6:", 2, bytes[2]);
-        assertEquals("Assert 7:", 3, bytes[3]);
-        assertEquals("Assert 8:", 4, buf.read());
-        assertEquals("Assert 9:", -1, buf.read());
-
-        buf = new BufferedInputStream(new ByteArrayInputStream(new byte[] { 0,
-                1, 2, 3, 4 }), 2);
-        buf.mark(Integer.MAX_VALUE);
-        buf.read();
-        buf.close();
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#markSupported()
-     */
-    public void test_markSupported() {
-        assertTrue("markSupported returned incorrect value", is.markSupported());
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#read()
-     */
-    public void test_read() throws IOException {
-        InputStreamReader isr = new InputStreamReader(is);
-        int c = isr.read();
-        assertTrue("read returned incorrect char", c == fileString.charAt(0));
-
-        byte[] bytes = new byte[256];
-        for (int i = 0; i < 256; i++) {
-            bytes[i] = (byte) i;
-        }
-        InputStream in = new BufferedInputStream(
-                new ByteArrayInputStream(bytes), 12);
-        assertEquals("Wrong initial byte", 0, in.read()); // Fill the
-        // buffer
-        byte[] buf = new byte[14];
-        in.read(buf, 0, 14); // Read greater than the buffer
-        assertTrue("Wrong block read data", new String(buf, 0, 14)
-                .equals(new String(bytes, 1, 14)));
-        assertEquals("Wrong bytes", 15, in.read()); // Check next byte
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#read(byte[], int, int)
-     */
-    public void test_read$BII_Exception() throws IOException {
-        BufferedInputStream bis = new BufferedInputStream(null);
-        try {
-            bis.read(null, -1, -1);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e) {
-            // expected
-        }
-
-        try {
-            bis.read(new byte[0], -1, -1);
-            fail("should throw IndexOutOfBoundsException");
-        } catch (IndexOutOfBoundsException e) {
-            // expected
-        }
-
-        try {
-            bis.read(new byte[0], 1, -1);
-            fail("should throw IndexOutOfBoundsException");
-        } catch (IndexOutOfBoundsException e) {
-            // expected
-        }
-
-        try {
-            bis.read(new byte[0], 1, 1);
-            fail("should throw IndexOutOfBoundsException");
-        } catch (IndexOutOfBoundsException e) {
-            // expected
-        }
-
-        bis.close();
-
-        try {
-            bis.read(null, -1, -1);
-            fail("should throw IOException");
-        } catch (IOException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#read(byte[], int, int)
-     */
-    public void test_read$BII() throws IOException {
-        byte[] buf1 = new byte[100];
-        is.skip(3000);
-        is.mark(1000);
-        is.read(buf1, 0, buf1.length);
-        assertTrue("Failed to read correct data", new String(buf1, 0,
-                buf1.length).equals(fileString.substring(3000, 3100)));
-
-        BufferedInputStream bufin = new BufferedInputStream(new InputStream() {
-            int size = 2, pos = 0;
-
-            byte[] contents = new byte[size];
-
-            @Override
-            public int read() throws IOException {
-                if (pos >= size) {
-                    throw new IOException("Read past end of data");
-                }
-                return contents[pos++];
-            }
-
-            @Override
-            public int read(byte[] buf, int off, int len) throws IOException {
-                if (pos >= size) {
-                    throw new IOException("Read past end of data");
-                }
-                int toRead = len;
-                if (toRead > available()) {
-                    toRead = available();
-                }
-                System.arraycopy(contents, pos, buf, off, toRead);
-                pos += toRead;
-                return toRead;
-            }
-
-            @Override
-            public int available() {
-                return size - pos;
-            }
-        });
-        bufin.read();
-        int result = bufin.read(new byte[2], 0, 2);
-        assertTrue("Incorrect result: " + result, result == 1);
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#reset()
-     */
-    public void test_reset() throws IOException {
-        byte[] buf1 = new byte[10];
-        byte[] buf2 = new byte[10];
-        is.mark(2000);
-        is.read(buf1, 0, 10);
-        is.reset();
-        is.read(buf2, 0, 10);
-        is.reset();
-        assertTrue("Reset failed", new String(buf1, 0, buf1.length)
-                .equals(new String(buf2, 0, buf2.length)));
-
-        BufferedInputStream bIn = new BufferedInputStream(
-                new ByteArrayInputStream("1234567890".getBytes()));
-        bIn.mark(10);
-        for (int i = 0; i < 11; i++) {
-            bIn.read();
-        }
-        bIn.reset();
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#reset()
-     */
-    public void test_reset_Exception() throws IOException {
-        BufferedInputStream bis = new BufferedInputStream(null);
-
-        // throws IOException with message "Mark has been invalidated"
-        try {
-            bis.reset();
-            fail("should throw IOException");
-        } catch (IOException e) {
-            // expected
-        }
-
-        // does not throw IOException
-        bis.mark(1);
-        bis.reset();
-
-        bis.close();
-
-        // throws IOException with message "stream is closed"
-        try {
-            bis.reset();
-            fail("should throw IOException");
-        } catch (IOException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#reset()
-     */
-    public void test_reset_scenario1() throws IOException {
-        byte[] input = "12345678900".getBytes();
-        BufferedInputStream buffis = new BufferedInputStream(
-                new ByteArrayInputStream(input));
-        buffis.read();
-        buffis.mark(5);
-        buffis.skip(5);
-        buffis.reset();
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#reset()
-     */
-    public void test_reset_scenario2() throws IOException {
-        byte[] input = "12345678900".getBytes();
-        BufferedInputStream buffis = new BufferedInputStream(
-                new ByteArrayInputStream(input));
-        buffis.mark(5);
-        buffis.skip(6);
-        buffis.reset();
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#skip(long)
-     */
-    public void test_skipJ() throws IOException {
-        byte[] buf1 = new byte[10];
-        is.mark(2000);
-        is.skip(1000);
-        is.read(buf1, 0, buf1.length);
-        is.reset();
-        assertTrue("Failed to skip to correct position", new String(buf1, 0,
-                buf1.length).equals(fileString.substring(1000, 1010)));
-
-        // regression for HARMONY-667
-        try {
-            BufferedInputStream buf = new BufferedInputStream(null, 5);
-            buf.skip(10);
-            fail("Should throw IOException");
-        } catch (IOException e) {
-            // Expected
-        }
-    }
-
-    /**
-     * @tests java.io.BufferedInputStream#skip(long)
-     */
-    public void test_skip_NullInputStream() throws IOException {
-        BufferedInputStream buf = new BufferedInputStream(null, 5);
-        assertEquals(0, buf.skip(0));
-    }
-
-    /**
-     * Sets up the fixture, for example, open a network connection. This method
-     * is called before a test is executed.
-     */
-    @Override
-    protected void setUp() throws IOException {
-        fileName = System.getProperty("user.dir");
-        String separator = System.getProperty("file.separator");
-        if (fileName.charAt(fileName.length() - 1) == separator.charAt(0)) {
-            fileName = Support_PlatformFile.getNewPlatformFile(fileName,
-                    "input.tst");
-        } else {
-            fileName = Support_PlatformFile.getNewPlatformFile(fileName
-                    + separator, "input.tst");
-        }
-        OutputStream fos = new FileOutputStream(fileName);
-        fos.write(fileString.getBytes());
-        fos.close();
-        isFile = new FileInputStream(fileName);
-        is = new BufferedInputStream(isFile);
-    }
-
-    /**
-     * Tears down the fixture, for example, close a network connection. This
-     * method is called after a test is executed.
-     */
-    @Override
-    protected void tearDown() {
-        try {
-            is.close();
-        } catch (Exception e) {
-        }
-        try {
-            File f = new File(fileName);
-            f.delete();
-        } catch (Exception e) {
-        }
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.luni.tests.java.io;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import junit.framework.TestCase;
+import tests.support.Support_PlatformFile;
+
+public class BufferedInputStreamTest extends TestCase {
+
+    public String fileName;
+
+    private BufferedInputStream is;
+
+    private FileInputStream isFile;
+
+    byte[] ibuf = new byte[4096];
+
+    public String fileString = "Test_All_Tests\nTest_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_java_io_DataInputStream\nTest_java_io_File\nTest_java_io_FileDescriptor\nTest_java_io_FileInputStream\nTest_java_io_FileNotFoundException\nTest_java_io_FileOutputStream\nTest_java_io_FilterInputStream\nTest_java_io_FilterOutputStream\nTest_java_io_InputStream\nTest_java_io_IOException\nTest_java_io_OutputStream\nTest_java_io_PrintStream\nTest_java_io_RandomAccessFile\nTest_java_io_SyncFailedException\nTest_java_lang_AbstractMethodError\nTest_java_lang_ArithmeticException\nTest_java_lang_ArrayIndexOutOfBoundsException\nTest_java_lang_ArrayStoreException\nTest_java_lang_Boolean\nTest_java_lang_Byte\nTest_java_lang_Character\nTest_java_lang_Class\nTest_java_lang_ClassCastException\nTest_java_lang_ClassCircularityError\nTest_java_lang_ClassFormatError\nTest_java_lang_ClassLoader\nTest_java_lang_ClassNotFoundException\nTest_java_lang_CloneNotSupportedException\nTest_java_lang_Double\nTest_java_lang_Error\nTest_java_lang_Exception\nTest_java_lang_ExceptionInInitializerError\nTest_java_lang_Float\nTest_java_lang_IllegalAccessError\nTest_java_lang_IllegalAccessException\nTest_java_lang_IllegalArgumentException\nTest_java_lang_IllegalMonitorStateException\nTest_java_lang_IllegalThreadStateException\nTest_java_lang_IncompatibleClassChangeError\nTest_java_lang_IndexOutOfBoundsException\nTest_java_lang_InstantiationError\nTest_java_lang_InstantiationException\nTest_java_lang_Integer\nTest_java_lang_InternalError\nTest_java_lang_InterruptedException\nTest_java_lang_LinkageError\nTest_java_lang_Long\nTest_java_lang_Math\nTest_java_lang_NegativeArraySizeException\nTest_java_lang_NoClassDefFoundError\nTest_java_lang_NoSuchFieldError\nTest_java_lang_NoSuchMethodError\nTest_java_lang_NullPointerException\nTest_java_lang_Number\nTest_java_lang_NumberFormatException\nTest_java_lang_Object\nTest_java_lang_OutOfMemoryError\nTest_java_lang_RuntimeException\nTest_java_lang_SecurityManager\nTest_java_lang_Short\nTest_java_lang_StackOverflowError\nTest_java_lang_String\nTest_java_lang_StringBuffer\nTest_java_lang_StringIndexOutOfBoundsException\nTest_java_lang_System\nTest_java_lang_Thread\nTest_java_lang_ThreadDeath\nTest_java_lang_ThreadGroup\nTest_java_lang_Throwable\nTest_java_lang_UnknownError\nTest_java_lang_UnsatisfiedLinkError\nTest_java_lang_VerifyError\nTest_java_lang_VirtualMachineError\nTest_java_lang_vm_Image\nTest_java_lang_vm_MemorySegment\nTest_java_lang_vm_ROMStoreException\nTest_java_lang_vm_VM\nTest_java_lang_Void\nTest_java_net_BindException\nTest_java_net_ConnectException\nTest_java_net_DatagramPacket\nTest_java_net_DatagramSocket\nTest_java_net_DatagramSocketImpl\nTest_java_net_InetAddress\nTest_java_net_NoRouteToHostException\nTest_java_net_PlainDatagramSocketImpl\nTest_java_net_PlainSocketImpl\nTest_java_net_Socket\nTest_java_net_SocketException\nTest_java_net_SocketImpl\nTest_java_net_SocketInputStream\nTest_java_net_SocketOutputStream\nTest_java_net_UnknownHostException\nTest_java_util_ArrayEnumerator\nTest_java_util_Date\nTest_java_util_EventObject\nTest_java_util_HashEnumerator\nTest_java_util_Hashtable\nTest_java_util_Properties\nTest_java_util_ResourceBundle\nTest_java_util_tm\nTest_java_util_Vector\n";
+
+    /*
+     * @tests java.io.BufferedInputStream(InputStream)
+     */
+    public void test_ConstructorLjava_io_InputStream() {
+        try {
+            BufferedInputStream str = new BufferedInputStream(null);
+            str.read();
+            fail("Expected an IOException");
+        } catch (IOException e) {
+            // Expected
+        }
+    }
+
+    /*
+     * @tests java.io.BufferedInputStream(InputStream)
+     */
+    public void test_ConstructorLjava_io_InputStreamI() throws IOException {
+        try {
+            BufferedInputStream str = new BufferedInputStream(null, 1);
+            str.read();
+            fail("Expected an IOException");
+        } catch (IOException e) {
+            // Expected
+        }
+
+        // Test for method java.io.BufferedInputStream(java.io.InputStream, int)
+
+        // Create buffer with exact size of file
+        is = new BufferedInputStream(isFile, this.fileString.length());
+        // Ensure buffer gets filled by evaluating one read
+        is.read();
+        // Close underlying FileInputStream, all but 1 buffered bytes should
+        // still be available.
+        isFile.close();
+        // Read the remaining buffered characters, no IOException should
+        // occur.
+        is.skip(this.fileString.length() - 2);
+        is.read();
+        try {
+            // is.read should now throw an exception because it will have to
+            // be filled.
+            is.read();
+            fail("Exception should have been triggered by read()");
+        } catch (IOException e) {
+            // Expected
+        }
+
+        // regression test for harmony-2407
+        new MockBufferedInputStream(null);
+        assertNotNull(MockBufferedInputStream.buf);
+        MockBufferedInputStream.buf = null;
+        new MockBufferedInputStream(null, 100);
+        assertNotNull(MockBufferedInputStream.buf);
+    }
+
+    static class MockBufferedInputStream extends BufferedInputStream {
+        static byte[] buf;
+
+        MockBufferedInputStream(InputStream is) throws IOException {
+            super(is);
+            buf = super.buf;
+        }
+
+        MockBufferedInputStream(InputStream is, int size) throws IOException {
+            super(is, size);
+            buf = super.buf;
+        }
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#available()
+     */
+    public void test_available() throws IOException {
+        assertTrue("Returned incorrect number of available bytes", is
+                .available() == fileString.length());
+
+        // Test that a closed stream throws an IOE for available()
+        BufferedInputStream bis = new BufferedInputStream(
+                new ByteArrayInputStream(new byte[] { 'h', 'e', 'l', 'l', 'o',
+                        ' ', 't', 'i', 'm' }));
+        int available = bis.available();
+        bis.close();
+        assertTrue(available != 0);
+
+        try {
+            bis.available();
+            fail("Expected test to throw IOE.");
+        } catch (IOException ex) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#close()
+     */
+    public void test_close() throws IOException {
+        new BufferedInputStream(isFile).close();
+
+        // regression for HARMONY-667
+        BufferedInputStream buf = new BufferedInputStream(null, 5);
+        buf.close();
+
+        InputStream in = new InputStream() {
+            Object lock = new Object();
+
+            @Override
+            public int read() {
+                return 1;
+            }
+
+            @Override
+            public int read(byte[] buf, int offset, int length) {
+                synchronized (lock) {
+                    try {
+                        lock.wait(3000);
+                    } catch (InterruptedException e) {
+                        // Ignore
+                    }
+                }
+                return 1;
+            }
+
+            @Override
+            public void close() {
+                synchronized (lock) {
+                    lock.notifyAll();
+                }
+            }
+        };
+        final BufferedInputStream bufin = new BufferedInputStream(in);
+        Thread thread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    Thread.sleep(1000);
+                    bufin.close();
+                } catch (Exception e) {
+                    // Ignored
+                }
+            }
+        });
+        thread.start();
+        try {
+            bufin.read(new byte[100], 0, 99);
+            fail("Should throw IOException");
+        } catch (IOException e) {
+            // Expected
+        }
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#mark(int)
+     */
+    public void test_markI() throws IOException {
+        byte[] buf1 = new byte[100];
+        byte[] buf2 = new byte[100];
+        is.skip(3000);
+        is.mark(1000);
+        is.read(buf1, 0, buf1.length);
+        is.reset();
+        is.read(buf2, 0, buf2.length);
+        is.reset();
+        assertTrue("Failed to mark correct position", new String(buf1, 0,
+                buf1.length).equals(new String(buf2, 0, buf2.length)));
+
+        byte[] bytes = new byte[256];
+        for (int i = 0; i < 256; i++) {
+            bytes[i] = (byte) i;
+        }
+        InputStream in = new BufferedInputStream(
+                new ByteArrayInputStream(bytes), 12);
+        in.skip(6);
+        in.mark(14);
+        in.read(new byte[14], 0, 14);
+        in.reset();
+        assertTrue("Wrong bytes", in.read() == 6 && in.read() == 7);
+
+        in = new BufferedInputStream(new ByteArrayInputStream(bytes), 12);
+        in.skip(6);
+        in.mark(8);
+        in.skip(7);
+        in.reset();
+        assertTrue("Wrong bytes 2", in.read() == 6 && in.read() == 7);
+
+        BufferedInputStream buf = new BufferedInputStream(
+                new ByteArrayInputStream(new byte[] { 0, 1, 2, 3, 4 }), 2);
+        buf.mark(3);
+        bytes = new byte[3];
+        int result = buf.read(bytes);
+        assertEquals(3, result);
+        assertEquals("Assert 0:", 0, bytes[0]);
+        assertEquals("Assert 1:", 1, bytes[1]);
+        assertEquals("Assert 2:", 2, bytes[2]);
+        assertEquals("Assert 3:", 3, buf.read());
+
+        buf = new BufferedInputStream(new ByteArrayInputStream(new byte[] { 0,
+                1, 2, 3, 4 }), 2);
+        buf.mark(3);
+        bytes = new byte[4];
+        result = buf.read(bytes);
+        assertEquals(4, result);
+        assertEquals("Assert 4:", 0, bytes[0]);
+        assertEquals("Assert 5:", 1, bytes[1]);
+        assertEquals("Assert 6:", 2, bytes[2]);
+        assertEquals("Assert 7:", 3, bytes[3]);
+        assertEquals("Assert 8:", 4, buf.read());
+        assertEquals("Assert 9:", -1, buf.read());
+
+        buf = new BufferedInputStream(new ByteArrayInputStream(new byte[] { 0,
+                1, 2, 3, 4 }), 2);
+        buf.mark(Integer.MAX_VALUE);
+        buf.read();
+        buf.close();
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#markSupported()
+     */
+    public void test_markSupported() {
+        assertTrue("markSupported returned incorrect value", is.markSupported());
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#read()
+     */
+    public void test_read() throws IOException {
+        InputStreamReader isr = new InputStreamReader(is);
+        int c = isr.read();
+        assertTrue("read returned incorrect char", c == fileString.charAt(0));
+
+        byte[] bytes = new byte[256];
+        for (int i = 0; i < 256; i++) {
+            bytes[i] = (byte) i;
+        }
+        InputStream in = new BufferedInputStream(
+                new ByteArrayInputStream(bytes), 12);
+        assertEquals("Wrong initial byte", 0, in.read()); // Fill the
+        // buffer
+        byte[] buf = new byte[14];
+        in.read(buf, 0, 14); // Read greater than the buffer
+        assertTrue("Wrong block read data", new String(buf, 0, 14)
+                .equals(new String(bytes, 1, 14)));
+        assertEquals("Wrong bytes", 15, in.read()); // Check next byte
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#read(byte[], int, int)
+     */
+    public void test_read$BII_Exception() throws IOException {
+        BufferedInputStream bis = new BufferedInputStream(null);
+        try {
+            bis.read(null, -1, -1);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+
+        try {
+            bis.read(new byte[0], -1, -1);
+            fail("should throw IndexOutOfBoundsException");
+        } catch (IndexOutOfBoundsException e) {
+            // expected
+        }
+
+        try {
+            bis.read(new byte[0], 1, -1);
+            fail("should throw IndexOutOfBoundsException");
+        } catch (IndexOutOfBoundsException e) {
+            // expected
+        }
+
+        try {
+            bis.read(new byte[0], 1, 1);
+            fail("should throw IndexOutOfBoundsException");
+        } catch (IndexOutOfBoundsException e) {
+            // expected
+        }
+
+        bis.close();
+
+        try {
+            bis.read(null, -1, -1);
+            fail("should throw IOException");
+        } catch (IOException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#read(byte[], int, int)
+     */
+    public void test_read$BII() throws IOException {
+        byte[] buf1 = new byte[100];
+        is.skip(3000);
+        is.mark(1000);
+        is.read(buf1, 0, buf1.length);
+        assertTrue("Failed to read correct data", new String(buf1, 0,
+                buf1.length).equals(fileString.substring(3000, 3100)));
+
+        BufferedInputStream bufin = new BufferedInputStream(new InputStream() {
+            int size = 2, pos = 0;
+
+            byte[] contents = new byte[size];
+
+            @Override
+            public int read() throws IOException {
+                if (pos >= size) {
+                    throw new IOException("Read past end of data");
+                }
+                return contents[pos++];
+            }
+
+            @Override
+            public int read(byte[] buf, int off, int len) throws IOException {
+                if (pos >= size) {
+                    throw new IOException("Read past end of data");
+                }
+                int toRead = len;
+                if (toRead > available()) {
+                    toRead = available();
+                }
+                System.arraycopy(contents, pos, buf, off, toRead);
+                pos += toRead;
+                return toRead;
+            }
+
+            @Override
+            public int available() {
+                return size - pos;
+            }
+        });
+        bufin.read();
+        int result = bufin.read(new byte[2], 0, 2);
+        assertTrue("Incorrect result: " + result, result == 1);
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#reset()
+     */
+    public void test_reset() throws IOException {
+        byte[] buf1 = new byte[10];
+        byte[] buf2 = new byte[10];
+        is.mark(2000);
+        is.read(buf1, 0, 10);
+        is.reset();
+        is.read(buf2, 0, 10);
+        is.reset();
+        assertTrue("Reset failed", new String(buf1, 0, buf1.length)
+                .equals(new String(buf2, 0, buf2.length)));
+
+        BufferedInputStream bIn = new BufferedInputStream(
+                new ByteArrayInputStream("1234567890".getBytes()));
+        bIn.mark(10);
+        for (int i = 0; i < 11; i++) {
+            bIn.read();
+        }
+        bIn.reset();
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#reset()
+     */
+    public void test_reset_Exception() throws IOException {
+        BufferedInputStream bis = new BufferedInputStream(null);
+
+        // throws IOException with message "Mark has been invalidated"
+        try {
+            bis.reset();
+            fail("should throw IOException");
+        } catch (IOException e) {
+            // expected
+        }
+
+        // does not throw IOException
+        bis.mark(1);
+        bis.reset();
+
+        bis.close();
+
+        // throws IOException with message "stream is closed"
+        try {
+            bis.reset();
+            fail("should throw IOException");
+        } catch (IOException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#reset()
+     */
+    public void test_reset_scenario1() throws IOException {
+        byte[] input = "12345678900".getBytes();
+        BufferedInputStream buffis = new BufferedInputStream(
+                new ByteArrayInputStream(input));
+        buffis.read();
+        buffis.mark(5);
+        buffis.skip(5);
+        buffis.reset();
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#reset()
+     */
+    public void test_reset_scenario2() throws IOException {
+        byte[] input = "12345678900".getBytes();
+        BufferedInputStream buffis = new BufferedInputStream(
+                new ByteArrayInputStream(input));
+        buffis.mark(5);
+        buffis.skip(6);
+        buffis.reset();
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#skip(long)
+     */
+    public void test_skipJ() throws IOException {
+        byte[] buf1 = new byte[10];
+        is.mark(2000);
+        is.skip(1000);
+        is.read(buf1, 0, buf1.length);
+        is.reset();
+        assertTrue("Failed to skip to correct position", new String(buf1, 0,
+                buf1.length).equals(fileString.substring(1000, 1010)));
+
+        // regression for HARMONY-667
+        try {
+            BufferedInputStream buf = new BufferedInputStream(null, 5);
+            buf.skip(10);
+            fail("Should throw IOException");
+        } catch (IOException e) {
+            // Expected
+        }
+    }
+
+    /**
+     * @tests java.io.BufferedInputStream#skip(long)
+     */
+    public void test_skip_NullInputStream() throws IOException {
+        BufferedInputStream buf = new BufferedInputStream(null, 5);
+        assertEquals(0, buf.skip(0));
+    }
+
+    /**
+     * Sets up the fixture, for example, open a network connection. This method
+     * is called before a test is executed.
+     */
+    @Override
+    protected void setUp() throws IOException {
+        fileName = System.getProperty("user.dir");
+        String separator = System.getProperty("file.separator");
+        if (fileName.charAt(fileName.length() - 1) == separator.charAt(0)) {
+            fileName = Support_PlatformFile.getNewPlatformFile(fileName,
+                    "input.tst");
+        } else {
+            fileName = Support_PlatformFile.getNewPlatformFile(fileName
+                    + separator, "input.tst");
+        }
+        OutputStream fos = new FileOutputStream(fileName);
+        fos.write(fileString.getBytes());
+        fos.close();
+        isFile = new FileInputStream(fileName);
+        is = new BufferedInputStream(isFile);
+    }
+
+    /**
+     * Tears down the fixture, for example, close a network connection. This
+     * method is called after a test is executed.
+     */
+    @Override
+    protected void tearDown() {
+        try {
+            is.close();
+        } catch (Exception e) {
+        }
+        try {
+            File f = new File(fileName);
+            f.delete();
+        } catch (Exception e) {
+        }
+    }
+}
diff --git a/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/URLEncoderTest.java b/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/URLEncoderTest.java
index 67a81cf..09ab006 100644
--- a/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/URLEncoderTest.java
+++ b/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/URLEncoderTest.java
@@ -1,67 +1,67 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.harmony.luni.tests.java.net;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-
-import junit.framework.TestCase;
-import tests.support.Support_Configuration;
-
-public class URLEncoderTest extends TestCase {
-
-    /**
-     * @tests java.net.URLEncoder#encode(java.lang.String)
-     */
-    @SuppressWarnings("deprecation")
-    public void test_encodeLjava_lang_String() {
-        final String URL = "http://" + Support_Configuration.HomeAddress;
-        final String URL2 = "telnet://justWantToHaveFun.com:400";
-        final String URL3 = "file://myServer.org/a file with spaces.jpg";
-
-        assertTrue("1. Incorrect encoding/decoding", URLDecoder.decode(
-                URLEncoder.encode(URL)).equals(URL));
-        assertTrue("2. Incorrect encoding/decoding", URLDecoder.decode(
-                URLEncoder.encode(URL2)).equals(URL2));
-        assertTrue("3. Incorrect encoding/decoding", URLDecoder.decode(
-                URLEncoder.encode(URL3)).equals(URL3));
-    }
-
-    /**
-     * @tests URLEncoder#encode(String, String)
-     */
-    public void test_encodeLjava_lang_StringLjava_lang_String()
-            throws Exception {
-        // Regression for HARMONY-24
-        try {
-            URLEncoder.encode("str", "unknown_enc");
-            fail("Assert 0: Should throw UEE for invalid encoding");
-        } catch (UnsupportedEncodingException e) {
-            // expected
-        }
-
-        // Regression for HARMONY-1233
-        try {
-            URLEncoder.encode(null, "harmony");
-            fail("NullPointerException expected");
-        } catch (NullPointerException e) {
-            // expected
-        }
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.luni.tests.java.net;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+
+import junit.framework.TestCase;
+import tests.support.Support_Configuration;
+
+public class URLEncoderTest extends TestCase {
+
+    /**
+     * @tests java.net.URLEncoder#encode(java.lang.String)
+     */
+    @SuppressWarnings("deprecation")
+    public void test_encodeLjava_lang_String() {
+        final String URL = "http://" + Support_Configuration.HomeAddress;
+        final String URL2 = "telnet://justWantToHaveFun.com:400";
+        final String URL3 = "file://myServer.org/a file with spaces.jpg";
+
+        assertTrue("1. Incorrect encoding/decoding", URLDecoder.decode(
+                URLEncoder.encode(URL)).equals(URL));
+        assertTrue("2. Incorrect encoding/decoding", URLDecoder.decode(
+                URLEncoder.encode(URL2)).equals(URL2));
+        assertTrue("3. Incorrect encoding/decoding", URLDecoder.decode(
+                URLEncoder.encode(URL3)).equals(URL3));
+    }
+
+    /**
+     * @tests URLEncoder#encode(String, String)
+     */
+    public void test_encodeLjava_lang_StringLjava_lang_String()
+            throws Exception {
+        // Regression for HARMONY-24
+        try {
+            URLEncoder.encode("str", "unknown_enc");
+            fail("Assert 0: Should throw UEE for invalid encoding");
+        } catch (UnsupportedEncodingException e) {
+            // expected
+        }
+
+        // Regression for HARMONY-1233
+        try {
+            URLEncoder.encode(null, "harmony");
+            fail("NullPointerException expected");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+}
diff --git a/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/FormatterTest.java b/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/FormatterTest.java
index 5468914..31d1368 100644
--- a/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/FormatterTest.java
+++ b/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/FormatterTest.java
@@ -1,4333 +1,4333 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.harmony.luni.tests.java.util;
-
-import java.io.BufferedOutputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FilePermission;
-import java.io.Flushable;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PipedOutputStream;
-import java.io.PrintStream;
-import java.io.UnsupportedEncodingException;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.math.MathContext;
-import java.nio.charset.Charset;
-import java.security.Permission;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.DuplicateFormatFlagsException;
-import java.util.FormatFlagsConversionMismatchException;
-import java.util.Formattable;
-import java.util.FormattableFlags;
-import java.util.Formatter;
-import java.util.FormatterClosedException;
-import java.util.IllegalFormatCodePointException;
-import java.util.IllegalFormatConversionException;
-import java.util.IllegalFormatException;
-import java.util.IllegalFormatFlagsException;
-import java.util.IllegalFormatPrecisionException;
-import java.util.IllegalFormatWidthException;
-import java.util.Locale;
-import java.util.MissingFormatArgumentException;
-import java.util.MissingFormatWidthException;
-import java.util.TimeZone;
-import java.util.UnknownFormatConversionException;
-import java.util.Formatter.BigDecimalLayoutForm;
-
-import junit.framework.TestCase;
-
-public class FormatterTest extends TestCase {
-	private boolean root;
-
-    class MockAppendable implements Appendable {
-        public Appendable append(CharSequence arg0) throws IOException {
-            return null;
-        }
-
-        public Appendable append(char arg0) throws IOException {
-            return null;
-        }
-
-        public Appendable append(CharSequence arg0, int arg1, int arg2)
-                throws IOException {
-            return null;
-        }
-    }
-
-    class MockSecurityManager extends SecurityManager {
-        public void checkPermission(Permission p) {
-            if (p.getActions().equals("write") && p instanceof FilePermission) {
-                throw new SecurityException("Always throw security exception");
-            }
-        }
-
-        public void checkPermission(Permission p, Object ctx) {
-            checkPermission(p);
-        }
-    }
-
-    class MockFormattable implements Formattable {
-        public void formatTo(Formatter formatter, int flags, int width,
-                int precision) throws IllegalFormatException {
-            if ((flags & FormattableFlags.UPPERCASE) != 0) {
-                formatter.format("CUSTOMIZED FORMAT FUNCTION" + " WIDTH: "
-                        + width + " PRECISION: " + precision);
-            } else {
-                formatter.format("customized format function" + " width: "
-                        + width + " precision: " + precision);
-            }
-        }
-
-        public String toString() {
-            return "formattable object";
-        }
-
-        public int hashCode() {
-            return 0xf;
-        }
-    }
-
-    class MockDestination implements Appendable, Flushable {
-
-        private StringBuilder data = new StringBuilder();
-
-        private boolean enabled = false;
-
-        public Appendable append(char c) throws IOException {
-            if (enabled) {
-                data.append(c);
-                enabled = true; // enable it after the first append
-            } else {
-                throw new IOException();
-            }
-            return this;
-        }
-
-        public Appendable append(CharSequence csq) throws IOException {
-            if (enabled) {
-                data.append(csq);
-                enabled = true; // enable it after the first append
-            } else {
-                throw new IOException();
-            }
-            return this;
-        }
-
-        public Appendable append(CharSequence csq, int start, int end)
-                throws IOException {
-            if (enabled) {
-                data.append(csq, start, end);
-                enabled = true; // enable it after the first append
-            } else {
-                throw new IOException();
-            }
-            return this;
-        }
-
-        public void flush() throws IOException {
-            throw new IOException("Always throw IOException");
-        }
-
-        public String toString() {
-            return data.toString();
-        }
-    }
-
-    private File notExist;
-
-    private File fileWithContent;
-
-    private File readOnly;
-
-    private File secret;
-    
-    private TimeZone defaultTimeZone;
-
-    /**
-     * @tests java.util.Formatter#Formatter()
-     */
-    public void test_Constructor() {
-        Formatter f = new Formatter();
-        assertNotNull(f);
-        assertTrue(f.out() instanceof StringBuilder);
-        assertEquals(f.locale(), Locale.getDefault());
-        assertNotNull(f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(Appendable)
-     */
-    public void test_ConstructorLjava_lang_Appendable() {
-        MockAppendable ma = new MockAppendable();
-        Formatter f1 = new Formatter(ma);
-        assertEquals(ma, f1.out());
-        assertEquals(f1.locale(), Locale.getDefault());
-        assertNotNull(f1.toString());
-
-        Formatter f2 = new Formatter((Appendable) null);
-        /*
-         * If a(the input param) is null then a StringBuilder will be created
-         * and the output can be attained by invoking the out() method. But RI
-         * raises an error of FormatterClosedException when invoking out() or
-         * toString().
-         */
-        Appendable sb = f2.out();
-        assertTrue(sb instanceof StringBuilder);
-        assertNotNull(f2.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(Locale)
-     */
-    public void test_ConstructorLjava_util_Locale() {
-        Formatter f1 = new Formatter(Locale.FRANCE);
-        assertTrue(f1.out() instanceof StringBuilder);
-        assertEquals(f1.locale(), Locale.FRANCE);
-        assertNotNull(f1.toString());
-
-        Formatter f2 = new Formatter((Locale) null);
-        assertNull(f2.locale());
-        assertTrue(f2.out() instanceof StringBuilder);
-        assertNotNull(f2.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(Appendable, Locale)
-     */
-    public void test_ConstructorLjava_lang_AppendableLjava_util_Locale() {
-        MockAppendable ma = new MockAppendable();
-        Formatter f1 = new Formatter(ma, Locale.CANADA);
-        assertEquals(ma, f1.out());
-        assertEquals(f1.locale(), Locale.CANADA);
-
-        Formatter f2 = new Formatter(ma, null);
-        assertNull(f2.locale());
-        assertEquals(ma, f1.out());
-
-        Formatter f3 = new Formatter(null, Locale.GERMAN);
-        assertEquals(f3.locale(), Locale.GERMAN);
-        assertTrue(f3.out() instanceof StringBuilder);
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(String)
-     */
-    public void test_ConstructorLjava_lang_String() throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((String) null);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        f = new Formatter(notExist.getPath());
-        assertEquals(f.locale(), Locale.getDefault());
-        f.close();
-
-        f = new Formatter(fileWithContent.getPath());
-        assertEquals(0, fileWithContent.length());
-        f.close();
-
-        if(!root){
-        	try {
-                f = new Formatter(readOnly.getPath());
-                fail("should throw FileNotFoundException");
-            } catch (FileNotFoundException e) {
-                // expected
-            }
-        }
-
-        SecurityManager oldsm = System.getSecurityManager();
-        System.setSecurityManager(new MockSecurityManager());
-        try {
-            f = new Formatter(secret.getPath());
-            fail("should throw SecurityException");
-        } catch (SecurityException se) {
-            // expected
-        } finally {
-            System.setSecurityManager(oldsm);
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(String, String)
-     */
-    public void test_ConstructorLjava_lang_StringLjava_lang_String()
-            throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((String) null, Charset.defaultCharset().name());
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        try {
-            f = new Formatter(notExist.getPath(), null);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e2) {
-            // expected
-        }
-
-        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name());
-        assertEquals(f.locale(), Locale.getDefault());
-        f.close();
-
-        try {
-            f = new Formatter(notExist.getPath(), "ISO 1111-1");
-            fail("should throw UnsupportedEncodingException");
-        } catch (UnsupportedEncodingException e1) {
-            // expected
-        }
-
-        f = new Formatter(fileWithContent.getPath(), "UTF-16BE");
-        assertEquals(0, fileWithContent.length());
-        f.close();
-
-        if(!root){
-        	try {
-                f = new Formatter(readOnly.getPath(), "UTF-16BE");
-                fail("should throw FileNotFoundException");
-            } catch (FileNotFoundException e) {
-                // expected
-            }
-        }
-
-        SecurityManager oldsm = System.getSecurityManager();
-        System.setSecurityManager(new MockSecurityManager());
-        try {
-            f = new Formatter(secret.getPath(), "UTF-16BE");
-            fail("should throw SecurityException");
-        } catch (SecurityException se) {
-            // expected
-        } finally {
-            System.setSecurityManager(oldsm);
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(String, String, Locale)
-     */
-    public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_util_Locale()
-            throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((String) null, Charset.defaultCharset().name(),
-                    Locale.KOREA);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        try {
-            f = new Formatter(notExist.getPath(), null, Locale.KOREA);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e2) {
-            // expected
-        }
-
-        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name(),
-                null);
-        assertNotNull(f);
-        f.close();
-
-        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name(),
-                Locale.KOREA);
-        assertEquals(f.locale(), Locale.KOREA);
-        f.close();
-
-        try {
-            f = new Formatter(notExist.getPath(), "ISO 1111-1", Locale.CHINA);
-            fail("should throw UnsupportedEncodingException");
-        } catch (UnsupportedEncodingException e1) {
-            // expected
-        }
-
-        f = new Formatter(fileWithContent.getPath(), "UTF-16BE",
-                Locale.CANADA_FRENCH);
-        assertEquals(0, fileWithContent.length());
-        f.close();
-
-        if(!root){
-        	try {
-                f = new Formatter(readOnly.getPath(), Charset.defaultCharset()
-                        .name(), Locale.ITALY);
-                fail("should throw FileNotFoundException");
-            } catch (FileNotFoundException e) {
-                // expected
-            }
-        }
-        
-        SecurityManager oldsm = System.getSecurityManager();
-        System.setSecurityManager(new MockSecurityManager());
-        try {
-            f = new Formatter(secret.getPath(),
-                    Charset.defaultCharset().name(), Locale.SIMPLIFIED_CHINESE);
-            fail("should throw SecurityException");
-        } catch (SecurityException se) {
-            // expected
-        } finally {
-            System.setSecurityManager(oldsm);
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(File)
-     */
-    public void test_ConstructorLjava_io_File() throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((File) null);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        f = new Formatter(notExist);
-        assertEquals(f.locale(), Locale.getDefault());
-        f.close();
-
-        f = new Formatter(fileWithContent);
-        assertEquals(0, fileWithContent.length());
-        f.close();
-
-        if(!root){
-        	try {
-                f = new Formatter(readOnly);
-                fail("should throw FileNotFoundException");
-            } catch (FileNotFoundException e) {
-                // expected
-            }
-        }
-        
-        SecurityManager oldsm = System.getSecurityManager();
-        System.setSecurityManager(new MockSecurityManager());
-        try {
-            f = new Formatter(secret);
-            fail("should throw SecurityException");
-        } catch (SecurityException se) {
-            // expected
-        } finally {
-            System.setSecurityManager(oldsm);
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(File, String)
-     */
-    public void test_ConstructorLjava_io_FileLjava_lang_String()
-            throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((File) null, Charset.defaultCharset().name());
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        f = new Formatter(notExist, Charset.defaultCharset().name());
-        assertEquals(f.locale(), Locale.getDefault());
-        f.close();
-
-        f = new Formatter(fileWithContent, "UTF-16BE");
-        assertEquals(0, fileWithContent.length());
-        f.close();
-
-        if(!root){
-        	try {
-                f = new Formatter(readOnly, Charset.defaultCharset().name());
-                fail("should throw FileNotFoundException");
-            } catch (FileNotFoundException e) {
-                // expected
-            }
-        }
-
-        SecurityManager oldsm = System.getSecurityManager();
-        System.setSecurityManager(new MockSecurityManager());
-        try {
-            f = new Formatter(secret, Charset.defaultCharset().name());
-            fail("should throw SecurityException");
-        } catch (SecurityException se) {
-            // expected
-        } finally {
-            System.setSecurityManager(oldsm);
-        }
-
-        try {
-            f = new Formatter(notExist, null);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e2) {
-            // expected
-        } finally {
-            if (notExist.exists()) {
-                // Fail on RI on Windows, because output stream is created and
-                // not closed when exception thrown
-                assertTrue(notExist.delete());
-            }
-        }
-
-        try {
-            f = new Formatter(notExist, "ISO 1111-1");
-            fail("should throw UnsupportedEncodingException");
-        } catch (UnsupportedEncodingException e1) {
-            // expected
-        } finally {
-            if (notExist.exists()) {
-                // Fail on RI on Windows, because output stream is created and
-                // not closed when exception thrown
-                assertTrue(notExist.delete());
-            }
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(File, String, Locale)
-     */
-    public void test_ConstructorLjava_io_FileLjava_lang_StringLjava_util_Locale()
-            throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((File) null, Charset.defaultCharset().name(),
-                    Locale.KOREA);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        try {
-            f = new Formatter(notExist, null, Locale.KOREA);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e2) {
-            // expected
-        }
-
-        f = new Formatter(notExist, Charset.defaultCharset().name(), null);
-        assertNotNull(f);
-        f.close();
-
-        f = new Formatter(notExist, Charset.defaultCharset().name(),
-                Locale.KOREA);
-        assertEquals(f.locale(), Locale.KOREA);
-        f.close();
-
-        try {
-            f = new Formatter(notExist, "ISO 1111-1", Locale.CHINA);
-            fail("should throw UnsupportedEncodingException");
-        } catch (UnsupportedEncodingException e1) {
-            // expected
-        }
-        f = new Formatter(fileWithContent.getPath(), "UTF-16BE",
-                Locale.CANADA_FRENCH);
-        assertEquals(0, fileWithContent.length());
-        f.close();
-
-        if(!root){
-        	try {
-                f = new Formatter(readOnly.getPath(), Charset.defaultCharset()
-                        .name(), Locale.ITALY);
-                fail("should throw FileNotFoundException");
-            } catch (FileNotFoundException e) {
-                // expected
-            }
-        }
-
-        SecurityManager oldsm = System.getSecurityManager();
-        System.setSecurityManager(new MockSecurityManager());
-        try {
-            f = new Formatter(secret.getPath(),
-                    Charset.defaultCharset().name(), Locale.SIMPLIFIED_CHINESE);
-            fail("should throw SecurityException");
-        } catch (SecurityException se) {
-            // expected
-        } finally {
-            System.setSecurityManager(oldsm);
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(PrintStream)
-     */
-    public void test_ConstructorLjava_io_PrintStream() throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((PrintStream) null);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        PrintStream ps = new PrintStream(notExist, "UTF-16BE");
-        f = new Formatter(ps);
-        assertEquals(Locale.getDefault(), f.locale());
-        f.close();
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(OutputStream)
-     */
-    public void test_ConstructorLjava_io_OutputStream() throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((OutputStream) null);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        OutputStream os = new FileOutputStream(notExist);
-        f = new Formatter(os);
-        assertEquals(Locale.getDefault(), f.locale());
-        f.close();
-    }
-
-    /**
-     * @tests java.util.Formatter#Formatter(OutputStream, String)
-     */
-    public void test_ConstructorLjava_io_OutputStreamLjava_lang_String()
-            throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((OutputStream) null, Charset.defaultCharset()
-                    .name());
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        OutputStream os = null;
-        try {
-            os = new FileOutputStream(notExist);
-            f = new Formatter(os, null);
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e2) {
-            // expected
-        } finally {
-            os.close();
-        }
-
-        try {
-            os = new PipedOutputStream();
-            f = new Formatter(os, "TMP-1111");
-            fail("should throw UnsupportedEncodingException");
-        } catch (UnsupportedEncodingException e1) {
-            // expected
-        } finally {
-            os.close();
-        }
-
-        os = new FileOutputStream(fileWithContent);
-        f = new Formatter(os, "UTF-16BE");
-        assertEquals(Locale.getDefault(), f.locale());
-        f.close();
-    }
-
-    /**
-     * Test method for 'java.util.Formatter.Formatter(OutputStream, String,
-     * Locale)
-     */
-    public void test_ConstructorLjava_io_OutputStreamLjava_lang_StringLjava_util_Locale()
-            throws IOException {
-        Formatter f = null;
-        try {
-            f = new Formatter((OutputStream) null, Charset.defaultCharset()
-                    .name(), Locale.getDefault());
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e1) {
-            // expected
-        }
-
-        OutputStream os = null;
-        try {
-            os = new FileOutputStream(notExist);
-            f = new Formatter(os, null, Locale.getDefault());
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e2) {
-            // expected
-        } finally {
-            os.close();
-        }
-
-        os = new FileOutputStream(notExist);
-        f = new Formatter(os, Charset.defaultCharset().name(), null);
-        f.close();
-
-        try {
-            os = new PipedOutputStream();
-            f = new Formatter(os, "TMP-1111", Locale.getDefault());
-            fail("should throw UnsupportedEncodingException");
-        } catch (UnsupportedEncodingException e1) {
-            // expected
-        }
-
-        os = new FileOutputStream(fileWithContent);
-        f = new Formatter(os, "UTF-16BE", Locale.ENGLISH);
-        assertEquals(Locale.ENGLISH, f.locale());
-        f.close();
-    }
-
-    /**
-     * @tests java.util.Formatter#locale()
-     */
-    public void test_locale() {
-        Formatter f = null;
-        f = new Formatter((Locale) null);
-        assertNull(f.locale());
-
-        f.close();
-        try {
-            f.locale();
-            fail("should throw FormatterClosedException");
-        } catch (FormatterClosedException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#out()
-     */
-    public void test_out() {
-        Formatter f = null;
-        f = new Formatter();
-        assertNotNull(f.out());
-        assertTrue(f.out() instanceof StringBuilder);
-        f.close();
-        try {
-            f.out();
-            fail("should throw FormatterClosedException");
-        } catch (FormatterClosedException e) {
-            // expected
-        }
-
-    }
-
-    /**
-     * @tests java.util.Formatter#flush()
-     */
-    public void test_flush() throws IOException {
-        Formatter f = null;
-        f = new Formatter(notExist);
-        assertTrue(f instanceof Flushable);
-        f.close();
-        try {
-            f.flush();
-            fail("should throw FormatterClosedException");
-        } catch (FormatterClosedException e) {
-            // expected
-        }
-
-        f = new Formatter();
-        // For destination that does not implement Flushable
-        // No exception should be thrown
-        f.flush();
-    }
-
-    /**
-     * @tests java.util.Formatter#close()
-     */
-    public void test_close() throws IOException {
-        Formatter f = new Formatter(notExist);
-        assertTrue(f instanceof Closeable);
-        f.close();
-        // close next time will not throw exception
-        f.close();
-        assertNull(f.ioException());
-    }
-
-    /**
-     * @tests java.util.Formatter#toString()
-     */
-    public void test_toString() {
-        Formatter f = new Formatter();
-        assertNotNull(f.toString());
-        assertEquals(f.out().toString(), f.toString());
-        f.close();
-        try {
-            f.toString();
-            fail("should throw FormatterClosedException");
-        } catch (FormatterClosedException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#ioException()
-     */
-    public void test_ioException() throws IOException {
-        Formatter f = null;
-        f = new Formatter(new MockDestination());
-        assertNull(f.ioException());
-        f.flush();
-        assertNotNull(f.ioException());
-        f.close();
-
-        MockDestination md = new MockDestination();
-        f = new Formatter(md);
-        f.format("%s%s", "1", "2");
-        // format stop working after IOException
-        assertNotNull(f.ioException());
-        assertEquals("", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for null parameter
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_null() {
-        Formatter f = new Formatter();
-        try {
-            f.format((String) null, "parameter");
-            fail("should throw NullPointerException");
-        } catch (NullPointerException e) {
-            // expected
-        }
-
-        f = new Formatter();
-        f.format("hello", (Object[]) null);
-        assertEquals("hello", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for argument index
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_ArgIndex() {
-        Formatter formatter = new Formatter(Locale.US);
-        formatter.format("%1$s%2$s%3$s%4$s%5$s%6$s%7$s%8$s%9$s%11$s%10$s", "1",
-                "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
-        assertEquals("1234567891110", formatter.toString());
-
-        formatter = new Formatter(Locale.JAPAN);
-        formatter.format("%0$s", "hello");
-        assertEquals("hello", formatter.toString());
-
-        try {
-            formatter = new Formatter(Locale.US);
-            formatter.format("%-1$s", "1", "2");
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-
-        try {
-            formatter = new Formatter(Locale.US);
-            formatter.format("%$s", "hello", "2");
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-        
-        try {
-            Formatter f = new Formatter(Locale.US);
-            f.format("%", "string");
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }       
-
-        formatter = new Formatter(Locale.FRANCE);
-        formatter.format("%1$s%2$s%3$s%4$s%5$s%6$s%7$s%8$s%<s%s%s%<s", "1",
-                "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
-        assertEquals("123456788122", formatter.toString());
-
-        formatter = new Formatter(Locale.FRANCE);
-        formatter.format(
-                "xx%1$s22%2$s%s%<s%5$s%<s&%7$h%2$s%8$s%<s%s%s%<ssuffix", "1",
-                "2", "3", "4", "5", "6", 7, "8", "9", "10", "11");
-        assertEquals("xx12221155&7288233suffix", formatter.toString());
-
-        try {
-            formatter.format("%<s", "hello");
-            fail("should throw MissingFormatArgumentException");
-        } catch (MissingFormatArgumentException e) {
-            // expected
-        }
-
-        formatter = new Formatter(Locale.US);
-        try {
-            formatter.format("%123$s", "hello");
-            fail("should throw MissingFormatArgumentException");
-        } catch (MissingFormatArgumentException e) {
-            // expected
-        }
-
-        formatter = new Formatter(Locale.US);
-        try {
-            // 2147483648 is the value of Integer.MAX_VALUE + 1
-            formatter.format("%2147483648$s", "hello");
-            fail("should throw MissingFormatArgumentException");
-        } catch (MissingFormatArgumentException e) {
-            // expected
-        }
-
-        try {
-            // 2147483647 is the value of Integer.MAX_VALUE
-            formatter.format("%2147483647$s", "hello");
-            fail("should throw MissingFormatArgumentException");
-        } catch (MissingFormatArgumentException e) {
-            // expected
-        }
-
-        formatter = new Formatter(Locale.US);
-        try {
-            formatter.format("%s%s", "hello");
-            fail("should throw MissingFormatArgumentException");
-        } catch (MissingFormatArgumentException e) {
-            // expected
-        }
-
-        formatter = new Formatter(Locale.US);
-        formatter.format("$100", 100);
-        assertEquals("$100", formatter.toString());
-
-        formatter = new Formatter(Locale.UK);
-        formatter.format("%01$s", "string");
-        assertEquals("string", formatter.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for width
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_Width() {
-        Formatter f = new Formatter(Locale.US);
-        f.format("%1$8s", "1");
-        assertEquals("       1", f.toString());
-
-        f = new Formatter(Locale.US);
-        f.format("%1$-1%", "string");
-        assertEquals("%", f.toString());
-
-        f = new Formatter(Locale.ITALY);
-        // 2147483648 is the value of Integer.MAX_VALUE + 1
-        f.format("%2147483648s", "string");
-        assertEquals("string", f.toString());
-
-        // the value of Integer.MAX_VALUE will allocate about 4G bytes of
-        // memory.
-        // It may cause OutOfMemoryError, so this value is not tested
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for precision
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_Precision() {
-        Formatter f = new Formatter(Locale.US);
-        f.format("%.5s", "123456");
-        assertEquals("12345", f.toString());
-
-        f = new Formatter(Locale.US);
-        // 2147483648 is the value of Integer.MAX_VALUE + 1
-        f.format("%.2147483648s", "...");
-        assertEquals("...", f.toString());
-
-        // the value of Integer.MAX_VALUE will allocate about 4G bytes of
-        // memory.
-        // It may cause OutOfMemoryError, so this value is not tested
-
-        f = new Formatter(Locale.US);
-        f.format("%10.0b", Boolean.TRUE);
-        assertEquals("          ", f.toString());
-
-        f = new Formatter(Locale.US);
-        f.format("%10.01s", "hello");
-        assertEquals("         h", f.toString());
-
-        try {
-            f = new Formatter(Locale.US);
-            f.format("%.s", "hello", "2");
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-
-        try {
-            f = new Formatter(Locale.US);
-            f.format("%.-5s", "123456");
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-
-        try {
-            f = new Formatter(Locale.US);
-            f.format("%1.s", "hello", "2");
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        f.format("%5.1s", "hello");
-        assertEquals("    h", f.toString());
-
-        f = new Formatter(Locale.FRANCE);
-        f.format("%.0s", "hello", "2");
-        assertEquals("", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for line sperator
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_LineSeparator() {
-        Formatter f = null;
-
-        String oldSeparator = System.getProperty("line.separator");
-        System.setProperty("line.separator", "!\n");
-
-        f = new Formatter(Locale.US);
-        f.format("%1$n", 1);
-        assertEquals("!\n", f.toString());
-
-        f = new Formatter(Locale.KOREAN);
-        f.format("head%1$n%2$n", 1, new Date());
-        assertEquals("head!\n!\n", f.toString());
-
-        f = new Formatter(Locale.US);
-        f.format("%n%s", "hello");
-        assertEquals("!\nhello", f.toString());
-
-        System.setProperty("line.separator", oldSeparator);
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%-n");
-            fail("should throw IllegalFormatFlagsException: %-n");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-        try {
-            f.format("%+n");
-            fail("should throw IllegalFormatFlagsException: %+n");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-        try {
-            f.format("%#n");
-            fail("should throw IllegalFormatFlagsException: %#n");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-        try {
-            f.format("% n");
-            fail("should throw IllegalFormatFlagsException: % n");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-        try {
-            f.format("%0n");
-            fail("should throw IllegalFormatFlagsException: %0n");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-        try {
-            f.format("%,n");
-            fail("should throw IllegalFormatFlagsException: %,n");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-        try {
-            f.format("%(n");
-            fail("should throw IllegalFormatFlagsException: %(n");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%4n");
-            fail("should throw IllegalFormatWidthException");
-        } catch (IllegalFormatWidthException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%-4n");
-            fail("should throw IllegalFormatWidthException");
-        } catch (IllegalFormatWidthException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%.9n");
-            fail("should throw IllegalFormatPrecisionException");
-        } catch (IllegalFormatPrecisionException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%5.9n");
-            fail("should throw IllegalFormatPrecisionException");
-        } catch (IllegalFormatPrecisionException e) {
-            // expected
-        }
-        
-        System.setProperty("line.separator", oldSeparator);
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for percent
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_Percent() {
-        Formatter f = null;
-
-        f = new Formatter(Locale.ENGLISH);
-        f.format("%1$%", 100);
-        assertEquals("%", f.toString());
-
-        f = new Formatter(Locale.CHINA);
-        f.format("%1$%%%", "hello", new Object());
-        assertEquals("%%", f.toString());
-
-        f = new Formatter(Locale.CHINA);
-        f.format("%%%s", "hello");
-        assertEquals("%hello", f.toString());
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%.9%");
-            fail("should throw IllegalFormatPrecisionException");
-        } catch (IllegalFormatPrecisionException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%5.9%");
-            fail("should throw IllegalFormatPrecisionException");
-        } catch (IllegalFormatPrecisionException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        assertFormatFlagsConversionMismatchException(f, "%+%");
-        assertFormatFlagsConversionMismatchException(f, "%#%");
-        assertFormatFlagsConversionMismatchException(f, "% %");
-        assertFormatFlagsConversionMismatchException(f, "%0%");
-        assertFormatFlagsConversionMismatchException(f, "%,%");
-        assertFormatFlagsConversionMismatchException(f, "%(%");
-        
-
-        f = new Formatter(Locale.KOREAN);
-        f.format("%4%", 1);
-        /*
-         * fail on RI the output string should be right justified by appending
-         * spaces till the whole string is 4 chars width.
-         */
-        assertEquals("   %", f.toString());
-
-        f = new Formatter(Locale.US);
-        f.format("%-4%", 100);
-        /*
-         * fail on RI, throw UnknownFormatConversionException the output string
-         * should be left justified by appending spaces till the whole string is
-         * 4 chars width.
-         */
-        assertEquals("%   ", f.toString());
-    }
-
-    private void assertFormatFlagsConversionMismatchException(Formatter f, String str) {
-        try {
-            f.format(str);
-            fail("should throw FormatFlagsConversionMismatchException: "
-                    + str);
-             /*
-             * error on RI, throw IllegalFormatFlagsException specification
-             * says FormatFlagsConversionMismatchException should be thrown
-             */
-        } catch (FormatFlagsConversionMismatchException e) {
-           // expected
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for flag
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_Flag() {
-        Formatter f = new Formatter(Locale.US);
-        try {
-            f.format("%1$-#-8s", "something");
-            fail("should throw DuplicateFormatFlagsException");
-        } catch (DuplicateFormatFlagsException e) {
-            // expected
-        }
-
-        final char[] chars = { '-', '#', '+', ' ', '0', ',', '(', '%', '<' };
-        Arrays.sort(chars);
-        f = new Formatter(Locale.US);
-        for (char i = 0; i <= 256; i++) {
-            // test 8 bit character
-            if (Arrays.binarySearch(chars, i) >= 0 || Character.isDigit(i)
-                    || Character.isLetter(i)) {
-                // Do not test 0-9, a-z, A-Z and characters in the chars array.
-                // They are characters used as flags, width or conversions
-                continue;
-            }
-            try {
-                f.format("%" + i + "s", 1);
-                fail("should throw UnknownFormatConversionException");
-            } catch (UnknownFormatConversionException e) {
-                // expected
-            }
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for general
-     *        conversion b/B
-     */
-    public void test_format_LString$LObject_GeneralConversionB() {
-        final Object[][] triple = { 
-                { Boolean.FALSE,                "%3.2b",  " fa", },
-                { Boolean.FALSE,                "%-4.6b", "false", },
-                { Boolean.FALSE,                "%.2b",   "fa", }, 
-                { Boolean.TRUE,                 "%3.2b",  " tr", },
-                { Boolean.TRUE,                 "%-4.6b", "true", },
-                { Boolean.TRUE,                 "%.2b",   "tr", },
-                { new Character('c'),           "%3.2b",  " tr", },
-                { new Character('c'),           "%-4.6b", "true", },
-                { new Character('c'),           "%.2b",   "tr", },
-                { new Byte((byte) 0x01),        "%3.2b",  " tr", },
-                { new Byte((byte) 0x01),        "%-4.6b", "true", },
-                { new Byte((byte) 0x01),        "%.2b",   "tr", },
-                { new Short((short) 0x0001),    "%3.2b",  " tr", },
-                { new Short((short) 0x0001),    "%-4.6b", "true", },
-                { new Short((short) 0x0001),    "%.2b",   "tr", },
-                { new Integer(1),               "%3.2b",  " tr", },
-                { new Integer(1),               "%-4.6b", "true", },
-                { new Integer(1),               "%.2b",   "tr", },
-                { new Float(1.1f),              "%3.2b",  " tr", },
-                { new Float(1.1f),              "%-4.6b", "true", },
-                { new Float(1.1f),              "%.2b",   "tr", },
-                { new Double(1.1d),             "%3.2b",  " tr", },
-                { new Double(1.1d),             "%-4.6b", "true", },
-                { new Double(1.1d),             "%.2b",   "tr", },
-                { "",                           "%3.2b",  " tr", },
-                { "",                           "%-4.6b", "true", },
-                { "",                           "%.2b",   "tr", },
-                { "string content",             "%3.2b",  " tr", },
-                { "string content",             "%-4.6b", "true", },
-                { "string content",             "%.2b",   "tr", },
-                { new MockFormattable(),        "%3.2b",  " tr", },
-                { new MockFormattable(),        "%-4.6b", "true", },
-                { new MockFormattable(),        "%.2b",   "tr", },
-                { (Object) null,                "%3.2b",  " fa", },
-                { (Object) null,                "%-4.6b", "false", },
-                { (Object) null,                "%.2b",   "fa", },
-                };
-
-
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2; 
-        Formatter f = null;
-        for (int i = 0; i < triple.length; i++) {
-            f = new Formatter(Locale.FRANCE);
-            f.format((String)triple[i][pattern], triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input]
-                          + ",pattern[" + i + "]:" + triple[i][pattern], triple[i][output], f.toString());
-
-            f = new Formatter(Locale.GERMAN);
-            f.format(((String)triple[i][pattern]).toUpperCase(Locale.US), triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input]
-                          + ",pattern[" + i + "]:" + triple[i][pattern], ((String)triple[i][output])
-                    .toUpperCase(Locale.US), f.toString());
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for general
-     *        conversion type 's' and 'S'
-     */
-    public void test_format_LString$LObject_GeneralConversionS() {
-
-        final Object[][] triple = { 
-                { Boolean.FALSE,                "%2.3s",  "fal", },
-                { Boolean.FALSE,                "%-6.4s", "fals  ", },
-                { Boolean.FALSE,                "%.5s",   "false", }, 
-                { Boolean.TRUE,                 "%2.3s",  "tru", },
-                { Boolean.TRUE,                 "%-6.4s", "true  ", },
-                { Boolean.TRUE,                 "%.5s",   "true", },
-                { new Character('c'),           "%2.3s",  " c", },
-                { new Character('c'),           "%-6.4s", "c     ", },
-                { new Character('c'),           "%.5s",   "c", },
-                { new Byte((byte) 0x01),        "%2.3s",  " 1", },
-                { new Byte((byte) 0x01),        "%-6.4s", "1     ", },
-                { new Byte((byte) 0x01),        "%.5s",   "1", },
-                { new Short((short) 0x0001),    "%2.3s",  " 1", },
-                { new Short((short) 0x0001),    "%-6.4s", "1     ", },
-                { new Short((short) 0x0001),    "%.5s",   "1", },
-                { new Integer(1),               "%2.3s",  " 1", },
-                { new Integer(1),               "%-6.4s", "1     ", },
-                { new Integer(1),               "%.5s",   "1", },
-                { new Float(1.1f),              "%2.3s",  "1.1", },
-                { new Float(1.1f),              "%-6.4s", "1.1   ", },
-                { new Float(1.1f),              "%.5s",   "1.1", },
-                { new Double(1.1d),             "%2.3s",  "1.1", },
-                { new Double(1.1d),             "%-6.4s", "1.1   ", },
-                { new Double(1.1d),             "%.5s",   "1.1", },
-                { "",                           "%2.3s",  "  ", },
-                { "",                           "%-6.4s", "      ", },
-                { "",                           "%.5s",   "", },
-                { "string content",             "%2.3s",  "str", },
-                { "string content",             "%-6.4s", "stri  ", },
-                { "string content",             "%.5s",   "strin", },
-                { new MockFormattable(),        "%2.3s",  "customized format function width: 2 precision: 3", },
-                { new MockFormattable(),        "%-6.4s", "customized format function width: 6 precision: 4", },
-                { new MockFormattable(),        "%.5s",   "customized format function width: -1 precision: 5", },
-                { (Object) null,                "%2.3s",  "nul", },
-                { (Object) null,                "%-6.4s", "null  ", },
-                { (Object) null,                "%.5s",   "null", },
-                };
-
-
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-        Formatter f = null;
-        for (int i = 0; i < triple.length; i++) {
-            f = new Formatter(Locale.FRANCE);
-            f.format((String)triple[i][pattern], triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input]
-                          + ",pattern[" + i + "]:" + triple[i][pattern], triple[i][output], f.toString());
-
-            f = new Formatter(Locale.GERMAN);
-            f.format(((String)triple[i][pattern]).toUpperCase(Locale.US), triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input]
-                          + ",pattern[" + i + "]:" + triple[i][pattern], ((String)triple[i][output])
-                    .toUpperCase(Locale.US), f.toString());
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for general
-     *        conversion type 'h' and 'H'
-     */
-    public void test_format_LString$LObject_GeneralConversionH() {
-
-        final Object[] input = { 
-                 Boolean.FALSE,                 
-                 Boolean.TRUE,                  
-                 new Character('c'),            
-                 new Byte((byte) 0x01),         
-                 new Short((short) 0x0001),     
-                 new Integer(1),                
-                 new Float(1.1f),               
-                 new Double(1.1d),              
-                 "",                            
-                 "string content",              
-                 new MockFormattable(),         
-                 (Object) null,                 
-                };
-
-        Formatter f = null;
-        for (int i = 0; i < input.length - 1; i++) {
-            f = new Formatter(Locale.FRANCE);
-            f.format("%h", input[i]);
-            assertEquals("triple[" + i + "]:" + input[i], 
-                    Integer.toHexString(input[i].hashCode()), f.toString());
-
-            f = new Formatter(Locale.GERMAN);
-            f.format("%H", input[i]);
-            assertEquals("triple[" + i + "]:" + input[i], 
-                    Integer.toHexString(input[i].hashCode()).toUpperCase(Locale.US), f.toString());
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for general
-     *        conversion other cases
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_GeneralConversionOther() {
-        /*
-         * In Turkish locale, the upper case of '\u0069' is '\u0130'. The
-         * following test indicate that '\u0069' is coverted to upper case
-         * without using the turkish locale.
-         */
-        Formatter f = new Formatter(new Locale("tr"));
-        f.format("%S", "\u0069");
-        assertEquals("\u0049", f.toString());
-
-        final Object[] input = { 
-                Boolean.FALSE,                 
-                Boolean.TRUE,                  
-                new Character('c'),            
-                new Byte((byte) 0x01),         
-                new Short((short) 0x0001),     
-                new Integer(1),                
-                new Float(1.1f),               
-                new Double(1.1d),              
-                "",                            
-                "string content",              
-                new MockFormattable(),         
-                (Object) null,                 
-               };
-        f = new Formatter(Locale.GERMAN);
-        for (int i = 0; i < input.length; i++) {
-            if (!(input[i] instanceof Formattable)) {
-                try {
-                    f.format("%#s", input[i]);
-                    /*
-                     * fail on RI, spec says if the '#' flag is present and the
-                     * argument is not a Formattable , then a
-                     * FormatFlagsConversionMismatchException will be thrown.
-                     */
-                    fail("should throw FormatFlagsConversionMismatchException");
-                } catch (FormatFlagsConversionMismatchException e) {
-                    // expected
-                }
-            } else {
-                f.format("%#s%<-#8s", input[i]);
-                assertEquals(
-                        "customized format function width: -1 precision: -1customized format function width: 8 precision: -1",
-                        f.toString());
-            }
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for general
-     *        conversion exception
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_GeneralConversionException() {
-        final String[] flagMismatch = { "%#b", "%+b", "% b", "%0b", "%,b",
-                "%(b", "%#B", "%+B", "% B", "%0B", "%,B", "%(B", "%#h", "%+h",
-                "% h", "%0h", "%,h", "%(h", "%#H", "%+H", "% H", "%0H", "%,H",
-                "%(H", "%+s", "% s", "%0s", "%,s", "%(s", "%+S", "% S", "%0S",
-                "%,S", "%(S" };
-
-        Formatter f = new Formatter(Locale.US);
-
-        for (int i = 0; i < flagMismatch.length; i++) {
-            try {
-                f.format(flagMismatch[i], "something");
-                fail("should throw FormatFlagsConversionMismatchException");
-            } catch (FormatFlagsConversionMismatchException e) {
-                // expected
-            }
-        }
-
-        final String[] missingWidth = { "%-b", "%-B", "%-h", "%-H", "%-s",
-                "%-S", };
-        for (int i = 0; i < missingWidth.length; i++) {
-            try {
-                f.format(missingWidth[i], "something");
-                fail("should throw MissingFormatWidthException");
-            } catch (MissingFormatWidthException e) {
-                // expected
-            }
-        }
-        
-        // Regression test
-        f = new Formatter();
-        try {
-            f.format("%c", (byte)-0x0001);
-            fail("Should throw IllegalFormatCodePointException");
-        } catch (IllegalFormatCodePointException e) {
-            // expected
-        }
-        
-        f = new Formatter();
-        try {
-            f.format("%c", (short)-0x0001);
-            fail("Should throw IllegalFormatCodePointException");
-        } catch (IllegalFormatCodePointException e) {
-            // expected
-        }
-        
-        f = new Formatter();
-        try {
-            f.format("%c", -0x0001);
-            fail("Should throw IllegalFormatCodePointException");
-        } catch (IllegalFormatCodePointException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for Character
-     *        conversion
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_CharacterConversion() {
-        Formatter f = new Formatter(Locale.US);
-        final Object[] illArgs = { Boolean.TRUE, new Float(1.1f),
-                new Double(1.1d), "string content", new Float(1.1f), new Date() };
-        for (int i = 0; i < illArgs.length; i++) {
-            try {
-                f.format("%c", illArgs[i]);
-                fail("should throw IllegalFormatConversionException");
-            } catch (IllegalFormatConversionException e) {
-                // expected
-            }
-        }
-
-        try {
-            f.format("%c", Integer.MAX_VALUE);
-            fail("should throw IllegalFormatCodePointException");
-        } catch (IllegalFormatCodePointException e) {
-            // expected
-        }
-
-        try {
-            f.format("%#c", 'c');
-            fail("should throw FormatFlagsConversionMismatchException");
-        } catch (FormatFlagsConversionMismatchException e) {
-            // expected
-        }
-
-        final Object[][] triple = {
-                {'c',               "%c",   "c"},
-                {'c',               "%-2c", "c "},
-                {'\u0123',          "%c",   "\u0123"},
-                {'\u0123',          "%-2c", "\u0123 "},
-                {(byte) 0x11,       "%c",   "\u0011"},
-                {(byte) 0x11,       "%-2c", "\u0011 "},
-                {(short) 0x1111,    "%c",   "\u1111"},
-                {(short) 0x1111,    "%-2c", "\u1111 "},
-                {0x11,              "%c",   "\u0011"},
-                {0x11,              "%-2c", "\u0011 "},
-        };
-
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-        for (int i = 0; i < triple.length; i++) {
-                f = new Formatter(Locale.US);
-                f.format((String)triple[i][pattern], triple[i][input]);
-                assertEquals(triple[i][output], f.toString());
-        }
-
-        f = new Formatter(Locale.US);
-        f.format("%c", 0x10000);
-        assertEquals(0x10000, f.toString().codePointAt(0));
-
-        try {
-            f.format("%2.2c", 'c');
-            fail("should throw IllegalFormatPrecisionException");
-        } catch (IllegalFormatPrecisionException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        f.format("%C", 'w');
-        // error on RI, throw UnknownFormatConversionException
-        // RI do not support converter 'C'
-        assertEquals("W", f.toString());
-
-        f = new Formatter(Locale.JAPAN);
-        f.format("%Ced", 0x1111);
-        // error on RI, throw UnknownFormatConversionException
-        // RI do not support converter 'C'
-        assertEquals("\u1111ed", f.toString());
-    }
-    
-    
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for legal
-     *        Byte/Short/Integer/Long conversion type 'd'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionD() {
-        final Object[][] triple = { 
-                { 0,                "%d",                  "0" }, 
-                { 0,                "%10d",       "         0" }, 
-                { 0,                "%-1d",                "0" }, 
-                { 0,                "%+d",                "+0" }, 
-                { 0,                "% d",                " 0" }, 
-                { 0,                "%,d",                 "0" }, 
-                { 0,                "%(d",                 "0" }, 
-                { 0,                "%08d",         "00000000" }, 
-                { 0,                "%-+,(11d",  "+0         " }, 
-                { 0,                "%0 ,(11d",  " 0000000000" }, 
-
-                { (byte) 0xff,      "%d",                 "-1" }, 
-                { (byte) 0xff,      "%10d",       "        -1" }, 
-                { (byte) 0xff,      "%-1d",               "-1" }, 
-                { (byte) 0xff,      "%+d",                "-1" }, 
-                { (byte) 0xff,      "% d",                "-1" }, 
-                { (byte) 0xff,      "%,d",                "-1" }, 
-                { (byte) 0xff,      "%(d",               "(1)" }, 
-                { (byte) 0xff,      "%08d",         "-0000001" }, 
-                { (byte) 0xff,      "%-+,(11d",  "(1)        " }, 
-                { (byte) 0xff,      "%0 ,(11d",  "(000000001)" }, 
-                
-                { (short) 0xf123,   "%d",              "-3805" }, 
-                { (short) 0xf123,   "%10d",       "     -3805" }, 
-                { (short) 0xf123,   "%-1d",            "-3805" }, 
-                { (short) 0xf123,   "%+d",             "-3805" }, 
-                { (short) 0xf123,   "% d",             "-3805" }, 
-                { (short) 0xf123,   "%,d",            "-3.805" }, 
-                { (short) 0xf123,   "%(d",            "(3805)" }, 
-                { (short) 0xf123,   "%08d",         "-0003805" }, 
-                { (short) 0xf123,   "%-+,(11d",  "(3.805)    " }, 
-                { (short) 0xf123,   "%0 ,(11d",  "(00003.805)" }, 
-                
-                {  0x123456,        "%d",            "1193046" }, 
-                {  0x123456,        "%10d",       "   1193046" }, 
-                {  0x123456,        "%-1d",          "1193046" }, 
-                {  0x123456,        "%+d",          "+1193046" }, 
-                {  0x123456,        "% d",          " 1193046" }, 
-                {  0x123456,        "%,d",         "1.193.046" }, 
-                {  0x123456,        "%(d",           "1193046" }, 
-                {  0x123456,        "%08d",         "01193046" }, 
-                {  0x123456,        "%-+,(11d",  "+1.193.046 " }, 
-                {  0x123456,        "%0 ,(11d",  " 01.193.046" }, 
-                
-                { -3,               "%d",                 "-3" }, 
-                { -3,               "%10d",       "        -3" }, 
-                { -3,               "%-1d",               "-3" }, 
-                { -3,               "%+d",                "-3" }, 
-                { -3,               "% d",                "-3" }, 
-                { -3,               "%,d",                "-3" }, 
-                { -3,               "%(d",               "(3)" }, 
-                { -3,               "%08d",         "-0000003" }, 
-                { -3,               "%-+,(11d",  "(3)        " }, 
-                { -3,               "%0 ,(11d",  "(000000003)" },
-                
-                { 0x7654321L,       "%d",          "124076833" }, 
-                { 0x7654321L,       "%10d",       " 124076833" }, 
-                { 0x7654321L,       "%-1d",        "124076833" }, 
-                { 0x7654321L,       "%+d",        "+124076833" }, 
-                { 0x7654321L,       "% d",        " 124076833" }, 
-                { 0x7654321L,       "%,d",       "124.076.833" }, 
-                { 0x7654321L,       "%(d",         "124076833" }, 
-                { 0x7654321L,       "%08d",        "124076833" }, 
-                { 0x7654321L,       "%-+,(11d", "+124.076.833" }, 
-                { 0x7654321L,       "%0 ,(11d", " 124.076.833" }, 
-                
-                { -1L,              "%d",                 "-1" }, 
-                { -1L,              "%10d",       "        -1" }, 
-                { -1L,              "%-1d",               "-1" }, 
-                { -1L,              "%+d",                "-1" }, 
-                { -1L,              "% d",                "-1" }, 
-                { -1L,              "%,d",                "-1" }, 
-                { -1L,              "%(d",               "(1)" }, 
-                { -1L,              "%08d",         "-0000001" }, 
-                { -1L,              "%-+,(11d",  "(1)        " }, 
-                { -1L,              "%0 ,(11d",  "(000000001)" }, 
-                };
-
-        final int input = 0;
-        final int pattern = 1;
-        final int output = 2;
-        Formatter f;
-        for (int i = 0; i < triple.length; i++) {
-            f = new Formatter(Locale.GERMAN);
-            f.format((String) triple[i][pattern],
-                    triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
-                    + i + "]:" + triple[i][pattern], triple[i][output], f
-                    .toString());
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for legal
-     *        Byte/Short/Integer/Long conversion type 'o'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionO() {
-        final Object[][] triple = { 
-                { 0,                "%o",                 "0" }, 
-                { 0,                "%-6o",          "0     " }, 
-                { 0,                "%08o",        "00000000" }, 
-                { 0,                "%#o",               "00" }, 
-                { 0,                "%0#11o",   "00000000000" }, 
-                { 0,                "%-#9o",      "00       " }, 
-
-                { (byte) 0xff,      "%o",               "377" }, 
-                { (byte) 0xff,      "%-6o",          "377   " }, 
-                { (byte) 0xff,      "%08o",        "00000377" }, 
-                { (byte) 0xff,      "%#o",             "0377" }, 
-                { (byte) 0xff,      "%0#11o",   "00000000377" }, 
-                { (byte) 0xff,      "%-#9o",      "0377     " }, 
-                
-                { (short) 0xf123,   "%o",            "170443" }, 
-                { (short) 0xf123,   "%-6o",          "170443" }, 
-                { (short) 0xf123,   "%08o",        "00170443" }, 
-                { (short) 0xf123,   "%#o",          "0170443" }, 
-                { (short) 0xf123,   "%0#11o",   "00000170443" }, 
-                { (short) 0xf123,   "%-#9o",      "0170443  " }, 
-                
-                {  0x123456,        "%o",           "4432126" }, 
-                {  0x123456,        "%-6o",         "4432126" }, 
-                {  0x123456,        "%08o",        "04432126" }, 
-                {  0x123456,        "%#o",         "04432126" }, 
-                {  0x123456,        "%0#11o",   "00004432126" }, 
-                {  0x123456,        "%-#9o",      "04432126 " }, 
-                
-                { -3,               "%o",       "37777777775" }, 
-                { -3,               "%-6o",     "37777777775" }, 
-                { -3,               "%08o",     "37777777775" }, 
-                { -3,               "%#o",     "037777777775" }, 
-                { -3,               "%0#11o",  "037777777775" }, 
-                { -3,               "%-#9o",   "037777777775" }, 
-                
-                { 0x7654321L,       "%o",          "731241441" }, 
-                { 0x7654321L,       "%-6o",        "731241441" }, 
-                { 0x7654321L,       "%08o",        "731241441" }, 
-                { 0x7654321L,       "%#o",        "0731241441" }, 
-                { 0x7654321L,       "%0#11o",    "00731241441" }, 
-                { 0x7654321L,       "%-#9o",      "0731241441" }, 
-                
-                { -1L,              "%o",       "1777777777777777777777" }, 
-                { -1L,              "%-6o",     "1777777777777777777777" }, 
-                { -1L,              "%08o",     "1777777777777777777777" }, 
-                { -1L,              "%#o",     "01777777777777777777777" }, 
-                { -1L,              "%0#11o",  "01777777777777777777777" }, 
-                { -1L,              "%-#9o",   "01777777777777777777777" }, 
-                };
-
-        final int input = 0;
-        final int pattern = 1;
-        final int output = 2;
-        Formatter f;
-        for (int i = 0; i < triple.length; i++) {
-            f = new Formatter(Locale.ITALY);
-            f.format((String) triple[i][pattern],
-                    triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
-                    + i + "]:" + triple[i][pattern], triple[i][output], f
-                    .toString());
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for legal
-     *        Byte/Short/Integer/Long conversion type 'x' and 'X'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionX() {
-        final Object[][] triple = { 
-                { 0,                "%x",                 "0" }, 
-                { 0,                "%-8x",        "0       " }, 
-                { 0,                "%06x",          "000000" }, 
-                { 0,                "%#x",              "0x0" }, 
-                { 0,                "%0#12x",  "0x0000000000" }, 
-                { 0,                "%-#9x",      "0x0      " }, 
-
-                { (byte) 0xff,      "%x",                "ff" }, 
-                { (byte) 0xff,      "%-8x",        "ff      " }, 
-                { (byte) 0xff,      "%06x",          "0000ff" }, 
-                { (byte) 0xff,      "%#x",             "0xff" }, 
-                { (byte) 0xff,      "%0#12x",  "0x00000000ff" }, 
-                { (byte) 0xff,      "%-#9x",      "0xff     " }, 
-                
-                { (short) 0xf123,   "%x",              "f123" }, 
-                { (short) 0xf123,   "%-8x",        "f123    " }, 
-                { (short) 0xf123,   "%06x",          "00f123" }, 
-                { (short) 0xf123,   "%#x",           "0xf123" }, 
-                { (short) 0xf123,   "%0#12x",  "0x000000f123" }, 
-                { (short) 0xf123,   "%-#9x",      "0xf123   " }, 
-                
-                {  0x123456,        "%x",            "123456" }, 
-                {  0x123456,        "%-8x",        "123456  " }, 
-                {  0x123456,        "%06x",          "123456" }, 
-                {  0x123456,        "%#x",         "0x123456" }, 
-                {  0x123456,        "%0#12x",  "0x0000123456" }, 
-                {  0x123456,        "%-#9x",      "0x123456 " }, 
-                
-                { -3,               "%x",          "fffffffd" }, 
-                { -3,               "%-8x",        "fffffffd" }, 
-                { -3,               "%06x",        "fffffffd" }, 
-                { -3,               "%#x",       "0xfffffffd" }, 
-                { -3,               "%0#12x",  "0x00fffffffd" }, 
-                { -3,               "%-#9x",     "0xfffffffd" }, 
-                
-                { 0x7654321L,       "%x",          "7654321" }, 
-                { 0x7654321L,       "%-8x",       "7654321 " }, 
-                { 0x7654321L,       "%06x",        "7654321" }, 
-                { 0x7654321L,       "%#x",       "0x7654321" }, 
-                { 0x7654321L,       "%0#12x", "0x0007654321" }, 
-                { 0x7654321L,       "%-#9x",     "0x7654321" }, 
-                
-                { -1L,              "%x",       "ffffffffffffffff" }, 
-                { -1L,              "%-8x",     "ffffffffffffffff" }, 
-                { -1L,              "%06x",     "ffffffffffffffff" }, 
-                { -1L,              "%#x",    "0xffffffffffffffff" }, 
-                { -1L,              "%0#12x", "0xffffffffffffffff" }, 
-                { -1L,              "%-#9x",  "0xffffffffffffffff" }, 
-                };
-
-        final int input = 0;
-        final int pattern = 1;
-        final int output = 2;
-        Formatter f;
-        for (int i = 0; i < triple.length; i++) {
-            f = new Formatter(Locale.FRANCE);
-            f.format((String) triple[i][pattern],
-                    triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
-                    + i + "]:" + triple[i][pattern], triple[i][output], f
-                    .toString());
-            
-            f = new Formatter(Locale.FRANCE);
-            f.format((String) triple[i][pattern],
-                    triple[i][input]);
-            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
-                    + i + "]:" + triple[i][pattern], triple[i][output], f
-                    .toString());
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for Date/Time
-     *        conversion
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_DateTimeConversion() {
-        Formatter f = null;
-        Date now = new Date(1147327147578L);
-
-        Calendar paris = Calendar.getInstance(TimeZone
-                .getTimeZone("Europe/Paris"), Locale.FRANCE);
-        paris.set(2006, 4, 8, 12, 0, 0);
-        paris.set(Calendar.MILLISECOND, 453);
-        Calendar china = Calendar.getInstance(
-                TimeZone.getTimeZone("GMT-08:00"), Locale.CHINA);
-        china.set(2006, 4, 8, 12, 0, 0);
-        china.set(Calendar.MILLISECOND, 609);
-
-        final Object[][] lowerCaseGermanTriple = {
-                {0L,                        'a', "Do."},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'a', "So."},  //$NON-NLS-2$
-                {-1000L,                    'a', "Do."},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'a', "Do."},  //$NON-NLS-2$
-                {paris,                     'a', "Mo."},  //$NON-NLS-2$
-                {china,                     'a', "Mo."},  //$NON-NLS-2$
-                {0L,                        'b', "Jan"},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'b', "Aug"},  //$NON-NLS-2$
-                {-1000L,                    'b', "Jan"},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'b', "Mai"},  //$NON-NLS-2$
-                {paris,                     'b', "Mai"},  //$NON-NLS-2$
-                {china,                     'b', "Mai"},  //$NON-NLS-2$
-                {0L,                        'c', "Do. Jan 01 08:00:00 GMT+08:00 1970"},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'c', "So. Aug 17 15:18:47 GMT+08:00 292278994"},  //$NON-NLS-2$
-                {-1000L,                    'c', "Do. Jan 01 07:59:59 GMT+08:00 1970"},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'c', "Do. Mai 11 13:59:07 GMT+08:00 2006"},  //$NON-NLS-2$
-                {paris,                     'c', "Mo. Mai 08 12:00:00 MESZ 2006"},  //$NON-NLS-2$
-                {china,                     'c', "Mo. Mai 08 12:00:00 GMT-08:00 2006"},  //$NON-NLS-2$
-                {0L,                        'd', "01"},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'd', "17"},  //$NON-NLS-2$
-                {-1000L,                    'd', "01"},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'd', "11"},  //$NON-NLS-2$
-                {paris,                     'd', "08"},  //$NON-NLS-2$
-                {china,                     'd', "08"},  //$NON-NLS-2$
-                {0L,                        'e', "1"},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'e', "17"},  //$NON-NLS-2$
-                {-1000L,                    'e', "1"},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'e', "11"},  //$NON-NLS-2$
-                {paris,                     'e', "8"},  //$NON-NLS-2$
-                {china,                     'e', "8"},  //$NON-NLS-2$
-                {0L,                        'h', "Jan"},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'h', "Aug"},  //$NON-NLS-2$
-                {-1000L,                    'h', "Jan"},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'h', "Mai"},  //$NON-NLS-2$
-                {paris,                     'h', "Mai"},  //$NON-NLS-2$
-                {china,                     'h', "Mai"},  //$NON-NLS-2$
-                {0L,                        'j', "001"},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'j', "229"},  //$NON-NLS-2$
-                {-1000L,                    'j', "001"},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'j', "131"},  //$NON-NLS-2$
-                {paris,                     'j', "128"},  //$NON-NLS-2$
-                {china,                     'j', "128"},  //$NON-NLS-2$
-                {0L,                        'k', "8"},  //$NON-NLS-2$
-                {Long.MAX_VALUE,            'k', "15"},  //$NON-NLS-2$
-                {-1000L,                    'k', "7"},  //$NON-NLS-2$
-                {new Date(1147327147578L),  'k', "13"},  //$NON-NLS-2$
-                {paris,                     'k', "12"},  //$NON-NLS-2$
-                {china,                     'k', "12"},  //$NON-NLS-2$
-                {0L,                        'l', "8"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'l', "3"}, //$NON-NLS-2$
-                {-1000L,                    'l', "7"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'l', "1"}, //$NON-NLS-2$
-                {paris,                     'l', "12"}, //$NON-NLS-2$
-                {china,                     'l', "12"}, //$NON-NLS-2$
-                {0L,                        'm', "01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'm', "08"}, //$NON-NLS-2$
-                {-1000L,                    'm', "01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'm', "05"}, //$NON-NLS-2$
-                {paris,                     'm', "05"}, //$NON-NLS-2$
-                {china,                     'm', "05"}, //$NON-NLS-2$
-                {0L,                        'p', "vorm."}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'p', "nachm."}, //$NON-NLS-2$
-                {-1000L,                    'p', "vorm."}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'p', "nachm."}, //$NON-NLS-2$
-                {paris,                     'p', "nachm."}, //$NON-NLS-2$
-                {china,                     'p', "nachm."}, //$NON-NLS-2$
-                {0L,                        'r', "08:00:00 vorm."}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'r', "03:18:47 nachm."}, //$NON-NLS-2$
-                {-1000L,                    'r', "07:59:59 vorm."}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'r', "01:59:07 nachm."}, //$NON-NLS-2$
-                {paris,                     'r', "12:00:00 nachm."}, //$NON-NLS-2$
-                {china,                     'r', "12:00:00 nachm."}, //$NON-NLS-2$
-                {0L,                        's', "0"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            's', "9223372036854775"}, //$NON-NLS-2$
-                {-1000L,                    's', "-1"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  's', "1147327147"}, //$NON-NLS-2$
-                {paris,                     's', "1147082400"}, //$NON-NLS-2$
-                {china,                     's', "1147118400"}, //$NON-NLS-2$
-                {0L,                        'y', "70"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'y', "94"}, //$NON-NLS-2$
-                {-1000L,                    'y', "70"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'y', "06"}, //$NON-NLS-2$
-                {paris,                     'y', "06"}, //$NON-NLS-2$
-                {china,                     'y', "06"}, //$NON-NLS-2$
-                {0L,                        'z', "+0800"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'z', "+0800"}, //$NON-NLS-2$
-                {-1000L,                    'z', "+0800"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'z', "+0800"}, //$NON-NLS-2$
-                {paris,                     'z', "+0100"}, //$NON-NLS-2$
-                {china,                     'z', "-0800"}, //$NON-NLS-2$
-                
-        };
-        
-        final Object[][] lowerCaseFranceTriple = {
-                {0L,                        'a', "jeu."}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'a', "dim."}, //$NON-NLS-2$
-                {-1000L,                    'a', "jeu."}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'a', "jeu."}, //$NON-NLS-2$
-                {paris,                     'a', "lun."}, //$NON-NLS-2$
-                {china,                     'a', "lun."}, //$NON-NLS-2$
-                {0L,                        'b', "janv."}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'b', "ao\u00fbt"}, //$NON-NLS-2$
-                {-1000L,                    'b', "janv."}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'b', "mai"}, //$NON-NLS-2$
-                {paris,                     'b', "mai"}, //$NON-NLS-2$
-                {china,                     'b', "mai"}, //$NON-NLS-2$
-                {0L,                        'c', "jeu. janv. 01 08:00:00 UTC+08:00 1970"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'c', "dim. ao\u00fbt 17 15:18:47 UTC+08:00 292278994"}, //$NON-NLS-2$
-                {-1000L,                    'c', "jeu. janv. 01 07:59:59 UTC+08:00 1970"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'c', "jeu. mai 11 13:59:07 UTC+08:00 2006"}, //$NON-NLS-2$
-                {paris,                     'c', "lun. mai 08 12:00:00 HAEC 2006"}, //$NON-NLS-2$
-                {china,                     'c', "lun. mai 08 12:00:00 UTC-08:00 2006"}, //$NON-NLS-2$
-                {0L,                        'd', "01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'd', "17"}, //$NON-NLS-2$
-                {-1000L,                    'd', "01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'd', "11"}, //$NON-NLS-2$
-                {paris,                     'd', "08"}, //$NON-NLS-2$
-                {china,                     'd', "08"}, //$NON-NLS-2$
-                {0L,                        'e', "1"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'e', "17"}, //$NON-NLS-2$
-                {-1000L,                    'e', "1"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'e', "11"}, //$NON-NLS-2$
-                {paris,                     'e', "8"}, //$NON-NLS-2$
-                {china,                     'e', "8"}, //$NON-NLS-2$
-                {0L,                        'h', "janv."}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'h', "ao\u00fbt"}, //$NON-NLS-2$
-                {-1000L,                    'h', "janv."}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'h', "mai"}, //$NON-NLS-2$
-                {paris,                     'h', "mai"}, //$NON-NLS-2$
-                {china,                     'h', "mai"}, //$NON-NLS-2$
-                {0L,                        'j', "001"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'j', "229"}, //$NON-NLS-2$
-                {-1000L,                    'j', "001"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'j', "131"}, //$NON-NLS-2$
-                {paris,                     'j', "128"}, //$NON-NLS-2$
-                {china,                     'j', "128"}, //$NON-NLS-2$
-                {0L,                        'k', "8"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'k', "15"}, //$NON-NLS-2$
-                {-1000L,                    'k', "7"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'k', "13"}, //$NON-NLS-2$
-                {paris,                     'k', "12"}, //$NON-NLS-2$
-                {china,                     'k', "12"}, //$NON-NLS-2$
-                {0L,                        'l', "8"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'l', "3"}, //$NON-NLS-2$
-                {-1000L,                    'l', "7"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'l', "1"}, //$NON-NLS-2$
-                {paris,                     'l', "12"}, //$NON-NLS-2$
-                {china,                     'l', "12"}, //$NON-NLS-2$
-                {0L,                        'm', "01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'm', "08"}, //$NON-NLS-2$
-                {-1000L,                    'm', "01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'm', "05"}, //$NON-NLS-2$
-                {paris,                     'm', "05"}, //$NON-NLS-2$
-                {china,                     'm', "05"}, //$NON-NLS-2$
-                {0L,                        'p', "am"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'p', "pm"}, //$NON-NLS-2$
-                {-1000L,                    'p', "am"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'p', "pm"}, //$NON-NLS-2$
-                {paris,                     'p', "pm"}, //$NON-NLS-2$
-                {china,                     'p', "pm"}, //$NON-NLS-2$
-                {0L,                        'r', "08:00:00 AM"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'r', "03:18:47 PM"}, //$NON-NLS-2$
-                {-1000L,                    'r', "07:59:59 AM"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'r', "01:59:07 PM"}, //$NON-NLS-2$
-                {paris,                     'r', "12:00:00 PM"}, //$NON-NLS-2$
-                {china,                     'r', "12:00:00 PM"}, //$NON-NLS-2$
-                {0L,                        's', "0"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            's', "9223372036854775"}, //$NON-NLS-2$
-                {-1000L,                    's', "-1"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  's', "1147327147"}, //$NON-NLS-2$
-                {paris,                     's', "1147082400"}, //$NON-NLS-2$
-                {china,                     's', "1147118400"}, //$NON-NLS-2$
-                {0L,                        'y', "70"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'y', "94"}, //$NON-NLS-2$
-                {-1000L,                    'y', "70"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'y', "06"}, //$NON-NLS-2$
-                {paris,                     'y', "06"}, //$NON-NLS-2$
-                {china,                     'y', "06"}, //$NON-NLS-2$
-                {0L,                        'z', "+0800"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'z', "+0800"}, //$NON-NLS-2$
-                {-1000L,                    'z', "+0800"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'z', "+0800"}, //$NON-NLS-2$
-                {paris,                     'z', "+0100"}, //$NON-NLS-2$
-                {china,                     'z', "-0800"}, //$NON-NLS-2$
-                
-        };
-        
-        final Object[][] lowerCaseJapanTriple = {
-                {0L,                        'a', "\u6728"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'a', "\u65e5"}, //$NON-NLS-2$
-                {-1000L,                    'a', "\u6728"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'a', "\u6728"}, //$NON-NLS-2$
-                {paris,                     'a', "\u6708"}, //$NON-NLS-2$
-                {china,                     'a', "\u6708"}, //$NON-NLS-2$
-                {0L,                        'b', "1\u6708"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'b', "8\u6708"}, //$NON-NLS-2$
-                {-1000L,                    'b', "1\u6708"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'b', "5\u6708"}, //$NON-NLS-2$
-                {paris,                     'b', "5\u6708"}, //$NON-NLS-2$
-                {china,                     'b', "5\u6708"}, //$NON-NLS-2$
-                {0L,                        'c', "\u6728 1\u6708 01 08:00:00 GMT+08:00 1970"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'c', "\u65e5 8\u6708 17 15:18:47 GMT+08:00 292278994"}, //$NON-NLS-2$
-                {-1000L,                    'c', "\u6728 1\u6708 01 07:59:59 GMT+08:00 1970"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'c', "\u6728 5\u6708 11 13:59:07 GMT+08:00 2006"}, //$NON-NLS-2$
-                {paris,                     'c', "\u6708 5\u6708 08 12:00:00 GMT+02:00 2006"}, //$NON-NLS-2$
-                {china,                     'c', "\u6708 5\u6708 08 12:00:00 GMT-08:00 2006"}, //$NON-NLS-2$
-                {0L,                        'd', "01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'd', "17"}, //$NON-NLS-2$
-                {-1000L,                    'd', "01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'd', "11"}, //$NON-NLS-2$
-                {paris,                     'd', "08"}, //$NON-NLS-2$
-                {china,                     'd', "08"}, //$NON-NLS-2$
-                {0L,                        'e', "1"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'e', "17"}, //$NON-NLS-2$
-                {-1000L,                    'e', "1"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'e', "11"}, //$NON-NLS-2$
-                {paris,                     'e', "8"}, //$NON-NLS-2$
-                {china,                     'e', "8"}, //$NON-NLS-2$
-                {0L,                        'h', "1\u6708"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'h', "8\u6708"}, //$NON-NLS-2$
-                {-1000L,                    'h', "1\u6708"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'h', "5\u6708"}, //$NON-NLS-2$
-                {paris,                     'h', "5\u6708"}, //$NON-NLS-2$
-                {china,                     'h', "5\u6708"}, //$NON-NLS-2$
-                {0L,                        'j', "001"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'j', "229"}, //$NON-NLS-2$
-                {-1000L,                    'j', "001"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'j', "131"}, //$NON-NLS-2$
-                {paris,                     'j', "128"}, //$NON-NLS-2$
-                {china,                     'j', "128"}, //$NON-NLS-2$
-                {0L,                        'k', "8"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'k', "15"}, //$NON-NLS-2$
-                {-1000L,                    'k', "7"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'k', "13"}, //$NON-NLS-2$
-                {paris,                     'k', "12"}, //$NON-NLS-2$
-                {china,                     'k', "12"}, //$NON-NLS-2$
-                {0L,                        'l', "8"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'l', "3"}, //$NON-NLS-2$
-                {-1000L,                    'l', "7"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'l', "1"}, //$NON-NLS-2$
-                {paris,                     'l', "12"}, //$NON-NLS-2$
-                {china,                     'l', "12"}, //$NON-NLS-2$
-                {0L,                        'm', "01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'm', "08"}, //$NON-NLS-2$
-                {-1000L,                    'm', "01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'm', "05"}, //$NON-NLS-2$
-                {paris,                     'm', "05"}, //$NON-NLS-2$
-                {china,                     'm', "05"}, //$NON-NLS-2$
-                {0L,                        'p', "\u5348\u524d"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'p', "\u5348\u5f8c"}, //$NON-NLS-2$
-                {-1000L,                    'p', "\u5348\u524d"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'p', "\u5348\u5f8c"}, //$NON-NLS-2$
-                {paris,                     'p', "\u5348\u5f8c"}, //$NON-NLS-2$
-                {china,                     'p', "\u5348\u5f8c"}, //$NON-NLS-2$
-                {0L,                        'r', "08:00:00 \u5348\u524d"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'r', "03:18:47 \u5348\u5f8c"}, //$NON-NLS-2$
-                {-1000L,                    'r', "07:59:59 \u5348\u524d"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'r', "01:59:07 \u5348\u5f8c"}, //$NON-NLS-2$
-                {paris,                     'r', "12:00:00 \u5348\u5f8c"}, //$NON-NLS-2$
-                {china,                     'r', "12:00:00 \u5348\u5f8c"}, //$NON-NLS-2$
-                {0L,                        's', "0"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            's', "9223372036854775"}, //$NON-NLS-2$
-                {-1000L,                    's', "-1"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  's', "1147327147"}, //$NON-NLS-2$
-                {paris,                     's', "1147082400"}, //$NON-NLS-2$
-                {china,                     's', "1147118400"}, //$NON-NLS-2$
-                {0L,                        'y', "70"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'y', "94"}, //$NON-NLS-2$
-                {-1000L,                    'y', "70"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'y', "06"}, //$NON-NLS-2$
-                {paris,                     'y', "06"}, //$NON-NLS-2$
-                {china,                     'y', "06"}, //$NON-NLS-2$
-                {0L,                        'z', "+0800"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'z', "+0800"}, //$NON-NLS-2$
-                {-1000L,                    'z', "+0800"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'z', "+0800"}, //$NON-NLS-2$
-                {paris,                     'z', "+0100"}, //$NON-NLS-2$
-                {china,                     'z', "-0800"}, //$NON-NLS-2$
-        };
-
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-        for (int i = 0; i < 90; i++) {
-            // go through legal conversion 
-            String formatSpecifier = "%t" + lowerCaseGermanTriple[i][pattern]; //$NON-NLS-2$
-            String formatSpecifierUpper = "%T" + lowerCaseGermanTriple[i][pattern]; //$NON-NLS-2$
-            // test '%t'
-            f = new Formatter(Locale.GERMAN);
-            f.format(formatSpecifier, lowerCaseGermanTriple[i][input]);
-            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
-                            + " Argument: " + lowerCaseGermanTriple[i][input], //$NON-NLS-2$
-                            lowerCaseGermanTriple[i][output], f.toString());
-
-            f = new Formatter(Locale.GERMAN);
-            f.format(Locale.FRANCE, formatSpecifier, lowerCaseFranceTriple[i][input]);
-            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
-                            + " Argument: " + lowerCaseFranceTriple[i][input], //$NON-NLS-2$
-                            lowerCaseFranceTriple[i][output], f.toString());
-
-            f = new Formatter(Locale.GERMAN);
-            f.format(Locale.JAPAN, formatSpecifier, lowerCaseJapanTriple[i][input]);
-            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
-                            + " Argument: " + lowerCaseJapanTriple[i][input], //$NON-NLS-2$
-                            lowerCaseJapanTriple[i][output], f.toString());
-
-            // test '%T'
-            f = new Formatter(Locale.GERMAN);
-            f.format(formatSpecifierUpper, lowerCaseGermanTriple[i][input]);
-            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
-                            + " Argument: " + lowerCaseGermanTriple[i][input], //$NON-NLS-2$
-                            ((String)lowerCaseGermanTriple[i][output])
-                                    .toUpperCase(Locale.US), f.toString());
-
-            f = new Formatter(Locale.GERMAN);
-            f.format(Locale.FRANCE, formatSpecifierUpper, lowerCaseFranceTriple[i][input]);
-            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
-                            + " Argument: " + lowerCaseFranceTriple[i][input], //$NON-NLS-2$
-                            ((String)lowerCaseFranceTriple[i][output])
-                                    .toUpperCase(Locale.US), f.toString());
-
-            f = new Formatter(Locale.GERMAN);
-            f.format(Locale.JAPAN, formatSpecifierUpper, lowerCaseJapanTriple[i][input]);
-            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
-                            + " Argument: " + lowerCaseJapanTriple[i][input], //$NON-NLS-2$
-                            ((String)lowerCaseJapanTriple[i][output])
-                                    .toUpperCase(Locale.US), f.toString());
-        }
-
-        final Object[][] upperCaseGermanTriple = {
-                {0L,                        'A', "Donnerstag"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'A', "Sonntag"}, //$NON-NLS-2$
-                {-1000L,                    'A', "Donnerstag"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'A', "Donnerstag"}, //$NON-NLS-2$
-                {paris,                     'A', "Montag"}, //$NON-NLS-2$
-                {china,                     'A', "Montag"}, //$NON-NLS-2$
-                {0L,                        'B', "Januar"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'B', "August"}, //$NON-NLS-2$
-                {-1000L,                    'B', "Januar"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'B', "Mai"}, //$NON-NLS-2$
-                {paris,                     'B', "Mai"}, //$NON-NLS-2$ 
-                {china,                     'B', "Mai"}, //$NON-NLS-2$
-                {0L,                        'C', "19"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'C', "2922789"}, //$NON-NLS-2$
-                {-1000L,                    'C', "19"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'C', "20"}, //$NON-NLS-2$
-                {paris,                     'C', "20"}, //$NON-NLS-2$
-                {china,                     'C', "20"}, //$NON-NLS-2$
-                {0L,                        'D', "01/01/70"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'D', "08/17/94"}, //$NON-NLS-2$
-                {-1000L,                    'D', "01/01/70"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'D', "05/11/06"}, //$NON-NLS-2$
-                {paris,                     'D', "05/08/06"}, //$NON-NLS-2$
-                {china,                     'D', "05/08/06"}, //$NON-NLS-2$
-                {0L,                        'F', "1970-01-01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'F', "292278994-08-17"}, //$NON-NLS-2$
-                {-1000L,                    'F', "1970-01-01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'F', "2006-05-11"}, //$NON-NLS-2$
-                {paris,                     'F', "2006-05-08"}, //$NON-NLS-2$
-                {china,                     'F', "2006-05-08"}, //$NON-NLS-2$
-                {0L,                        'H', "08"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'H', "15"}, //$NON-NLS-2$
-                {-1000L,                    'H', "07"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'H', "13"}, //$NON-NLS-2$
-                {paris,                     'H', "12"}, //$NON-NLS-2$
-                {china,                     'H', "12"}, //$NON-NLS-2$
-                {0L,                        'I', "08"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'I', "03"}, //$NON-NLS-2$
-                {-1000L,                    'I', "07"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'I', "01"}, //$NON-NLS-2$
-                {paris,                     'I', "12"}, //$NON-NLS-2$
-                {china,                     'I', "12"}, //$NON-NLS-2$
-                {0L,                        'L', "000"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'L', "807"}, //$NON-NLS-2$
-                {-1000L,                    'L', "000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'L', "578"}, //$NON-NLS-2$
-                {paris,                     'L', "453"}, //$NON-NLS-2$
-                {china,                     'L', "609"}, //$NON-NLS-2$
-                {0L,                        'M', "00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'M', "18"}, //$NON-NLS-2$
-                {-1000L,                    'M', "59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'M', "59"}, //$NON-NLS-2$
-                {paris,                     'M', "00"}, //$NON-NLS-2$
-                {china,                     'M', "00"}, //$NON-NLS-2$
-                {0L,                        'N', "000000000"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'N', "807000000"}, //$NON-NLS-2$
-                {-1000L,                    'N', "000000000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'N', "578000000"}, //$NON-NLS-2$
-                {paris,                     'N', "609000000"}, //$NON-NLS-2$
-                {china,                     'N', "609000000"}, //$NON-NLS-2$
-                {0L,                        'Q', "0"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Q', "9223372036854775807"}, //$NON-NLS-2$
-                {-1000L,                    'Q', "-1000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Q', "1147327147578"}, //$NON-NLS-2$
-                {paris,                     'Q', "1147082400453"}, //$NON-NLS-2$
-                {china,                     'Q', "1147118400609"}, //$NON-NLS-2$
-                {0L,                        'R', "08:00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'R', "15:18"}, //$NON-NLS-2$
-                {-1000L,                    'R', "07:59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'R', "13:59"}, //$NON-NLS-2$
-                {paris,                     'R', "12:00"}, //$NON-NLS-2$
-                {china,                     'R', "12:00"}, //$NON-NLS-2$
-                {0L,                        'S', "00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'S', "47"}, //$NON-NLS-2$
-                {-1000L,                    'S', "59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'S', "07"}, //$NON-NLS-2$
-                {paris,                     'S', "00"}, //$NON-NLS-2$
-                {china,                     'S', "00"}, //$NON-NLS-2$
-                {0L,                        'T', "08:00:00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'T', "15:18:47"}, //$NON-NLS-2$
-                {-1000L,                    'T', "07:59:59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'T', "13:59:07"}, //$NON-NLS-2$
-                {paris,                     'T', "12:00:00"}, //$NON-NLS-2$
-                {china,                     'T', "12:00:00"}, //$NON-NLS-2$
-                {0L,                        'Y', "1970"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Y', "292278994"}, //$NON-NLS-2$
-                {-1000L,                    'Y', "1970"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Y', "2006"}, //$NON-NLS-2$
-                {paris,                     'Y', "2006"}, //$NON-NLS-2$
-                {china,                     'Y', "2006"}, //$NON-NLS-2$
-                {0L,                        'Z', "CST"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Z', "CST"}, //$NON-NLS-2$
-                {-1000L,                    'Z', "CST"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Z', "CST"}, //$NON-NLS-2$
-                {paris,                     'Z', "CEST"}, //$NON-NLS-2$
-                {china,                     'Z', "GMT-08:00"}, //$NON-NLS-2$
-                
-        };
-        
-        final Object[][] upperCaseFranceTriple = {
-                {0L,                        'A', "jeudi"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'A', "dimanche"}, //$NON-NLS-2$
-                {-1000L,                    'A', "jeudi"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'A', "jeudi"}, //$NON-NLS-2$
-                {paris,                     'A', "lundi"}, //$NON-NLS-2$
-                {china,                     'A', "lundi"}, //$NON-NLS-2$
-                {0L,                        'B', "janvier"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'B', "ao\u00fbt"}, //$NON-NLS-2$
-                {-1000L,                    'B', "janvier"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'B', "mai"}, //$NON-NLS-2$
-                {paris,                     'B', "mai"}, //$NON-NLS-2$
-                {china,                     'B', "mai"}, //$NON-NLS-2$
-                {0L,                        'C', "19"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'C', "2922789"}, //$NON-NLS-2$
-                {-1000L,                    'C', "19"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'C', "20"}, //$NON-NLS-2$
-                {paris,                     'C', "20"}, //$NON-NLS-2$
-                {china,                     'C', "20"}, //$NON-NLS-2$
-                {0L,                        'D', "01/01/70"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'D', "08/17/94"}, //$NON-NLS-2$
-                {-1000L,                    'D', "01/01/70"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'D', "05/11/06"}, //$NON-NLS-2$
-                {paris,                     'D', "05/08/06"}, //$NON-NLS-2$
-                {china,                     'D', "05/08/06"}, //$NON-NLS-2$
-                {0L,                        'F', "1970-01-01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'F', "292278994-08-17"}, //$NON-NLS-2$
-                {-1000L,                    'F', "1970-01-01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'F', "2006-05-11"}, //$NON-NLS-2$
-                {paris,                     'F', "2006-05-08"}, //$NON-NLS-2$
-                {china,                     'F', "2006-05-08"}, //$NON-NLS-2$
-                {0L,                        'H', "08"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'H', "15"}, //$NON-NLS-2$
-                {-1000L,                    'H', "07"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'H', "13"}, //$NON-NLS-2$
-                {paris,                     'H', "12"}, //$NON-NLS-2$
-                {china,                     'H', "12"}, //$NON-NLS-2$
-                {0L,                        'I', "08"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'I', "03"}, //$NON-NLS-2$
-                {-1000L,                    'I', "07"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'I', "01"}, //$NON-NLS-2$
-                {paris,                     'I', "12"}, //$NON-NLS-2$
-                {china,                     'I', "12"}, //$NON-NLS-2$
-                {0L,                        'L', "000"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'L', "807"}, //$NON-NLS-2$
-                {-1000L,                    'L', "000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'L', "578"}, //$NON-NLS-2$
-                {paris,                     'L', "453"}, //$NON-NLS-2$
-                {china,                     'L', "609"}, //$NON-NLS-2$
-                {0L,                        'M', "00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'M', "18"}, //$NON-NLS-2$
-                {-1000L,                    'M', "59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'M', "59"}, //$NON-NLS-2$
-                {paris,                     'M', "00"}, //$NON-NLS-2$
-                {china,                     'M', "00"}, //$NON-NLS-2$
-                {0L,                        'N', "000000000"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'N', "807000000"}, //$NON-NLS-2$
-                {-1000L,                    'N', "000000000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'N', "578000000"}, //$NON-NLS-2$
-                {paris,                     'N', "453000000"}, //$NON-NLS-2$
-                {china,                     'N', "468000000"}, //$NON-NLS-2$
-                {0L,                        'Q', "0"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Q', "9223372036854775807"}, //$NON-NLS-2$
-                {-1000L,                    'Q', "-1000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Q', "1147327147578"}, //$NON-NLS-2$
-                {paris,                     'Q', "1147082400453"}, //$NON-NLS-2$
-                {china,                     'Q', "1147118400609"}, //$NON-NLS-2$
-                {0L,                        'R', "08:00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'R', "15:18"}, //$NON-NLS-2$
-                {-1000L,                    'R', "07:59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'R', "13:59"}, //$NON-NLS-2$
-                {paris,                     'R', "12:00"}, //$NON-NLS-2$
-                {china,                     'R', "12:00"}, //$NON-NLS-2$
-                {0L,                        'S', "00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'S', "47"}, //$NON-NLS-2$
-                {-1000L,                    'S', "59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'S', "07"}, //$NON-NLS-2$
-                {paris,                     'S', "00"}, //$NON-NLS-2$
-                {china,                     'S', "00"}, //$NON-NLS-2$
-                {0L,                        'T', "08:00:00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'T', "15:18:47"}, //$NON-NLS-2$
-                {-1000L,                    'T', "07:59:59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'T', "13:59:07"}, //$NON-NLS-2$
-                {paris,                     'T', "12:00:00"}, //$NON-NLS-2$
-                {china,                     'T', "12:00:00"}, //$NON-NLS-2$
-                {0L,                        'Y', "1970"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Y', "292278994"}, //$NON-NLS-2$
-                {-1000L,                    'Y', "1970"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Y', "2006"}, //$NON-NLS-2$
-                {paris,                     'Y', "2006"}, //$NON-NLS-2$
-                {china,                     'Y', "2006"}, //$NON-NLS-2$
-                {0L,                        'Z', "CST"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Z', "CST"}, //$NON-NLS-2$
-                {-1000L,                    'Z', "CST"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Z', "CST"}, //$NON-NLS-2$
-                {paris,                     'Z', "CEST"}, //$NON-NLS-2$
-                {china,                     'Z', "GMT-08:00"}, //$NON-NLS-2$
-                
-        };
-
-        final Object[][] upperCaseJapanTriple = {
-                {0L,                        'A', "\u6728\u66dc\u65e5"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'A', "\u65e5\u66dc\u65e5"}, //$NON-NLS-2$
-                {-1000L,                    'A', "\u6728\u66dc\u65e5"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'A', "\u6728\u66dc\u65e5"}, //$NON-NLS-2$
-                {paris,                     'A', "\u6708\u66dc\u65e5"}, //$NON-NLS-2$
-                {china,                     'A', "\u6708\u66dc\u65e5"}, //$NON-NLS-2$
-                {0L,                        'B', "1\u6708"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'B', "8\u6708"}, //$NON-NLS-2$
-                {-1000L,                    'B', "1\u6708"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'B', "5\u6708"}, //$NON-NLS-2$
-                {paris,                     'B', "5\u6708"}, //$NON-NLS-2$
-                {china,                     'B', "5\u6708"}, //$NON-NLS-2$
-                {0L,                        'C', "19"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'C', "2922789"}, //$NON-NLS-2$
-                {-1000L,                    'C', "19"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'C', "20"}, //$NON-NLS-2$ 
-                {paris,                     'C', "20"}, //$NON-NLS-2$
-                {china,                     'C', "20"}, //$NON-NLS-2$
-                {0L,                        'D', "01/01/70"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'D', "08/17/94"}, //$NON-NLS-2$
-                {-1000L,                    'D', "01/01/70"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'D', "05/11/06"}, //$NON-NLS-2$
-                {paris,                     'D', "05/08/06"}, //$NON-NLS-2$
-                {china,                     'D', "05/08/06"}, //$NON-NLS-2$
-                {0L,                        'F', "1970-01-01"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'F', "292278994-08-17"}, //$NON-NLS-2$
-                {-1000L,                    'F', "1970-01-01"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'F', "2006-05-11"}, //$NON-NLS-2$
-                {paris,                     'F', "2006-05-08"}, //$NON-NLS-2$
-                {china,                     'F', "2006-05-08"}, //$NON-NLS-2$
-                {0L,                        'H', "08"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'H', "15"}, //$NON-NLS-2$
-                {-1000L,                    'H', "07"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'H', "13"}, //$NON-NLS-2$
-                {paris,                     'H', "12"}, //$NON-NLS-2$
-                {china,                     'H', "12"}, //$NON-NLS-2$
-                {0L,                        'I', "08"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'I', "03"}, //$NON-NLS-2$
-                {-1000L,                    'I', "07"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'I', "01"}, //$NON-NLS-2$
-                {paris,                     'I', "12"}, //$NON-NLS-2$
-                {china,                     'I', "12"}, //$NON-NLS-2$
-                {0L,                        'L', "000"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'L', "807"}, //$NON-NLS-2$
-                {-1000L,                    'L', "000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'L', "578"}, //$NON-NLS-2$
-                {paris,                     'L', "453"}, //$NON-NLS-2$
-                {china,                     'L', "609"}, //$NON-NLS-2$
-                {0L,                        'M', "00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'M', "18"}, //$NON-NLS-2$
-                {-1000L,                    'M', "59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'M', "59"}, //$NON-NLS-2$
-                {paris,                     'M', "00"}, //$NON-NLS-2$
-                {china,                     'M', "00"}, //$NON-NLS-2$
-                {0L,                        'N', "000000000"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'N', "807000000"}, //$NON-NLS-2$
-                {-1000L,                    'N', "000000000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'N', "578000000"}, //$NON-NLS-2$
-                {paris,                     'N', "453000000"}, //$NON-NLS-2$
-                {china,                     'N', "468000000"}, //$NON-NLS-2$
-                {0L,                        'Q', "0"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Q', "9223372036854775807"}, //$NON-NLS-2$
-                {-1000L,                    'Q', "-1000"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Q', "1147327147578"}, //$NON-NLS-2$
-                {paris,                     'Q', "1147082400453"}, //$NON-NLS-2$
-                {china,                     'Q', "1147118400609"}, //$NON-NLS-2$
-                {0L,                        'R', "08:00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'R', "15:18"}, //$NON-NLS-2$
-                {-1000L,                    'R', "07:59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'R', "13:59"}, //$NON-NLS-2$
-                {paris,                     'R', "12:00"}, //$NON-NLS-2$
-                {china,                     'R', "12:00"}, //$NON-NLS-2$
-                {0L,                        'S', "00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'S', "47"}, //$NON-NLS-2$
-                {-1000L,                    'S', "59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'S', "07"}, //$NON-NLS-2$
-                {paris,                     'S', "00"}, //$NON-NLS-2$
-                {china,                     'S', "00"}, //$NON-NLS-2$
-                {0L,                        'T', "08:00:00"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'T', "15:18:47"}, //$NON-NLS-2$
-                {-1000L,                    'T', "07:59:59"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'T', "13:59:07"}, //$NON-NLS-2$
-                {paris,                     'T', "12:00:00"}, //$NON-NLS-2$
-                {china,                     'T', "12:00:00"}, //$NON-NLS-2$
-                {0L,                        'Y', "1970"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Y', "292278994"}, //$NON-NLS-2$
-                {-1000L,                    'Y', "1970"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Y', "2006"}, //$NON-NLS-2$
-                {paris,                     'Y', "2006"}, //$NON-NLS-2$
-                {china,                     'Y', "2006"}, //$NON-NLS-2$
-                {0L,                        'Z', "CST"}, //$NON-NLS-2$
-                {Long.MAX_VALUE,            'Z', "CST"}, //$NON-NLS-2$
-                {-1000L,                    'Z', "CST"}, //$NON-NLS-2$
-                {new Date(1147327147578L),  'Z', "CST"}, //$NON-NLS-2$
-                {paris,                     'Z', "CEST"}, //$NON-NLS-2$
-                {china,                     'Z', "GMT-08:00"}, //$NON-NLS-2$
-        };
-
-
-        for (int i = 0; i < 90; i++) {
-            String formatSpecifier = "%t" + upperCaseGermanTriple[i][pattern]; //$NON-NLS-2$
-            String formatSpecifierUpper = "%T" + upperCaseGermanTriple[i][pattern]; //$NON-NLS-2$
-                    if ((Character)upperCaseGermanTriple[i][pattern] == 'N') {
-                        // result can't be predicted on RI, so skip this test
-                        continue;
-                    }
-                    // test '%t'
-                    f = new Formatter(Locale.JAPAN);
-                    f.format(formatSpecifier, upperCaseJapanTriple[i][input]);
-                    assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
-                            + " Argument: " + upperCaseJapanTriple[i][input], //$NON-NLS-2$
-                            upperCaseJapanTriple[i][output], f.toString());
-
-                    f = new Formatter(Locale.JAPAN);
-                    f.format(Locale.GERMAN, formatSpecifier, upperCaseGermanTriple[i][input]);
-                    assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
-                            + " Argument: " + upperCaseGermanTriple[i][input], //$NON-NLS-2$
-                            upperCaseGermanTriple[i][output], f.toString());
-
-                    f = new Formatter(Locale.JAPAN);
-                    f.format(Locale.FRANCE, formatSpecifier, upperCaseFranceTriple[i][input]);
-                    assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
-                            + " Argument: " + upperCaseFranceTriple[i][input], //$NON-NLS-2$
-                            upperCaseFranceTriple[i][output], f.toString());
-
-                    // test '%T'
-                    f = new Formatter(Locale.GERMAN);
-                    f.format(formatSpecifierUpper, upperCaseGermanTriple[i][input]);
-                    assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
-                            + " Argument: " + upperCaseGermanTriple[i][input], //$NON-NLS-2$
-                            ((String)upperCaseGermanTriple[i][output])
-                                    .toUpperCase(Locale.US), f.toString());
-
-                    f = new Formatter(Locale.GERMAN);
-                    f.format(Locale.JAPAN, formatSpecifierUpper, upperCaseJapanTriple[i][input]);
-                    assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
-                            + " Argument: " + upperCaseJapanTriple[i][input], //$NON-NLS-2$
-                            ((String)upperCaseJapanTriple[i][output])
-                                    .toUpperCase(Locale.US), f.toString());
-
-                    f = new Formatter(Locale.GERMAN);
-                    f.format(Locale.FRANCE, formatSpecifierUpper, upperCaseFranceTriple[i][input]);
-                    assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
-                            + " Argument: " + upperCaseFranceTriple[i][input], //$NON-NLS-2$
-                            ((String)upperCaseFranceTriple[i][output])
-                                    .toUpperCase(Locale.US), f.toString());
-        }
-
-        f = new Formatter(Locale.US);
-        f.format("%-10ta", now); //$NON-NLS-2$
-        assertEquals("Thu       ", f.toString()); //$NON-NLS-2$
-
-        f = new Formatter(Locale.US);
-        f.format("%10000000000000000000000000000000001ta", now); //$NON-NLS-2$
-        assertEquals("Thu", f.toString().trim()); //$NON-NLS-2$
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for null argment for
-     *        Byte/Short/Integer/Long/BigInteger conversion
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongNullConversion() {
-
-        Formatter f = new Formatter(Locale.FRANCE);
-        f.format("%d%<o%<x%<5X", (Integer) null);
-        assertEquals("nullnullnull NULL", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%d%<#03o %<0#4x%<6X", (Long) null);
-        assertEquals("nullnull null  NULL", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%(+,07d%<o %<x%<6X", (Byte) null);
-        assertEquals("   nullnull null  NULL", f.toString());
-
-        f = new Formatter(Locale.ITALY);
-        f.format("%(+,07d%<o %<x%<0#6X", (Short) null);
-        assertEquals("   nullnull null  NULL", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%(+,-7d%<( o%<+(x %<( 06X", (BigInteger) null);
-        assertEquals("null   nullnull   NULL", f.toString());
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for legal
-     *        BigInteger conversion type 'd'
-     */
-    public void test_formatLjava_lang_String$LBigInteger() {
-        final Object[][] tripleD = {
-                {new BigInteger("123456789012345678901234567890"),          "%d",       "123456789012345678901234567890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%10d",     "123456789012345678901234567890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%-1d",     "123456789012345678901234567890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%+d",      "+123456789012345678901234567890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "% d",      " 123456789012345678901234567890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%,d",      "123.456.789.012.345.678.901.234.567.890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%(d",      "123456789012345678901234567890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%08d",     "123456789012345678901234567890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%-+,(11d", "+123.456.789.012.345.678.901.234.567.890"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%0 ,(11d", " 123.456.789.012.345.678.901.234.567.890"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%d",       "-9876543210987654321098765432100000"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%10d",     "-9876543210987654321098765432100000"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%-1d",     "-9876543210987654321098765432100000"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%+d",      "-9876543210987654321098765432100000"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "% d",      "-9876543210987654321098765432100000"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%,d",      "-9.876.543.210.987.654.321.098.765.432.100.000"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%(d",      "(9876543210987654321098765432100000)"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%08d",     "-9876543210987654321098765432100000"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%-+,(11d", "(9.876.543.210.987.654.321.098.765.432.100.000)"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%0 ,(11d", "(9.876.543.210.987.654.321.098.765.432.100.000)"}, //$NON-NLS-2$
-        };
-        
-        final int input = 0;
-        final int pattern = 1;
-        final int output = 2;
-        Formatter f;
-        for (int i = 0; i < tripleD.length; i++) {
-            f = new Formatter(Locale.GERMAN);
-            f.format((String) tripleD[i][pattern],
-                    tripleD[i][input]);
-            assertEquals("triple[" + i + "]:" + tripleD[i][input] + ",pattern["
-                    + i + "]:" + tripleD[i][pattern], tripleD[i][output], f
-                    .toString());
-            
-        }
-        
-        final Object[][] tripleO = {
-                {new BigInteger("123456789012345678901234567890"),          "%o",       "143564417755415637016711617605322"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%-6o",     "143564417755415637016711617605322"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%08o",     "143564417755415637016711617605322"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%#o",      "0143564417755415637016711617605322"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%0#11o",   "0143564417755415637016711617605322"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%-#9o",    "0143564417755415637016711617605322"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%o",       "-36336340043453651353467270113157312240"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%-6o",     "-36336340043453651353467270113157312240"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%08o",     "-36336340043453651353467270113157312240"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%#o",      "-036336340043453651353467270113157312240"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%0#11o",   "-036336340043453651353467270113157312240"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%-#9o",    "-036336340043453651353467270113157312240"}, //$NON-NLS-2$
-        };
-        for (int i = 0; i < tripleO.length; i++) {
-            f = new Formatter(Locale.ITALY);
-            f.format((String) tripleO[i][pattern],
-                    tripleO[i][input]);
-            assertEquals("triple[" + i + "]:" + tripleO[i][input] + ",pattern["
-                    + i + "]:" + tripleO[i][pattern], tripleO[i][output], f
-                    .toString());
-            
-        }
-        
-        final Object[][] tripleX = {
-                {new BigInteger("123456789012345678901234567890"),          "%x",       "18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%-8x",     "18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%06x",     "18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%#x",      "0x18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%0#12x",   "0x18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
-                {new BigInteger("123456789012345678901234567890"),          "%-#9x",    "0x18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%x",       "-1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%-8x",     "-1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%06x",     "-1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%#x",      "-0x1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%0#12x",   "-0x1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
-                {new BigInteger("-9876543210987654321098765432100000"),     "%-#9x",    "-0x1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
-        };
-        
-        for (int i = 0; i < tripleX.length; i++) {
-            f = new Formatter(Locale.FRANCE);
-            f.format((String) tripleX[i][pattern],
-                    tripleX[i][input]);
-            assertEquals("triple[" + i + "]:" + tripleX[i][input] + ",pattern["
-                    + i + "]:" + tripleX[i][pattern], tripleX[i][output], f
-                    .toString());
-            
-        }
-        
-        f = new Formatter(Locale.GERMAN);
-        f.format("%(+,-7d%<( o%<+(x %<( 06X", (BigInteger) null);
-        assertEquals("null   nullnull   NULL", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for padding of
-     *        BigInteger conversion
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerPaddingConversion() {
-        Formatter f = null;
-
-        BigInteger bigInt = new BigInteger("123456789012345678901234567890");
-        f = new Formatter(Locale.GERMAN);
-        f.format("%32d", bigInt);
-        assertEquals("  123456789012345678901234567890", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%+32x", bigInt);
-        assertEquals("      +18ee90ff6c373e0ee4e3f0ad2", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("% 32o", bigInt);
-        assertEquals(" 143564417755415637016711617605322", f.toString());
-
-        BigInteger negBigInt = new BigInteger(
-                "-1234567890123456789012345678901234567890");
-        f = new Formatter(Locale.GERMAN);
-        f.format("%( 040X", negBigInt);
-        assertEquals("(000003A0C92075C0DBF3B8ACBC5F96CE3F0AD2)", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%+(045d", negBigInt);
-        assertEquals("(0001234567890123456789012345678901234567890)", f
-                .toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%+,-(60d", negBigInt);
-        assertEquals(
-                "(1.234.567.890.123.456.789.012.345.678.901.234.567.890)     ",
-                f.toString());
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for BigInteger
-     *        conversion exception
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerConversionException() {
-        Formatter f = null;
-
-        final String[] flagsConversionMismatches = { "%#d", "%,o", "%,x", "%,X" };
-        for (int i = 0; i < flagsConversionMismatches.length; i++) {
-            try {
-                f = new Formatter(Locale.CHINA);
-                f.format(flagsConversionMismatches[i], new BigInteger("1"));
-                fail("should throw FormatFlagsConversionMismatchException");
-            } catch (FormatFlagsConversionMismatchException e) {
-                // expected
-            }
-        }
-
-        final String[] missingFormatWidths = { "%-0d", "%0d", "%-d", "%-0o",
-                "%0o", "%-o", "%-0x", "%0x", "%-x", "%-0X", "%0X", "%-X" };
-        for (int i = 0; i < missingFormatWidths.length; i++) {
-            try {
-                f = new Formatter(Locale.KOREA);
-                f.format(missingFormatWidths[i], new BigInteger("1"));
-                fail("should throw MissingFormatWidthException");
-            } catch (MissingFormatWidthException e) {
-                // expected
-            }
-        }
-
-        final String[] illFlags = { "%+ d", "%-08d", "%+ o", "%-08o", "%+ x",
-                "%-08x", "%+ X", "%-08X" };
-        for (int i = 0; i < illFlags.length; i++) {
-            try {
-                f = new Formatter(Locale.CANADA);
-                f.format(illFlags[i], new BigInteger("1"));
-                fail("should throw IllegalFormatFlagsException");
-            } catch (IllegalFormatFlagsException e) {
-                // expected
-            }
-        }
-
-        final String[] precisionExceptions = { "%.4d", "%2.5o", "%8.6x",
-                "%11.17X" };
-        for (int i = 0; i < precisionExceptions.length; i++) {
-            try {
-                f = new Formatter(Locale.US);
-                f.format(precisionExceptions[i], new BigInteger("1"));
-                fail("should throw IllegalFormatPrecisionException");
-            } catch (IllegalFormatPrecisionException e) {
-                // expected
-            }
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%D", new BigInteger("1"));
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%O", new BigInteger("1"));
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-
-        try {
-            f = new Formatter();
-            f.format("%010000000000000000000000000000000001d", new BigInteger(
-                    "1"));
-            fail("should throw MissingFormatWidthException");
-        } catch (MissingFormatWidthException e) {
-            // expected
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for BigInteger
-     *        exception throwing order
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerExceptionOrder() {
-        Formatter f = null;
-        BigInteger big = new BigInteger("100");
-
-        /*
-         * Order summary: UnknownFormatConversionException >
-         * MissingFormatWidthException > IllegalFormatFlagsException >
-         * IllegalFormatPrecisionException > IllegalFormatConversionException >
-         * FormatFlagsConversionMismatchException
-         * 
-         */
-        f = new Formatter(Locale.US);
-        try {
-            // compare IllegalFormatConversionException and
-            // FormatFlagsConversionMismatchException
-            f.format("%(o", false);
-            fail("should throw IllegalFormatConversionException");
-        } catch (IllegalFormatConversionException e) {
-            // expected
-        }
-
-        try {
-            // compare IllegalFormatPrecisionException and
-            // IllegalFormatConversionException
-            f.format("%.4o", false);
-            fail("should throw IllegalFormatPrecisionException");
-        } catch (IllegalFormatPrecisionException e) {
-            // expected
-        }
-
-        try {
-            // compare IllegalFormatFlagsException and
-            // IllegalFormatPrecisionException
-            f.format("%+ .4o", big);
-            fail("should throw IllegalFormatFlagsException");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-
-        try {
-            // compare MissingFormatWidthException and
-            // IllegalFormatFlagsException
-            f.format("%+ -o", big);
-            fail("should throw MissingFormatWidthException");
-        } catch (MissingFormatWidthException e) {
-            // expected
-        }
-
-        try {
-            // compare UnknownFormatConversionException and
-            // MissingFormatWidthException
-            f.format("%-O", big);
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-    }
-    
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for Float/Double
-     *        conversion type 'e' and 'E'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionE() {
-        Formatter f = null;
-        final Object[][] tripleE = {
-                {0f, "%e",          "0.000000e+00"},
-                {0f, "%#.0e",       "0.e+00"},
-                {0f, "%#- (9.8e",   " 0.00000000e+00"},
-                {0f, "%#+0(8.4e",   "+0.0000e+00"},
-                {0f, "%-+(1.6e",    "+0.000000e+00"},
-                {0f, "% 0(12e",     " 0.000000e+00"},
-                
-                {101f, "%e",          "1.010000e+02"},
-                {101f, "%#.0e",       "1.e+02"},
-                {101f, "%#- (9.8e",   " 1.01000000e+02"},
-                {101f, "%#+0(8.4e",   "+1.0100e+02"},
-                {101f, "%-+(1.6e",    "+1.010000e+02"},
-                {101f, "% 0(12e",     " 1.010000e+02"},
-                
-                {1.f, "%e",          "1.000000e+00"},
-                {1.f, "%#.0e",       "1.e+00"},
-                {1.f, "%#- (9.8e",   " 1.00000000e+00"},
-                {1.f, "%#+0(8.4e",   "+1.0000e+00"},
-                {1.f, "%-+(1.6e",    "+1.000000e+00"},
-                {1.f, "% 0(12e",     " 1.000000e+00"},
-                
-                {-98f, "%e",          "-9.800000e+01"},
-                {-98f, "%#.0e",       "-1.e+02"},
-                {-98f, "%#- (9.8e",   "(9.80000000e+01)"},
-                {-98f, "%#+0(8.4e",   "(9.8000e+01)"},
-                {-98f, "%-+(1.6e",    "(9.800000e+01)"},
-                {-98f, "% 0(12e",     "(9.800000e+01)"},
-                
-                {1.23f, "%e",          "1.230000e+00"},
-                {1.23f, "%#.0e",       "1.e+00"},
-                {1.23f, "%#- (9.8e",   " 1.23000002e+00"},
-                {1.23f, "%#+0(8.4e",   "+1.2300e+00"},
-                {1.23f, "%-+(1.6e",    "+1.230000e+00"},
-                {1.23f, "% 0(12e",     " 1.230000e+00"},
-                
-                {34.1234567f, "%e",          "3.412346e+01"},
-                {34.1234567f, "%#.0e",       "3.e+01"},
-                {34.1234567f, "%#- (9.8e",   " 3.41234550e+01"},
-                {34.1234567f, "%#+0(8.4e",   "+3.4123e+01"},
-                {34.1234567f, "%-+(1.6e",    "+3.412346e+01"},
-                {34.1234567f, "% 0(12e",     " 3.412346e+01"},
-                
-                {-.12345f, "%e",          "-1.234500e-01"},
-                {-.12345f, "%#.0e",       "-1.e-01"},
-                {-.12345f, "%#- (9.8e",   "(1.23450004e-01)"},
-                {-.12345f, "%#+0(8.4e",   "(1.2345e-01)"},
-                {-.12345f, "%-+(1.6e",    "(1.234500e-01)"},
-                {-.12345f, "% 0(12e",     "(1.234500e-01)"},
-                
-                {-9876.1234567f, "%e",          "-9.876123e+03"},
-                {-9876.1234567f, "%#.0e",       "-1.e+04"},
-                {-9876.1234567f, "%#- (9.8e",   "(9.87612305e+03)"},
-                {-9876.1234567f, "%#+0(8.4e",   "(9.8761e+03)"},
-                {-9876.1234567f, "%-+(1.6e",    "(9.876123e+03)"},
-                {-9876.1234567f, "% 0(12e",     "(9.876123e+03)"},
-                
-                {Float.MAX_VALUE, "%e",          "3.402823e+38"},
-                {Float.MAX_VALUE, "%#.0e",       "3.e+38"},
-                {Float.MAX_VALUE, "%#- (9.8e",   " 3.40282347e+38"},
-                {Float.MAX_VALUE, "%#+0(8.4e",   "+3.4028e+38"},
-                {Float.MAX_VALUE, "%-+(1.6e",    "+3.402823e+38"},
-                {Float.MAX_VALUE, "% 0(12e",     " 3.402823e+38"},
-                
-                {Float.MIN_VALUE, "%e",          "1.401298e-45"},
-                {Float.MIN_VALUE, "%#.0e",       "1.e-45"},
-                {Float.MIN_VALUE, "%#- (9.8e",   " 1.40129846e-45"},
-                {Float.MIN_VALUE, "%#+0(8.4e",   "+1.4013e-45"},
-                {Float.MIN_VALUE, "%-+(1.6e",    "+1.401298e-45"},
-                {Float.MIN_VALUE, "% 0(12e",     " 1.401298e-45"},
-                
-                {Float.NaN, "%e",          "NaN"},
-                {Float.NaN, "%#.0e",       "NaN"},
-                {Float.NaN, "%#- (9.8e",   "NaN      "},
-                {Float.NaN, "%#+0(8.4e",   "     NaN"},
-                {Float.NaN, "%-+(1.6e",    "NaN"},
-                {Float.NaN, "% 0(12e",     "         NaN"},
-                
-                
-                {Float.NEGATIVE_INFINITY, "%e",          "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%#.0e",       "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%#- (9.8e",   "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "%#+0(8.4e",   "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "%-+(1.6e",    "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "% 0(12e",     "  (Infinity)"},
-                
-                {Float.NEGATIVE_INFINITY, "%e",          "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%#.0e",       "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%#- (9.8e",   "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "%#+0(8.4e",   "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "%-+(1.6e",    "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "% 0(12e",     "  (Infinity)"},
-                
-                {0d, "%e",          "0.000000e+00"},
-                {0d, "%#.0e",       "0.e+00"},
-                {0d, "%#- (9.8e",   " 0.00000000e+00"},
-                {0d, "%#+0(8.4e",   "+0.0000e+00"},
-                {0d, "%-+(1.6e",    "+0.000000e+00"},
-                {0d, "% 0(12e",     " 0.000000e+00"},
-                
-                {1d, "%e",          "1.000000e+00"},
-                {1d, "%#.0e",       "1.e+00"},
-                {1d, "%#- (9.8e",   " 1.00000000e+00"},
-                {1d, "%#+0(8.4e",   "+1.0000e+00"},
-                {1d, "%-+(1.6e",    "+1.000000e+00"},
-                {1d, "% 0(12e",     " 1.000000e+00"},
-                
-                {-1d, "%e",          "-1.000000e+00"},
-                {-1d, "%#.0e",       "-1.e+00"},
-                {-1d, "%#- (9.8e",   "(1.00000000e+00)"},
-                {-1d, "%#+0(8.4e",   "(1.0000e+00)"},
-                {-1d, "%-+(1.6e",    "(1.000000e+00)"},
-                {-1d, "% 0(12e",     "(1.000000e+00)"},
-                
-                
-                {.00000001d, "%e",          "1.000000e-08"},
-                {.00000001d, "%#.0e",       "1.e-08"},
-                {.00000001d, "%#- (9.8e",   " 1.00000000e-08"},
-                {.00000001d, "%#+0(8.4e",   "+1.0000e-08"},
-                {.00000001d, "%-+(1.6e",    "+1.000000e-08"},
-                {.00000001d, "% 0(12e",     " 1.000000e-08"},
-                
-                {9122.10d, "%e",          "9.122100e+03"},
-                {9122.10d, "%#.0e",       "9.e+03"},
-                {9122.10d, "%#- (9.8e",   " 9.12210000e+03"},
-                {9122.10d, "%#+0(8.4e",   "+9.1221e+03"},
-                {9122.10d, "%-+(1.6e",    "+9.122100e+03"},
-                {9122.10d, "% 0(12e",     " 9.122100e+03"},
-                
-                {0.1d, "%e",          "1.000000e-01"},
-                {0.1d, "%#.0e",       "1.e-01"},
-                {0.1d, "%#- (9.8e",   " 1.00000000e-01"},
-                {0.1d, "%#+0(8.4e",   "+1.0000e-01"},
-                {0.1d, "%-+(1.6e",    "+1.000000e-01"},
-                {0.1d, "% 0(12e",     " 1.000000e-01"},
-                
-                {-2.d, "%e",          "-2.000000e+00"},
-                {-2.d, "%#.0e",       "-2.e+00"},
-                {-2.d, "%#- (9.8e",   "(2.00000000e+00)"},
-                {-2.d, "%#+0(8.4e",   "(2.0000e+00)"},
-                {-2.d, "%-+(1.6e",    "(2.000000e+00)"},
-                {-2.d, "% 0(12e",     "(2.000000e+00)"},
-                
-                {-.39d, "%e",          "-3.900000e-01"},
-                {-.39d, "%#.0e",       "-4.e-01"},
-                {-.39d, "%#- (9.8e",   "(3.90000000e-01)"},
-                {-.39d, "%#+0(8.4e",   "(3.9000e-01)"},
-                {-.39d, "%-+(1.6e",    "(3.900000e-01)"},
-                {-.39d, "% 0(12e",     "(3.900000e-01)"},
-                
-                {-1234567890.012345678d, "%e",          "-1.234568e+09"},
-                {-1234567890.012345678d, "%#.0e",       "-1.e+09"},
-                {-1234567890.012345678d, "%#- (9.8e",   "(1.23456789e+09)"},
-                {-1234567890.012345678d, "%#+0(8.4e",   "(1.2346e+09)"},
-                {-1234567890.012345678d, "%-+(1.6e",    "(1.234568e+09)"},
-                {-1234567890.012345678d, "% 0(12e",     "(1.234568e+09)"},
-                
-                {Double.MAX_VALUE, "%e",          "1.797693e+308"},
-                {Double.MAX_VALUE, "%#.0e",       "2.e+308"},
-                {Double.MAX_VALUE, "%#- (9.8e",   " 1.79769313e+308"},
-                {Double.MAX_VALUE, "%#+0(8.4e",   "+1.7977e+308"},
-                {Double.MAX_VALUE, "%-+(1.6e",    "+1.797693e+308"},
-                {Double.MAX_VALUE, "% 0(12e",     " 1.797693e+308"},
-                
-                {Double.MIN_VALUE, "%e",          "4.900000e-324"},
-                {Double.MIN_VALUE, "%#.0e",       "5.e-324"},
-                {Double.MIN_VALUE, "%#- (9.8e",   " 4.90000000e-324"},
-                {Double.MIN_VALUE, "%#+0(8.4e",   "+4.9000e-324"},
-                {Double.MIN_VALUE, "%-+(1.6e",    "+4.900000e-324"},
-                {Double.MIN_VALUE, "% 0(12e",     " 4.900000e-324"},
-                
-                {Double.NaN, "%e",          "NaN"},
-                {Double.NaN, "%#.0e",       "NaN"},
-                {Double.NaN, "%#- (9.8e",   "NaN      "},
-                {Double.NaN, "%#+0(8.4e",   "     NaN"},
-                {Double.NaN, "%-+(1.6e",    "NaN"},
-                {Double.NaN, "% 0(12e",     "         NaN"},
-                
-                {Double.NEGATIVE_INFINITY, "%e",          "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%#.0e",       "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%#- (9.8e",   "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "%#+0(8.4e",   "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "%-+(1.6e",    "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "% 0(12e",     "  (Infinity)"},
-                
-                {Double.POSITIVE_INFINITY, "%e",          "Infinity"},
-                {Double.POSITIVE_INFINITY, "%#.0e",       "Infinity"},
-                {Double.POSITIVE_INFINITY, "%#- (9.8e",   " Infinity"},
-                {Double.POSITIVE_INFINITY, "%#+0(8.4e",   "+Infinity"},
-                {Double.POSITIVE_INFINITY, "%-+(1.6e",    "+Infinity"},
-                {Double.POSITIVE_INFINITY, "% 0(12e",     "    Infinity"},
-        };
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-            for (int i = 0; i < tripleE.length; i++) {
-                f = new Formatter(Locale.US);
-                f.format((String)tripleE[i][pattern], tripleE[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
-                        + i + "]:" + tripleE[i][pattern],
-                        tripleE[i][output], f.toString());
-
-                // test for conversion type 'E'
-                f = new Formatter(Locale.US);
-                f.format(((String)tripleE[i][pattern]).toUpperCase(), tripleE[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
-                        + i + "]:" + tripleE[i][pattern], ((String)tripleE[i][output])
-                        .toUpperCase(Locale.UK), f.toString());
-            }
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%e", 1001f);
-        /*
-         * fail on RI, spec says 'e' requires the output to be formatted in
-         * general scientific notation and the localization algorithm is
-         * applied. But RI format this case to 1.001000e+03, which does not
-         * conform to the German Locale
-         */
-        assertEquals("1,001000e+03", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for Float/Double
-     *        conversion type 'g' and 'G'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionG() {
-        Formatter f = null;
-        final Object[][] tripleG = {
-                {1001f, "%g",           "1001.00"},
-                {1001f, "%- (,9.8g",    " 1,001.0000"},
-                {1001f, "%+0(,8.4g",    "+001,001"},
-                {1001f, "%-+(,1.6g",    "+1,001.00"},
-                {1001f, "% 0(,12.0g",   " 0000001e+03"},
-                
-                {1.f, "%g",           "1.00000"},
-                {1.f, "%- (,9.8g",    " 1.0000000"},
-                {1.f, "%+0(,8.4g",    "+001.000"},
-                {1.f, "%-+(,1.6g",    "+1.00000"},
-                {1.f, "% 0(,12.0g",   " 00000000001"},
-                
-                {-98f, "%g",           "-98.0000"},
-                {-98f, "%- (,9.8g",    "(98.000000)"},
-                {-98f, "%+0(,8.4g",    "(098.00)"},
-                {-98f, "%-+(,1.6g",    "(98.0000)"},
-                {-98f, "% 0(,12.0g",   "(000001e+02)"},
-                
-                {0.000001f, "%g",           "1.00000e-06"},
-                {0.000001f, "%- (,9.8g",    " 1.0000000e-06"},
-                {0.000001f, "%+0(,8.4g",    "+1.000e-06"},
-                {0.000001f, "%-+(,1.6g",    "+1.00000e-06"},
-                {0.000001f, "% 0(,12.0g",   " 0000001e-06"},
-                
-                {345.1234567f, "%g",           "345.123"},
-                {345.1234567f, "%- (,9.8g",    " 345.12344"},
-                {345.1234567f, "%+0(,8.4g",    "+00345.1"},
-                {345.1234567f, "%-+(,1.6g",    "+345.123"},
-                {345.1234567f, "% 0(,12.0g",   " 0000003e+02"},
-
-                {-.00000012345f, "%g",           "-1.23450e-07"},
-                {-.00000012345f, "%- (,9.8g",    "(1.2344999e-07)"},
-                {-.00000012345f, "%+0(,8.4g",    "(1.234e-07)"},
-                {-.00000012345f, "%-+(,1.6g",    "(1.23450e-07)"},
-                {-.00000012345f, "% 0(,12.0g",   "(000001e-07)"},
-                
-                {-987.1234567f, "%g",           "-987.123"},
-                {-987.1234567f, "%- (,9.8g",    "(987.12347)"},
-                {-987.1234567f, "%+0(,8.4g",    "(0987.1)"},
-                {-987.1234567f, "%-+(,1.6g",    "(987.123)"},
-                {-987.1234567f, "% 0(,12.0g",   "(000001e+03)"},
-                
-                {Float.MAX_VALUE, "%g",           "3.40282e+38"},
-                {Float.MAX_VALUE, "%- (,9.8g",    " 3.4028235e+38"},
-                {Float.MAX_VALUE, "%+0(,8.4g",    "+3.403e+38"},
-                {Float.MAX_VALUE, "%-+(,1.6g",    "+3.40282e+38"},
-                {Float.MAX_VALUE, "% 0(,12.0g",   " 0000003e+38"},
-                
-                {Float.MIN_VALUE, "%g",           "1.40130e-45"},
-                {Float.MIN_VALUE, "%- (,9.8g",    " 1.4012985e-45"},
-                {Float.MIN_VALUE, "%+0(,8.4g",    "+1.401e-45"},
-                {Float.MIN_VALUE, "%-+(,1.6g",    "+1.40130e-45"},
-                {Float.MIN_VALUE, "% 0(,12.0g",   " 0000001e-45"},
-                
-                {Float.NaN, "%g",           "NaN"},
-                {Float.NaN, "%- (,9.8g",    "NaN      "},
-                {Float.NaN, "%+0(,8.4g",    "     NaN"},
-                {Float.NaN, "%-+(,1.6g",    "NaN"},
-                {Float.NaN, "% 0(,12.0g",   "         NaN"},
-                
-                {Float.NEGATIVE_INFINITY, "%g",           "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%- (,9.8g",    "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "%+0(,8.4g",    "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "%-+(,1.6g",    "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "% 0(,12.0g",   "  (Infinity)"},
-                
-                {Float.POSITIVE_INFINITY, "%g",           "Infinity"},
-                {Float.POSITIVE_INFINITY, "%- (,9.8g",    " Infinity"},
-                {Float.POSITIVE_INFINITY, "%+0(,8.4g",    "+Infinity"},
-                {Float.POSITIVE_INFINITY, "%-+(,1.6g",    "+Infinity"},
-                {Float.POSITIVE_INFINITY, "% 0(,12.0g",   "    Infinity"},
-                
-                {1d, "%g",           "1.00000"},
-                {1d, "%- (,9.8g",    " 1.0000000"},
-                {1d, "%+0(,8.4g",    "+001.000"},
-                {1d, "%-+(,1.6g",    "+1.00000"},
-                {1d, "% 0(,12.0g",   " 00000000001"},
-                
-                {-1d, "%g",           "-1.00000"},
-                {-1d, "%- (,9.8g",    "(1.0000000)"},
-                {-1d, "%+0(,8.4g",    "(01.000)"},
-                {-1d, "%-+(,1.6g",    "(1.00000)"},
-                {-1d, "% 0(,12.0g",   "(0000000001)"},
-                
-                {.00000001d, "%g",           "1.00000e-08"},
-                {.00000001d, "%- (,9.8g",    " 1.0000000e-08"},
-                {.00000001d, "%+0(,8.4g",    "+1.000e-08"},
-                {.00000001d, "%-+(,1.6g",    "+1.00000e-08"},
-                {.00000001d, "% 0(,12.0g",   " 0000001e-08"},
-                
-                {1912.10d, "%g",           "1912.10"},
-                {1912.10d, "%- (,9.8g",    " 1,912.1000"},
-                {1912.10d, "%+0(,8.4g",    "+001,912"},
-                {1912.10d, "%-+(,1.6g",    "+1,912.10"},
-                {1912.10d, "% 0(,12.0g",   " 0000002e+03"},
-                
-                {0.1d, "%g",           "0.100000"},
-                {0.1d, "%- (,9.8g",    " 0.10000000"},
-                {0.1d, "%+0(,8.4g",    "+00.1000"},
-                {0.1d, "%-+(,1.6g",    "+0.100000"},
-                {0.1d, "% 0(,12.0g",   " 000000000.1"},
-                
-                {-2.d, "%g",           "-2.00000"},
-                {-2.d, "%- (,9.8g",    "(2.0000000)"},
-                {-2.d, "%+0(,8.4g",    "(02.000)"},
-                {-2.d, "%-+(,1.6g",    "(2.00000)"},
-                {-2.d, "% 0(,12.0g",   "(0000000002)"},
-                
-                {-.00039d, "%g",           "-0.000390000"},
-                {-.00039d, "%- (,9.8g",    "(0.00039000000)"},
-                {-.00039d, "%+0(,8.4g",    "(0.0003900)"},
-                {-.00039d, "%-+(,1.6g",    "(0.000390000)"},
-                {-.00039d, "% 0(,12.0g",   "(00000.0004)"},
-                
-                {-1234567890.012345678d, "%g",           "-1.23457e+09"},
-                {-1234567890.012345678d, "%- (,9.8g",    "(1.2345679e+09)"},
-                {-1234567890.012345678d, "%+0(,8.4g",    "(1.235e+09)"},
-                {-1234567890.012345678d, "%-+(,1.6g",    "(1.23457e+09)"},
-                {-1234567890.012345678d, "% 0(,12.0g",   "(000001e+09)"},
-                
-                {Double.MAX_VALUE, "%g",           "1.79769e+308"},
-                {Double.MAX_VALUE, "%- (,9.8g",    " 1.7976931e+308"},
-                {Double.MAX_VALUE, "%+0(,8.4g",    "+1.798e+308"},
-                {Double.MAX_VALUE, "%-+(,1.6g",    "+1.79769e+308"},
-                {Double.MAX_VALUE, "% 0(,12.0g",   " 000002e+308"},
-                
-                {Double.MIN_VALUE, "%g",           "4.90000e-324"},
-                {Double.MIN_VALUE, "%- (,9.8g",    " 4.9000000e-324"},
-                {Double.MIN_VALUE, "%+0(,8.4g",    "+4.900e-324"},
-                {Double.MIN_VALUE, "%-+(,1.6g",    "+4.90000e-324"},
-                {Double.MIN_VALUE, "% 0(,12.0g",   " 000005e-324"},
-                
-                {Double.NaN, "%g",           "NaN"},
-                {Double.NaN, "%- (,9.8g",    "NaN      "},
-                {Double.NaN, "%+0(,8.4g",    "     NaN"},
-                {Double.NaN, "%-+(,1.6g",    "NaN"},
-                {Double.NaN, "% 0(,12.0g",   "         NaN"},
-                
-                {Double.NEGATIVE_INFINITY, "%g",           "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%- (,9.8g",    "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "%+0(,8.4g",    "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "%-+(,1.6g",    "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "% 0(,12.0g",   "  (Infinity)"},
-                
-                {Double.POSITIVE_INFINITY, "%g",           "Infinity"},
-                {Double.POSITIVE_INFINITY, "%- (,9.8g",    " Infinity"},
-                {Double.POSITIVE_INFINITY, "%+0(,8.4g",    "+Infinity"},
-                {Double.POSITIVE_INFINITY, "%-+(,1.6g",    "+Infinity"},
-                {Double.POSITIVE_INFINITY, "% 0(,12.0g",   "    Infinity"},
-                
-        };
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-            for (int i = 0; i < tripleG.length; i++) {
-                
-                f = new Formatter(Locale.US);
-                f.format((String)tripleG[i][pattern], tripleG[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
-                        + i + "]:" + tripleG[i][pattern],
-                        tripleG[i][output], f.toString());
-
-                // test for conversion type 'G'
-                f = new Formatter(Locale.US);
-                f.format(((String)tripleG[i][pattern]).toUpperCase(), tripleG[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
-                        + i + "]:" + tripleG[i][pattern], ((String)tripleG[i][output])
-                        .toUpperCase(Locale.UK), f.toString());
-            }
-
-        f = new Formatter(Locale.US);
-        f.format("%.5g", 0f);
-        assertEquals("0.0000", f.toString());
-
-        f = new Formatter(Locale.US);
-        f.format("%.0g", 0f);
-        /*
-         * fail on RI, spec says if the precision is 0, then it is taken to be
-         * 1. but RI throws ArrayIndexOutOfBoundsException.
-         */
-        assertEquals("0", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%g", 1001f);
-        /*
-         * fail on RI, spec says 'g' requires the output to be formatted in
-         * general scientific notation and the localization algorithm is
-         * applied. But RI format this case to 1001.00, which does not conform
-         * to the German Locale
-         */
-        assertEquals("1001,00", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for Float/Double
-     *        conversion type 'g' and 'G' overflow
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionG_Overflow() {
-        Formatter f = new Formatter();
-        f.format("%g", 999999.5);
-        assertEquals("1.00000e+06", f.toString());
-
-        f = new Formatter();
-        f.format("%g", 99999.5);
-        assertEquals("99999.5", f.toString());
-
-        f = new Formatter();
-        f.format("%.4g", 99.95);
-        assertEquals("99.95", f.toString());
-
-        f = new Formatter();
-        f.format("%g", 99.95);
-        assertEquals("99.9500", f.toString());
-
-        f = new Formatter();
-        f.format("%g", 0.9);
-        assertEquals("0.900000", f.toString());
-
-        f = new Formatter();
-        f.format("%.0g", 0.000095);
-        assertEquals("0.0001", f.toString());
-
-        f = new Formatter();
-        f.format("%g", 0.0999999);
-        assertEquals("0.0999999", f.toString());
-
-        f = new Formatter();
-        f.format("%g", 0.00009);
-        assertEquals("9.00000e-05", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for Float/Double
-     *        conversion type 'f'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionF() {
-        Formatter f = null;
-
-        final Object[][] tripleF = {
-                {0f, "%f",          "0,000000"},
-                {0f, "%#.3f",       "0,000"},
-                {0f, "%,5f",        "0,000000"},
-                {0f, "%- (12.0f",   " 0          "},
-                {0f, "%#+0(1.6f",   "+0,000000"},
-                {0f, "%-+(8.4f",    "+0,0000 "},
-                {0f, "% 0#(9.8f",   " 0,00000000"},
-                
-                {1234f, "%f",          "1234,000000"},
-                {1234f, "%#.3f",       "1234,000"},
-                {1234f, "%,5f",        "1.234,000000"},
-                {1234f, "%- (12.0f",   " 1234       "},
-                {1234f, "%#+0(1.6f",   "+1234,000000"},
-                {1234f, "%-+(8.4f",    "+1234,0000"},
-                {1234f, "% 0#(9.8f",   " 1234,00000000"},
-                
-                {1.f, "%f",          "1,000000"},
-                {1.f, "%#.3f",       "1,000"},
-                {1.f, "%,5f",        "1,000000"},
-                {1.f, "%- (12.0f",   " 1          "},
-                {1.f, "%#+0(1.6f",   "+1,000000"},
-                {1.f, "%-+(8.4f",    "+1,0000 "},
-                {1.f, "% 0#(9.8f",   " 1,00000000"},
-                
-                {-98f, "%f",          "-98,000000"},
-                {-98f, "%#.3f",       "-98,000"},
-                {-98f, "%,5f",        "-98,000000"},
-                {-98f, "%- (12.0f",   "(98)        "},
-                {-98f, "%#+0(1.6f",   "(98,000000)"},
-                {-98f, "%-+(8.4f",    "(98,0000)"},
-                {-98f, "% 0#(9.8f",   "(98,00000000)"},
-                
-                {0.000001f, "%f",          "0,000001"},
-                {0.000001f, "%#.3f",       "0,000"},
-                {0.000001f, "%,5f",        "0,000001"},
-                {0.000001f, "%- (12.0f",   " 0          "},
-                {0.000001f, "%#+0(1.6f",   "+0,000001"},
-                {0.000001f, "%-+(8.4f",    "+0,0000 "},
-                {0.000001f, "% 0#(9.8f",   " 0,00000100"},
-                
-                {345.1234567f, "%f",          "345,123444"},
-                {345.1234567f, "%#.3f",       "345,123"},
-                {345.1234567f, "%,5f",        "345,123444"},
-                {345.1234567f, "%- (12.0f",   " 345        "},
-                {345.1234567f, "%#+0(1.6f",   "+345,123444"},
-                {345.1234567f, "%-+(8.4f",    "+345,1234"},
-                {345.1234567f, "% 0#(9.8f",   " 345,12344360"},
-                
-                {-.00000012345f, "%f",          "-0,000000"},
-                {-.00000012345f, "%#.3f",       "-0,000"},
-                {-.00000012345f, "%,5f",        "-0,000000"},
-                {-.00000012345f, "%- (12.0f",   "(0)         "},
-                {-.00000012345f, "%#+0(1.6f",   "(0,000000)"},
-                {-.00000012345f, "%-+(8.4f",    "(0,0000)"},
-                {-.00000012345f, "% 0#(9.8f",   "(0,00000012)"},
-                
-                {-987654321.1234567f, "%f",          "-987654336,000000"},
-                {-987654321.1234567f, "%#.3f",       "-987654336,000"},
-                {-987654321.1234567f, "%,5f",        "-987.654.336,000000"},
-                {-987654321.1234567f, "%- (12.0f",   "(987654336) "},
-                {-987654321.1234567f, "%#+0(1.6f",   "(987654336,000000)"},
-                {-987654321.1234567f, "%-+(8.4f",    "(987654336,0000)"},
-                {-987654321.1234567f, "% 0#(9.8f",   "(987654336,00000000)"},
-                
-                {Float.MAX_VALUE, "%f",          "340282346638528860000000000000000000000,000000"},
-                {Float.MAX_VALUE, "%#.3f",       "340282346638528860000000000000000000000,000"},
-                {Float.MAX_VALUE, "%,5f",        "340.282.346.638.528.860.000.000.000.000.000.000.000,000000"},
-                {Float.MAX_VALUE, "%- (12.0f",   " 340282346638528860000000000000000000000"},
-                {Float.MAX_VALUE, "%#+0(1.6f",   "+340282346638528860000000000000000000000,000000"},
-                {Float.MAX_VALUE, "%-+(8.4f",    "+340282346638528860000000000000000000000,0000"},
-                {Float.MAX_VALUE, "% 0#(9.8f",   " 340282346638528860000000000000000000000,00000000"},
-                
-                {Float.MIN_VALUE, "%f",          "0,000000"},
-                {Float.MIN_VALUE, "%#.3f",       "0,000"},
-                {Float.MIN_VALUE, "%,5f",        "0,000000"},
-                {Float.MIN_VALUE, "%- (12.0f",   " 0          "},
-                {Float.MIN_VALUE, "%#+0(1.6f",   "+0,000000"},
-                {Float.MIN_VALUE, "%-+(8.4f",    "+0,0000 "},
-                {Float.MIN_VALUE, "% 0#(9.8f",   " 0,00000000"},
-                
-                {Float.NaN, "%f",          "NaN"},
-                {Float.NaN, "%#.3f",       "NaN"},
-                {Float.NaN, "%,5f",        "  NaN"},
-                {Float.NaN, "%- (12.0f",   "NaN         "},
-                {Float.NaN, "%#+0(1.6f",   "NaN"},
-                {Float.NaN, "%-+(8.4f",    "NaN     "},
-                {Float.NaN, "% 0#(9.8f",   "      NaN"},
-                
-                {Float.NEGATIVE_INFINITY, "%f",          "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%#.3f",       "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%,5f",        "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%- (12.0f",   "(Infinity)  "},
-                {Float.NEGATIVE_INFINITY, "%#+0(1.6f",   "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "%-+(8.4f",    "(Infinity)"},
-                {Float.NEGATIVE_INFINITY, "% 0#(9.8f",   "(Infinity)"},
-                
-                {Float.POSITIVE_INFINITY, "%f",          "Infinity"},
-                {Float.POSITIVE_INFINITY, "%#.3f",       "Infinity"},
-                {Float.POSITIVE_INFINITY, "%,5f",        "Infinity"},
-                {Float.POSITIVE_INFINITY, "%- (12.0f",   " Infinity   "},
-                {Float.POSITIVE_INFINITY, "%#+0(1.6f",   "+Infinity"},
-                {Float.POSITIVE_INFINITY, "%-+(8.4f",    "+Infinity"},
-                {Float.POSITIVE_INFINITY, "% 0#(9.8f",   " Infinity"},
-                
-                
-                {0d, "%f",          "0,000000"},
-                {0d, "%#.3f",       "0,000"},
-                {0d, "%,5f",        "0,000000"},
-                {0d, "%- (12.0f",   " 0          "},
-                {0d, "%#+0(1.6f",   "+0,000000"},
-                {0d, "%-+(8.4f",    "+0,0000 "},
-                {0d, "% 0#(9.8f",   " 0,00000000"},
-                
-                {1d, "%f",          "1,000000"},
-                {1d, "%#.3f",       "1,000"},
-                {1d, "%,5f",        "1,000000"},
-                {1d, "%- (12.0f",   " 1          "},
-                {1d, "%#+0(1.6f",   "+1,000000"},
-                {1d, "%-+(8.4f",    "+1,0000 "},
-                {1d, "% 0#(9.8f",   " 1,00000000"},
-                
-                {-1d, "%f",          "-1,000000"},
-                {-1d, "%#.3f",       "-1,000"},
-                {-1d, "%,5f",        "-1,000000"},
-                {-1d, "%- (12.0f",   "(1)         "},
-                {-1d, "%#+0(1.6f",   "(1,000000)"},
-                {-1d, "%-+(8.4f",    "(1,0000)"},
-                {-1d, "% 0#(9.8f",   "(1,00000000)"},
-                
-                {.00000001d, "%f",          "0,000000"},
-                {.00000001d, "%#.3f",       "0,000"},
-                {.00000001d, "%,5f",        "0,000000"},
-                {.00000001d, "%- (12.0f",   " 0          "},
-                {.00000001d, "%#+0(1.6f",   "+0,000000"},
-                {.00000001d, "%-+(8.4f",    "+0,0000 "},
-                {.00000001d, "% 0#(9.8f",   " 0,00000001"},
-                
-                {1000.10d, "%f",          "1000,100000"},
-                {1000.10d, "%#.3f",       "1000,100"},
-                {1000.10d, "%,5f",        "1.000,100000"},
-                {1000.10d, "%- (12.0f",   " 1000       "},
-                {1000.10d, "%#+0(1.6f",   "+1000,100000"},
-                {1000.10d, "%-+(8.4f",    "+1000,1000"},
-                {1000.10d, "% 0#(9.8f",   " 1000,10000000"},
-                
-                {0.1d, "%f",          "0,100000"},
-                {0.1d, "%#.3f",       "0,100"},
-                {0.1d, "%,5f",        "0,100000"},
-                {0.1d, "%- (12.0f",   " 0          "},
-                {0.1d, "%#+0(1.6f",   "+0,100000"},
-                {0.1d, "%-+(8.4f",    "+0,1000 "},
-                {0.1d, "% 0#(9.8f",   " 0,10000000"},
-                
-                {-2.d, "%f",          "-2,000000"},
-                {-2.d, "%#.3f",       "-2,000"},
-                {-2.d, "%,5f",        "-2,000000"},
-                {-2.d, "%- (12.0f",   "(2)         "},
-                {-2.d, "%#+0(1.6f",   "(2,000000)"},
-                {-2.d, "%-+(8.4f",    "(2,0000)"},
-                {-2.d, "% 0#(9.8f",   "(2,00000000)"},
-                
-                {-.00009d, "%f",          "-0,000090"},
-                {-.00009d, "%#.3f",       "-0,000"},
-                {-.00009d, "%,5f",        "-0,000090"},
-                {-.00009d, "%- (12.0f",   "(0)         "},
-                {-.00009d, "%#+0(1.6f",   "(0,000090)"},
-                {-.00009d, "%-+(8.4f",    "(0,0001)"},
-                {-.00009d, "% 0#(9.8f",   "(0,00009000)"},
-                
-                {-1234567890.012345678d, "%f",          "-1234567890,012346"},
-                {-1234567890.012345678d, "%#.3f",       "-1234567890,012"},
-                {-1234567890.012345678d, "%,5f",        "-1.234.567.890,012346"},
-                {-1234567890.012345678d, "%- (12.0f",   "(1234567890)"},
-                {-1234567890.012345678d, "%#+0(1.6f",   "(1234567890,012346)"},
-                {-1234567890.012345678d, "%-+(8.4f",    "(1234567890,0123)"},
-                {-1234567890.012345678d, "% 0#(9.8f",   "(1234567890,01234580)"},
-                
-                {Double.MAX_VALUE, "%f",          "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000000"},
-                {Double.MAX_VALUE, "%#.3f",       "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000"},
-                {Double.MAX_VALUE, "%,5f",        "179.769.313.486.231.570.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000,000000"},
-                {Double.MAX_VALUE, "%- (12.0f",   " 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},
-                {Double.MAX_VALUE, "%#+0(1.6f",   "+179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000000"},
-                {Double.MAX_VALUE, "%-+(8.4f",    "+179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,0000"},
-                {Double.MAX_VALUE, "% 0#(9.8f",   " 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,00000000"},
-                
-                {Double.MIN_VALUE, "%f",          "0,000000"},
-                {Double.MIN_VALUE, "%#.3f",       "0,000"},
-                {Double.MIN_VALUE, "%,5f",        "0,000000"},
-                {Double.MIN_VALUE, "%- (12.0f",   " 0          "},
-                {Double.MIN_VALUE, "%#+0(1.6f",   "+0,000000"},
-                {Double.MIN_VALUE, "%-+(8.4f",    "+0,0000 "},
-                {Double.MIN_VALUE, "% 0#(9.8f",   " 0,00000000"},
-                
-                {Double.NaN, "%f",          "NaN"},
-                {Double.NaN, "%#.3f",       "NaN"},
-                {Double.NaN, "%,5f",        "  NaN"},
-                {Double.NaN, "%- (12.0f",   "NaN         "},
-                {Double.NaN, "%#+0(1.6f",   "NaN"},
-                {Double.NaN, "%-+(8.4f",    "NaN     "},
-                {Double.NaN, "% 0#(9.8f",   "      NaN"},
-                
-                {Double.POSITIVE_INFINITY, "%f",          "Infinity"},
-                {Double.POSITIVE_INFINITY, "%#.3f",       "Infinity"},
-                {Double.POSITIVE_INFINITY, "%,5f",        "Infinity"},
-                {Double.POSITIVE_INFINITY, "%- (12.0f",   " Infinity   "},
-                {Double.POSITIVE_INFINITY, "%#+0(1.6f",   "+Infinity"},
-                {Double.POSITIVE_INFINITY, "%-+(8.4f",    "+Infinity"},
-                {Double.POSITIVE_INFINITY, "% 0#(9.8f",   " Infinity"},
-                
-                {Double.NEGATIVE_INFINITY, "%f",          "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%#.3f",       "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%,5f",        "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%- (12.0f",   "(Infinity)  "},
-                {Double.NEGATIVE_INFINITY, "%#+0(1.6f",   "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "%-+(8.4f",    "(Infinity)"},
-                {Double.NEGATIVE_INFINITY, "% 0#(9.8f",   "(Infinity)"},
-        };
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-            for (int i = 0; i < tripleF.length; i++) {
-                f = new Formatter(Locale.GERMAN);
-                f.format((String)tripleF[i][pattern], tripleF[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleF[i][input] + ",pattern["
-                        + i + "]:" + tripleF[i][pattern],
-                        tripleF[i][output], f.toString());
-            }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for Float/Double
-     *        conversion type 'a' and 'A'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionA() {
-        Formatter f = null;
-        final Object[][] tripleA = {
-                {-0f, "%a",         "-0x0.0p0"},
-                {-0f, "%#.3a",      "-0x0.000p0"},
-                {-0f, "%5a",        "-0x0.0p0"},
-                {-0f, "%- 12.0a",   "-0x0.0p0    "},
-                {-0f, "%#+01.6a",   "-0x0.000000p0"},
-                {-0f, "%-+8.4a",    "-0x0.0000p0"},
-                
-                {0f, "%a",         "0x0.0p0"},
-                {0f, "%#.3a",      "0x0.000p0"},
-                {0f, "%5a",        "0x0.0p0"},
-                {0f, "%- 12.0a",   " 0x0.0p0    "},
-                {0f, "%#+01.6a",   "+0x0.000000p0"},
-                {0f, "%-+8.4a",    "+0x0.0000p0"},
-                
-                {1234f, "%a",         "0x1.348p10"},
-                {1234f, "%#.3a",      "0x1.348p10"},
-                {1234f, "%5a",        "0x1.348p10"},
-                {1234f, "%- 12.0a",   " 0x1.3p10   "},
-                {1234f, "%#+01.6a",   "+0x1.348000p10"},
-                {1234f, "%-+8.4a",    "+0x1.3480p10"},
-                
-                {1.f, "%a",         "0x1.0p0"},
-                {1.f, "%#.3a",      "0x1.000p0"},
-                {1.f, "%5a",        "0x1.0p0"},
-                {1.f, "%- 12.0a",   " 0x1.0p0    "},
-                {1.f, "%#+01.6a",   "+0x1.000000p0"},
-                {1.f, "%-+8.4a",    "+0x1.0000p0"},
-                
-                {-98f, "%a",         "-0x1.88p6"},
-                {-98f, "%#.3a",      "-0x1.880p6"},
-                {-98f, "%5a",        "-0x1.88p6"},
-                {-98f, "%- 12.0a",   "-0x1.8p6    "},
-                {-98f, "%#+01.6a",   "-0x1.880000p6"},
-                {-98f, "%-+8.4a",    "-0x1.8800p6"},
-                
-                {345.1234567f, "%a",         "0x1.591f9ap8"},
-                {345.1234567f, "%5a",        "0x1.591f9ap8"},
-                {345.1234567f, "%#+01.6a",   "+0x1.591f9ap8"},
-                
-                {-987654321.1234567f, "%a",         "-0x1.d6f346p29"},
-                {-987654321.1234567f, "%#.3a",      "-0x1.d6fp29"},
-                {-987654321.1234567f, "%5a",        "-0x1.d6f346p29"},
-                {-987654321.1234567f, "%- 12.0a",   "-0x1.dp29   "},
-                {-987654321.1234567f, "%#+01.6a",   "-0x1.d6f346p29"},
-                {-987654321.1234567f, "%-+8.4a",    "-0x1.d6f3p29"},
-                
-                {Float.MAX_VALUE, "%a",         "0x1.fffffep127"},
-                {Float.MAX_VALUE, "%5a",        "0x1.fffffep127"},
-                {Float.MAX_VALUE, "%#+01.6a",   "+0x1.fffffep127"},
-                
-                {Float.NaN, "%a",         "NaN"},
-                {Float.NaN, "%#.3a",      "NaN"},
-                {Float.NaN, "%5a",        "  NaN"},
-                {Float.NaN, "%- 12.0a",   "NaN         "},
-                {Float.NaN, "%#+01.6a",   "NaN"},
-                {Float.NaN, "%-+8.4a",    "NaN     "},
-                
-                {Float.NEGATIVE_INFINITY, "%a",         "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%#.3a",      "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%5a",        "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%- 12.0a",   "-Infinity   "},
-                {Float.NEGATIVE_INFINITY, "%#+01.6a",   "-Infinity"},
-                {Float.NEGATIVE_INFINITY, "%-+8.4a",    "-Infinity"},
-                
-                {Float.POSITIVE_INFINITY, "%a",         "Infinity"},
-                {Float.POSITIVE_INFINITY, "%#.3a",      "Infinity"},
-                {Float.POSITIVE_INFINITY, "%5a",        "Infinity"},
-                {Float.POSITIVE_INFINITY, "%- 12.0a",   " Infinity   "},
-                {Float.POSITIVE_INFINITY, "%#+01.6a",   "+Infinity"},
-                {Float.POSITIVE_INFINITY, "%-+8.4a",    "+Infinity"},
-                
-                {-0d, "%a",         "-0x0.0p0"},
-                {-0d, "%#.3a",      "-0x0.000p0"},
-                {-0d, "%5a",        "-0x0.0p0"},
-                {-0d, "%- 12.0a",   "-0x0.0p0    "},
-                {-0d, "%#+01.6a",   "-0x0.000000p0"},
-                {-0d, "%-+8.4a",    "-0x0.0000p0"},
-
-                {0d, "%a",         "0x0.0p0"},
-                {0d, "%#.3a",      "0x0.000p0"},
-                {0d, "%5a",        "0x0.0p0"},
-                {0d, "%- 12.0a",   " 0x0.0p0    "},
-                {0d, "%#+01.6a",   "+0x0.000000p0"},
-                {0d, "%-+8.4a",    "+0x0.0000p0"},
-                
-                {1d, "%a",         "0x1.0p0"},
-                {1d, "%#.3a",      "0x1.000p0"},
-                {1d, "%5a",        "0x1.0p0"},
-                {1d, "%- 12.0a",   " 0x1.0p0    "},
-                {1d, "%#+01.6a",   "+0x1.000000p0"},
-                {1d, "%-+8.4a",    "+0x1.0000p0"},
-                
-                {-1d, "%a",         "-0x1.0p0"},
-                {-1d, "%#.3a",      "-0x1.000p0"},
-                {-1d, "%5a",        "-0x1.0p0"},
-                {-1d, "%- 12.0a",   "-0x1.0p0    "},
-                {-1d, "%#+01.6a",   "-0x1.000000p0"},
-                {-1d, "%-+8.4a",    "-0x1.0000p0"},
-                
-                {.00000001d, "%a",         "0x1.5798ee2308c3ap-27"},
-                {.00000001d, "%5a",        "0x1.5798ee2308c3ap-27"},
-                {.00000001d, "%- 12.0a",   " 0x1.5p-27  "},
-                {.00000001d, "%#+01.6a",   "+0x1.5798eep-27"},
-                
-                {1000.10d, "%a",         "0x1.f40cccccccccdp9"},
-                {1000.10d, "%5a",        "0x1.f40cccccccccdp9"},
-                {1000.10d, "%- 12.0a",   " 0x1.fp9    "},
-                
-                {0.1d, "%a",         "0x1.999999999999ap-4"},
-                {0.1d, "%5a",        "0x1.999999999999ap-4"},
-                
-                {-2.d, "%a",         "-0x1.0p1"},
-                {-2.d, "%#.3a",      "-0x1.000p1"},
-                {-2.d, "%5a",        "-0x1.0p1"},
-                {-2.d, "%- 12.0a",   "-0x1.0p1    "},
-                {-2.d, "%#+01.6a",   "-0x1.000000p1"},
-                {-2.d, "%-+8.4a",    "-0x1.0000p1"},
-                
-                {-.00009d, "%a",         "-0x1.797cc39ffd60fp-14"},
-                {-.00009d, "%5a",        "-0x1.797cc39ffd60fp-14"},
-                
-                {-1234567890.012345678d, "%a",         "-0x1.26580b480ca46p30"},
-                {-1234567890.012345678d, "%5a",        "-0x1.26580b480ca46p30"},
-                {-1234567890.012345678d, "%- 12.0a",   "-0x1.2p30   "},
-                {-1234567890.012345678d, "%#+01.6a",   "-0x1.26580bp30"},
-                {-1234567890.012345678d, "%-+8.4a",    "-0x1.2658p30"},
-                
-                {Double.MAX_VALUE, "%a",         "0x1.fffffffffffffp1023"},
-                {Double.MAX_VALUE, "%5a",        "0x1.fffffffffffffp1023"},
-                
-                {Double.MIN_VALUE, "%a",         "0x0.0000000000001p-1022"},
-                {Double.MIN_VALUE, "%5a",        "0x0.0000000000001p-1022"},
-                
-                {Double.NaN, "%a",         "NaN"},
-                {Double.NaN, "%#.3a",      "NaN"},
-                {Double.NaN, "%5a",        "  NaN"},
-                {Double.NaN, "%- 12.0a",   "NaN         "},
-                {Double.NaN, "%#+01.6a",   "NaN"},
-                {Double.NaN, "%-+8.4a",    "NaN     "},
-                
-                {Double.NEGATIVE_INFINITY, "%a",         "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%#.3a",      "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%5a",        "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%- 12.0a",   "-Infinity   "},
-                {Double.NEGATIVE_INFINITY, "%#+01.6a",   "-Infinity"},
-                {Double.NEGATIVE_INFINITY, "%-+8.4a",    "-Infinity"},
-                
-                {Double.POSITIVE_INFINITY, "%a",         "Infinity"},
-                {Double.POSITIVE_INFINITY, "%#.3a",      "Infinity"},
-                {Double.POSITIVE_INFINITY, "%5a",        "Infinity"},
-                {Double.POSITIVE_INFINITY, "%- 12.0a",   " Infinity   "},
-                {Double.POSITIVE_INFINITY, "%#+01.6a",   "+Infinity"},
-                {Double.POSITIVE_INFINITY, "%-+8.4a",    "+Infinity"},
-                
-        };
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-            for (int i = 0; i < tripleA.length; i++) {
-                f = new Formatter(Locale.UK);
-                f.format((String)tripleA[i][pattern], tripleA[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleA[i][input] + ",pattern["
-                        + i + "]:" + tripleA[i][pattern],
-                        tripleA[i][output], f.toString());
-
-                // test for conversion type 'A'
-                f = new Formatter(Locale.UK);
-                f.format(((String)tripleA[i][pattern]).toUpperCase(), tripleA[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleA[i][input] + ",pattern["
-                        + i + "]:" + tripleA[i][pattern], ((String)tripleA[i][output])
-                        .toUpperCase(Locale.UK), f.toString());
-            }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
-     *        conversion type 'e' and 'E'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionE() {
-        Formatter f = null;
-        final Object[][] tripleE = {
-                {BigDecimal.ZERO, "%e",         "0.000000e+00"},
-                {BigDecimal.ZERO, "%#.0e",      "0.e+00"},
-                {BigDecimal.ZERO, "%# 9.8e",    " 0.00000000e+00"},
-                {BigDecimal.ZERO, "%#+0(8.4e",  "+0.0000e+00"},
-                {BigDecimal.ZERO, "%-+17.6e",   "+0.000000e+00    "},
-                {BigDecimal.ZERO, "% 0(20e",    " 00000000.000000e+00"},
-                
-                {BigDecimal.ONE, "%e",         "1.000000e+00"},
-                {BigDecimal.ONE, "%#.0e",      "1.e+00"},
-                {BigDecimal.ONE, "%# 9.8e",    " 1.00000000e+00"},
-                {BigDecimal.ONE, "%#+0(8.4e",  "+1.0000e+00"},
-                {BigDecimal.ONE, "%-+17.6e",   "+1.000000e+00    "},
-                {BigDecimal.ONE, "% 0(20e",    " 00000001.000000e+00"},
-                
-                {BigDecimal.TEN, "%e",         "1.000000e+01"},
-                {BigDecimal.TEN, "%#.0e",      "1.e+01"},
-                {BigDecimal.TEN, "%# 9.8e",    " 1.00000000e+01"},
-                {BigDecimal.TEN, "%#+0(8.4e",  "+1.0000e+01"},
-                {BigDecimal.TEN, "%-+17.6e",   "+1.000000e+01    "},
-                {BigDecimal.TEN, "% 0(20e",    " 00000001.000000e+01"},
-                
-                {new BigDecimal(-1), "%e",         "-1.000000e+00"},
-                {new BigDecimal(-1), "%#.0e",      "-1.e+00"},
-                {new BigDecimal(-1), "%# 9.8e",    "-1.00000000e+00"},
-                {new BigDecimal(-1), "%#+0(8.4e",  "(1.0000e+00)"},
-                {new BigDecimal(-1), "%-+17.6e",   "-1.000000e+00    "},
-                {new BigDecimal(-1), "% 0(20e",    "(0000001.000000e+00)"},
-                
-                {new BigDecimal("5.000E999"), "%e",         "5.000000e+999"},
-                {new BigDecimal("5.000E999"), "%#.0e",      "5.e+999"},
-                {new BigDecimal("5.000E999"), "%# 9.8e",    " 5.00000000e+999"},
-                {new BigDecimal("5.000E999"), "%#+0(8.4e",  "+5.0000e+999"},
-                {new BigDecimal("5.000E999"), "%-+17.6e",   "+5.000000e+999   "},
-                {new BigDecimal("5.000E999"), "% 0(20e",    " 0000005.000000e+999"},
-                
-                {new BigDecimal("-5.000E999"), "%e",         "-5.000000e+999"},
-                {new BigDecimal("-5.000E999"), "%#.0e",      "-5.e+999"},
-                {new BigDecimal("-5.000E999"), "%# 9.8e",    "-5.00000000e+999"},
-                {new BigDecimal("-5.000E999"), "%#+0(8.4e",  "(5.0000e+999)"},
-                {new BigDecimal("-5.000E999"), "%-+17.6e",   "-5.000000e+999   "},
-                {new BigDecimal("-5.000E999"), "% 0(20e",    "(000005.000000e+999)"},
-        };
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-            for (int i = 0; i < tripleE.length; i++) {
-                f = new Formatter(Locale.US);
-                f.format((String)tripleE[i][pattern], tripleE[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
-                        + i + "]:" + tripleE[i][pattern],
-                        tripleE[i][output], f.toString());
-
-                // test for conversion type 'E'
-                f = new Formatter(Locale.US);
-                f.format(((String)tripleE[i][pattern]).toUpperCase(), tripleE[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
-                        + i + "]:" + tripleE[i][pattern], ((String)tripleE[i][output])
-                        .toUpperCase(Locale.US), f.toString());
-            }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
-     *        conversion type 'g' and 'G'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionG() {
-        Formatter f = null;
-        final Object[][] tripleG = {
-                {BigDecimal.ZERO, "%g",         "0.00000"},
-                {BigDecimal.ZERO, "%.5g",       "0.0000"},
-                {BigDecimal.ZERO, "%- (,9.8g",  " 0.0000000"},
-                {BigDecimal.ZERO, "%+0(,8.4g",  "+000.000"},
-                {BigDecimal.ZERO, "%-+10.6g",   "+0.00000  "},
-                {BigDecimal.ZERO, "% 0(,12.0g", " 00000000000"},
-                {BigDecimal.ONE, "%g",          "1.00000"},
-                {BigDecimal.ONE, "%.5g",        "1.0000"},
-                {BigDecimal.ONE, "%- (,9.8g",   " 1.0000000"},
-                {BigDecimal.ONE, "%+0(,8.4g",   "+001.000"},
-                {BigDecimal.ONE, "%-+10.6g",    "+1.00000  "},
-                {BigDecimal.ONE, "% 0(,12.0g",  " 00000000001"},
-                
-                {new BigDecimal(-1), "%g",          "-1.00000"},
-                {new BigDecimal(-1), "%.5g",        "-1.0000"},
-                {new BigDecimal(-1), "%- (,9.8g",   "(1.0000000)"},
-                {new BigDecimal(-1), "%+0(,8.4g",   "(01.000)"},
-                {new BigDecimal(-1), "%-+10.6g",    "-1.00000  "},
-                {new BigDecimal(-1), "% 0(,12.0g",  "(0000000001)"},
-                
-                {new BigDecimal(-0.000001), "%g",           "-1.00000e-06"},
-                {new BigDecimal(-0.000001), "%.5g",         "-1.0000e-06"},
-                {new BigDecimal(-0.000001), "%- (,9.8g",    "(1.0000000e-06)"},
-                {new BigDecimal(-0.000001), "%+0(,8.4g",    "(1.000e-06)"},
-                {new BigDecimal(-0.000001), "%-+10.6g",     "-1.00000e-06"},
-                {new BigDecimal(-0.000001), "% 0(,12.0g",   "(000001e-06)"},
-                
-                {new BigDecimal(0.0002), "%g",          "0.000200000"},
-                {new BigDecimal(0.0002), "%.5g",        "0.00020000"},
-                {new BigDecimal(0.0002), "%- (,9.8g",   " 0.00020000000"},
-                {new BigDecimal(0.0002), "%+0(,8.4g",   "+0.0002000"},
-                {new BigDecimal(0.0002), "%-+10.6g",    "+0.000200000"},
-                {new BigDecimal(0.0002), "% 0(,12.0g",  " 000000.0002"},
-                
-                {new BigDecimal(-0.003), "%g",          "-0.00300000"},
-                {new BigDecimal(-0.003), "%.5g",        "-0.0030000"},
-                {new BigDecimal(-0.003), "%- (,9.8g",   "(0.0030000000)"},
-                {new BigDecimal(-0.003), "%+0(,8.4g",   "(0.003000)"},
-                {new BigDecimal(-0.003), "%-+10.6g",    "-0.00300000"},
-                {new BigDecimal(-0.003), "% 0(,12.0g",  "(000000.003)"},
-                
-                {new BigDecimal("5.000E999"), "%g",             "5.00000e+999"},
-                {new BigDecimal("5.000E999"), "%.5g",           "5.0000e+999"},
-                {new BigDecimal("5.000E999"), "%- (,9.8g",      " 5.0000000e+999"},
-                {new BigDecimal("5.000E999"), "%+0(,8.4g",      "+5.000e+999"},
-                {new BigDecimal("5.000E999"), "%-+10.6g",       "+5.00000e+999"},
-                {new BigDecimal("5.000E999"), "% 0(,12.0g",     " 000005e+999"},
-                
-                {new BigDecimal("-5.000E999"), "%g",            "-5.00000e+999"},
-                {new BigDecimal("-5.000E999"), "%.5g",          "-5.0000e+999"},
-                {new BigDecimal("-5.000E999"), "%- (,9.8g",     "(5.0000000e+999)"},
-                {new BigDecimal("-5.000E999"), "%+0(,8.4g",     "(5.000e+999)"},
-                {new BigDecimal("-5.000E999"), "%-+10.6g",      "-5.00000e+999"},
-                {new BigDecimal("-5.000E999"), "% 0(,12.0g",    "(00005e+999)"},
-        };
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-            for (int i = 0; i < tripleG.length; i++) {
-                f = new Formatter(Locale.US);
-                f.format((String)tripleG[i][pattern], tripleG[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
-                        + i + "]:" + tripleG[i][pattern],
-                        tripleG[i][output], f.toString());
-
-                // test for conversion type 'G'
-                f = new Formatter(Locale.US);
-                f.format(((String)tripleG[i][pattern]).toUpperCase(), tripleG[i][input]);
-                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
-                        + i + "]:" + tripleG[i][pattern], ((String)tripleG[i][output])
-                        .toUpperCase(Locale.US), f.toString());
-            }
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%- (,9.6g", new BigDecimal("4E6"));
-        /*
-         * fail on RI, spec says 'g' requires the output to be formatted in
-         * general scientific notation and the localization algorithm is
-         * applied. But RI format this case to 4.00000e+06, which does not
-         * conform to the German Locale
-         */
-        assertEquals(" 4,00000e+06", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
-     *        conversion type 'f'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionF() {
-
-        Formatter f = null;
-        final int input   = 0;
-        final int pattern = 1;
-        final int output  = 2;
-        final Object[][] tripleF = {
-                {BigDecimal.ZERO,                                               "%f",           "0.000000"},
-                {BigDecimal.ZERO,                                               "%#.3f",        "0.000"},
-                {BigDecimal.ZERO,                                               "%#,5f",        "0.000000"},
-                {BigDecimal.ZERO,                                               "%- #(12.0f",   " 0.         "},
-                {BigDecimal.ZERO,                                               "%#+0(1.6f",    "+0.000000"},
-                {BigDecimal.ZERO,                                               "%-+(8.4f",     "+0.0000 "},
-                {BigDecimal.ZERO,                                               "% 0#(9.8f",    " 0.00000000"},
-                {BigDecimal.ONE,                                                "%f",           "1.000000"},
-                {BigDecimal.ONE,                                                "%#.3f",        "1.000"},
-                {BigDecimal.ONE,                                                "%#,5f",        "1.000000"},
-                {BigDecimal.ONE,                                                "%- #(12.0f",   " 1.         "},
-                {BigDecimal.ONE,                                                "%#+0(1.6f",    "+1.000000"},
-                {BigDecimal.ONE,                                                "%-+(8.4f",     "+1.0000 "},
-                {BigDecimal.ONE,                                                "% 0#(9.8f",    " 1.00000000"},
-                {BigDecimal.TEN,                                                "%f",           "10.000000"},
-                {BigDecimal.TEN,                                                "%#.3f",        "10.000"},
-                {BigDecimal.TEN,                                                "%#,5f",        "10.000000"},
-                {BigDecimal.TEN,                                                "%- #(12.0f",   " 10.        "},
-                {BigDecimal.TEN,                                                "%#+0(1.6f",    "+10.000000"},
-                {BigDecimal.TEN,                                                "%-+(8.4f",     "+10.0000"},
-                {BigDecimal.TEN,                                                "% 0#(9.8f",    " 10.00000000"},
-                {new BigDecimal(-1),                                            "%f",           "-1.000000"},
-                {new BigDecimal(-1),                                            "%#.3f",        "-1.000"},
-                {new BigDecimal(-1),                                            "%#,5f",        "-1.000000"},
-                {new BigDecimal(-1),                                            "%- #(12.0f",   "(1.)        "},
-                {new BigDecimal(-1),                                            "%#+0(1.6f",    "(1.000000)"},
-                {new BigDecimal(-1),                                            "%-+(8.4f",     "(1.0000)"},
-                {new BigDecimal(-1),                                            "% 0#(9.8f",    "(1.00000000)"},
-                {new BigDecimal("9999999999999999999999999999999999999999999"), "%f",           "9999999999999999999999999999999999999999999.000000"},
-                {new BigDecimal("9999999999999999999999999999999999999999999"), "%#.3f",        "9999999999999999999999999999999999999999999.000"},
-                {new BigDecimal("9999999999999999999999999999999999999999999"), "%#,5f",        "9,999,999,999,999,999,999,999,999,999,999,999,999,999,999.000000"},
-                {new BigDecimal("9999999999999999999999999999999999999999999"), "%- #(12.0f",   " 9999999999999999999999999999999999999999999."},
-                {new BigDecimal("9999999999999999999999999999999999999999999"), "%#+0(1.6f",    "+9999999999999999999999999999999999999999999.000000"},
-                {new BigDecimal("9999999999999999999999999999999999999999999"), "%-+(8.4f",     "+9999999999999999999999999999999999999999999.0000"},
-                {new BigDecimal("9999999999999999999999999999999999999999999"), "% 0#(9.8f",    " 9999999999999999999999999999999999999999999.00000000"},
-                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%f",          "-9999999999999999999999999999999999999999999.000000"},
-                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%#.3f",       "-9999999999999999999999999999999999999999999.000"},
-                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%#,5f",       "-9,999,999,999,999,999,999,999,999,999,999,999,999,999,999.000000"},
-                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%- #(12.0f",  "(9999999999999999999999999999999999999999999.)"},
-                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%#+0(1.6f",   "(9999999999999999999999999999999999999999999.000000)"},
-                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%-+(8.4f",    "(9999999999999999999999999999999999999999999.0000)"},
-                {new BigDecimal("-9999999999999999999999999999999999999999999"), "% 0#(9.8f",   "(9999999999999999999999999999999999999999999.00000000)"},
-        }; 
-        for (int i = 0; i < tripleF.length; i++) {
-            f = new Formatter(Locale.US);
-            f.format((String)tripleF[i][pattern], tripleF[i][input]);
-            assertEquals("triple[" + i + "]:" + tripleF[i][input] + ",pattern["
-                    + i + "]:" + tripleF[i][pattern], tripleF[i][output], f.toString());
-        }
-
-        f = new Formatter(Locale.US);
-        f.format("%f", new BigDecimal("5.0E9"));
-        // error on RI
-        // RI throw ArrayIndexOutOfBoundsException
-        assertEquals("5000000000.000000", f.toString());
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for exceptions in
-     *        Float/Double/BigDecimal conversion type 'e', 'E', 'g', 'G', 'f', 'a', 'A'
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalConversionException() {
-        Formatter f = null;
-
-        final char[] conversions = { 'e', 'E', 'g', 'G', 'f', 'a', 'A' };
-        final Object[] illArgs = { false, (byte) 1, (short) 2, 3, (long) 4,
-                new BigInteger("5"), new Character('c'), new Object(),
-                new Date() };
-        for (int i = 0; i < illArgs.length; i++) {
-            for (int j = 0; j < conversions.length; j++) {
-                try {
-                    f = new Formatter(Locale.UK);
-                    f.format("%" + conversions[j], illArgs[i]);
-                    fail("should throw IllegalFormatConversionException");
-                } catch (IllegalFormatConversionException e) {
-                    // expected
-                }
-            }
-        }
-
-        try {
-            f = new Formatter(Locale.UK);
-            f.format("%a", new BigDecimal(1));
-            fail("should throw IllegalFormatConversionException");
-        } catch (IllegalFormatConversionException e) {
-            // expected
-        }
-
-        try {
-            f = new Formatter(Locale.UK);
-            f.format("%A", new BigDecimal(1));
-            fail("should throw IllegalFormatConversionException");
-        } catch (IllegalFormatConversionException e) {
-            // expected
-        }
-
-        final String[] flagsConversionMismatches = { "%,e", "%,E", "%#g",
-                "%#G", "%,a", "%,A", "%(a", "%(A" };
-        for (int i = 0; i < flagsConversionMismatches.length; i++) {
-            try {
-                f = new Formatter(Locale.CHINA);
-                f.format(flagsConversionMismatches[i], new BigDecimal(1));
-                fail("should throw FormatFlagsConversionMismatchException");
-            } catch (FormatFlagsConversionMismatchException e) {
-                // expected
-            }
-            try {
-                f = new Formatter(Locale.JAPAN);
-                f.format(flagsConversionMismatches[i], (BigDecimal) null);
-                fail("should throw FormatFlagsConversionMismatchException");
-            } catch (FormatFlagsConversionMismatchException e) {
-                // expected
-            }
-        }
-
-        final String[] missingFormatWidths = { "%-0e", "%0e", "%-e", "%-0E",
-                "%0E", "%-E", "%-0g", "%0g", "%-g", "%-0G", "%0G", "%-G",
-                "%-0f", "%0f", "%-f", "%-0a", "%0a", "%-a", "%-0A", "%0A",
-                "%-A" };
-        for (int i = 0; i < missingFormatWidths.length; i++) {
-            try {
-                f = new Formatter(Locale.KOREA);
-                f.format(missingFormatWidths[i], 1f);
-                fail("should throw MissingFormatWidthException");
-            } catch (MissingFormatWidthException e) {
-                // expected
-            }
-
-            try {
-                f = new Formatter(Locale.KOREA);
-                f.format(missingFormatWidths[i], (Float) null);
-                fail("should throw MissingFormatWidthException");
-            } catch (MissingFormatWidthException e) {
-                // expected
-            }
-        }
-
-        final String[] illFlags = { "%+ e", "%+ E", "%+ g", "%+ G", "%+ f",
-                "%+ a", "%+ A", "%-03e", "%-03E", "%-03g", "%-03G", "%-03f",
-                "%-03a", "%-03A" };
-        for (int i = 0; i < illFlags.length; i++) {
-            try {
-                f = new Formatter(Locale.CANADA);
-                f.format(illFlags[i], 1.23d);
-                fail("should throw IllegalFormatFlagsException");
-            } catch (IllegalFormatFlagsException e) {
-                // expected
-            }
-
-            try {
-                f = new Formatter(Locale.CANADA);
-                f.format(illFlags[i], (Double) null);
-                fail("should throw IllegalFormatFlagsException");
-            } catch (IllegalFormatFlagsException e) {
-                // expected
-            }
-        }
-
-        f = new Formatter(Locale.US);
-        try {
-            f.format("%F", 1);
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for
-     *        Float/Double/BigDecimal exception throwing order
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalExceptionOrder() {
-        Formatter f = null;
-
-        /*
-         * Summary: UnknownFormatConversionException >
-         * MissingFormatWidthException > IllegalFormatFlagsException >
-         * FormatFlagsConversionMismatchException >
-         * IllegalFormatConversionException
-         * 
-         */
-        try {
-            // compare FormatFlagsConversionMismatchException and
-            // IllegalFormatConversionException
-            f = new Formatter(Locale.US);
-            f.format("%,e", (byte) 1);
-            fail("should throw FormatFlagsConversionMismatchException");
-        } catch (FormatFlagsConversionMismatchException e) {
-            // expected
-        }
-
-        try {
-            // compare IllegalFormatFlagsException and
-            // FormatFlagsConversionMismatchException
-            f = new Formatter(Locale.US);
-            f.format("%+ ,e", 1f);
-            fail("should throw IllegalFormatFlagsException");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-
-        try {
-            // compare MissingFormatWidthException and
-            // IllegalFormatFlagsException
-            f = new Formatter(Locale.US);
-            f.format("%+ -e", 1f);
-            fail("should throw MissingFormatWidthException");
-        } catch (MissingFormatWidthException e) {
-            // expected
-        }
-
-        try {
-            // compare UnknownFormatConversionException and
-            // MissingFormatWidthException
-            f = new Formatter(Locale.US);
-            f.format("%-F", 1f);
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
-     *        exception throwing order
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalExceptionOrder() {
-        Formatter f = null;
-        BigDecimal bd = new BigDecimal("1.0");
-
-        /*
-         * Summary: UnknownFormatConversionException >
-         * MissingFormatWidthException > IllegalFormatFlagsException >
-         * FormatFlagsConversionMismatchException >
-         * IllegalFormatConversionException
-         * 
-         */
-        try {
-            // compare FormatFlagsConversionMismatchException and
-            // IllegalFormatConversionException
-            f = new Formatter(Locale.US);
-            f.format("%,e", (byte) 1);
-            fail("should throw FormatFlagsConversionMismatchException");
-        } catch (FormatFlagsConversionMismatchException e) {
-            // expected
-        }
-
-        try {
-            // compare IllegalFormatFlagsException and
-            // FormatFlagsConversionMismatchException
-            f = new Formatter(Locale.US);
-            f.format("%+ ,e", bd);
-            fail("should throw IllegalFormatFlagsException");
-        } catch (IllegalFormatFlagsException e) {
-            // expected
-        }
-
-        try {
-            // compare MissingFormatWidthException and
-            // IllegalFormatFlagsException
-            f = new Formatter(Locale.US);
-            f.format("%+ -e", bd);
-            fail("should throw MissingFormatWidthException");
-        } catch (MissingFormatWidthException e) {
-            // expected
-        }
-
-        // compare UnknownFormatConversionException and
-        // MissingFormatWidthException
-        try {
-            f = new Formatter(Locale.US);
-            f.format("%-F", bd);
-            fail("should throw UnknownFormatConversionException");
-        } catch (UnknownFormatConversionException e) {
-            // expected
-        }
-    }
-
-    /**
-     * @tests java.util.Formatter#format(String, Object...) for null argment for
-     *        Float/Double/BigDecimal conversion
-     */
-    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalNullConversion() {
-        Formatter f = null;
-
-        // test (Float)null
-        f = new Formatter(Locale.FRANCE);
-        f.format("%#- (9.0e", (Float) null);
-        assertEquals("         ", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%-+(1.6E", (Float) null);
-        assertEquals("NULL", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("%+0(,8.4g", (Float) null);
-        assertEquals("    null", f.toString());
-
-        f = new Formatter(Locale.FRANCE);
-        f.format("%- (9.8G", (Float) null);
-        assertEquals("NULL     ", f.toString());
-
-        f = new Formatter(Locale.FRANCE);
-        f.format("%- (12.1f", (Float) null);
-        assertEquals("n           ", f.toString());
-
-        f = new Formatter(Locale.FRANCE);
-        f.format("% .4a", (Float) null);
-        assertEquals("null", f.toString());
-
-        f = new Formatter(Locale.FRANCE);
-        f.format("%06A", (Float) null);
-        assertEquals("  NULL", f.toString());
-
-        // test (Double)null
-        f = new Formatter(Locale.GERMAN);
-        f.format("%- (9e", (Double) null);
-        assertEquals("null     ", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%#-+(1.6E", (Double) null);
-        assertEquals("NULL", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%+0(6.4g", (Double) null);
-        assertEquals("  null", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%- (,5.8G", (Double) null);
-        assertEquals("NULL ", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("% (.4f", (Double) null);
-        assertEquals("null", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("%#.6a", (Double) null);
-        assertEquals("null", f.toString());
-
-        f = new Formatter(Locale.GERMAN);
-        f.format("% 2.5A", (Double) null);
-        assertEquals("NULL", f.toString());
-
-        // test (BigDecimal)null
-        f = new Formatter(Locale.UK);
-        f.format("%#- (6.2e", (BigDecimal) null);
-        assertEquals("nu    ", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("%-+(1.6E", (BigDecimal) null);
-        assertEquals("NULL", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("%+-(,5.3g", (BigDecimal) null);
-        assertEquals("nul  ", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("%0 3G", (BigDecimal) null);
-        assertEquals("NULL", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("%0 (9.0G", (BigDecimal) null);
-        assertEquals("         ", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("% (.5f", (BigDecimal) null);
-        assertEquals("null", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("%06a", (BigDecimal) null);
-        assertEquals("  null", f.toString());
-
-        f = new Formatter(Locale.UK);
-        f.format("% .5A", (BigDecimal) null);
-        assertEquals("NULL", f.toString());
-    }
-    
-    /**
-     * @tests java.util.Formatter.BigDecimalLayoutForm#values()
-     */
-    public void test_values() {
-        BigDecimalLayoutForm[] vals = BigDecimalLayoutForm.values();
-        assertEquals("Invalid length of enum values", 2, vals.length);
-        assertEquals("Wrong scientific value in enum", BigDecimalLayoutForm.SCIENTIFIC, vals[0]);
-        assertEquals("Wrong dec float value in enum", BigDecimalLayoutForm.DECIMAL_FLOAT, vals[1]);
-    }
-    
-    /**
-     * @tests java.util.Formatter.BigDecimalLayoutForm#valueOf(String)
-     */
-    public void test_valueOfLjava_lang_String() {
-        BigDecimalLayoutForm sci = BigDecimalLayoutForm.valueOf("SCIENTIFIC");
-        assertEquals("Wrong scientific value in enum", BigDecimalLayoutForm.SCIENTIFIC, sci);
-
-        BigDecimalLayoutForm decFloat = BigDecimalLayoutForm.valueOf("DECIMAL_FLOAT");
-        assertEquals("Wrong dec float value from valueOf ", BigDecimalLayoutForm.DECIMAL_FLOAT, decFloat);
-    }
-    
-    /*
-     * Regression test for Harmony-5845
-     * test the short name for timezone whether uses DaylightTime or not
-     */
-    public void test_DaylightTime() {
-        Calendar c1 = new GregorianCalendar(2007, 0, 1);
-        Calendar c2 = new GregorianCalendar(2007, 7, 1);
-
-        for (String tz : TimeZone.getAvailableIDs()) {
-            if (tz.equals("America/Los_Angeles")) {
-                c1.setTimeZone(TimeZone.getTimeZone(tz));
-                c2.setTimeZone(TimeZone.getTimeZone(tz));
-                assertTrue(String.format("%1$tZ%2$tZ", c1, c2).equals("PSTPDT"));
-            }
-            if (tz.equals("America/Panama")) {
-                c1.setTimeZone(TimeZone.getTimeZone(tz));
-                c2.setTimeZone(TimeZone.getTimeZone(tz));
-                assertTrue(String.format("%1$tZ%2$tZ", c1, c2).equals("ESTEST"));
-            }
-        }
-    }
-    
-    /*
-     * Regression test for Harmony-5845
-     * test scientific notation to follow RI's behavior
-     */
-    public void test_ScientificNotation() {
-        Formatter f = new Formatter();
-        MathContext mc = new MathContext(30);
-        BigDecimal value = new BigDecimal(0.1, mc);
-        f.format("%.30G", value);
-
-        String result = f.toString();
-        String expected = "0.100000000000000005551115123126";
-        assertEquals(expected, result);
-    }
-
-    
-    /**
-     * Setup resource files for testing
-     */
-    protected void setUp() throws IOException {
-        root = System.getProperty("user.name").equalsIgnoreCase("root");
-        notExist = File.createTempFile("notexist", null);
-        notExist.delete();
-
-        fileWithContent = File.createTempFile("filewithcontent", null);
-        BufferedOutputStream bw = new BufferedOutputStream(
-                new FileOutputStream(fileWithContent));
-        bw.write(1);// write something into the file
-        bw.close();
-
-        readOnly = File.createTempFile("readonly", null);
-        readOnly.setReadOnly();
-
-        secret = File.createTempFile("secret", null);
-        
-        defaultTimeZone = TimeZone.getDefault();
-        TimeZone cst = TimeZone.getTimeZone("Asia/Shanghai");
-        TimeZone.setDefault(cst);
-    }
-
-    /**
-     * Delete the resource files if they exist
-     */
-    protected void tearDown() {
-        if (notExist.exists()) {
-            notExist.delete();
-        }
-
-        if (fileWithContent.exists()) {
-            fileWithContent.delete();
-        }
-        if (readOnly.exists()) {
-            readOnly.delete();
-        }
-        if (secret.exists()) {
-            secret.delete();
-        }
-        
-        TimeZone.setDefault(defaultTimeZone);
-    }
-}
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.harmony.luni.tests.java.util;
+
+import java.io.BufferedOutputStream;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FilePermission;
+import java.io.Flushable;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PipedOutputStream;
+import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.MathContext;
+import java.nio.charset.Charset;
+import java.security.Permission;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.DuplicateFormatFlagsException;
+import java.util.FormatFlagsConversionMismatchException;
+import java.util.Formattable;
+import java.util.FormattableFlags;
+import java.util.Formatter;
+import java.util.FormatterClosedException;
+import java.util.IllegalFormatCodePointException;
+import java.util.IllegalFormatConversionException;
+import java.util.IllegalFormatException;
+import java.util.IllegalFormatFlagsException;
+import java.util.IllegalFormatPrecisionException;
+import java.util.IllegalFormatWidthException;
+import java.util.Locale;
+import java.util.MissingFormatArgumentException;
+import java.util.MissingFormatWidthException;
+import java.util.TimeZone;
+import java.util.UnknownFormatConversionException;
+import java.util.Formatter.BigDecimalLayoutForm;
+
+import junit.framework.TestCase;
+
+public class FormatterTest extends TestCase {
+	private boolean root;
+
+    class MockAppendable implements Appendable {
+        public Appendable append(CharSequence arg0) throws IOException {
+            return null;
+        }
+
+        public Appendable append(char arg0) throws IOException {
+            return null;
+        }
+
+        public Appendable append(CharSequence arg0, int arg1, int arg2)
+                throws IOException {
+            return null;
+        }
+    }
+
+    class MockSecurityManager extends SecurityManager {
+        public void checkPermission(Permission p) {
+            if (p.getActions().equals("write") && p instanceof FilePermission) {
+                throw new SecurityException("Always throw security exception");
+            }
+        }
+
+        public void checkPermission(Permission p, Object ctx) {
+            checkPermission(p);
+        }
+    }
+
+    class MockFormattable implements Formattable {
+        public void formatTo(Formatter formatter, int flags, int width,
+                int precision) throws IllegalFormatException {
+            if ((flags & FormattableFlags.UPPERCASE) != 0) {
+                formatter.format("CUSTOMIZED FORMAT FUNCTION" + " WIDTH: "
+                        + width + " PRECISION: " + precision);
+            } else {
+                formatter.format("customized format function" + " width: "
+                        + width + " precision: " + precision);
+            }
+        }
+
+        public String toString() {
+            return "formattable object";
+        }
+
+        public int hashCode() {
+            return 0xf;
+        }
+    }
+
+    class MockDestination implements Appendable, Flushable {
+
+        private StringBuilder data = new StringBuilder();
+
+        private boolean enabled = false;
+
+        public Appendable append(char c) throws IOException {
+            if (enabled) {
+                data.append(c);
+                enabled = true; // enable it after the first append
+            } else {
+                throw new IOException();
+            }
+            return this;
+        }
+
+        public Appendable append(CharSequence csq) throws IOException {
+            if (enabled) {
+                data.append(csq);
+                enabled = true; // enable it after the first append
+            } else {
+                throw new IOException();
+            }
+            return this;
+        }
+
+        public Appendable append(CharSequence csq, int start, int end)
+                throws IOException {
+            if (enabled) {
+                data.append(csq, start, end);
+                enabled = true; // enable it after the first append
+            } else {
+                throw new IOException();
+            }
+            return this;
+        }
+
+        public void flush() throws IOException {
+            throw new IOException("Always throw IOException");
+        }
+
+        public String toString() {
+            return data.toString();
+        }
+    }
+
+    private File notExist;
+
+    private File fileWithContent;
+
+    private File readOnly;
+
+    private File secret;
+    
+    private TimeZone defaultTimeZone;
+
+    /**
+     * @tests java.util.Formatter#Formatter()
+     */
+    public void test_Constructor() {
+        Formatter f = new Formatter();
+        assertNotNull(f);
+        assertTrue(f.out() instanceof StringBuilder);
+        assertEquals(f.locale(), Locale.getDefault());
+        assertNotNull(f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(Appendable)
+     */
+    public void test_ConstructorLjava_lang_Appendable() {
+        MockAppendable ma = new MockAppendable();
+        Formatter f1 = new Formatter(ma);
+        assertEquals(ma, f1.out());
+        assertEquals(f1.locale(), Locale.getDefault());
+        assertNotNull(f1.toString());
+
+        Formatter f2 = new Formatter((Appendable) null);
+        /*
+         * If a(the input param) is null then a StringBuilder will be created
+         * and the output can be attained by invoking the out() method. But RI
+         * raises an error of FormatterClosedException when invoking out() or
+         * toString().
+         */
+        Appendable sb = f2.out();
+        assertTrue(sb instanceof StringBuilder);
+        assertNotNull(f2.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(Locale)
+     */
+    public void test_ConstructorLjava_util_Locale() {
+        Formatter f1 = new Formatter(Locale.FRANCE);
+        assertTrue(f1.out() instanceof StringBuilder);
+        assertEquals(f1.locale(), Locale.FRANCE);
+        assertNotNull(f1.toString());
+
+        Formatter f2 = new Formatter((Locale) null);
+        assertNull(f2.locale());
+        assertTrue(f2.out() instanceof StringBuilder);
+        assertNotNull(f2.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(Appendable, Locale)
+     */
+    public void test_ConstructorLjava_lang_AppendableLjava_util_Locale() {
+        MockAppendable ma = new MockAppendable();
+        Formatter f1 = new Formatter(ma, Locale.CANADA);
+        assertEquals(ma, f1.out());
+        assertEquals(f1.locale(), Locale.CANADA);
+
+        Formatter f2 = new Formatter(ma, null);
+        assertNull(f2.locale());
+        assertEquals(ma, f1.out());
+
+        Formatter f3 = new Formatter(null, Locale.GERMAN);
+        assertEquals(f3.locale(), Locale.GERMAN);
+        assertTrue(f3.out() instanceof StringBuilder);
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(String)
+     */
+    public void test_ConstructorLjava_lang_String() throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((String) null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        f = new Formatter(notExist.getPath());
+        assertEquals(f.locale(), Locale.getDefault());
+        f.close();
+
+        f = new Formatter(fileWithContent.getPath());
+        assertEquals(0, fileWithContent.length());
+        f.close();
+
+        if(!root){
+        	try {
+                f = new Formatter(readOnly.getPath());
+                fail("should throw FileNotFoundException");
+            } catch (FileNotFoundException e) {
+                // expected
+            }
+        }
+
+        SecurityManager oldsm = System.getSecurityManager();
+        System.setSecurityManager(new MockSecurityManager());
+        try {
+            f = new Formatter(secret.getPath());
+            fail("should throw SecurityException");
+        } catch (SecurityException se) {
+            // expected
+        } finally {
+            System.setSecurityManager(oldsm);
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(String, String)
+     */
+    public void test_ConstructorLjava_lang_StringLjava_lang_String()
+            throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((String) null, Charset.defaultCharset().name());
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        try {
+            f = new Formatter(notExist.getPath(), null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e2) {
+            // expected
+        }
+
+        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name());
+        assertEquals(f.locale(), Locale.getDefault());
+        f.close();
+
+        try {
+            f = new Formatter(notExist.getPath(), "ISO 1111-1");
+            fail("should throw UnsupportedEncodingException");
+        } catch (UnsupportedEncodingException e1) {
+            // expected
+        }
+
+        f = new Formatter(fileWithContent.getPath(), "UTF-16BE");
+        assertEquals(0, fileWithContent.length());
+        f.close();
+
+        if(!root){
+        	try {
+                f = new Formatter(readOnly.getPath(), "UTF-16BE");
+                fail("should throw FileNotFoundException");
+            } catch (FileNotFoundException e) {
+                // expected
+            }
+        }
+
+        SecurityManager oldsm = System.getSecurityManager();
+        System.setSecurityManager(new MockSecurityManager());
+        try {
+            f = new Formatter(secret.getPath(), "UTF-16BE");
+            fail("should throw SecurityException");
+        } catch (SecurityException se) {
+            // expected
+        } finally {
+            System.setSecurityManager(oldsm);
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(String, String, Locale)
+     */
+    public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_util_Locale()
+            throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((String) null, Charset.defaultCharset().name(),
+                    Locale.KOREA);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        try {
+            f = new Formatter(notExist.getPath(), null, Locale.KOREA);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e2) {
+            // expected
+        }
+
+        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name(),
+                null);
+        assertNotNull(f);
+        f.close();
+
+        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name(),
+                Locale.KOREA);
+        assertEquals(f.locale(), Locale.KOREA);
+        f.close();
+
+        try {
+            f = new Formatter(notExist.getPath(), "ISO 1111-1", Locale.CHINA);
+            fail("should throw UnsupportedEncodingException");
+        } catch (UnsupportedEncodingException e1) {
+            // expected
+        }
+
+        f = new Formatter(fileWithContent.getPath(), "UTF-16BE",
+                Locale.CANADA_FRENCH);
+        assertEquals(0, fileWithContent.length());
+        f.close();
+
+        if(!root){
+        	try {
+                f = new Formatter(readOnly.getPath(), Charset.defaultCharset()
+                        .name(), Locale.ITALY);
+                fail("should throw FileNotFoundException");
+            } catch (FileNotFoundException e) {
+                // expected
+            }
+        }
+        
+        SecurityManager oldsm = System.getSecurityManager();
+        System.setSecurityManager(new MockSecurityManager());
+        try {
+            f = new Formatter(secret.getPath(),
+                    Charset.defaultCharset().name(), Locale.SIMPLIFIED_CHINESE);
+            fail("should throw SecurityException");
+        } catch (SecurityException se) {
+            // expected
+        } finally {
+            System.setSecurityManager(oldsm);
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(File)
+     */
+    public void test_ConstructorLjava_io_File() throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((File) null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        f = new Formatter(notExist);
+        assertEquals(f.locale(), Locale.getDefault());
+        f.close();
+
+        f = new Formatter(fileWithContent);
+        assertEquals(0, fileWithContent.length());
+        f.close();
+
+        if(!root){
+        	try {
+                f = new Formatter(readOnly);
+                fail("should throw FileNotFoundException");
+            } catch (FileNotFoundException e) {
+                // expected
+            }
+        }
+        
+        SecurityManager oldsm = System.getSecurityManager();
+        System.setSecurityManager(new MockSecurityManager());
+        try {
+            f = new Formatter(secret);
+            fail("should throw SecurityException");
+        } catch (SecurityException se) {
+            // expected
+        } finally {
+            System.setSecurityManager(oldsm);
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(File, String)
+     */
+    public void test_ConstructorLjava_io_FileLjava_lang_String()
+            throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((File) null, Charset.defaultCharset().name());
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        f = new Formatter(notExist, Charset.defaultCharset().name());
+        assertEquals(f.locale(), Locale.getDefault());
+        f.close();
+
+        f = new Formatter(fileWithContent, "UTF-16BE");
+        assertEquals(0, fileWithContent.length());
+        f.close();
+
+        if(!root){
+        	try {
+                f = new Formatter(readOnly, Charset.defaultCharset().name());
+                fail("should throw FileNotFoundException");
+            } catch (FileNotFoundException e) {
+                // expected
+            }
+        }
+
+        SecurityManager oldsm = System.getSecurityManager();
+        System.setSecurityManager(new MockSecurityManager());
+        try {
+            f = new Formatter(secret, Charset.defaultCharset().name());
+            fail("should throw SecurityException");
+        } catch (SecurityException se) {
+            // expected
+        } finally {
+            System.setSecurityManager(oldsm);
+        }
+
+        try {
+            f = new Formatter(notExist, null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e2) {
+            // expected
+        } finally {
+            if (notExist.exists()) {
+                // Fail on RI on Windows, because output stream is created and
+                // not closed when exception thrown
+                assertTrue(notExist.delete());
+            }
+        }
+
+        try {
+            f = new Formatter(notExist, "ISO 1111-1");
+            fail("should throw UnsupportedEncodingException");
+        } catch (UnsupportedEncodingException e1) {
+            // expected
+        } finally {
+            if (notExist.exists()) {
+                // Fail on RI on Windows, because output stream is created and
+                // not closed when exception thrown
+                assertTrue(notExist.delete());
+            }
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(File, String, Locale)
+     */
+    public void test_ConstructorLjava_io_FileLjava_lang_StringLjava_util_Locale()
+            throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((File) null, Charset.defaultCharset().name(),
+                    Locale.KOREA);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        try {
+            f = new Formatter(notExist, null, Locale.KOREA);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e2) {
+            // expected
+        }
+
+        f = new Formatter(notExist, Charset.defaultCharset().name(), null);
+        assertNotNull(f);
+        f.close();
+
+        f = new Formatter(notExist, Charset.defaultCharset().name(),
+                Locale.KOREA);
+        assertEquals(f.locale(), Locale.KOREA);
+        f.close();
+
+        try {
+            f = new Formatter(notExist, "ISO 1111-1", Locale.CHINA);
+            fail("should throw UnsupportedEncodingException");
+        } catch (UnsupportedEncodingException e1) {
+            // expected
+        }
+        f = new Formatter(fileWithContent.getPath(), "UTF-16BE",
+                Locale.CANADA_FRENCH);
+        assertEquals(0, fileWithContent.length());
+        f.close();
+
+        if(!root){
+        	try {
+                f = new Formatter(readOnly.getPath(), Charset.defaultCharset()
+                        .name(), Locale.ITALY);
+                fail("should throw FileNotFoundException");
+            } catch (FileNotFoundException e) {
+                // expected
+            }
+        }
+
+        SecurityManager oldsm = System.getSecurityManager();
+        System.setSecurityManager(new MockSecurityManager());
+        try {
+            f = new Formatter(secret.getPath(),
+                    Charset.defaultCharset().name(), Locale.SIMPLIFIED_CHINESE);
+            fail("should throw SecurityException");
+        } catch (SecurityException se) {
+            // expected
+        } finally {
+            System.setSecurityManager(oldsm);
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(PrintStream)
+     */
+    public void test_ConstructorLjava_io_PrintStream() throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((PrintStream) null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        PrintStream ps = new PrintStream(notExist, "UTF-16BE");
+        f = new Formatter(ps);
+        assertEquals(Locale.getDefault(), f.locale());
+        f.close();
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(OutputStream)
+     */
+    public void test_ConstructorLjava_io_OutputStream() throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((OutputStream) null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        OutputStream os = new FileOutputStream(notExist);
+        f = new Formatter(os);
+        assertEquals(Locale.getDefault(), f.locale());
+        f.close();
+    }
+
+    /**
+     * @tests java.util.Formatter#Formatter(OutputStream, String)
+     */
+    public void test_ConstructorLjava_io_OutputStreamLjava_lang_String()
+            throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((OutputStream) null, Charset.defaultCharset()
+                    .name());
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        OutputStream os = null;
+        try {
+            os = new FileOutputStream(notExist);
+            f = new Formatter(os, null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e2) {
+            // expected
+        } finally {
+            os.close();
+        }
+
+        try {
+            os = new PipedOutputStream();
+            f = new Formatter(os, "TMP-1111");
+            fail("should throw UnsupportedEncodingException");
+        } catch (UnsupportedEncodingException e1) {
+            // expected
+        } finally {
+            os.close();
+        }
+
+        os = new FileOutputStream(fileWithContent);
+        f = new Formatter(os, "UTF-16BE");
+        assertEquals(Locale.getDefault(), f.locale());
+        f.close();
+    }
+
+    /**
+     * Test method for 'java.util.Formatter.Formatter(OutputStream, String,
+     * Locale)
+     */
+    public void test_ConstructorLjava_io_OutputStreamLjava_lang_StringLjava_util_Locale()
+            throws IOException {
+        Formatter f = null;
+        try {
+            f = new Formatter((OutputStream) null, Charset.defaultCharset()
+                    .name(), Locale.getDefault());
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e1) {
+            // expected
+        }
+
+        OutputStream os = null;
+        try {
+            os = new FileOutputStream(notExist);
+            f = new Formatter(os, null, Locale.getDefault());
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e2) {
+            // expected
+        } finally {
+            os.close();
+        }
+
+        os = new FileOutputStream(notExist);
+        f = new Formatter(os, Charset.defaultCharset().name(), null);
+        f.close();
+
+        try {
+            os = new PipedOutputStream();
+            f = new Formatter(os, "TMP-1111", Locale.getDefault());
+            fail("should throw UnsupportedEncodingException");
+        } catch (UnsupportedEncodingException e1) {
+            // expected
+        }
+
+        os = new FileOutputStream(fileWithContent);
+        f = new Formatter(os, "UTF-16BE", Locale.ENGLISH);
+        assertEquals(Locale.ENGLISH, f.locale());
+        f.close();
+    }
+
+    /**
+     * @tests java.util.Formatter#locale()
+     */
+    public void test_locale() {
+        Formatter f = null;
+        f = new Formatter((Locale) null);
+        assertNull(f.locale());
+
+        f.close();
+        try {
+            f.locale();
+            fail("should throw FormatterClosedException");
+        } catch (FormatterClosedException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#out()
+     */
+    public void test_out() {
+        Formatter f = null;
+        f = new Formatter();
+        assertNotNull(f.out());
+        assertTrue(f.out() instanceof StringBuilder);
+        f.close();
+        try {
+            f.out();
+            fail("should throw FormatterClosedException");
+        } catch (FormatterClosedException e) {
+            // expected
+        }
+
+    }
+
+    /**
+     * @tests java.util.Formatter#flush()
+     */
+    public void test_flush() throws IOException {
+        Formatter f = null;
+        f = new Formatter(notExist);
+        assertTrue(f instanceof Flushable);
+        f.close();
+        try {
+            f.flush();
+            fail("should throw FormatterClosedException");
+        } catch (FormatterClosedException e) {
+            // expected
+        }
+
+        f = new Formatter();
+        // For destination that does not implement Flushable
+        // No exception should be thrown
+        f.flush();
+    }
+
+    /**
+     * @tests java.util.Formatter#close()
+     */
+    public void test_close() throws IOException {
+        Formatter f = new Formatter(notExist);
+        assertTrue(f instanceof Closeable);
+        f.close();
+        // close next time will not throw exception
+        f.close();
+        assertNull(f.ioException());
+    }
+
+    /**
+     * @tests java.util.Formatter#toString()
+     */
+    public void test_toString() {
+        Formatter f = new Formatter();
+        assertNotNull(f.toString());
+        assertEquals(f.out().toString(), f.toString());
+        f.close();
+        try {
+            f.toString();
+            fail("should throw FormatterClosedException");
+        } catch (FormatterClosedException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#ioException()
+     */
+    public void test_ioException() throws IOException {
+        Formatter f = null;
+        f = new Formatter(new MockDestination());
+        assertNull(f.ioException());
+        f.flush();
+        assertNotNull(f.ioException());
+        f.close();
+
+        MockDestination md = new MockDestination();
+        f = new Formatter(md);
+        f.format("%s%s", "1", "2");
+        // format stop working after IOException
+        assertNotNull(f.ioException());
+        assertEquals("", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for null parameter
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_null() {
+        Formatter f = new Formatter();
+        try {
+            f.format((String) null, "parameter");
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+
+        f = new Formatter();
+        f.format("hello", (Object[]) null);
+        assertEquals("hello", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for argument index
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_ArgIndex() {
+        Formatter formatter = new Formatter(Locale.US);
+        formatter.format("%1$s%2$s%3$s%4$s%5$s%6$s%7$s%8$s%9$s%11$s%10$s", "1",
+                "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
+        assertEquals("1234567891110", formatter.toString());
+
+        formatter = new Formatter(Locale.JAPAN);
+        formatter.format("%0$s", "hello");
+        assertEquals("hello", formatter.toString());
+
+        try {
+            formatter = new Formatter(Locale.US);
+            formatter.format("%-1$s", "1", "2");
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+
+        try {
+            formatter = new Formatter(Locale.US);
+            formatter.format("%$s", "hello", "2");
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+        
+        try {
+            Formatter f = new Formatter(Locale.US);
+            f.format("%", "string");
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }       
+
+        formatter = new Formatter(Locale.FRANCE);
+        formatter.format("%1$s%2$s%3$s%4$s%5$s%6$s%7$s%8$s%<s%s%s%<s", "1",
+                "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
+        assertEquals("123456788122", formatter.toString());
+
+        formatter = new Formatter(Locale.FRANCE);
+        formatter.format(
+                "xx%1$s22%2$s%s%<s%5$s%<s&%7$h%2$s%8$s%<s%s%s%<ssuffix", "1",
+                "2", "3", "4", "5", "6", 7, "8", "9", "10", "11");
+        assertEquals("xx12221155&7288233suffix", formatter.toString());
+
+        try {
+            formatter.format("%<s", "hello");
+            fail("should throw MissingFormatArgumentException");
+        } catch (MissingFormatArgumentException e) {
+            // expected
+        }
+
+        formatter = new Formatter(Locale.US);
+        try {
+            formatter.format("%123$s", "hello");
+            fail("should throw MissingFormatArgumentException");
+        } catch (MissingFormatArgumentException e) {
+            // expected
+        }
+
+        formatter = new Formatter(Locale.US);
+        try {
+            // 2147483648 is the value of Integer.MAX_VALUE + 1
+            formatter.format("%2147483648$s", "hello");
+            fail("should throw MissingFormatArgumentException");
+        } catch (MissingFormatArgumentException e) {
+            // expected
+        }
+
+        try {
+            // 2147483647 is the value of Integer.MAX_VALUE
+            formatter.format("%2147483647$s", "hello");
+            fail("should throw MissingFormatArgumentException");
+        } catch (MissingFormatArgumentException e) {
+            // expected
+        }
+
+        formatter = new Formatter(Locale.US);
+        try {
+            formatter.format("%s%s", "hello");
+            fail("should throw MissingFormatArgumentException");
+        } catch (MissingFormatArgumentException e) {
+            // expected
+        }
+
+        formatter = new Formatter(Locale.US);
+        formatter.format("$100", 100);
+        assertEquals("$100", formatter.toString());
+
+        formatter = new Formatter(Locale.UK);
+        formatter.format("%01$s", "string");
+        assertEquals("string", formatter.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for width
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_Width() {
+        Formatter f = new Formatter(Locale.US);
+        f.format("%1$8s", "1");
+        assertEquals("       1", f.toString());
+
+        f = new Formatter(Locale.US);
+        f.format("%1$-1%", "string");
+        assertEquals("%", f.toString());
+
+        f = new Formatter(Locale.ITALY);
+        // 2147483648 is the value of Integer.MAX_VALUE + 1
+        f.format("%2147483648s", "string");
+        assertEquals("string", f.toString());
+
+        // the value of Integer.MAX_VALUE will allocate about 4G bytes of
+        // memory.
+        // It may cause OutOfMemoryError, so this value is not tested
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for precision
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_Precision() {
+        Formatter f = new Formatter(Locale.US);
+        f.format("%.5s", "123456");
+        assertEquals("12345", f.toString());
+
+        f = new Formatter(Locale.US);
+        // 2147483648 is the value of Integer.MAX_VALUE + 1
+        f.format("%.2147483648s", "...");
+        assertEquals("...", f.toString());
+
+        // the value of Integer.MAX_VALUE will allocate about 4G bytes of
+        // memory.
+        // It may cause OutOfMemoryError, so this value is not tested
+
+        f = new Formatter(Locale.US);
+        f.format("%10.0b", Boolean.TRUE);
+        assertEquals("          ", f.toString());
+
+        f = new Formatter(Locale.US);
+        f.format("%10.01s", "hello");
+        assertEquals("         h", f.toString());
+
+        try {
+            f = new Formatter(Locale.US);
+            f.format("%.s", "hello", "2");
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+
+        try {
+            f = new Formatter(Locale.US);
+            f.format("%.-5s", "123456");
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+
+        try {
+            f = new Formatter(Locale.US);
+            f.format("%1.s", "hello", "2");
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        f.format("%5.1s", "hello");
+        assertEquals("    h", f.toString());
+
+        f = new Formatter(Locale.FRANCE);
+        f.format("%.0s", "hello", "2");
+        assertEquals("", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for line sperator
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_LineSeparator() {
+        Formatter f = null;
+
+        String oldSeparator = System.getProperty("line.separator");
+        System.setProperty("line.separator", "!\n");
+
+        f = new Formatter(Locale.US);
+        f.format("%1$n", 1);
+        assertEquals("!\n", f.toString());
+
+        f = new Formatter(Locale.KOREAN);
+        f.format("head%1$n%2$n", 1, new Date());
+        assertEquals("head!\n!\n", f.toString());
+
+        f = new Formatter(Locale.US);
+        f.format("%n%s", "hello");
+        assertEquals("!\nhello", f.toString());
+
+        System.setProperty("line.separator", oldSeparator);
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%-n");
+            fail("should throw IllegalFormatFlagsException: %-n");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+        try {
+            f.format("%+n");
+            fail("should throw IllegalFormatFlagsException: %+n");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+        try {
+            f.format("%#n");
+            fail("should throw IllegalFormatFlagsException: %#n");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+        try {
+            f.format("% n");
+            fail("should throw IllegalFormatFlagsException: % n");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+        try {
+            f.format("%0n");
+            fail("should throw IllegalFormatFlagsException: %0n");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+        try {
+            f.format("%,n");
+            fail("should throw IllegalFormatFlagsException: %,n");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+        try {
+            f.format("%(n");
+            fail("should throw IllegalFormatFlagsException: %(n");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%4n");
+            fail("should throw IllegalFormatWidthException");
+        } catch (IllegalFormatWidthException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%-4n");
+            fail("should throw IllegalFormatWidthException");
+        } catch (IllegalFormatWidthException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%.9n");
+            fail("should throw IllegalFormatPrecisionException");
+        } catch (IllegalFormatPrecisionException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%5.9n");
+            fail("should throw IllegalFormatPrecisionException");
+        } catch (IllegalFormatPrecisionException e) {
+            // expected
+        }
+        
+        System.setProperty("line.separator", oldSeparator);
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for percent
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_Percent() {
+        Formatter f = null;
+
+        f = new Formatter(Locale.ENGLISH);
+        f.format("%1$%", 100);
+        assertEquals("%", f.toString());
+
+        f = new Formatter(Locale.CHINA);
+        f.format("%1$%%%", "hello", new Object());
+        assertEquals("%%", f.toString());
+
+        f = new Formatter(Locale.CHINA);
+        f.format("%%%s", "hello");
+        assertEquals("%hello", f.toString());
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%.9%");
+            fail("should throw IllegalFormatPrecisionException");
+        } catch (IllegalFormatPrecisionException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%5.9%");
+            fail("should throw IllegalFormatPrecisionException");
+        } catch (IllegalFormatPrecisionException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        assertFormatFlagsConversionMismatchException(f, "%+%");
+        assertFormatFlagsConversionMismatchException(f, "%#%");
+        assertFormatFlagsConversionMismatchException(f, "% %");
+        assertFormatFlagsConversionMismatchException(f, "%0%");
+        assertFormatFlagsConversionMismatchException(f, "%,%");
+        assertFormatFlagsConversionMismatchException(f, "%(%");
+        
+
+        f = new Formatter(Locale.KOREAN);
+        f.format("%4%", 1);
+        /*
+         * fail on RI the output string should be right justified by appending
+         * spaces till the whole string is 4 chars width.
+         */
+        assertEquals("   %", f.toString());
+
+        f = new Formatter(Locale.US);
+        f.format("%-4%", 100);
+        /*
+         * fail on RI, throw UnknownFormatConversionException the output string
+         * should be left justified by appending spaces till the whole string is
+         * 4 chars width.
+         */
+        assertEquals("%   ", f.toString());
+    }
+
+    private void assertFormatFlagsConversionMismatchException(Formatter f, String str) {
+        try {
+            f.format(str);
+            fail("should throw FormatFlagsConversionMismatchException: "
+                    + str);
+             /*
+             * error on RI, throw IllegalFormatFlagsException specification
+             * says FormatFlagsConversionMismatchException should be thrown
+             */
+        } catch (FormatFlagsConversionMismatchException e) {
+           // expected
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for flag
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_Flag() {
+        Formatter f = new Formatter(Locale.US);
+        try {
+            f.format("%1$-#-8s", "something");
+            fail("should throw DuplicateFormatFlagsException");
+        } catch (DuplicateFormatFlagsException e) {
+            // expected
+        }
+
+        final char[] chars = { '-', '#', '+', ' ', '0', ',', '(', '%', '<' };
+        Arrays.sort(chars);
+        f = new Formatter(Locale.US);
+        for (char i = 0; i <= 256; i++) {
+            // test 8 bit character
+            if (Arrays.binarySearch(chars, i) >= 0 || Character.isDigit(i)
+                    || Character.isLetter(i)) {
+                // Do not test 0-9, a-z, A-Z and characters in the chars array.
+                // They are characters used as flags, width or conversions
+                continue;
+            }
+            try {
+                f.format("%" + i + "s", 1);
+                fail("should throw UnknownFormatConversionException");
+            } catch (UnknownFormatConversionException e) {
+                // expected
+            }
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for general
+     *        conversion b/B
+     */
+    public void test_format_LString$LObject_GeneralConversionB() {
+        final Object[][] triple = { 
+                { Boolean.FALSE,                "%3.2b",  " fa", },
+                { Boolean.FALSE,                "%-4.6b", "false", },
+                { Boolean.FALSE,                "%.2b",   "fa", }, 
+                { Boolean.TRUE,                 "%3.2b",  " tr", },
+                { Boolean.TRUE,                 "%-4.6b", "true", },
+                { Boolean.TRUE,                 "%.2b",   "tr", },
+                { new Character('c'),           "%3.2b",  " tr", },
+                { new Character('c'),           "%-4.6b", "true", },
+                { new Character('c'),           "%.2b",   "tr", },
+                { new Byte((byte) 0x01),        "%3.2b",  " tr", },
+                { new Byte((byte) 0x01),        "%-4.6b", "true", },
+                { new Byte((byte) 0x01),        "%.2b",   "tr", },
+                { new Short((short) 0x0001),    "%3.2b",  " tr", },
+                { new Short((short) 0x0001),    "%-4.6b", "true", },
+                { new Short((short) 0x0001),    "%.2b",   "tr", },
+                { new Integer(1),               "%3.2b",  " tr", },
+                { new Integer(1),               "%-4.6b", "true", },
+                { new Integer(1),               "%.2b",   "tr", },
+                { new Float(1.1f),              "%3.2b",  " tr", },
+                { new Float(1.1f),              "%-4.6b", "true", },
+                { new Float(1.1f),              "%.2b",   "tr", },
+                { new Double(1.1d),             "%3.2b",  " tr", },
+                { new Double(1.1d),             "%-4.6b", "true", },
+                { new Double(1.1d),             "%.2b",   "tr", },
+                { "",                           "%3.2b",  " tr", },
+                { "",                           "%-4.6b", "true", },
+                { "",                           "%.2b",   "tr", },
+                { "string content",             "%3.2b",  " tr", },
+                { "string content",             "%-4.6b", "true", },
+                { "string content",             "%.2b",   "tr", },
+                { new MockFormattable(),        "%3.2b",  " tr", },
+                { new MockFormattable(),        "%-4.6b", "true", },
+                { new MockFormattable(),        "%.2b",   "tr", },
+                { (Object) null,                "%3.2b",  " fa", },
+                { (Object) null,                "%-4.6b", "false", },
+                { (Object) null,                "%.2b",   "fa", },
+                };
+
+
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2; 
+        Formatter f = null;
+        for (int i = 0; i < triple.length; i++) {
+            f = new Formatter(Locale.FRANCE);
+            f.format((String)triple[i][pattern], triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input]
+                          + ",pattern[" + i + "]:" + triple[i][pattern], triple[i][output], f.toString());
+
+            f = new Formatter(Locale.GERMAN);
+            f.format(((String)triple[i][pattern]).toUpperCase(Locale.US), triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input]
+                          + ",pattern[" + i + "]:" + triple[i][pattern], ((String)triple[i][output])
+                    .toUpperCase(Locale.US), f.toString());
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for general
+     *        conversion type 's' and 'S'
+     */
+    public void test_format_LString$LObject_GeneralConversionS() {
+
+        final Object[][] triple = { 
+                { Boolean.FALSE,                "%2.3s",  "fal", },
+                { Boolean.FALSE,                "%-6.4s", "fals  ", },
+                { Boolean.FALSE,                "%.5s",   "false", }, 
+                { Boolean.TRUE,                 "%2.3s",  "tru", },
+                { Boolean.TRUE,                 "%-6.4s", "true  ", },
+                { Boolean.TRUE,                 "%.5s",   "true", },
+                { new Character('c'),           "%2.3s",  " c", },
+                { new Character('c'),           "%-6.4s", "c     ", },
+                { new Character('c'),           "%.5s",   "c", },
+                { new Byte((byte) 0x01),        "%2.3s",  " 1", },
+                { new Byte((byte) 0x01),        "%-6.4s", "1     ", },
+                { new Byte((byte) 0x01),        "%.5s",   "1", },
+                { new Short((short) 0x0001),    "%2.3s",  " 1", },
+                { new Short((short) 0x0001),    "%-6.4s", "1     ", },
+                { new Short((short) 0x0001),    "%.5s",   "1", },
+                { new Integer(1),               "%2.3s",  " 1", },
+                { new Integer(1),               "%-6.4s", "1     ", },
+                { new Integer(1),               "%.5s",   "1", },
+                { new Float(1.1f),              "%2.3s",  "1.1", },
+                { new Float(1.1f),              "%-6.4s", "1.1   ", },
+                { new Float(1.1f),              "%.5s",   "1.1", },
+                { new Double(1.1d),             "%2.3s",  "1.1", },
+                { new Double(1.1d),             "%-6.4s", "1.1   ", },
+                { new Double(1.1d),             "%.5s",   "1.1", },
+                { "",                           "%2.3s",  "  ", },
+                { "",                           "%-6.4s", "      ", },
+                { "",                           "%.5s",   "", },
+                { "string content",             "%2.3s",  "str", },
+                { "string content",             "%-6.4s", "stri  ", },
+                { "string content",             "%.5s",   "strin", },
+                { new MockFormattable(),        "%2.3s",  "customized format function width: 2 precision: 3", },
+                { new MockFormattable(),        "%-6.4s", "customized format function width: 6 precision: 4", },
+                { new MockFormattable(),        "%.5s",   "customized format function width: -1 precision: 5", },
+                { (Object) null,                "%2.3s",  "nul", },
+                { (Object) null,                "%-6.4s", "null  ", },
+                { (Object) null,                "%.5s",   "null", },
+                };
+
+
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+        Formatter f = null;
+        for (int i = 0; i < triple.length; i++) {
+            f = new Formatter(Locale.FRANCE);
+            f.format((String)triple[i][pattern], triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input]
+                          + ",pattern[" + i + "]:" + triple[i][pattern], triple[i][output], f.toString());
+
+            f = new Formatter(Locale.GERMAN);
+            f.format(((String)triple[i][pattern]).toUpperCase(Locale.US), triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input]
+                          + ",pattern[" + i + "]:" + triple[i][pattern], ((String)triple[i][output])
+                    .toUpperCase(Locale.US), f.toString());
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for general
+     *        conversion type 'h' and 'H'
+     */
+    public void test_format_LString$LObject_GeneralConversionH() {
+
+        final Object[] input = { 
+                 Boolean.FALSE,                 
+                 Boolean.TRUE,                  
+                 new Character('c'),            
+                 new Byte((byte) 0x01),         
+                 new Short((short) 0x0001),     
+                 new Integer(1),                
+                 new Float(1.1f),               
+                 new Double(1.1d),              
+                 "",                            
+                 "string content",              
+                 new MockFormattable(),         
+                 (Object) null,                 
+                };
+
+        Formatter f = null;
+        for (int i = 0; i < input.length - 1; i++) {
+            f = new Formatter(Locale.FRANCE);
+            f.format("%h", input[i]);
+            assertEquals("triple[" + i + "]:" + input[i], 
+                    Integer.toHexString(input[i].hashCode()), f.toString());
+
+            f = new Formatter(Locale.GERMAN);
+            f.format("%H", input[i]);
+            assertEquals("triple[" + i + "]:" + input[i], 
+                    Integer.toHexString(input[i].hashCode()).toUpperCase(Locale.US), f.toString());
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for general
+     *        conversion other cases
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_GeneralConversionOther() {
+        /*
+         * In Turkish locale, the upper case of '\u0069' is '\u0130'. The
+         * following test indicate that '\u0069' is coverted to upper case
+         * without using the turkish locale.
+         */
+        Formatter f = new Formatter(new Locale("tr"));
+        f.format("%S", "\u0069");
+        assertEquals("\u0049", f.toString());
+
+        final Object[] input = { 
+                Boolean.FALSE,                 
+                Boolean.TRUE,                  
+                new Character('c'),            
+                new Byte((byte) 0x01),         
+                new Short((short) 0x0001),     
+                new Integer(1),                
+                new Float(1.1f),               
+                new Double(1.1d),              
+                "",                            
+                "string content",              
+                new MockFormattable(),         
+                (Object) null,                 
+               };
+        f = new Formatter(Locale.GERMAN);
+        for (int i = 0; i < input.length; i++) {
+            if (!(input[i] instanceof Formattable)) {
+                try {
+                    f.format("%#s", input[i]);
+                    /*
+                     * fail on RI, spec says if the '#' flag is present and the
+                     * argument is not a Formattable , then a
+                     * FormatFlagsConversionMismatchException will be thrown.
+                     */
+                    fail("should throw FormatFlagsConversionMismatchException");
+                } catch (FormatFlagsConversionMismatchException e) {
+                    // expected
+                }
+            } else {
+                f.format("%#s%<-#8s", input[i]);
+                assertEquals(
+                        "customized format function width: -1 precision: -1customized format function width: 8 precision: -1",
+                        f.toString());
+            }
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for general
+     *        conversion exception
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_GeneralConversionException() {
+        final String[] flagMismatch = { "%#b", "%+b", "% b", "%0b", "%,b",
+                "%(b", "%#B", "%+B", "% B", "%0B", "%,B", "%(B", "%#h", "%+h",
+                "% h", "%0h", "%,h", "%(h", "%#H", "%+H", "% H", "%0H", "%,H",
+                "%(H", "%+s", "% s", "%0s", "%,s", "%(s", "%+S", "% S", "%0S",
+                "%,S", "%(S" };
+
+        Formatter f = new Formatter(Locale.US);
+
+        for (int i = 0; i < flagMismatch.length; i++) {
+            try {
+                f.format(flagMismatch[i], "something");
+                fail("should throw FormatFlagsConversionMismatchException");
+            } catch (FormatFlagsConversionMismatchException e) {
+                // expected
+            }
+        }
+
+        final String[] missingWidth = { "%-b", "%-B", "%-h", "%-H", "%-s",
+                "%-S", };
+        for (int i = 0; i < missingWidth.length; i++) {
+            try {
+                f.format(missingWidth[i], "something");
+                fail("should throw MissingFormatWidthException");
+            } catch (MissingFormatWidthException e) {
+                // expected
+            }
+        }
+        
+        // Regression test
+        f = new Formatter();
+        try {
+            f.format("%c", (byte)-0x0001);
+            fail("Should throw IllegalFormatCodePointException");
+        } catch (IllegalFormatCodePointException e) {
+            // expected
+        }
+        
+        f = new Formatter();
+        try {
+            f.format("%c", (short)-0x0001);
+            fail("Should throw IllegalFormatCodePointException");
+        } catch (IllegalFormatCodePointException e) {
+            // expected
+        }
+        
+        f = new Formatter();
+        try {
+            f.format("%c", -0x0001);
+            fail("Should throw IllegalFormatCodePointException");
+        } catch (IllegalFormatCodePointException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for Character
+     *        conversion
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_CharacterConversion() {
+        Formatter f = new Formatter(Locale.US);
+        final Object[] illArgs = { Boolean.TRUE, new Float(1.1f),
+                new Double(1.1d), "string content", new Float(1.1f), new Date() };
+        for (int i = 0; i < illArgs.length; i++) {
+            try {
+                f.format("%c", illArgs[i]);
+                fail("should throw IllegalFormatConversionException");
+            } catch (IllegalFormatConversionException e) {
+                // expected
+            }
+        }
+
+        try {
+            f.format("%c", Integer.MAX_VALUE);
+            fail("should throw IllegalFormatCodePointException");
+        } catch (IllegalFormatCodePointException e) {
+            // expected
+        }
+
+        try {
+            f.format("%#c", 'c');
+            fail("should throw FormatFlagsConversionMismatchException");
+        } catch (FormatFlagsConversionMismatchException e) {
+            // expected
+        }
+
+        final Object[][] triple = {
+                {'c',               "%c",   "c"},
+                {'c',               "%-2c", "c "},
+                {'\u0123',          "%c",   "\u0123"},
+                {'\u0123',          "%-2c", "\u0123 "},
+                {(byte) 0x11,       "%c",   "\u0011"},
+                {(byte) 0x11,       "%-2c", "\u0011 "},
+                {(short) 0x1111,    "%c",   "\u1111"},
+                {(short) 0x1111,    "%-2c", "\u1111 "},
+                {0x11,              "%c",   "\u0011"},
+                {0x11,              "%-2c", "\u0011 "},
+        };
+
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+        for (int i = 0; i < triple.length; i++) {
+                f = new Formatter(Locale.US);
+                f.format((String)triple[i][pattern], triple[i][input]);
+                assertEquals(triple[i][output], f.toString());
+        }
+
+        f = new Formatter(Locale.US);
+        f.format("%c", 0x10000);
+        assertEquals(0x10000, f.toString().codePointAt(0));
+
+        try {
+            f.format("%2.2c", 'c');
+            fail("should throw IllegalFormatPrecisionException");
+        } catch (IllegalFormatPrecisionException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        f.format("%C", 'w');
+        // error on RI, throw UnknownFormatConversionException
+        // RI do not support converter 'C'
+        assertEquals("W", f.toString());
+
+        f = new Formatter(Locale.JAPAN);
+        f.format("%Ced", 0x1111);
+        // error on RI, throw UnknownFormatConversionException
+        // RI do not support converter 'C'
+        assertEquals("\u1111ed", f.toString());
+    }
+    
+    
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for legal
+     *        Byte/Short/Integer/Long conversion type 'd'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionD() {
+        final Object[][] triple = { 
+                { 0,                "%d",                  "0" }, 
+                { 0,                "%10d",       "         0" }, 
+                { 0,                "%-1d",                "0" }, 
+                { 0,                "%+d",                "+0" }, 
+                { 0,                "% d",                " 0" }, 
+                { 0,                "%,d",                 "0" }, 
+                { 0,                "%(d",                 "0" }, 
+                { 0,                "%08d",         "00000000" }, 
+                { 0,                "%-+,(11d",  "+0         " }, 
+                { 0,                "%0 ,(11d",  " 0000000000" }, 
+
+                { (byte) 0xff,      "%d",                 "-1" }, 
+                { (byte) 0xff,      "%10d",       "        -1" }, 
+                { (byte) 0xff,      "%-1d",               "-1" }, 
+                { (byte) 0xff,      "%+d",                "-1" }, 
+                { (byte) 0xff,      "% d",                "-1" }, 
+                { (byte) 0xff,      "%,d",                "-1" }, 
+                { (byte) 0xff,      "%(d",               "(1)" }, 
+                { (byte) 0xff,      "%08d",         "-0000001" }, 
+                { (byte) 0xff,      "%-+,(11d",  "(1)        " }, 
+                { (byte) 0xff,      "%0 ,(11d",  "(000000001)" }, 
+                
+                { (short) 0xf123,   "%d",              "-3805" }, 
+                { (short) 0xf123,   "%10d",       "     -3805" }, 
+                { (short) 0xf123,   "%-1d",            "-3805" }, 
+                { (short) 0xf123,   "%+d",             "-3805" }, 
+                { (short) 0xf123,   "% d",             "-3805" }, 
+                { (short) 0xf123,   "%,d",            "-3.805" }, 
+                { (short) 0xf123,   "%(d",            "(3805)" }, 
+                { (short) 0xf123,   "%08d",         "-0003805" }, 
+                { (short) 0xf123,   "%-+,(11d",  "(3.805)    " }, 
+                { (short) 0xf123,   "%0 ,(11d",  "(00003.805)" }, 
+                
+                {  0x123456,        "%d",            "1193046" }, 
+                {  0x123456,        "%10d",       "   1193046" }, 
+                {  0x123456,        "%-1d",          "1193046" }, 
+                {  0x123456,        "%+d",          "+1193046" }, 
+                {  0x123456,        "% d",          " 1193046" }, 
+                {  0x123456,        "%,d",         "1.193.046" }, 
+                {  0x123456,        "%(d",           "1193046" }, 
+                {  0x123456,        "%08d",         "01193046" }, 
+                {  0x123456,        "%-+,(11d",  "+1.193.046 " }, 
+                {  0x123456,        "%0 ,(11d",  " 01.193.046" }, 
+                
+                { -3,               "%d",                 "-3" }, 
+                { -3,               "%10d",       "        -3" }, 
+                { -3,               "%-1d",               "-3" }, 
+                { -3,               "%+d",                "-3" }, 
+                { -3,               "% d",                "-3" }, 
+                { -3,               "%,d",                "-3" }, 
+                { -3,               "%(d",               "(3)" }, 
+                { -3,               "%08d",         "-0000003" }, 
+                { -3,               "%-+,(11d",  "(3)        " }, 
+                { -3,               "%0 ,(11d",  "(000000003)" },
+                
+                { 0x7654321L,       "%d",          "124076833" }, 
+                { 0x7654321L,       "%10d",       " 124076833" }, 
+                { 0x7654321L,       "%-1d",        "124076833" }, 
+                { 0x7654321L,       "%+d",        "+124076833" }, 
+                { 0x7654321L,       "% d",        " 124076833" }, 
+                { 0x7654321L,       "%,d",       "124.076.833" }, 
+                { 0x7654321L,       "%(d",         "124076833" }, 
+                { 0x7654321L,       "%08d",        "124076833" }, 
+                { 0x7654321L,       "%-+,(11d", "+124.076.833" }, 
+                { 0x7654321L,       "%0 ,(11d", " 124.076.833" }, 
+                
+                { -1L,              "%d",                 "-1" }, 
+                { -1L,              "%10d",       "        -1" }, 
+                { -1L,              "%-1d",               "-1" }, 
+                { -1L,              "%+d",                "-1" }, 
+                { -1L,              "% d",                "-1" }, 
+                { -1L,              "%,d",                "-1" }, 
+                { -1L,              "%(d",               "(1)" }, 
+                { -1L,              "%08d",         "-0000001" }, 
+                { -1L,              "%-+,(11d",  "(1)        " }, 
+                { -1L,              "%0 ,(11d",  "(000000001)" }, 
+                };
+
+        final int input = 0;
+        final int pattern = 1;
+        final int output = 2;
+        Formatter f;
+        for (int i = 0; i < triple.length; i++) {
+            f = new Formatter(Locale.GERMAN);
+            f.format((String) triple[i][pattern],
+                    triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
+                    + i + "]:" + triple[i][pattern], triple[i][output], f
+                    .toString());
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for legal
+     *        Byte/Short/Integer/Long conversion type 'o'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionO() {
+        final Object[][] triple = { 
+                { 0,                "%o",                 "0" }, 
+                { 0,                "%-6o",          "0     " }, 
+                { 0,                "%08o",        "00000000" }, 
+                { 0,                "%#o",               "00" }, 
+                { 0,                "%0#11o",   "00000000000" }, 
+                { 0,                "%-#9o",      "00       " }, 
+
+                { (byte) 0xff,      "%o",               "377" }, 
+                { (byte) 0xff,      "%-6o",          "377   " }, 
+                { (byte) 0xff,      "%08o",        "00000377" }, 
+                { (byte) 0xff,      "%#o",             "0377" }, 
+                { (byte) 0xff,      "%0#11o",   "00000000377" }, 
+                { (byte) 0xff,      "%-#9o",      "0377     " }, 
+                
+                { (short) 0xf123,   "%o",            "170443" }, 
+                { (short) 0xf123,   "%-6o",          "170443" }, 
+                { (short) 0xf123,   "%08o",        "00170443" }, 
+                { (short) 0xf123,   "%#o",          "0170443" }, 
+                { (short) 0xf123,   "%0#11o",   "00000170443" }, 
+                { (short) 0xf123,   "%-#9o",      "0170443  " }, 
+                
+                {  0x123456,        "%o",           "4432126" }, 
+                {  0x123456,        "%-6o",         "4432126" }, 
+                {  0x123456,        "%08o",        "04432126" }, 
+                {  0x123456,        "%#o",         "04432126" }, 
+                {  0x123456,        "%0#11o",   "00004432126" }, 
+                {  0x123456,        "%-#9o",      "04432126 " }, 
+                
+                { -3,               "%o",       "37777777775" }, 
+                { -3,               "%-6o",     "37777777775" }, 
+                { -3,               "%08o",     "37777777775" }, 
+                { -3,               "%#o",     "037777777775" }, 
+                { -3,               "%0#11o",  "037777777775" }, 
+                { -3,               "%-#9o",   "037777777775" }, 
+                
+                { 0x7654321L,       "%o",          "731241441" }, 
+                { 0x7654321L,       "%-6o",        "731241441" }, 
+                { 0x7654321L,       "%08o",        "731241441" }, 
+                { 0x7654321L,       "%#o",        "0731241441" }, 
+                { 0x7654321L,       "%0#11o",    "00731241441" }, 
+                { 0x7654321L,       "%-#9o",      "0731241441" }, 
+                
+                { -1L,              "%o",       "1777777777777777777777" }, 
+                { -1L,              "%-6o",     "1777777777777777777777" }, 
+                { -1L,              "%08o",     "1777777777777777777777" }, 
+                { -1L,              "%#o",     "01777777777777777777777" }, 
+                { -1L,              "%0#11o",  "01777777777777777777777" }, 
+                { -1L,              "%-#9o",   "01777777777777777777777" }, 
+                };
+
+        final int input = 0;
+        final int pattern = 1;
+        final int output = 2;
+        Formatter f;
+        for (int i = 0; i < triple.length; i++) {
+            f = new Formatter(Locale.ITALY);
+            f.format((String) triple[i][pattern],
+                    triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
+                    + i + "]:" + triple[i][pattern], triple[i][output], f
+                    .toString());
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for legal
+     *        Byte/Short/Integer/Long conversion type 'x' and 'X'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionX() {
+        final Object[][] triple = { 
+                { 0,                "%x",                 "0" }, 
+                { 0,                "%-8x",        "0       " }, 
+                { 0,                "%06x",          "000000" }, 
+                { 0,                "%#x",              "0x0" }, 
+                { 0,                "%0#12x",  "0x0000000000" }, 
+                { 0,                "%-#9x",      "0x0      " }, 
+
+                { (byte) 0xff,      "%x",                "ff" }, 
+                { (byte) 0xff,      "%-8x",        "ff      " }, 
+                { (byte) 0xff,      "%06x",          "0000ff" }, 
+                { (byte) 0xff,      "%#x",             "0xff" }, 
+                { (byte) 0xff,      "%0#12x",  "0x00000000ff" }, 
+                { (byte) 0xff,      "%-#9x",      "0xff     " }, 
+                
+                { (short) 0xf123,   "%x",              "f123" }, 
+                { (short) 0xf123,   "%-8x",        "f123    " }, 
+                { (short) 0xf123,   "%06x",          "00f123" }, 
+                { (short) 0xf123,   "%#x",           "0xf123" }, 
+                { (short) 0xf123,   "%0#12x",  "0x000000f123" }, 
+                { (short) 0xf123,   "%-#9x",      "0xf123   " }, 
+                
+                {  0x123456,        "%x",            "123456" }, 
+                {  0x123456,        "%-8x",        "123456  " }, 
+                {  0x123456,        "%06x",          "123456" }, 
+                {  0x123456,        "%#x",         "0x123456" }, 
+                {  0x123456,        "%0#12x",  "0x0000123456" }, 
+                {  0x123456,        "%-#9x",      "0x123456 " }, 
+                
+                { -3,               "%x",          "fffffffd" }, 
+                { -3,               "%-8x",        "fffffffd" }, 
+                { -3,               "%06x",        "fffffffd" }, 
+                { -3,               "%#x",       "0xfffffffd" }, 
+                { -3,               "%0#12x",  "0x00fffffffd" }, 
+                { -3,               "%-#9x",     "0xfffffffd" }, 
+                
+                { 0x7654321L,       "%x",          "7654321" }, 
+                { 0x7654321L,       "%-8x",       "7654321 " }, 
+                { 0x7654321L,       "%06x",        "7654321" }, 
+                { 0x7654321L,       "%#x",       "0x7654321" }, 
+                { 0x7654321L,       "%0#12x", "0x0007654321" }, 
+                { 0x7654321L,       "%-#9x",     "0x7654321" }, 
+                
+                { -1L,              "%x",       "ffffffffffffffff" }, 
+                { -1L,              "%-8x",     "ffffffffffffffff" }, 
+                { -1L,              "%06x",     "ffffffffffffffff" }, 
+                { -1L,              "%#x",    "0xffffffffffffffff" }, 
+                { -1L,              "%0#12x", "0xffffffffffffffff" }, 
+                { -1L,              "%-#9x",  "0xffffffffffffffff" }, 
+                };
+
+        final int input = 0;
+        final int pattern = 1;
+        final int output = 2;
+        Formatter f;
+        for (int i = 0; i < triple.length; i++) {
+            f = new Formatter(Locale.FRANCE);
+            f.format((String) triple[i][pattern],
+                    triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
+                    + i + "]:" + triple[i][pattern], triple[i][output], f
+                    .toString());
+            
+            f = new Formatter(Locale.FRANCE);
+            f.format((String) triple[i][pattern],
+                    triple[i][input]);
+            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
+                    + i + "]:" + triple[i][pattern], triple[i][output], f
+                    .toString());
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for Date/Time
+     *        conversion
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_DateTimeConversion() {
+        Formatter f = null;
+        Date now = new Date(1147327147578L);
+
+        Calendar paris = Calendar.getInstance(TimeZone
+                .getTimeZone("Europe/Paris"), Locale.FRANCE);
+        paris.set(2006, 4, 8, 12, 0, 0);
+        paris.set(Calendar.MILLISECOND, 453);
+        Calendar china = Calendar.getInstance(
+                TimeZone.getTimeZone("GMT-08:00"), Locale.CHINA);
+        china.set(2006, 4, 8, 12, 0, 0);
+        china.set(Calendar.MILLISECOND, 609);
+
+        final Object[][] lowerCaseGermanTriple = {
+                {0L,                        'a', "Do."},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'a', "So."},  //$NON-NLS-2$
+                {-1000L,                    'a', "Do."},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'a', "Do."},  //$NON-NLS-2$
+                {paris,                     'a', "Mo."},  //$NON-NLS-2$
+                {china,                     'a', "Mo."},  //$NON-NLS-2$
+                {0L,                        'b', "Jan"},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'b', "Aug"},  //$NON-NLS-2$
+                {-1000L,                    'b', "Jan"},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'b', "Mai"},  //$NON-NLS-2$
+                {paris,                     'b', "Mai"},  //$NON-NLS-2$
+                {china,                     'b', "Mai"},  //$NON-NLS-2$
+                {0L,                        'c', "Do. Jan 01 08:00:00 GMT+08:00 1970"},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'c', "So. Aug 17 15:18:47 GMT+08:00 292278994"},  //$NON-NLS-2$
+                {-1000L,                    'c', "Do. Jan 01 07:59:59 GMT+08:00 1970"},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'c', "Do. Mai 11 13:59:07 GMT+08:00 2006"},  //$NON-NLS-2$
+                {paris,                     'c', "Mo. Mai 08 12:00:00 MESZ 2006"},  //$NON-NLS-2$
+                {china,                     'c', "Mo. Mai 08 12:00:00 GMT-08:00 2006"},  //$NON-NLS-2$
+                {0L,                        'd', "01"},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'd', "17"},  //$NON-NLS-2$
+                {-1000L,                    'd', "01"},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'd', "11"},  //$NON-NLS-2$
+                {paris,                     'd', "08"},  //$NON-NLS-2$
+                {china,                     'd', "08"},  //$NON-NLS-2$
+                {0L,                        'e', "1"},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'e', "17"},  //$NON-NLS-2$
+                {-1000L,                    'e', "1"},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'e', "11"},  //$NON-NLS-2$
+                {paris,                     'e', "8"},  //$NON-NLS-2$
+                {china,                     'e', "8"},  //$NON-NLS-2$
+                {0L,                        'h', "Jan"},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'h', "Aug"},  //$NON-NLS-2$
+                {-1000L,                    'h', "Jan"},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'h', "Mai"},  //$NON-NLS-2$
+                {paris,                     'h', "Mai"},  //$NON-NLS-2$
+                {china,                     'h', "Mai"},  //$NON-NLS-2$
+                {0L,                        'j', "001"},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'j', "229"},  //$NON-NLS-2$
+                {-1000L,                    'j', "001"},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'j', "131"},  //$NON-NLS-2$
+                {paris,                     'j', "128"},  //$NON-NLS-2$
+                {china,                     'j', "128"},  //$NON-NLS-2$
+                {0L,                        'k', "8"},  //$NON-NLS-2$
+                {Long.MAX_VALUE,            'k', "15"},  //$NON-NLS-2$
+                {-1000L,                    'k', "7"},  //$NON-NLS-2$
+                {new Date(1147327147578L),  'k', "13"},  //$NON-NLS-2$
+                {paris,                     'k', "12"},  //$NON-NLS-2$
+                {china,                     'k', "12"},  //$NON-NLS-2$
+                {0L,                        'l', "8"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'l', "3"}, //$NON-NLS-2$
+                {-1000L,                    'l', "7"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'l', "1"}, //$NON-NLS-2$
+                {paris,                     'l', "12"}, //$NON-NLS-2$
+                {china,                     'l', "12"}, //$NON-NLS-2$
+                {0L,                        'm', "01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'm', "08"}, //$NON-NLS-2$
+                {-1000L,                    'm', "01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'm', "05"}, //$NON-NLS-2$
+                {paris,                     'm', "05"}, //$NON-NLS-2$
+                {china,                     'm', "05"}, //$NON-NLS-2$
+                {0L,                        'p', "vorm."}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'p', "nachm."}, //$NON-NLS-2$
+                {-1000L,                    'p', "vorm."}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'p', "nachm."}, //$NON-NLS-2$
+                {paris,                     'p', "nachm."}, //$NON-NLS-2$
+                {china,                     'p', "nachm."}, //$NON-NLS-2$
+                {0L,                        'r', "08:00:00 vorm."}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'r', "03:18:47 nachm."}, //$NON-NLS-2$
+                {-1000L,                    'r', "07:59:59 vorm."}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'r', "01:59:07 nachm."}, //$NON-NLS-2$
+                {paris,                     'r', "12:00:00 nachm."}, //$NON-NLS-2$
+                {china,                     'r', "12:00:00 nachm."}, //$NON-NLS-2$
+                {0L,                        's', "0"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            's', "9223372036854775"}, //$NON-NLS-2$
+                {-1000L,                    's', "-1"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  's', "1147327147"}, //$NON-NLS-2$
+                {paris,                     's', "1147082400"}, //$NON-NLS-2$
+                {china,                     's', "1147118400"}, //$NON-NLS-2$
+                {0L,                        'y', "70"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'y', "94"}, //$NON-NLS-2$
+                {-1000L,                    'y', "70"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'y', "06"}, //$NON-NLS-2$
+                {paris,                     'y', "06"}, //$NON-NLS-2$
+                {china,                     'y', "06"}, //$NON-NLS-2$
+                {0L,                        'z', "+0800"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'z', "+0800"}, //$NON-NLS-2$
+                {-1000L,                    'z', "+0800"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'z', "+0800"}, //$NON-NLS-2$
+                {paris,                     'z', "+0100"}, //$NON-NLS-2$
+                {china,                     'z', "-0800"}, //$NON-NLS-2$
+                
+        };
+        
+        final Object[][] lowerCaseFranceTriple = {
+                {0L,                        'a', "jeu."}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'a', "dim."}, //$NON-NLS-2$
+                {-1000L,                    'a', "jeu."}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'a', "jeu."}, //$NON-NLS-2$
+                {paris,                     'a', "lun."}, //$NON-NLS-2$
+                {china,                     'a', "lun."}, //$NON-NLS-2$
+                {0L,                        'b', "janv."}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'b', "ao\u00fbt"}, //$NON-NLS-2$
+                {-1000L,                    'b', "janv."}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'b', "mai"}, //$NON-NLS-2$
+                {paris,                     'b', "mai"}, //$NON-NLS-2$
+                {china,                     'b', "mai"}, //$NON-NLS-2$
+                {0L,                        'c', "jeu. janv. 01 08:00:00 UTC+08:00 1970"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'c', "dim. ao\u00fbt 17 15:18:47 UTC+08:00 292278994"}, //$NON-NLS-2$
+                {-1000L,                    'c', "jeu. janv. 01 07:59:59 UTC+08:00 1970"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'c', "jeu. mai 11 13:59:07 UTC+08:00 2006"}, //$NON-NLS-2$
+                {paris,                     'c', "lun. mai 08 12:00:00 HAEC 2006"}, //$NON-NLS-2$
+                {china,                     'c', "lun. mai 08 12:00:00 UTC-08:00 2006"}, //$NON-NLS-2$
+                {0L,                        'd', "01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'd', "17"}, //$NON-NLS-2$
+                {-1000L,                    'd', "01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'd', "11"}, //$NON-NLS-2$
+                {paris,                     'd', "08"}, //$NON-NLS-2$
+                {china,                     'd', "08"}, //$NON-NLS-2$
+                {0L,                        'e', "1"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'e', "17"}, //$NON-NLS-2$
+                {-1000L,                    'e', "1"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'e', "11"}, //$NON-NLS-2$
+                {paris,                     'e', "8"}, //$NON-NLS-2$
+                {china,                     'e', "8"}, //$NON-NLS-2$
+                {0L,                        'h', "janv."}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'h', "ao\u00fbt"}, //$NON-NLS-2$
+                {-1000L,                    'h', "janv."}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'h', "mai"}, //$NON-NLS-2$
+                {paris,                     'h', "mai"}, //$NON-NLS-2$
+                {china,                     'h', "mai"}, //$NON-NLS-2$
+                {0L,                        'j', "001"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'j', "229"}, //$NON-NLS-2$
+                {-1000L,                    'j', "001"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'j', "131"}, //$NON-NLS-2$
+                {paris,                     'j', "128"}, //$NON-NLS-2$
+                {china,                     'j', "128"}, //$NON-NLS-2$
+                {0L,                        'k', "8"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'k', "15"}, //$NON-NLS-2$
+                {-1000L,                    'k', "7"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'k', "13"}, //$NON-NLS-2$
+                {paris,                     'k', "12"}, //$NON-NLS-2$
+                {china,                     'k', "12"}, //$NON-NLS-2$
+                {0L,                        'l', "8"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'l', "3"}, //$NON-NLS-2$
+                {-1000L,                    'l', "7"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'l', "1"}, //$NON-NLS-2$
+                {paris,                     'l', "12"}, //$NON-NLS-2$
+                {china,                     'l', "12"}, //$NON-NLS-2$
+                {0L,                        'm', "01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'm', "08"}, //$NON-NLS-2$
+                {-1000L,                    'm', "01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'm', "05"}, //$NON-NLS-2$
+                {paris,                     'm', "05"}, //$NON-NLS-2$
+                {china,                     'm', "05"}, //$NON-NLS-2$
+                {0L,                        'p', "am"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'p', "pm"}, //$NON-NLS-2$
+                {-1000L,                    'p', "am"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'p', "pm"}, //$NON-NLS-2$
+                {paris,                     'p', "pm"}, //$NON-NLS-2$
+                {china,                     'p', "pm"}, //$NON-NLS-2$
+                {0L,                        'r', "08:00:00 AM"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'r', "03:18:47 PM"}, //$NON-NLS-2$
+                {-1000L,                    'r', "07:59:59 AM"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'r', "01:59:07 PM"}, //$NON-NLS-2$
+                {paris,                     'r', "12:00:00 PM"}, //$NON-NLS-2$
+                {china,                     'r', "12:00:00 PM"}, //$NON-NLS-2$
+                {0L,                        's', "0"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            's', "9223372036854775"}, //$NON-NLS-2$
+                {-1000L,                    's', "-1"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  's', "1147327147"}, //$NON-NLS-2$
+                {paris,                     's', "1147082400"}, //$NON-NLS-2$
+                {china,                     's', "1147118400"}, //$NON-NLS-2$
+                {0L,                        'y', "70"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'y', "94"}, //$NON-NLS-2$
+                {-1000L,                    'y', "70"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'y', "06"}, //$NON-NLS-2$
+                {paris,                     'y', "06"}, //$NON-NLS-2$
+                {china,                     'y', "06"}, //$NON-NLS-2$
+                {0L,                        'z', "+0800"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'z', "+0800"}, //$NON-NLS-2$
+                {-1000L,                    'z', "+0800"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'z', "+0800"}, //$NON-NLS-2$
+                {paris,                     'z', "+0100"}, //$NON-NLS-2$
+                {china,                     'z', "-0800"}, //$NON-NLS-2$
+                
+        };
+        
+        final Object[][] lowerCaseJapanTriple = {
+                {0L,                        'a', "\u6728"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'a', "\u65e5"}, //$NON-NLS-2$
+                {-1000L,                    'a', "\u6728"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'a', "\u6728"}, //$NON-NLS-2$
+                {paris,                     'a', "\u6708"}, //$NON-NLS-2$
+                {china,                     'a', "\u6708"}, //$NON-NLS-2$
+                {0L,                        'b', "1\u6708"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'b', "8\u6708"}, //$NON-NLS-2$
+                {-1000L,                    'b', "1\u6708"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'b', "5\u6708"}, //$NON-NLS-2$
+                {paris,                     'b', "5\u6708"}, //$NON-NLS-2$
+                {china,                     'b', "5\u6708"}, //$NON-NLS-2$
+                {0L,                        'c', "\u6728 1\u6708 01 08:00:00 GMT+08:00 1970"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'c', "\u65e5 8\u6708 17 15:18:47 GMT+08:00 292278994"}, //$NON-NLS-2$
+                {-1000L,                    'c', "\u6728 1\u6708 01 07:59:59 GMT+08:00 1970"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'c', "\u6728 5\u6708 11 13:59:07 GMT+08:00 2006"}, //$NON-NLS-2$
+                {paris,                     'c', "\u6708 5\u6708 08 12:00:00 GMT+02:00 2006"}, //$NON-NLS-2$
+                {china,                     'c', "\u6708 5\u6708 08 12:00:00 GMT-08:00 2006"}, //$NON-NLS-2$
+                {0L,                        'd', "01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'd', "17"}, //$NON-NLS-2$
+                {-1000L,                    'd', "01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'd', "11"}, //$NON-NLS-2$
+                {paris,                     'd', "08"}, //$NON-NLS-2$
+                {china,                     'd', "08"}, //$NON-NLS-2$
+                {0L,                        'e', "1"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'e', "17"}, //$NON-NLS-2$
+                {-1000L,                    'e', "1"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'e', "11"}, //$NON-NLS-2$
+                {paris,                     'e', "8"}, //$NON-NLS-2$
+                {china,                     'e', "8"}, //$NON-NLS-2$
+                {0L,                        'h', "1\u6708"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'h', "8\u6708"}, //$NON-NLS-2$
+                {-1000L,                    'h', "1\u6708"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'h', "5\u6708"}, //$NON-NLS-2$
+                {paris,                     'h', "5\u6708"}, //$NON-NLS-2$
+                {china,                     'h', "5\u6708"}, //$NON-NLS-2$
+                {0L,                        'j', "001"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'j', "229"}, //$NON-NLS-2$
+                {-1000L,                    'j', "001"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'j', "131"}, //$NON-NLS-2$
+                {paris,                     'j', "128"}, //$NON-NLS-2$
+                {china,                     'j', "128"}, //$NON-NLS-2$
+                {0L,                        'k', "8"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'k', "15"}, //$NON-NLS-2$
+                {-1000L,                    'k', "7"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'k', "13"}, //$NON-NLS-2$
+                {paris,                     'k', "12"}, //$NON-NLS-2$
+                {china,                     'k', "12"}, //$NON-NLS-2$
+                {0L,                        'l', "8"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'l', "3"}, //$NON-NLS-2$
+                {-1000L,                    'l', "7"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'l', "1"}, //$NON-NLS-2$
+                {paris,                     'l', "12"}, //$NON-NLS-2$
+                {china,                     'l', "12"}, //$NON-NLS-2$
+                {0L,                        'm', "01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'm', "08"}, //$NON-NLS-2$
+                {-1000L,                    'm', "01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'm', "05"}, //$NON-NLS-2$
+                {paris,                     'm', "05"}, //$NON-NLS-2$
+                {china,                     'm', "05"}, //$NON-NLS-2$
+                {0L,                        'p', "\u5348\u524d"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'p', "\u5348\u5f8c"}, //$NON-NLS-2$
+                {-1000L,                    'p', "\u5348\u524d"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'p', "\u5348\u5f8c"}, //$NON-NLS-2$
+                {paris,                     'p', "\u5348\u5f8c"}, //$NON-NLS-2$
+                {china,                     'p', "\u5348\u5f8c"}, //$NON-NLS-2$
+                {0L,                        'r', "08:00:00 \u5348\u524d"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'r', "03:18:47 \u5348\u5f8c"}, //$NON-NLS-2$
+                {-1000L,                    'r', "07:59:59 \u5348\u524d"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'r', "01:59:07 \u5348\u5f8c"}, //$NON-NLS-2$
+                {paris,                     'r', "12:00:00 \u5348\u5f8c"}, //$NON-NLS-2$
+                {china,                     'r', "12:00:00 \u5348\u5f8c"}, //$NON-NLS-2$
+                {0L,                        's', "0"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            's', "9223372036854775"}, //$NON-NLS-2$
+                {-1000L,                    's', "-1"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  's', "1147327147"}, //$NON-NLS-2$
+                {paris,                     's', "1147082400"}, //$NON-NLS-2$
+                {china,                     's', "1147118400"}, //$NON-NLS-2$
+                {0L,                        'y', "70"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'y', "94"}, //$NON-NLS-2$
+                {-1000L,                    'y', "70"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'y', "06"}, //$NON-NLS-2$
+                {paris,                     'y', "06"}, //$NON-NLS-2$
+                {china,                     'y', "06"}, //$NON-NLS-2$
+                {0L,                        'z', "+0800"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'z', "+0800"}, //$NON-NLS-2$
+                {-1000L,                    'z', "+0800"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'z', "+0800"}, //$NON-NLS-2$
+                {paris,                     'z', "+0100"}, //$NON-NLS-2$
+                {china,                     'z', "-0800"}, //$NON-NLS-2$
+        };
+
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+        for (int i = 0; i < 90; i++) {
+            // go through legal conversion 
+            String formatSpecifier = "%t" + lowerCaseGermanTriple[i][pattern]; //$NON-NLS-2$
+            String formatSpecifierUpper = "%T" + lowerCaseGermanTriple[i][pattern]; //$NON-NLS-2$
+            // test '%t'
+            f = new Formatter(Locale.GERMAN);
+            f.format(formatSpecifier, lowerCaseGermanTriple[i][input]);
+            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
+                            + " Argument: " + lowerCaseGermanTriple[i][input], //$NON-NLS-2$
+                            lowerCaseGermanTriple[i][output], f.toString());
+
+            f = new Formatter(Locale.GERMAN);
+            f.format(Locale.FRANCE, formatSpecifier, lowerCaseFranceTriple[i][input]);
+            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
+                            + " Argument: " + lowerCaseFranceTriple[i][input], //$NON-NLS-2$
+                            lowerCaseFranceTriple[i][output], f.toString());
+
+            f = new Formatter(Locale.GERMAN);
+            f.format(Locale.JAPAN, formatSpecifier, lowerCaseJapanTriple[i][input]);
+            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
+                            + " Argument: " + lowerCaseJapanTriple[i][input], //$NON-NLS-2$
+                            lowerCaseJapanTriple[i][output], f.toString());
+
+            // test '%T'
+            f = new Formatter(Locale.GERMAN);
+            f.format(formatSpecifierUpper, lowerCaseGermanTriple[i][input]);
+            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
+                            + " Argument: " + lowerCaseGermanTriple[i][input], //$NON-NLS-2$
+                            ((String)lowerCaseGermanTriple[i][output])
+                                    .toUpperCase(Locale.US), f.toString());
+
+            f = new Formatter(Locale.GERMAN);
+            f.format(Locale.FRANCE, formatSpecifierUpper, lowerCaseFranceTriple[i][input]);
+            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
+                            + " Argument: " + lowerCaseFranceTriple[i][input], //$NON-NLS-2$
+                            ((String)lowerCaseFranceTriple[i][output])
+                                    .toUpperCase(Locale.US), f.toString());
+
+            f = new Formatter(Locale.GERMAN);
+            f.format(Locale.JAPAN, formatSpecifierUpper, lowerCaseJapanTriple[i][input]);
+            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
+                            + " Argument: " + lowerCaseJapanTriple[i][input], //$NON-NLS-2$
+                            ((String)lowerCaseJapanTriple[i][output])
+                                    .toUpperCase(Locale.US), f.toString());
+        }
+
+        final Object[][] upperCaseGermanTriple = {
+                {0L,                        'A', "Donnerstag"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'A', "Sonntag"}, //$NON-NLS-2$
+                {-1000L,                    'A', "Donnerstag"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'A', "Donnerstag"}, //$NON-NLS-2$
+                {paris,                     'A', "Montag"}, //$NON-NLS-2$
+                {china,                     'A', "Montag"}, //$NON-NLS-2$
+                {0L,                        'B', "Januar"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'B', "August"}, //$NON-NLS-2$
+                {-1000L,                    'B', "Januar"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'B', "Mai"}, //$NON-NLS-2$
+                {paris,                     'B', "Mai"}, //$NON-NLS-2$ 
+                {china,                     'B', "Mai"}, //$NON-NLS-2$
+                {0L,                        'C', "19"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'C', "2922789"}, //$NON-NLS-2$
+                {-1000L,                    'C', "19"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'C', "20"}, //$NON-NLS-2$
+                {paris,                     'C', "20"}, //$NON-NLS-2$
+                {china,                     'C', "20"}, //$NON-NLS-2$
+                {0L,                        'D', "01/01/70"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'D', "08/17/94"}, //$NON-NLS-2$
+                {-1000L,                    'D', "01/01/70"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'D', "05/11/06"}, //$NON-NLS-2$
+                {paris,                     'D', "05/08/06"}, //$NON-NLS-2$
+                {china,                     'D', "05/08/06"}, //$NON-NLS-2$
+                {0L,                        'F', "1970-01-01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'F', "292278994-08-17"}, //$NON-NLS-2$
+                {-1000L,                    'F', "1970-01-01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'F', "2006-05-11"}, //$NON-NLS-2$
+                {paris,                     'F', "2006-05-08"}, //$NON-NLS-2$
+                {china,                     'F', "2006-05-08"}, //$NON-NLS-2$
+                {0L,                        'H', "08"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'H', "15"}, //$NON-NLS-2$
+                {-1000L,                    'H', "07"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'H', "13"}, //$NON-NLS-2$
+                {paris,                     'H', "12"}, //$NON-NLS-2$
+                {china,                     'H', "12"}, //$NON-NLS-2$
+                {0L,                        'I', "08"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'I', "03"}, //$NON-NLS-2$
+                {-1000L,                    'I', "07"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'I', "01"}, //$NON-NLS-2$
+                {paris,                     'I', "12"}, //$NON-NLS-2$
+                {china,                     'I', "12"}, //$NON-NLS-2$
+                {0L,                        'L', "000"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'L', "807"}, //$NON-NLS-2$
+                {-1000L,                    'L', "000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'L', "578"}, //$NON-NLS-2$
+                {paris,                     'L', "453"}, //$NON-NLS-2$
+                {china,                     'L', "609"}, //$NON-NLS-2$
+                {0L,                        'M', "00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'M', "18"}, //$NON-NLS-2$
+                {-1000L,                    'M', "59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'M', "59"}, //$NON-NLS-2$
+                {paris,                     'M', "00"}, //$NON-NLS-2$
+                {china,                     'M', "00"}, //$NON-NLS-2$
+                {0L,                        'N', "000000000"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'N', "807000000"}, //$NON-NLS-2$
+                {-1000L,                    'N', "000000000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'N', "578000000"}, //$NON-NLS-2$
+                {paris,                     'N', "609000000"}, //$NON-NLS-2$
+                {china,                     'N', "609000000"}, //$NON-NLS-2$
+                {0L,                        'Q', "0"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Q', "9223372036854775807"}, //$NON-NLS-2$
+                {-1000L,                    'Q', "-1000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Q', "1147327147578"}, //$NON-NLS-2$
+                {paris,                     'Q', "1147082400453"}, //$NON-NLS-2$
+                {china,                     'Q', "1147118400609"}, //$NON-NLS-2$
+                {0L,                        'R', "08:00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'R', "15:18"}, //$NON-NLS-2$
+                {-1000L,                    'R', "07:59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'R', "13:59"}, //$NON-NLS-2$
+                {paris,                     'R', "12:00"}, //$NON-NLS-2$
+                {china,                     'R', "12:00"}, //$NON-NLS-2$
+                {0L,                        'S', "00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'S', "47"}, //$NON-NLS-2$
+                {-1000L,                    'S', "59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'S', "07"}, //$NON-NLS-2$
+                {paris,                     'S', "00"}, //$NON-NLS-2$
+                {china,                     'S', "00"}, //$NON-NLS-2$
+                {0L,                        'T', "08:00:00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'T', "15:18:47"}, //$NON-NLS-2$
+                {-1000L,                    'T', "07:59:59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'T', "13:59:07"}, //$NON-NLS-2$
+                {paris,                     'T', "12:00:00"}, //$NON-NLS-2$
+                {china,                     'T', "12:00:00"}, //$NON-NLS-2$
+                {0L,                        'Y', "1970"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Y', "292278994"}, //$NON-NLS-2$
+                {-1000L,                    'Y', "1970"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Y', "2006"}, //$NON-NLS-2$
+                {paris,                     'Y', "2006"}, //$NON-NLS-2$
+                {china,                     'Y', "2006"}, //$NON-NLS-2$
+                {0L,                        'Z', "CST"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Z', "CST"}, //$NON-NLS-2$
+                {-1000L,                    'Z', "CST"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Z', "CST"}, //$NON-NLS-2$
+                {paris,                     'Z', "CEST"}, //$NON-NLS-2$
+                {china,                     'Z', "GMT-08:00"}, //$NON-NLS-2$
+                
+        };
+        
+        final Object[][] upperCaseFranceTriple = {
+                {0L,                        'A', "jeudi"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'A', "dimanche"}, //$NON-NLS-2$
+                {-1000L,                    'A', "jeudi"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'A', "jeudi"}, //$NON-NLS-2$
+                {paris,                     'A', "lundi"}, //$NON-NLS-2$
+                {china,                     'A', "lundi"}, //$NON-NLS-2$
+                {0L,                        'B', "janvier"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'B', "ao\u00fbt"}, //$NON-NLS-2$
+                {-1000L,                    'B', "janvier"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'B', "mai"}, //$NON-NLS-2$
+                {paris,                     'B', "mai"}, //$NON-NLS-2$
+                {china,                     'B', "mai"}, //$NON-NLS-2$
+                {0L,                        'C', "19"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'C', "2922789"}, //$NON-NLS-2$
+                {-1000L,                    'C', "19"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'C', "20"}, //$NON-NLS-2$
+                {paris,                     'C', "20"}, //$NON-NLS-2$
+                {china,                     'C', "20"}, //$NON-NLS-2$
+                {0L,                        'D', "01/01/70"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'D', "08/17/94"}, //$NON-NLS-2$
+                {-1000L,                    'D', "01/01/70"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'D', "05/11/06"}, //$NON-NLS-2$
+                {paris,                     'D', "05/08/06"}, //$NON-NLS-2$
+                {china,                     'D', "05/08/06"}, //$NON-NLS-2$
+                {0L,                        'F', "1970-01-01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'F', "292278994-08-17"}, //$NON-NLS-2$
+                {-1000L,                    'F', "1970-01-01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'F', "2006-05-11"}, //$NON-NLS-2$
+                {paris,                     'F', "2006-05-08"}, //$NON-NLS-2$
+                {china,                     'F', "2006-05-08"}, //$NON-NLS-2$
+                {0L,                        'H', "08"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'H', "15"}, //$NON-NLS-2$
+                {-1000L,                    'H', "07"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'H', "13"}, //$NON-NLS-2$
+                {paris,                     'H', "12"}, //$NON-NLS-2$
+                {china,                     'H', "12"}, //$NON-NLS-2$
+                {0L,                        'I', "08"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'I', "03"}, //$NON-NLS-2$
+                {-1000L,                    'I', "07"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'I', "01"}, //$NON-NLS-2$
+                {paris,                     'I', "12"}, //$NON-NLS-2$
+                {china,                     'I', "12"}, //$NON-NLS-2$
+                {0L,                        'L', "000"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'L', "807"}, //$NON-NLS-2$
+                {-1000L,                    'L', "000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'L', "578"}, //$NON-NLS-2$
+                {paris,                     'L', "453"}, //$NON-NLS-2$
+                {china,                     'L', "609"}, //$NON-NLS-2$
+                {0L,                        'M', "00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'M', "18"}, //$NON-NLS-2$
+                {-1000L,                    'M', "59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'M', "59"}, //$NON-NLS-2$
+                {paris,                     'M', "00"}, //$NON-NLS-2$
+                {china,                     'M', "00"}, //$NON-NLS-2$
+                {0L,                        'N', "000000000"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'N', "807000000"}, //$NON-NLS-2$
+                {-1000L,                    'N', "000000000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'N', "578000000"}, //$NON-NLS-2$
+                {paris,                     'N', "453000000"}, //$NON-NLS-2$
+                {china,                     'N', "468000000"}, //$NON-NLS-2$
+                {0L,                        'Q', "0"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Q', "9223372036854775807"}, //$NON-NLS-2$
+                {-1000L,                    'Q', "-1000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Q', "1147327147578"}, //$NON-NLS-2$
+                {paris,                     'Q', "1147082400453"}, //$NON-NLS-2$
+                {china,                     'Q', "1147118400609"}, //$NON-NLS-2$
+                {0L,                        'R', "08:00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'R', "15:18"}, //$NON-NLS-2$
+                {-1000L,                    'R', "07:59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'R', "13:59"}, //$NON-NLS-2$
+                {paris,                     'R', "12:00"}, //$NON-NLS-2$
+                {china,                     'R', "12:00"}, //$NON-NLS-2$
+                {0L,                        'S', "00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'S', "47"}, //$NON-NLS-2$
+                {-1000L,                    'S', "59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'S', "07"}, //$NON-NLS-2$
+                {paris,                     'S', "00"}, //$NON-NLS-2$
+                {china,                     'S', "00"}, //$NON-NLS-2$
+                {0L,                        'T', "08:00:00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'T', "15:18:47"}, //$NON-NLS-2$
+                {-1000L,                    'T', "07:59:59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'T', "13:59:07"}, //$NON-NLS-2$
+                {paris,                     'T', "12:00:00"}, //$NON-NLS-2$
+                {china,                     'T', "12:00:00"}, //$NON-NLS-2$
+                {0L,                        'Y', "1970"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Y', "292278994"}, //$NON-NLS-2$
+                {-1000L,                    'Y', "1970"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Y', "2006"}, //$NON-NLS-2$
+                {paris,                     'Y', "2006"}, //$NON-NLS-2$
+                {china,                     'Y', "2006"}, //$NON-NLS-2$
+                {0L,                        'Z', "CST"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Z', "CST"}, //$NON-NLS-2$
+                {-1000L,                    'Z', "CST"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Z', "CST"}, //$NON-NLS-2$
+                {paris,                     'Z', "CEST"}, //$NON-NLS-2$
+                {china,                     'Z', "GMT-08:00"}, //$NON-NLS-2$
+                
+        };
+
+        final Object[][] upperCaseJapanTriple = {
+                {0L,                        'A', "\u6728\u66dc\u65e5"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'A', "\u65e5\u66dc\u65e5"}, //$NON-NLS-2$
+                {-1000L,                    'A', "\u6728\u66dc\u65e5"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'A', "\u6728\u66dc\u65e5"}, //$NON-NLS-2$
+                {paris,                     'A', "\u6708\u66dc\u65e5"}, //$NON-NLS-2$
+                {china,                     'A', "\u6708\u66dc\u65e5"}, //$NON-NLS-2$
+                {0L,                        'B', "1\u6708"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'B', "8\u6708"}, //$NON-NLS-2$
+                {-1000L,                    'B', "1\u6708"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'B', "5\u6708"}, //$NON-NLS-2$
+                {paris,                     'B', "5\u6708"}, //$NON-NLS-2$
+                {china,                     'B', "5\u6708"}, //$NON-NLS-2$
+                {0L,                        'C', "19"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'C', "2922789"}, //$NON-NLS-2$
+                {-1000L,                    'C', "19"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'C', "20"}, //$NON-NLS-2$ 
+                {paris,                     'C', "20"}, //$NON-NLS-2$
+                {china,                     'C', "20"}, //$NON-NLS-2$
+                {0L,                        'D', "01/01/70"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'D', "08/17/94"}, //$NON-NLS-2$
+                {-1000L,                    'D', "01/01/70"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'D', "05/11/06"}, //$NON-NLS-2$
+                {paris,                     'D', "05/08/06"}, //$NON-NLS-2$
+                {china,                     'D', "05/08/06"}, //$NON-NLS-2$
+                {0L,                        'F', "1970-01-01"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'F', "292278994-08-17"}, //$NON-NLS-2$
+                {-1000L,                    'F', "1970-01-01"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'F', "2006-05-11"}, //$NON-NLS-2$
+                {paris,                     'F', "2006-05-08"}, //$NON-NLS-2$
+                {china,                     'F', "2006-05-08"}, //$NON-NLS-2$
+                {0L,                        'H', "08"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'H', "15"}, //$NON-NLS-2$
+                {-1000L,                    'H', "07"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'H', "13"}, //$NON-NLS-2$
+                {paris,                     'H', "12"}, //$NON-NLS-2$
+                {china,                     'H', "12"}, //$NON-NLS-2$
+                {0L,                        'I', "08"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'I', "03"}, //$NON-NLS-2$
+                {-1000L,                    'I', "07"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'I', "01"}, //$NON-NLS-2$
+                {paris,                     'I', "12"}, //$NON-NLS-2$
+                {china,                     'I', "12"}, //$NON-NLS-2$
+                {0L,                        'L', "000"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'L', "807"}, //$NON-NLS-2$
+                {-1000L,                    'L', "000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'L', "578"}, //$NON-NLS-2$
+                {paris,                     'L', "453"}, //$NON-NLS-2$
+                {china,                     'L', "609"}, //$NON-NLS-2$
+                {0L,                        'M', "00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'M', "18"}, //$NON-NLS-2$
+                {-1000L,                    'M', "59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'M', "59"}, //$NON-NLS-2$
+                {paris,                     'M', "00"}, //$NON-NLS-2$
+                {china,                     'M', "00"}, //$NON-NLS-2$
+                {0L,                        'N', "000000000"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'N', "807000000"}, //$NON-NLS-2$
+                {-1000L,                    'N', "000000000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'N', "578000000"}, //$NON-NLS-2$
+                {paris,                     'N', "453000000"}, //$NON-NLS-2$
+                {china,                     'N', "468000000"}, //$NON-NLS-2$
+                {0L,                        'Q', "0"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Q', "9223372036854775807"}, //$NON-NLS-2$
+                {-1000L,                    'Q', "-1000"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Q', "1147327147578"}, //$NON-NLS-2$
+                {paris,                     'Q', "1147082400453"}, //$NON-NLS-2$
+                {china,                     'Q', "1147118400609"}, //$NON-NLS-2$
+                {0L,                        'R', "08:00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'R', "15:18"}, //$NON-NLS-2$
+                {-1000L,                    'R', "07:59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'R', "13:59"}, //$NON-NLS-2$
+                {paris,                     'R', "12:00"}, //$NON-NLS-2$
+                {china,                     'R', "12:00"}, //$NON-NLS-2$
+                {0L,                        'S', "00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'S', "47"}, //$NON-NLS-2$
+                {-1000L,                    'S', "59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'S', "07"}, //$NON-NLS-2$
+                {paris,                     'S', "00"}, //$NON-NLS-2$
+                {china,                     'S', "00"}, //$NON-NLS-2$
+                {0L,                        'T', "08:00:00"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'T', "15:18:47"}, //$NON-NLS-2$
+                {-1000L,                    'T', "07:59:59"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'T', "13:59:07"}, //$NON-NLS-2$
+                {paris,                     'T', "12:00:00"}, //$NON-NLS-2$
+                {china,                     'T', "12:00:00"}, //$NON-NLS-2$
+                {0L,                        'Y', "1970"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Y', "292278994"}, //$NON-NLS-2$
+                {-1000L,                    'Y', "1970"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Y', "2006"}, //$NON-NLS-2$
+                {paris,                     'Y', "2006"}, //$NON-NLS-2$
+                {china,                     'Y', "2006"}, //$NON-NLS-2$
+                {0L,                        'Z', "CST"}, //$NON-NLS-2$
+                {Long.MAX_VALUE,            'Z', "CST"}, //$NON-NLS-2$
+                {-1000L,                    'Z', "CST"}, //$NON-NLS-2$
+                {new Date(1147327147578L),  'Z', "CST"}, //$NON-NLS-2$
+                {paris,                     'Z', "CEST"}, //$NON-NLS-2$
+                {china,                     'Z', "GMT-08:00"}, //$NON-NLS-2$
+        };
+
+
+        for (int i = 0; i < 90; i++) {
+            String formatSpecifier = "%t" + upperCaseGermanTriple[i][pattern]; //$NON-NLS-2$
+            String formatSpecifierUpper = "%T" + upperCaseGermanTriple[i][pattern]; //$NON-NLS-2$
+                    if ((Character)upperCaseGermanTriple[i][pattern] == 'N') {
+                        // result can't be predicted on RI, so skip this test
+                        continue;
+                    }
+                    // test '%t'
+                    f = new Formatter(Locale.JAPAN);
+                    f.format(formatSpecifier, upperCaseJapanTriple[i][input]);
+                    assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
+                            + " Argument: " + upperCaseJapanTriple[i][input], //$NON-NLS-2$
+                            upperCaseJapanTriple[i][output], f.toString());
+
+                    f = new Formatter(Locale.JAPAN);
+                    f.format(Locale.GERMAN, formatSpecifier, upperCaseGermanTriple[i][input]);
+                    assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
+                            + " Argument: " + upperCaseGermanTriple[i][input], //$NON-NLS-2$
+                            upperCaseGermanTriple[i][output], f.toString());
+
+                    f = new Formatter(Locale.JAPAN);
+                    f.format(Locale.FRANCE, formatSpecifier, upperCaseFranceTriple[i][input]);
+                    assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
+                            + " Argument: " + upperCaseFranceTriple[i][input], //$NON-NLS-2$
+                            upperCaseFranceTriple[i][output], f.toString());
+
+                    // test '%T'
+                    f = new Formatter(Locale.GERMAN);
+                    f.format(formatSpecifierUpper, upperCaseGermanTriple[i][input]);
+                    assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
+                            + " Argument: " + upperCaseGermanTriple[i][input], //$NON-NLS-2$
+                            ((String)upperCaseGermanTriple[i][output])
+                                    .toUpperCase(Locale.US), f.toString());
+
+                    f = new Formatter(Locale.GERMAN);
+                    f.format(Locale.JAPAN, formatSpecifierUpper, upperCaseJapanTriple[i][input]);
+                    assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
+                            + " Argument: " + upperCaseJapanTriple[i][input], //$NON-NLS-2$
+                            ((String)upperCaseJapanTriple[i][output])
+                                    .toUpperCase(Locale.US), f.toString());
+
+                    f = new Formatter(Locale.GERMAN);
+                    f.format(Locale.FRANCE, formatSpecifierUpper, upperCaseFranceTriple[i][input]);
+                    assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
+                            + " Argument: " + upperCaseFranceTriple[i][input], //$NON-NLS-2$
+                            ((String)upperCaseFranceTriple[i][output])
+                                    .toUpperCase(Locale.US), f.toString());
+        }
+
+        f = new Formatter(Locale.US);
+        f.format("%-10ta", now); //$NON-NLS-2$
+        assertEquals("Thu       ", f.toString()); //$NON-NLS-2$
+
+        f = new Formatter(Locale.US);
+        f.format("%10000000000000000000000000000000001ta", now); //$NON-NLS-2$
+        assertEquals("Thu", f.toString().trim()); //$NON-NLS-2$
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for null argment for
+     *        Byte/Short/Integer/Long/BigInteger conversion
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongNullConversion() {
+
+        Formatter f = new Formatter(Locale.FRANCE);
+        f.format("%d%<o%<x%<5X", (Integer) null);
+        assertEquals("nullnullnull NULL", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%d%<#03o %<0#4x%<6X", (Long) null);
+        assertEquals("nullnull null  NULL", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%(+,07d%<o %<x%<6X", (Byte) null);
+        assertEquals("   nullnull null  NULL", f.toString());
+
+        f = new Formatter(Locale.ITALY);
+        f.format("%(+,07d%<o %<x%<0#6X", (Short) null);
+        assertEquals("   nullnull null  NULL", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%(+,-7d%<( o%<+(x %<( 06X", (BigInteger) null);
+        assertEquals("null   nullnull   NULL", f.toString());
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for legal
+     *        BigInteger conversion type 'd'
+     */
+    public void test_formatLjava_lang_String$LBigInteger() {
+        final Object[][] tripleD = {
+                {new BigInteger("123456789012345678901234567890"),          "%d",       "123456789012345678901234567890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%10d",     "123456789012345678901234567890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%-1d",     "123456789012345678901234567890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%+d",      "+123456789012345678901234567890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "% d",      " 123456789012345678901234567890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%,d",      "123.456.789.012.345.678.901.234.567.890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%(d",      "123456789012345678901234567890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%08d",     "123456789012345678901234567890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%-+,(11d", "+123.456.789.012.345.678.901.234.567.890"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%0 ,(11d", " 123.456.789.012.345.678.901.234.567.890"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%d",       "-9876543210987654321098765432100000"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%10d",     "-9876543210987654321098765432100000"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%-1d",     "-9876543210987654321098765432100000"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%+d",      "-9876543210987654321098765432100000"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "% d",      "-9876543210987654321098765432100000"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%,d",      "-9.876.543.210.987.654.321.098.765.432.100.000"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%(d",      "(9876543210987654321098765432100000)"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%08d",     "-9876543210987654321098765432100000"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%-+,(11d", "(9.876.543.210.987.654.321.098.765.432.100.000)"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%0 ,(11d", "(9.876.543.210.987.654.321.098.765.432.100.000)"}, //$NON-NLS-2$
+        };
+        
+        final int input = 0;
+        final int pattern = 1;
+        final int output = 2;
+        Formatter f;
+        for (int i = 0; i < tripleD.length; i++) {
+            f = new Formatter(Locale.GERMAN);
+            f.format((String) tripleD[i][pattern],
+                    tripleD[i][input]);
+            assertEquals("triple[" + i + "]:" + tripleD[i][input] + ",pattern["
+                    + i + "]:" + tripleD[i][pattern], tripleD[i][output], f
+                    .toString());
+            
+        }
+        
+        final Object[][] tripleO = {
+                {new BigInteger("123456789012345678901234567890"),          "%o",       "143564417755415637016711617605322"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%-6o",     "143564417755415637016711617605322"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%08o",     "143564417755415637016711617605322"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%#o",      "0143564417755415637016711617605322"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%0#11o",   "0143564417755415637016711617605322"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%-#9o",    "0143564417755415637016711617605322"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%o",       "-36336340043453651353467270113157312240"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%-6o",     "-36336340043453651353467270113157312240"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%08o",     "-36336340043453651353467270113157312240"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%#o",      "-036336340043453651353467270113157312240"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%0#11o",   "-036336340043453651353467270113157312240"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%-#9o",    "-036336340043453651353467270113157312240"}, //$NON-NLS-2$
+        };
+        for (int i = 0; i < tripleO.length; i++) {
+            f = new Formatter(Locale.ITALY);
+            f.format((String) tripleO[i][pattern],
+                    tripleO[i][input]);
+            assertEquals("triple[" + i + "]:" + tripleO[i][input] + ",pattern["
+                    + i + "]:" + tripleO[i][pattern], tripleO[i][output], f
+                    .toString());
+            
+        }
+        
+        final Object[][] tripleX = {
+                {new BigInteger("123456789012345678901234567890"),          "%x",       "18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%-8x",     "18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%06x",     "18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%#x",      "0x18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%0#12x",   "0x18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
+                {new BigInteger("123456789012345678901234567890"),          "%-#9x",    "0x18ee90ff6c373e0ee4e3f0ad2"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%x",       "-1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%-8x",     "-1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%06x",     "-1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%#x",      "-0x1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%0#12x",   "-0x1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
+                {new BigInteger("-9876543210987654321098765432100000"),     "%-#9x",    "-0x1e6f380472bd4bae6eb8259bd94a0"}, //$NON-NLS-2$
+        };
+        
+        for (int i = 0; i < tripleX.length; i++) {
+            f = new Formatter(Locale.FRANCE);
+            f.format((String) tripleX[i][pattern],
+                    tripleX[i][input]);
+            assertEquals("triple[" + i + "]:" + tripleX[i][input] + ",pattern["
+                    + i + "]:" + tripleX[i][pattern], tripleX[i][output], f
+                    .toString());
+            
+        }
+        
+        f = new Formatter(Locale.GERMAN);
+        f.format("%(+,-7d%<( o%<+(x %<( 06X", (BigInteger) null);
+        assertEquals("null   nullnull   NULL", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for padding of
+     *        BigInteger conversion
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerPaddingConversion() {
+        Formatter f = null;
+
+        BigInteger bigInt = new BigInteger("123456789012345678901234567890");
+        f = new Formatter(Locale.GERMAN);
+        f.format("%32d", bigInt);
+        assertEquals("  123456789012345678901234567890", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%+32x", bigInt);
+        assertEquals("      +18ee90ff6c373e0ee4e3f0ad2", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("% 32o", bigInt);
+        assertEquals(" 143564417755415637016711617605322", f.toString());
+
+        BigInteger negBigInt = new BigInteger(
+                "-1234567890123456789012345678901234567890");
+        f = new Formatter(Locale.GERMAN);
+        f.format("%( 040X", negBigInt);
+        assertEquals("(000003A0C92075C0DBF3B8ACBC5F96CE3F0AD2)", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%+(045d", negBigInt);
+        assertEquals("(0001234567890123456789012345678901234567890)", f
+                .toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%+,-(60d", negBigInt);
+        assertEquals(
+                "(1.234.567.890.123.456.789.012.345.678.901.234.567.890)     ",
+                f.toString());
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for BigInteger
+     *        conversion exception
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerConversionException() {
+        Formatter f = null;
+
+        final String[] flagsConversionMismatches = { "%#d", "%,o", "%,x", "%,X" };
+        for (int i = 0; i < flagsConversionMismatches.length; i++) {
+            try {
+                f = new Formatter(Locale.CHINA);
+                f.format(flagsConversionMismatches[i], new BigInteger("1"));
+                fail("should throw FormatFlagsConversionMismatchException");
+            } catch (FormatFlagsConversionMismatchException e) {
+                // expected
+            }
+        }
+
+        final String[] missingFormatWidths = { "%-0d", "%0d", "%-d", "%-0o",
+                "%0o", "%-o", "%-0x", "%0x", "%-x", "%-0X", "%0X", "%-X" };
+        for (int i = 0; i < missingFormatWidths.length; i++) {
+            try {
+                f = new Formatter(Locale.KOREA);
+                f.format(missingFormatWidths[i], new BigInteger("1"));
+                fail("should throw MissingFormatWidthException");
+            } catch (MissingFormatWidthException e) {
+                // expected
+            }
+        }
+
+        final String[] illFlags = { "%+ d", "%-08d", "%+ o", "%-08o", "%+ x",
+                "%-08x", "%+ X", "%-08X" };
+        for (int i = 0; i < illFlags.length; i++) {
+            try {
+                f = new Formatter(Locale.CANADA);
+                f.format(illFlags[i], new BigInteger("1"));
+                fail("should throw IllegalFormatFlagsException");
+            } catch (IllegalFormatFlagsException e) {
+                // expected
+            }
+        }
+
+        final String[] precisionExceptions = { "%.4d", "%2.5o", "%8.6x",
+                "%11.17X" };
+        for (int i = 0; i < precisionExceptions.length; i++) {
+            try {
+                f = new Formatter(Locale.US);
+                f.format(precisionExceptions[i], new BigInteger("1"));
+                fail("should throw IllegalFormatPrecisionException");
+            } catch (IllegalFormatPrecisionException e) {
+                // expected
+            }
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%D", new BigInteger("1"));
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%O", new BigInteger("1"));
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+
+        try {
+            f = new Formatter();
+            f.format("%010000000000000000000000000000000001d", new BigInteger(
+                    "1"));
+            fail("should throw MissingFormatWidthException");
+        } catch (MissingFormatWidthException e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for BigInteger
+     *        exception throwing order
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerExceptionOrder() {
+        Formatter f = null;
+        BigInteger big = new BigInteger("100");
+
+        /*
+         * Order summary: UnknownFormatConversionException >
+         * MissingFormatWidthException > IllegalFormatFlagsException >
+         * IllegalFormatPrecisionException > IllegalFormatConversionException >
+         * FormatFlagsConversionMismatchException
+         * 
+         */
+        f = new Formatter(Locale.US);
+        try {
+            // compare IllegalFormatConversionException and
+            // FormatFlagsConversionMismatchException
+            f.format("%(o", false);
+            fail("should throw IllegalFormatConversionException");
+        } catch (IllegalFormatConversionException e) {
+            // expected
+        }
+
+        try {
+            // compare IllegalFormatPrecisionException and
+            // IllegalFormatConversionException
+            f.format("%.4o", false);
+            fail("should throw IllegalFormatPrecisionException");
+        } catch (IllegalFormatPrecisionException e) {
+            // expected
+        }
+
+        try {
+            // compare IllegalFormatFlagsException and
+            // IllegalFormatPrecisionException
+            f.format("%+ .4o", big);
+            fail("should throw IllegalFormatFlagsException");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+
+        try {
+            // compare MissingFormatWidthException and
+            // IllegalFormatFlagsException
+            f.format("%+ -o", big);
+            fail("should throw MissingFormatWidthException");
+        } catch (MissingFormatWidthException e) {
+            // expected
+        }
+
+        try {
+            // compare UnknownFormatConversionException and
+            // MissingFormatWidthException
+            f.format("%-O", big);
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for Float/Double
+     *        conversion type 'e' and 'E'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionE() {
+        Formatter f = null;
+        final Object[][] tripleE = {
+                {0f, "%e",          "0.000000e+00"},
+                {0f, "%#.0e",       "0.e+00"},
+                {0f, "%#- (9.8e",   " 0.00000000e+00"},
+                {0f, "%#+0(8.4e",   "+0.0000e+00"},
+                {0f, "%-+(1.6e",    "+0.000000e+00"},
+                {0f, "% 0(12e",     " 0.000000e+00"},
+                
+                {101f, "%e",          "1.010000e+02"},
+                {101f, "%#.0e",       "1.e+02"},
+                {101f, "%#- (9.8e",   " 1.01000000e+02"},
+                {101f, "%#+0(8.4e",   "+1.0100e+02"},
+                {101f, "%-+(1.6e",    "+1.010000e+02"},
+                {101f, "% 0(12e",     " 1.010000e+02"},
+                
+                {1.f, "%e",          "1.000000e+00"},
+                {1.f, "%#.0e",       "1.e+00"},
+                {1.f, "%#- (9.8e",   " 1.00000000e+00"},
+                {1.f, "%#+0(8.4e",   "+1.0000e+00"},
+                {1.f, "%-+(1.6e",    "+1.000000e+00"},
+                {1.f, "% 0(12e",     " 1.000000e+00"},
+                
+                {-98f, "%e",          "-9.800000e+01"},
+                {-98f, "%#.0e",       "-1.e+02"},
+                {-98f, "%#- (9.8e",   "(9.80000000e+01)"},
+                {-98f, "%#+0(8.4e",   "(9.8000e+01)"},
+                {-98f, "%-+(1.6e",    "(9.800000e+01)"},
+                {-98f, "% 0(12e",     "(9.800000e+01)"},
+                
+                {1.23f, "%e",          "1.230000e+00"},
+                {1.23f, "%#.0e",       "1.e+00"},
+                {1.23f, "%#- (9.8e",   " 1.23000002e+00"},
+                {1.23f, "%#+0(8.4e",   "+1.2300e+00"},
+                {1.23f, "%-+(1.6e",    "+1.230000e+00"},
+                {1.23f, "% 0(12e",     " 1.230000e+00"},
+                
+                {34.1234567f, "%e",          "3.412346e+01"},
+                {34.1234567f, "%#.0e",       "3.e+01"},
+                {34.1234567f, "%#- (9.8e",   " 3.41234550e+01"},
+                {34.1234567f, "%#+0(8.4e",   "+3.4123e+01"},
+                {34.1234567f, "%-+(1.6e",    "+3.412346e+01"},
+                {34.1234567f, "% 0(12e",     " 3.412346e+01"},
+                
+                {-.12345f, "%e",          "-1.234500e-01"},
+                {-.12345f, "%#.0e",       "-1.e-01"},
+                {-.12345f, "%#- (9.8e",   "(1.23450004e-01)"},
+                {-.12345f, "%#+0(8.4e",   "(1.2345e-01)"},
+                {-.12345f, "%-+(1.6e",    "(1.234500e-01)"},
+                {-.12345f, "% 0(12e",     "(1.234500e-01)"},
+                
+                {-9876.1234567f, "%e",          "-9.876123e+03"},
+                {-9876.1234567f, "%#.0e",       "-1.e+04"},
+                {-9876.1234567f, "%#- (9.8e",   "(9.87612305e+03)"},
+                {-9876.1234567f, "%#+0(8.4e",   "(9.8761e+03)"},
+                {-9876.1234567f, "%-+(1.6e",    "(9.876123e+03)"},
+                {-9876.1234567f, "% 0(12e",     "(9.876123e+03)"},
+                
+                {Float.MAX_VALUE, "%e",          "3.402823e+38"},
+                {Float.MAX_VALUE, "%#.0e",       "3.e+38"},
+                {Float.MAX_VALUE, "%#- (9.8e",   " 3.40282347e+38"},
+                {Float.MAX_VALUE, "%#+0(8.4e",   "+3.4028e+38"},
+                {Float.MAX_VALUE, "%-+(1.6e",    "+3.402823e+38"},
+                {Float.MAX_VALUE, "% 0(12e",     " 3.402823e+38"},
+                
+                {Float.MIN_VALUE, "%e",          "1.401298e-45"},
+                {Float.MIN_VALUE, "%#.0e",       "1.e-45"},
+                {Float.MIN_VALUE, "%#- (9.8e",   " 1.40129846e-45"},
+                {Float.MIN_VALUE, "%#+0(8.4e",   "+1.4013e-45"},
+                {Float.MIN_VALUE, "%-+(1.6e",    "+1.401298e-45"},
+                {Float.MIN_VALUE, "% 0(12e",     " 1.401298e-45"},
+                
+                {Float.NaN, "%e",          "NaN"},
+                {Float.NaN, "%#.0e",       "NaN"},
+                {Float.NaN, "%#- (9.8e",   "NaN      "},
+                {Float.NaN, "%#+0(8.4e",   "     NaN"},
+                {Float.NaN, "%-+(1.6e",    "NaN"},
+                {Float.NaN, "% 0(12e",     "         NaN"},
+                
+                
+                {Float.NEGATIVE_INFINITY, "%e",          "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%#.0e",       "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%#- (9.8e",   "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "%#+0(8.4e",   "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "%-+(1.6e",    "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "% 0(12e",     "  (Infinity)"},
+                
+                {Float.NEGATIVE_INFINITY, "%e",          "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%#.0e",       "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%#- (9.8e",   "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "%#+0(8.4e",   "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "%-+(1.6e",    "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "% 0(12e",     "  (Infinity)"},
+                
+                {0d, "%e",          "0.000000e+00"},
+                {0d, "%#.0e",       "0.e+00"},
+                {0d, "%#- (9.8e",   " 0.00000000e+00"},
+                {0d, "%#+0(8.4e",   "+0.0000e+00"},
+                {0d, "%-+(1.6e",    "+0.000000e+00"},
+                {0d, "% 0(12e",     " 0.000000e+00"},
+                
+                {1d, "%e",          "1.000000e+00"},
+                {1d, "%#.0e",       "1.e+00"},
+                {1d, "%#- (9.8e",   " 1.00000000e+00"},
+                {1d, "%#+0(8.4e",   "+1.0000e+00"},
+                {1d, "%-+(1.6e",    "+1.000000e+00"},
+                {1d, "% 0(12e",     " 1.000000e+00"},
+                
+                {-1d, "%e",          "-1.000000e+00"},
+                {-1d, "%#.0e",       "-1.e+00"},
+                {-1d, "%#- (9.8e",   "(1.00000000e+00)"},
+                {-1d, "%#+0(8.4e",   "(1.0000e+00)"},
+                {-1d, "%-+(1.6e",    "(1.000000e+00)"},
+                {-1d, "% 0(12e",     "(1.000000e+00)"},
+                
+                
+                {.00000001d, "%e",          "1.000000e-08"},
+                {.00000001d, "%#.0e",       "1.e-08"},
+                {.00000001d, "%#- (9.8e",   " 1.00000000e-08"},
+                {.00000001d, "%#+0(8.4e",   "+1.0000e-08"},
+                {.00000001d, "%-+(1.6e",    "+1.000000e-08"},
+                {.00000001d, "% 0(12e",     " 1.000000e-08"},
+                
+                {9122.10d, "%e",          "9.122100e+03"},
+                {9122.10d, "%#.0e",       "9.e+03"},
+                {9122.10d, "%#- (9.8e",   " 9.12210000e+03"},
+                {9122.10d, "%#+0(8.4e",   "+9.1221e+03"},
+                {9122.10d, "%-+(1.6e",    "+9.122100e+03"},
+                {9122.10d, "% 0(12e",     " 9.122100e+03"},
+                
+                {0.1d, "%e",          "1.000000e-01"},
+                {0.1d, "%#.0e",       "1.e-01"},
+                {0.1d, "%#- (9.8e",   " 1.00000000e-01"},
+                {0.1d, "%#+0(8.4e",   "+1.0000e-01"},
+                {0.1d, "%-+(1.6e",    "+1.000000e-01"},
+                {0.1d, "% 0(12e",     " 1.000000e-01"},
+                
+                {-2.d, "%e",          "-2.000000e+00"},
+                {-2.d, "%#.0e",       "-2.e+00"},
+                {-2.d, "%#- (9.8e",   "(2.00000000e+00)"},
+                {-2.d, "%#+0(8.4e",   "(2.0000e+00)"},
+                {-2.d, "%-+(1.6e",    "(2.000000e+00)"},
+                {-2.d, "% 0(12e",     "(2.000000e+00)"},
+                
+                {-.39d, "%e",          "-3.900000e-01"},
+                {-.39d, "%#.0e",       "-4.e-01"},
+                {-.39d, "%#- (9.8e",   "(3.90000000e-01)"},
+                {-.39d, "%#+0(8.4e",   "(3.9000e-01)"},
+                {-.39d, "%-+(1.6e",    "(3.900000e-01)"},
+                {-.39d, "% 0(12e",     "(3.900000e-01)"},
+                
+                {-1234567890.012345678d, "%e",          "-1.234568e+09"},
+                {-1234567890.012345678d, "%#.0e",       "-1.e+09"},
+                {-1234567890.012345678d, "%#- (9.8e",   "(1.23456789e+09)"},
+                {-1234567890.012345678d, "%#+0(8.4e",   "(1.2346e+09)"},
+                {-1234567890.012345678d, "%-+(1.6e",    "(1.234568e+09)"},
+                {-1234567890.012345678d, "% 0(12e",     "(1.234568e+09)"},
+                
+                {Double.MAX_VALUE, "%e",          "1.797693e+308"},
+                {Double.MAX_VALUE, "%#.0e",       "2.e+308"},
+                {Double.MAX_VALUE, "%#- (9.8e",   " 1.79769313e+308"},
+                {Double.MAX_VALUE, "%#+0(8.4e",   "+1.7977e+308"},
+                {Double.MAX_VALUE, "%-+(1.6e",    "+1.797693e+308"},
+                {Double.MAX_VALUE, "% 0(12e",     " 1.797693e+308"},
+                
+                {Double.MIN_VALUE, "%e",          "4.900000e-324"},
+                {Double.MIN_VALUE, "%#.0e",       "5.e-324"},
+                {Double.MIN_VALUE, "%#- (9.8e",   " 4.90000000e-324"},
+                {Double.MIN_VALUE, "%#+0(8.4e",   "+4.9000e-324"},
+                {Double.MIN_VALUE, "%-+(1.6e",    "+4.900000e-324"},
+                {Double.MIN_VALUE, "% 0(12e",     " 4.900000e-324"},
+                
+                {Double.NaN, "%e",          "NaN"},
+                {Double.NaN, "%#.0e",       "NaN"},
+                {Double.NaN, "%#- (9.8e",   "NaN      "},
+                {Double.NaN, "%#+0(8.4e",   "     NaN"},
+                {Double.NaN, "%-+(1.6e",    "NaN"},
+                {Double.NaN, "% 0(12e",     "         NaN"},
+                
+                {Double.NEGATIVE_INFINITY, "%e",          "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%#.0e",       "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%#- (9.8e",   "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "%#+0(8.4e",   "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "%-+(1.6e",    "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "% 0(12e",     "  (Infinity)"},
+                
+                {Double.POSITIVE_INFINITY, "%e",          "Infinity"},
+                {Double.POSITIVE_INFINITY, "%#.0e",       "Infinity"},
+                {Double.POSITIVE_INFINITY, "%#- (9.8e",   " Infinity"},
+                {Double.POSITIVE_INFINITY, "%#+0(8.4e",   "+Infinity"},
+                {Double.POSITIVE_INFINITY, "%-+(1.6e",    "+Infinity"},
+                {Double.POSITIVE_INFINITY, "% 0(12e",     "    Infinity"},
+        };
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+            for (int i = 0; i < tripleE.length; i++) {
+                f = new Formatter(Locale.US);
+                f.format((String)tripleE[i][pattern], tripleE[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
+                        + i + "]:" + tripleE[i][pattern],
+                        tripleE[i][output], f.toString());
+
+                // test for conversion type 'E'
+                f = new Formatter(Locale.US);
+                f.format(((String)tripleE[i][pattern]).toUpperCase(), tripleE[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
+                        + i + "]:" + tripleE[i][pattern], ((String)tripleE[i][output])
+                        .toUpperCase(Locale.UK), f.toString());
+            }
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%e", 1001f);
+        /*
+         * fail on RI, spec says 'e' requires the output to be formatted in
+         * general scientific notation and the localization algorithm is
+         * applied. But RI format this case to 1.001000e+03, which does not
+         * conform to the German Locale
+         */
+        assertEquals("1,001000e+03", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for Float/Double
+     *        conversion type 'g' and 'G'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionG() {
+        Formatter f = null;
+        final Object[][] tripleG = {
+                {1001f, "%g",           "1001.00"},
+                {1001f, "%- (,9.8g",    " 1,001.0000"},
+                {1001f, "%+0(,8.4g",    "+001,001"},
+                {1001f, "%-+(,1.6g",    "+1,001.00"},
+                {1001f, "% 0(,12.0g",   " 0000001e+03"},
+                
+                {1.f, "%g",           "1.00000"},
+                {1.f, "%- (,9.8g",    " 1.0000000"},
+                {1.f, "%+0(,8.4g",    "+001.000"},
+                {1.f, "%-+(,1.6g",    "+1.00000"},
+                {1.f, "% 0(,12.0g",   " 00000000001"},
+                
+                {-98f, "%g",           "-98.0000"},
+                {-98f, "%- (,9.8g",    "(98.000000)"},
+                {-98f, "%+0(,8.4g",    "(098.00)"},
+                {-98f, "%-+(,1.6g",    "(98.0000)"},
+                {-98f, "% 0(,12.0g",   "(000001e+02)"},
+                
+                {0.000001f, "%g",           "1.00000e-06"},
+                {0.000001f, "%- (,9.8g",    " 1.0000000e-06"},
+                {0.000001f, "%+0(,8.4g",    "+1.000e-06"},
+                {0.000001f, "%-+(,1.6g",    "+1.00000e-06"},
+                {0.000001f, "% 0(,12.0g",   " 0000001e-06"},
+                
+                {345.1234567f, "%g",           "345.123"},
+                {345.1234567f, "%- (,9.8g",    " 345.12344"},
+                {345.1234567f, "%+0(,8.4g",    "+00345.1"},
+                {345.1234567f, "%-+(,1.6g",    "+345.123"},
+                {345.1234567f, "% 0(,12.0g",   " 0000003e+02"},
+
+                {-.00000012345f, "%g",           "-1.23450e-07"},
+                {-.00000012345f, "%- (,9.8g",    "(1.2344999e-07)"},
+                {-.00000012345f, "%+0(,8.4g",    "(1.234e-07)"},
+                {-.00000012345f, "%-+(,1.6g",    "(1.23450e-07)"},
+                {-.00000012345f, "% 0(,12.0g",   "(000001e-07)"},
+                
+                {-987.1234567f, "%g",           "-987.123"},
+                {-987.1234567f, "%- (,9.8g",    "(987.12347)"},
+                {-987.1234567f, "%+0(,8.4g",    "(0987.1)"},
+                {-987.1234567f, "%-+(,1.6g",    "(987.123)"},
+                {-987.1234567f, "% 0(,12.0g",   "(000001e+03)"},
+                
+                {Float.MAX_VALUE, "%g",           "3.40282e+38"},
+                {Float.MAX_VALUE, "%- (,9.8g",    " 3.4028235e+38"},
+                {Float.MAX_VALUE, "%+0(,8.4g",    "+3.403e+38"},
+                {Float.MAX_VALUE, "%-+(,1.6g",    "+3.40282e+38"},
+                {Float.MAX_VALUE, "% 0(,12.0g",   " 0000003e+38"},
+                
+                {Float.MIN_VALUE, "%g",           "1.40130e-45"},
+                {Float.MIN_VALUE, "%- (,9.8g",    " 1.4012985e-45"},
+                {Float.MIN_VALUE, "%+0(,8.4g",    "+1.401e-45"},
+                {Float.MIN_VALUE, "%-+(,1.6g",    "+1.40130e-45"},
+                {Float.MIN_VALUE, "% 0(,12.0g",   " 0000001e-45"},
+                
+                {Float.NaN, "%g",           "NaN"},
+                {Float.NaN, "%- (,9.8g",    "NaN      "},
+                {Float.NaN, "%+0(,8.4g",    "     NaN"},
+                {Float.NaN, "%-+(,1.6g",    "NaN"},
+                {Float.NaN, "% 0(,12.0g",   "         NaN"},
+                
+                {Float.NEGATIVE_INFINITY, "%g",           "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%- (,9.8g",    "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "%+0(,8.4g",    "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "%-+(,1.6g",    "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "% 0(,12.0g",   "  (Infinity)"},
+                
+                {Float.POSITIVE_INFINITY, "%g",           "Infinity"},
+                {Float.POSITIVE_INFINITY, "%- (,9.8g",    " Infinity"},
+                {Float.POSITIVE_INFINITY, "%+0(,8.4g",    "+Infinity"},
+                {Float.POSITIVE_INFINITY, "%-+(,1.6g",    "+Infinity"},
+                {Float.POSITIVE_INFINITY, "% 0(,12.0g",   "    Infinity"},
+                
+                {1d, "%g",           "1.00000"},
+                {1d, "%- (,9.8g",    " 1.0000000"},
+                {1d, "%+0(,8.4g",    "+001.000"},
+                {1d, "%-+(,1.6g",    "+1.00000"},
+                {1d, "% 0(,12.0g",   " 00000000001"},
+                
+                {-1d, "%g",           "-1.00000"},
+                {-1d, "%- (,9.8g",    "(1.0000000)"},
+                {-1d, "%+0(,8.4g",    "(01.000)"},
+                {-1d, "%-+(,1.6g",    "(1.00000)"},
+                {-1d, "% 0(,12.0g",   "(0000000001)"},
+                
+                {.00000001d, "%g",           "1.00000e-08"},
+                {.00000001d, "%- (,9.8g",    " 1.0000000e-08"},
+                {.00000001d, "%+0(,8.4g",    "+1.000e-08"},
+                {.00000001d, "%-+(,1.6g",    "+1.00000e-08"},
+                {.00000001d, "% 0(,12.0g",   " 0000001e-08"},
+                
+                {1912.10d, "%g",           "1912.10"},
+                {1912.10d, "%- (,9.8g",    " 1,912.1000"},
+                {1912.10d, "%+0(,8.4g",    "+001,912"},
+                {1912.10d, "%-+(,1.6g",    "+1,912.10"},
+                {1912.10d, "% 0(,12.0g",   " 0000002e+03"},
+                
+                {0.1d, "%g",           "0.100000"},
+                {0.1d, "%- (,9.8g",    " 0.10000000"},
+                {0.1d, "%+0(,8.4g",    "+00.1000"},
+                {0.1d, "%-+(,1.6g",    "+0.100000"},
+                {0.1d, "% 0(,12.0g",   " 000000000.1"},
+                
+                {-2.d, "%g",           "-2.00000"},
+                {-2.d, "%- (,9.8g",    "(2.0000000)"},
+                {-2.d, "%+0(,8.4g",    "(02.000)"},
+                {-2.d, "%-+(,1.6g",    "(2.00000)"},
+                {-2.d, "% 0(,12.0g",   "(0000000002)"},
+                
+                {-.00039d, "%g",           "-0.000390000"},
+                {-.00039d, "%- (,9.8g",    "(0.00039000000)"},
+                {-.00039d, "%+0(,8.4g",    "(0.0003900)"},
+                {-.00039d, "%-+(,1.6g",    "(0.000390000)"},
+                {-.00039d, "% 0(,12.0g",   "(00000.0004)"},
+                
+                {-1234567890.012345678d, "%g",           "-1.23457e+09"},
+                {-1234567890.012345678d, "%- (,9.8g",    "(1.2345679e+09)"},
+                {-1234567890.012345678d, "%+0(,8.4g",    "(1.235e+09)"},
+                {-1234567890.012345678d, "%-+(,1.6g",    "(1.23457e+09)"},
+                {-1234567890.012345678d, "% 0(,12.0g",   "(000001e+09)"},
+                
+                {Double.MAX_VALUE, "%g",           "1.79769e+308"},
+                {Double.MAX_VALUE, "%- (,9.8g",    " 1.7976931e+308"},
+                {Double.MAX_VALUE, "%+0(,8.4g",    "+1.798e+308"},
+                {Double.MAX_VALUE, "%-+(,1.6g",    "+1.79769e+308"},
+                {Double.MAX_VALUE, "% 0(,12.0g",   " 000002e+308"},
+                
+                {Double.MIN_VALUE, "%g",           "4.90000e-324"},
+                {Double.MIN_VALUE, "%- (,9.8g",    " 4.9000000e-324"},
+                {Double.MIN_VALUE, "%+0(,8.4g",    "+4.900e-324"},
+                {Double.MIN_VALUE, "%-+(,1.6g",    "+4.90000e-324"},
+                {Double.MIN_VALUE, "% 0(,12.0g",   " 000005e-324"},
+                
+                {Double.NaN, "%g",           "NaN"},
+                {Double.NaN, "%- (,9.8g",    "NaN      "},
+                {Double.NaN, "%+0(,8.4g",    "     NaN"},
+                {Double.NaN, "%-+(,1.6g",    "NaN"},
+                {Double.NaN, "% 0(,12.0g",   "         NaN"},
+                
+                {Double.NEGATIVE_INFINITY, "%g",           "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%- (,9.8g",    "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "%+0(,8.4g",    "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "%-+(,1.6g",    "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "% 0(,12.0g",   "  (Infinity)"},
+                
+                {Double.POSITIVE_INFINITY, "%g",           "Infinity"},
+                {Double.POSITIVE_INFINITY, "%- (,9.8g",    " Infinity"},
+                {Double.POSITIVE_INFINITY, "%+0(,8.4g",    "+Infinity"},
+                {Double.POSITIVE_INFINITY, "%-+(,1.6g",    "+Infinity"},
+                {Double.POSITIVE_INFINITY, "% 0(,12.0g",   "    Infinity"},
+                
+        };
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+            for (int i = 0; i < tripleG.length; i++) {
+                
+                f = new Formatter(Locale.US);
+                f.format((String)tripleG[i][pattern], tripleG[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
+                        + i + "]:" + tripleG[i][pattern],
+                        tripleG[i][output], f.toString());
+
+                // test for conversion type 'G'
+                f = new Formatter(Locale.US);
+                f.format(((String)tripleG[i][pattern]).toUpperCase(), tripleG[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
+                        + i + "]:" + tripleG[i][pattern], ((String)tripleG[i][output])
+                        .toUpperCase(Locale.UK), f.toString());
+            }
+
+        f = new Formatter(Locale.US);
+        f.format("%.5g", 0f);
+        assertEquals("0.0000", f.toString());
+
+        f = new Formatter(Locale.US);
+        f.format("%.0g", 0f);
+        /*
+         * fail on RI, spec says if the precision is 0, then it is taken to be
+         * 1. but RI throws ArrayIndexOutOfBoundsException.
+         */
+        assertEquals("0", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%g", 1001f);
+        /*
+         * fail on RI, spec says 'g' requires the output to be formatted in
+         * general scientific notation and the localization algorithm is
+         * applied. But RI format this case to 1001.00, which does not conform
+         * to the German Locale
+         */
+        assertEquals("1001,00", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for Float/Double
+     *        conversion type 'g' and 'G' overflow
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionG_Overflow() {
+        Formatter f = new Formatter();
+        f.format("%g", 999999.5);
+        assertEquals("1.00000e+06", f.toString());
+
+        f = new Formatter();
+        f.format("%g", 99999.5);
+        assertEquals("99999.5", f.toString());
+
+        f = new Formatter();
+        f.format("%.4g", 99.95);
+        assertEquals("99.95", f.toString());
+
+        f = new Formatter();
+        f.format("%g", 99.95);
+        assertEquals("99.9500", f.toString());
+
+        f = new Formatter();
+        f.format("%g", 0.9);
+        assertEquals("0.900000", f.toString());
+
+        f = new Formatter();
+        f.format("%.0g", 0.000095);
+        assertEquals("0.0001", f.toString());
+
+        f = new Formatter();
+        f.format("%g", 0.0999999);
+        assertEquals("0.0999999", f.toString());
+
+        f = new Formatter();
+        f.format("%g", 0.00009);
+        assertEquals("9.00000e-05", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for Float/Double
+     *        conversion type 'f'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionF() {
+        Formatter f = null;
+
+        final Object[][] tripleF = {
+                {0f, "%f",          "0,000000"},
+                {0f, "%#.3f",       "0,000"},
+                {0f, "%,5f",        "0,000000"},
+                {0f, "%- (12.0f",   " 0          "},
+                {0f, "%#+0(1.6f",   "+0,000000"},
+                {0f, "%-+(8.4f",    "+0,0000 "},
+                {0f, "% 0#(9.8f",   " 0,00000000"},
+                
+                {1234f, "%f",          "1234,000000"},
+                {1234f, "%#.3f",       "1234,000"},
+                {1234f, "%,5f",        "1.234,000000"},
+                {1234f, "%- (12.0f",   " 1234       "},
+                {1234f, "%#+0(1.6f",   "+1234,000000"},
+                {1234f, "%-+(8.4f",    "+1234,0000"},
+                {1234f, "% 0#(9.8f",   " 1234,00000000"},
+                
+                {1.f, "%f",          "1,000000"},
+                {1.f, "%#.3f",       "1,000"},
+                {1.f, "%,5f",        "1,000000"},
+                {1.f, "%- (12.0f",   " 1          "},
+                {1.f, "%#+0(1.6f",   "+1,000000"},
+                {1.f, "%-+(8.4f",    "+1,0000 "},
+                {1.f, "% 0#(9.8f",   " 1,00000000"},
+                
+                {-98f, "%f",          "-98,000000"},
+                {-98f, "%#.3f",       "-98,000"},
+                {-98f, "%,5f",        "-98,000000"},
+                {-98f, "%- (12.0f",   "(98)        "},
+                {-98f, "%#+0(1.6f",   "(98,000000)"},
+                {-98f, "%-+(8.4f",    "(98,0000)"},
+                {-98f, "% 0#(9.8f",   "(98,00000000)"},
+                
+                {0.000001f, "%f",          "0,000001"},
+                {0.000001f, "%#.3f",       "0,000"},
+                {0.000001f, "%,5f",        "0,000001"},
+                {0.000001f, "%- (12.0f",   " 0          "},
+                {0.000001f, "%#+0(1.6f",   "+0,000001"},
+                {0.000001f, "%-+(8.4f",    "+0,0000 "},
+                {0.000001f, "% 0#(9.8f",   " 0,00000100"},
+                
+                {345.1234567f, "%f",          "345,123444"},
+                {345.1234567f, "%#.3f",       "345,123"},
+                {345.1234567f, "%,5f",        "345,123444"},
+                {345.1234567f, "%- (12.0f",   " 345        "},
+                {345.1234567f, "%#+0(1.6f",   "+345,123444"},
+                {345.1234567f, "%-+(8.4f",    "+345,1234"},
+                {345.1234567f, "% 0#(9.8f",   " 345,12344360"},
+                
+                {-.00000012345f, "%f",          "-0,000000"},
+                {-.00000012345f, "%#.3f",       "-0,000"},
+                {-.00000012345f, "%,5f",        "-0,000000"},
+                {-.00000012345f, "%- (12.0f",   "(0)         "},
+                {-.00000012345f, "%#+0(1.6f",   "(0,000000)"},
+                {-.00000012345f, "%-+(8.4f",    "(0,0000)"},
+                {-.00000012345f, "% 0#(9.8f",   "(0,00000012)"},
+                
+                {-987654321.1234567f, "%f",          "-987654336,000000"},
+                {-987654321.1234567f, "%#.3f",       "-987654336,000"},
+                {-987654321.1234567f, "%,5f",        "-987.654.336,000000"},
+                {-987654321.1234567f, "%- (12.0f",   "(987654336) "},
+                {-987654321.1234567f, "%#+0(1.6f",   "(987654336,000000)"},
+                {-987654321.1234567f, "%-+(8.4f",    "(987654336,0000)"},
+                {-987654321.1234567f, "% 0#(9.8f",   "(987654336,00000000)"},
+                
+                {Float.MAX_VALUE, "%f",          "340282346638528860000000000000000000000,000000"},
+                {Float.MAX_VALUE, "%#.3f",       "340282346638528860000000000000000000000,000"},
+                {Float.MAX_VALUE, "%,5f",        "340.282.346.638.528.860.000.000.000.000.000.000.000,000000"},
+                {Float.MAX_VALUE, "%- (12.0f",   " 340282346638528860000000000000000000000"},
+                {Float.MAX_VALUE, "%#+0(1.6f",   "+340282346638528860000000000000000000000,000000"},
+                {Float.MAX_VALUE, "%-+(8.4f",    "+340282346638528860000000000000000000000,0000"},
+                {Float.MAX_VALUE, "% 0#(9.8f",   " 340282346638528860000000000000000000000,00000000"},
+                
+                {Float.MIN_VALUE, "%f",          "0,000000"},
+                {Float.MIN_VALUE, "%#.3f",       "0,000"},
+                {Float.MIN_VALUE, "%,5f",        "0,000000"},
+                {Float.MIN_VALUE, "%- (12.0f",   " 0          "},
+                {Float.MIN_VALUE, "%#+0(1.6f",   "+0,000000"},
+                {Float.MIN_VALUE, "%-+(8.4f",    "+0,0000 "},
+                {Float.MIN_VALUE, "% 0#(9.8f",   " 0,00000000"},
+                
+                {Float.NaN, "%f",          "NaN"},
+                {Float.NaN, "%#.3f",       "NaN"},
+                {Float.NaN, "%,5f",        "  NaN"},
+                {Float.NaN, "%- (12.0f",   "NaN         "},
+                {Float.NaN, "%#+0(1.6f",   "NaN"},
+                {Float.NaN, "%-+(8.4f",    "NaN     "},
+                {Float.NaN, "% 0#(9.8f",   "      NaN"},
+                
+                {Float.NEGATIVE_INFINITY, "%f",          "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%#.3f",       "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%,5f",        "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%- (12.0f",   "(Infinity)  "},
+                {Float.NEGATIVE_INFINITY, "%#+0(1.6f",   "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "%-+(8.4f",    "(Infinity)"},
+                {Float.NEGATIVE_INFINITY, "% 0#(9.8f",   "(Infinity)"},
+                
+                {Float.POSITIVE_INFINITY, "%f",          "Infinity"},
+                {Float.POSITIVE_INFINITY, "%#.3f",       "Infinity"},
+                {Float.POSITIVE_INFINITY, "%,5f",        "Infinity"},
+                {Float.POSITIVE_INFINITY, "%- (12.0f",   " Infinity   "},
+                {Float.POSITIVE_INFINITY, "%#+0(1.6f",   "+Infinity"},
+                {Float.POSITIVE_INFINITY, "%-+(8.4f",    "+Infinity"},
+                {Float.POSITIVE_INFINITY, "% 0#(9.8f",   " Infinity"},
+                
+                
+                {0d, "%f",          "0,000000"},
+                {0d, "%#.3f",       "0,000"},
+                {0d, "%,5f",        "0,000000"},
+                {0d, "%- (12.0f",   " 0          "},
+                {0d, "%#+0(1.6f",   "+0,000000"},
+                {0d, "%-+(8.4f",    "+0,0000 "},
+                {0d, "% 0#(9.8f",   " 0,00000000"},
+                
+                {1d, "%f",          "1,000000"},
+                {1d, "%#.3f",       "1,000"},
+                {1d, "%,5f",        "1,000000"},
+                {1d, "%- (12.0f",   " 1          "},
+                {1d, "%#+0(1.6f",   "+1,000000"},
+                {1d, "%-+(8.4f",    "+1,0000 "},
+                {1d, "% 0#(9.8f",   " 1,00000000"},
+                
+                {-1d, "%f",          "-1,000000"},
+                {-1d, "%#.3f",       "-1,000"},
+                {-1d, "%,5f",        "-1,000000"},
+                {-1d, "%- (12.0f",   "(1)         "},
+                {-1d, "%#+0(1.6f",   "(1,000000)"},
+                {-1d, "%-+(8.4f",    "(1,0000)"},
+                {-1d, "% 0#(9.8f",   "(1,00000000)"},
+                
+                {.00000001d, "%f",          "0,000000"},
+                {.00000001d, "%#.3f",       "0,000"},
+                {.00000001d, "%,5f",        "0,000000"},
+                {.00000001d, "%- (12.0f",   " 0          "},
+                {.00000001d, "%#+0(1.6f",   "+0,000000"},
+                {.00000001d, "%-+(8.4f",    "+0,0000 "},
+                {.00000001d, "% 0#(9.8f",   " 0,00000001"},
+                
+                {1000.10d, "%f",          "1000,100000"},
+                {1000.10d, "%#.3f",       "1000,100"},
+                {1000.10d, "%,5f",        "1.000,100000"},
+                {1000.10d, "%- (12.0f",   " 1000       "},
+                {1000.10d, "%#+0(1.6f",   "+1000,100000"},
+                {1000.10d, "%-+(8.4f",    "+1000,1000"},
+                {1000.10d, "% 0#(9.8f",   " 1000,10000000"},
+                
+                {0.1d, "%f",          "0,100000"},
+                {0.1d, "%#.3f",       "0,100"},
+                {0.1d, "%,5f",        "0,100000"},
+                {0.1d, "%- (12.0f",   " 0          "},
+                {0.1d, "%#+0(1.6f",   "+0,100000"},
+                {0.1d, "%-+(8.4f",    "+0,1000 "},
+                {0.1d, "% 0#(9.8f",   " 0,10000000"},
+                
+                {-2.d, "%f",          "-2,000000"},
+                {-2.d, "%#.3f",       "-2,000"},
+                {-2.d, "%,5f",        "-2,000000"},
+                {-2.d, "%- (12.0f",   "(2)         "},
+                {-2.d, "%#+0(1.6f",   "(2,000000)"},
+                {-2.d, "%-+(8.4f",    "(2,0000)"},
+                {-2.d, "% 0#(9.8f",   "(2,00000000)"},
+                
+                {-.00009d, "%f",          "-0,000090"},
+                {-.00009d, "%#.3f",       "-0,000"},
+                {-.00009d, "%,5f",        "-0,000090"},
+                {-.00009d, "%- (12.0f",   "(0)         "},
+                {-.00009d, "%#+0(1.6f",   "(0,000090)"},
+                {-.00009d, "%-+(8.4f",    "(0,0001)"},
+                {-.00009d, "% 0#(9.8f",   "(0,00009000)"},
+                
+                {-1234567890.012345678d, "%f",          "-1234567890,012346"},
+                {-1234567890.012345678d, "%#.3f",       "-1234567890,012"},
+                {-1234567890.012345678d, "%,5f",        "-1.234.567.890,012346"},
+                {-1234567890.012345678d, "%- (12.0f",   "(1234567890)"},
+                {-1234567890.012345678d, "%#+0(1.6f",   "(1234567890,012346)"},
+                {-1234567890.012345678d, "%-+(8.4f",    "(1234567890,0123)"},
+                {-1234567890.012345678d, "% 0#(9.8f",   "(1234567890,01234580)"},
+                
+                {Double.MAX_VALUE, "%f",          "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000000"},
+                {Double.MAX_VALUE, "%#.3f",       "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000"},
+                {Double.MAX_VALUE, "%,5f",        "179.769.313.486.231.570.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000,000000"},
+                {Double.MAX_VALUE, "%- (12.0f",   " 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},
+                {Double.MAX_VALUE, "%#+0(1.6f",   "+179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000000"},
+                {Double.MAX_VALUE, "%-+(8.4f",    "+179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,0000"},
+                {Double.MAX_VALUE, "% 0#(9.8f",   " 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,00000000"},
+                
+                {Double.MIN_VALUE, "%f",          "0,000000"},
+                {Double.MIN_VALUE, "%#.3f",       "0,000"},
+                {Double.MIN_VALUE, "%,5f",        "0,000000"},
+                {Double.MIN_VALUE, "%- (12.0f",   " 0          "},
+                {Double.MIN_VALUE, "%#+0(1.6f",   "+0,000000"},
+                {Double.MIN_VALUE, "%-+(8.4f",    "+0,0000 "},
+                {Double.MIN_VALUE, "% 0#(9.8f",   " 0,00000000"},
+                
+                {Double.NaN, "%f",          "NaN"},
+                {Double.NaN, "%#.3f",       "NaN"},
+                {Double.NaN, "%,5f",        "  NaN"},
+                {Double.NaN, "%- (12.0f",   "NaN         "},
+                {Double.NaN, "%#+0(1.6f",   "NaN"},
+                {Double.NaN, "%-+(8.4f",    "NaN     "},
+                {Double.NaN, "% 0#(9.8f",   "      NaN"},
+                
+                {Double.POSITIVE_INFINITY, "%f",          "Infinity"},
+                {Double.POSITIVE_INFINITY, "%#.3f",       "Infinity"},
+                {Double.POSITIVE_INFINITY, "%,5f",        "Infinity"},
+                {Double.POSITIVE_INFINITY, "%- (12.0f",   " Infinity   "},
+                {Double.POSITIVE_INFINITY, "%#+0(1.6f",   "+Infinity"},
+                {Double.POSITIVE_INFINITY, "%-+(8.4f",    "+Infinity"},
+                {Double.POSITIVE_INFINITY, "% 0#(9.8f",   " Infinity"},
+                
+                {Double.NEGATIVE_INFINITY, "%f",          "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%#.3f",       "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%,5f",        "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%- (12.0f",   "(Infinity)  "},
+                {Double.NEGATIVE_INFINITY, "%#+0(1.6f",   "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "%-+(8.4f",    "(Infinity)"},
+                {Double.NEGATIVE_INFINITY, "% 0#(9.8f",   "(Infinity)"},
+        };
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+            for (int i = 0; i < tripleF.length; i++) {
+                f = new Formatter(Locale.GERMAN);
+                f.format((String)tripleF[i][pattern], tripleF[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleF[i][input] + ",pattern["
+                        + i + "]:" + tripleF[i][pattern],
+                        tripleF[i][output], f.toString());
+            }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for Float/Double
+     *        conversion type 'a' and 'A'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionA() {
+        Formatter f = null;
+        final Object[][] tripleA = {
+                {-0f, "%a",         "-0x0.0p0"},
+                {-0f, "%#.3a",      "-0x0.000p0"},
+                {-0f, "%5a",        "-0x0.0p0"},
+                {-0f, "%- 12.0a",   "-0x0.0p0    "},
+                {-0f, "%#+01.6a",   "-0x0.000000p0"},
+                {-0f, "%-+8.4a",    "-0x0.0000p0"},
+                
+                {0f, "%a",         "0x0.0p0"},
+                {0f, "%#.3a",      "0x0.000p0"},
+                {0f, "%5a",        "0x0.0p0"},
+                {0f, "%- 12.0a",   " 0x0.0p0    "},
+                {0f, "%#+01.6a",   "+0x0.000000p0"},
+                {0f, "%-+8.4a",    "+0x0.0000p0"},
+                
+                {1234f, "%a",         "0x1.348p10"},
+                {1234f, "%#.3a",      "0x1.348p10"},
+                {1234f, "%5a",        "0x1.348p10"},
+                {1234f, "%- 12.0a",   " 0x1.3p10   "},
+                {1234f, "%#+01.6a",   "+0x1.348000p10"},
+                {1234f, "%-+8.4a",    "+0x1.3480p10"},
+                
+                {1.f, "%a",         "0x1.0p0"},
+                {1.f, "%#.3a",      "0x1.000p0"},
+                {1.f, "%5a",        "0x1.0p0"},
+                {1.f, "%- 12.0a",   " 0x1.0p0    "},
+                {1.f, "%#+01.6a",   "+0x1.000000p0"},
+                {1.f, "%-+8.4a",    "+0x1.0000p0"},
+                
+                {-98f, "%a",         "-0x1.88p6"},
+                {-98f, "%#.3a",      "-0x1.880p6"},
+                {-98f, "%5a",        "-0x1.88p6"},
+                {-98f, "%- 12.0a",   "-0x1.8p6    "},
+                {-98f, "%#+01.6a",   "-0x1.880000p6"},
+                {-98f, "%-+8.4a",    "-0x1.8800p6"},
+                
+                {345.1234567f, "%a",         "0x1.591f9ap8"},
+                {345.1234567f, "%5a",        "0x1.591f9ap8"},
+                {345.1234567f, "%#+01.6a",   "+0x1.591f9ap8"},
+                
+                {-987654321.1234567f, "%a",         "-0x1.d6f346p29"},
+                {-987654321.1234567f, "%#.3a",      "-0x1.d6fp29"},
+                {-987654321.1234567f, "%5a",        "-0x1.d6f346p29"},
+                {-987654321.1234567f, "%- 12.0a",   "-0x1.dp29   "},
+                {-987654321.1234567f, "%#+01.6a",   "-0x1.d6f346p29"},
+                {-987654321.1234567f, "%-+8.4a",    "-0x1.d6f3p29"},
+                
+                {Float.MAX_VALUE, "%a",         "0x1.fffffep127"},
+                {Float.MAX_VALUE, "%5a",        "0x1.fffffep127"},
+                {Float.MAX_VALUE, "%#+01.6a",   "+0x1.fffffep127"},
+                
+                {Float.NaN, "%a",         "NaN"},
+                {Float.NaN, "%#.3a",      "NaN"},
+                {Float.NaN, "%5a",        "  NaN"},
+                {Float.NaN, "%- 12.0a",   "NaN         "},
+                {Float.NaN, "%#+01.6a",   "NaN"},
+                {Float.NaN, "%-+8.4a",    "NaN     "},
+                
+                {Float.NEGATIVE_INFINITY, "%a",         "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%#.3a",      "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%5a",        "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%- 12.0a",   "-Infinity   "},
+                {Float.NEGATIVE_INFINITY, "%#+01.6a",   "-Infinity"},
+                {Float.NEGATIVE_INFINITY, "%-+8.4a",    "-Infinity"},
+                
+                {Float.POSITIVE_INFINITY, "%a",         "Infinity"},
+                {Float.POSITIVE_INFINITY, "%#.3a",      "Infinity"},
+                {Float.POSITIVE_INFINITY, "%5a",        "Infinity"},
+                {Float.POSITIVE_INFINITY, "%- 12.0a",   " Infinity   "},
+                {Float.POSITIVE_INFINITY, "%#+01.6a",   "+Infinity"},
+                {Float.POSITIVE_INFINITY, "%-+8.4a",    "+Infinity"},
+                
+                {-0d, "%a",         "-0x0.0p0"},
+                {-0d, "%#.3a",      "-0x0.000p0"},
+                {-0d, "%5a",        "-0x0.0p0"},
+                {-0d, "%- 12.0a",   "-0x0.0p0    "},
+                {-0d, "%#+01.6a",   "-0x0.000000p0"},
+                {-0d, "%-+8.4a",    "-0x0.0000p0"},
+
+                {0d, "%a",         "0x0.0p0"},
+                {0d, "%#.3a",      "0x0.000p0"},
+                {0d, "%5a",        "0x0.0p0"},
+                {0d, "%- 12.0a",   " 0x0.0p0    "},
+                {0d, "%#+01.6a",   "+0x0.000000p0"},
+                {0d, "%-+8.4a",    "+0x0.0000p0"},
+                
+                {1d, "%a",         "0x1.0p0"},
+                {1d, "%#.3a",      "0x1.000p0"},
+                {1d, "%5a",        "0x1.0p0"},
+                {1d, "%- 12.0a",   " 0x1.0p0    "},
+                {1d, "%#+01.6a",   "+0x1.000000p0"},
+                {1d, "%-+8.4a",    "+0x1.0000p0"},
+                
+                {-1d, "%a",         "-0x1.0p0"},
+                {-1d, "%#.3a",      "-0x1.000p0"},
+                {-1d, "%5a",        "-0x1.0p0"},
+                {-1d, "%- 12.0a",   "-0x1.0p0    "},
+                {-1d, "%#+01.6a",   "-0x1.000000p0"},
+                {-1d, "%-+8.4a",    "-0x1.0000p0"},
+                
+                {.00000001d, "%a",         "0x1.5798ee2308c3ap-27"},
+                {.00000001d, "%5a",        "0x1.5798ee2308c3ap-27"},
+                {.00000001d, "%- 12.0a",   " 0x1.5p-27  "},
+                {.00000001d, "%#+01.6a",   "+0x1.5798eep-27"},
+                
+                {1000.10d, "%a",         "0x1.f40cccccccccdp9"},
+                {1000.10d, "%5a",        "0x1.f40cccccccccdp9"},
+                {1000.10d, "%- 12.0a",   " 0x1.fp9    "},
+                
+                {0.1d, "%a",         "0x1.999999999999ap-4"},
+                {0.1d, "%5a",        "0x1.999999999999ap-4"},
+                
+                {-2.d, "%a",         "-0x1.0p1"},
+                {-2.d, "%#.3a",      "-0x1.000p1"},
+                {-2.d, "%5a",        "-0x1.0p1"},
+                {-2.d, "%- 12.0a",   "-0x1.0p1    "},
+                {-2.d, "%#+01.6a",   "-0x1.000000p1"},
+                {-2.d, "%-+8.4a",    "-0x1.0000p1"},
+                
+                {-.00009d, "%a",         "-0x1.797cc39ffd60fp-14"},
+                {-.00009d, "%5a",        "-0x1.797cc39ffd60fp-14"},
+                
+                {-1234567890.012345678d, "%a",         "-0x1.26580b480ca46p30"},
+                {-1234567890.012345678d, "%5a",        "-0x1.26580b480ca46p30"},
+                {-1234567890.012345678d, "%- 12.0a",   "-0x1.2p30   "},
+                {-1234567890.012345678d, "%#+01.6a",   "-0x1.26580bp30"},
+                {-1234567890.012345678d, "%-+8.4a",    "-0x1.2658p30"},
+                
+                {Double.MAX_VALUE, "%a",         "0x1.fffffffffffffp1023"},
+                {Double.MAX_VALUE, "%5a",        "0x1.fffffffffffffp1023"},
+                
+                {Double.MIN_VALUE, "%a",         "0x0.0000000000001p-1022"},
+                {Double.MIN_VALUE, "%5a",        "0x0.0000000000001p-1022"},
+                
+                {Double.NaN, "%a",         "NaN"},
+                {Double.NaN, "%#.3a",      "NaN"},
+                {Double.NaN, "%5a",        "  NaN"},
+                {Double.NaN, "%- 12.0a",   "NaN         "},
+                {Double.NaN, "%#+01.6a",   "NaN"},
+                {Double.NaN, "%-+8.4a",    "NaN     "},
+                
+                {Double.NEGATIVE_INFINITY, "%a",         "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%#.3a",      "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%5a",        "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%- 12.0a",   "-Infinity   "},
+                {Double.NEGATIVE_INFINITY, "%#+01.6a",   "-Infinity"},
+                {Double.NEGATIVE_INFINITY, "%-+8.4a",    "-Infinity"},
+                
+                {Double.POSITIVE_INFINITY, "%a",         "Infinity"},
+                {Double.POSITIVE_INFINITY, "%#.3a",      "Infinity"},
+                {Double.POSITIVE_INFINITY, "%5a",        "Infinity"},
+                {Double.POSITIVE_INFINITY, "%- 12.0a",   " Infinity   "},
+                {Double.POSITIVE_INFINITY, "%#+01.6a",   "+Infinity"},
+                {Double.POSITIVE_INFINITY, "%-+8.4a",    "+Infinity"},
+                
+        };
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+            for (int i = 0; i < tripleA.length; i++) {
+                f = new Formatter(Locale.UK);
+                f.format((String)tripleA[i][pattern], tripleA[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleA[i][input] + ",pattern["
+                        + i + "]:" + tripleA[i][pattern],
+                        tripleA[i][output], f.toString());
+
+                // test for conversion type 'A'
+                f = new Formatter(Locale.UK);
+                f.format(((String)tripleA[i][pattern]).toUpperCase(), tripleA[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleA[i][input] + ",pattern["
+                        + i + "]:" + tripleA[i][pattern], ((String)tripleA[i][output])
+                        .toUpperCase(Locale.UK), f.toString());
+            }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
+     *        conversion type 'e' and 'E'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionE() {
+        Formatter f = null;
+        final Object[][] tripleE = {
+                {BigDecimal.ZERO, "%e",         "0.000000e+00"},
+                {BigDecimal.ZERO, "%#.0e",      "0.e+00"},
+                {BigDecimal.ZERO, "%# 9.8e",    " 0.00000000e+00"},
+                {BigDecimal.ZERO, "%#+0(8.4e",  "+0.0000e+00"},
+                {BigDecimal.ZERO, "%-+17.6e",   "+0.000000e+00    "},
+                {BigDecimal.ZERO, "% 0(20e",    " 00000000.000000e+00"},
+                
+                {BigDecimal.ONE, "%e",         "1.000000e+00"},
+                {BigDecimal.ONE, "%#.0e",      "1.e+00"},
+                {BigDecimal.ONE, "%# 9.8e",    " 1.00000000e+00"},
+                {BigDecimal.ONE, "%#+0(8.4e",  "+1.0000e+00"},
+                {BigDecimal.ONE, "%-+17.6e",   "+1.000000e+00    "},
+                {BigDecimal.ONE, "% 0(20e",    " 00000001.000000e+00"},
+                
+                {BigDecimal.TEN, "%e",         "1.000000e+01"},
+                {BigDecimal.TEN, "%#.0e",      "1.e+01"},
+                {BigDecimal.TEN, "%# 9.8e",    " 1.00000000e+01"},
+                {BigDecimal.TEN, "%#+0(8.4e",  "+1.0000e+01"},
+                {BigDecimal.TEN, "%-+17.6e",   "+1.000000e+01    "},
+                {BigDecimal.TEN, "% 0(20e",    " 00000001.000000e+01"},
+                
+                {new BigDecimal(-1), "%e",         "-1.000000e+00"},
+                {new BigDecimal(-1), "%#.0e",      "-1.e+00"},
+                {new BigDecimal(-1), "%# 9.8e",    "-1.00000000e+00"},
+                {new BigDecimal(-1), "%#+0(8.4e",  "(1.0000e+00)"},
+                {new BigDecimal(-1), "%-+17.6e",   "-1.000000e+00    "},
+                {new BigDecimal(-1), "% 0(20e",    "(0000001.000000e+00)"},
+                
+                {new BigDecimal("5.000E999"), "%e",         "5.000000e+999"},
+                {new BigDecimal("5.000E999"), "%#.0e",      "5.e+999"},
+                {new BigDecimal("5.000E999"), "%# 9.8e",    " 5.00000000e+999"},
+                {new BigDecimal("5.000E999"), "%#+0(8.4e",  "+5.0000e+999"},
+                {new BigDecimal("5.000E999"), "%-+17.6e",   "+5.000000e+999   "},
+                {new BigDecimal("5.000E999"), "% 0(20e",    " 0000005.000000e+999"},
+                
+                {new BigDecimal("-5.000E999"), "%e",         "-5.000000e+999"},
+                {new BigDecimal("-5.000E999"), "%#.0e",      "-5.e+999"},
+                {new BigDecimal("-5.000E999"), "%# 9.8e",    "-5.00000000e+999"},
+                {new BigDecimal("-5.000E999"), "%#+0(8.4e",  "(5.0000e+999)"},
+                {new BigDecimal("-5.000E999"), "%-+17.6e",   "-5.000000e+999   "},
+                {new BigDecimal("-5.000E999"), "% 0(20e",    "(000005.000000e+999)"},
+        };
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+            for (int i = 0; i < tripleE.length; i++) {
+                f = new Formatter(Locale.US);
+                f.format((String)tripleE[i][pattern], tripleE[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
+                        + i + "]:" + tripleE[i][pattern],
+                        tripleE[i][output], f.toString());
+
+                // test for conversion type 'E'
+                f = new Formatter(Locale.US);
+                f.format(((String)tripleE[i][pattern]).toUpperCase(), tripleE[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
+                        + i + "]:" + tripleE[i][pattern], ((String)tripleE[i][output])
+                        .toUpperCase(Locale.US), f.toString());
+            }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
+     *        conversion type 'g' and 'G'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionG() {
+        Formatter f = null;
+        final Object[][] tripleG = {
+                {BigDecimal.ZERO, "%g",         "0.00000"},
+                {BigDecimal.ZERO, "%.5g",       "0.0000"},
+                {BigDecimal.ZERO, "%- (,9.8g",  " 0.0000000"},
+                {BigDecimal.ZERO, "%+0(,8.4g",  "+000.000"},
+                {BigDecimal.ZERO, "%-+10.6g",   "+0.00000  "},
+                {BigDecimal.ZERO, "% 0(,12.0g", " 00000000000"},
+                {BigDecimal.ONE, "%g",          "1.00000"},
+                {BigDecimal.ONE, "%.5g",        "1.0000"},
+                {BigDecimal.ONE, "%- (,9.8g",   " 1.0000000"},
+                {BigDecimal.ONE, "%+0(,8.4g",   "+001.000"},
+                {BigDecimal.ONE, "%-+10.6g",    "+1.00000  "},
+                {BigDecimal.ONE, "% 0(,12.0g",  " 00000000001"},
+                
+                {new BigDecimal(-1), "%g",          "-1.00000"},
+                {new BigDecimal(-1), "%.5g",        "-1.0000"},
+                {new BigDecimal(-1), "%- (,9.8g",   "(1.0000000)"},
+                {new BigDecimal(-1), "%+0(,8.4g",   "(01.000)"},
+                {new BigDecimal(-1), "%-+10.6g",    "-1.00000  "},
+                {new BigDecimal(-1), "% 0(,12.0g",  "(0000000001)"},
+                
+                {new BigDecimal(-0.000001), "%g",           "-1.00000e-06"},
+                {new BigDecimal(-0.000001), "%.5g",         "-1.0000e-06"},
+                {new BigDecimal(-0.000001), "%- (,9.8g",    "(1.0000000e-06)"},
+                {new BigDecimal(-0.000001), "%+0(,8.4g",    "(1.000e-06)"},
+                {new BigDecimal(-0.000001), "%-+10.6g",     "-1.00000e-06"},
+                {new BigDecimal(-0.000001), "% 0(,12.0g",   "(000001e-06)"},
+                
+                {new BigDecimal(0.0002), "%g",          "0.000200000"},
+                {new BigDecimal(0.0002), "%.5g",        "0.00020000"},
+                {new BigDecimal(0.0002), "%- (,9.8g",   " 0.00020000000"},
+                {new BigDecimal(0.0002), "%+0(,8.4g",   "+0.0002000"},
+                {new BigDecimal(0.0002), "%-+10.6g",    "+0.000200000"},
+                {new BigDecimal(0.0002), "% 0(,12.0g",  " 000000.0002"},
+                
+                {new BigDecimal(-0.003), "%g",          "-0.00300000"},
+                {new BigDecimal(-0.003), "%.5g",        "-0.0030000"},
+                {new BigDecimal(-0.003), "%- (,9.8g",   "(0.0030000000)"},
+                {new BigDecimal(-0.003), "%+0(,8.4g",   "(0.003000)"},
+                {new BigDecimal(-0.003), "%-+10.6g",    "-0.00300000"},
+                {new BigDecimal(-0.003), "% 0(,12.0g",  "(000000.003)"},
+                
+                {new BigDecimal("5.000E999"), "%g",             "5.00000e+999"},
+                {new BigDecimal("5.000E999"), "%.5g",           "5.0000e+999"},
+                {new BigDecimal("5.000E999"), "%- (,9.8g",      " 5.0000000e+999"},
+                {new BigDecimal("5.000E999"), "%+0(,8.4g",      "+5.000e+999"},
+                {new BigDecimal("5.000E999"), "%-+10.6g",       "+5.00000e+999"},
+                {new BigDecimal("5.000E999"), "% 0(,12.0g",     " 000005e+999"},
+                
+                {new BigDecimal("-5.000E999"), "%g",            "-5.00000e+999"},
+                {new BigDecimal("-5.000E999"), "%.5g",          "-5.0000e+999"},
+                {new BigDecimal("-5.000E999"), "%- (,9.8g",     "(5.0000000e+999)"},
+                {new BigDecimal("-5.000E999"), "%+0(,8.4g",     "(5.000e+999)"},
+                {new BigDecimal("-5.000E999"), "%-+10.6g",      "-5.00000e+999"},
+                {new BigDecimal("-5.000E999"), "% 0(,12.0g",    "(00005e+999)"},
+        };
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+            for (int i = 0; i < tripleG.length; i++) {
+                f = new Formatter(Locale.US);
+                f.format((String)tripleG[i][pattern], tripleG[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
+                        + i + "]:" + tripleG[i][pattern],
+                        tripleG[i][output], f.toString());
+
+                // test for conversion type 'G'
+                f = new Formatter(Locale.US);
+                f.format(((String)tripleG[i][pattern]).toUpperCase(), tripleG[i][input]);
+                assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
+                        + i + "]:" + tripleG[i][pattern], ((String)tripleG[i][output])
+                        .toUpperCase(Locale.US), f.toString());
+            }
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%- (,9.6g", new BigDecimal("4E6"));
+        /*
+         * fail on RI, spec says 'g' requires the output to be formatted in
+         * general scientific notation and the localization algorithm is
+         * applied. But RI format this case to 4.00000e+06, which does not
+         * conform to the German Locale
+         */
+        assertEquals(" 4,00000e+06", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
+     *        conversion type 'f'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionF() {
+
+        Formatter f = null;
+        final int input   = 0;
+        final int pattern = 1;
+        final int output  = 2;
+        final Object[][] tripleF = {
+                {BigDecimal.ZERO,                                               "%f",           "0.000000"},
+                {BigDecimal.ZERO,                                               "%#.3f",        "0.000"},
+                {BigDecimal.ZERO,                                               "%#,5f",        "0.000000"},
+                {BigDecimal.ZERO,                                               "%- #(12.0f",   " 0.         "},
+                {BigDecimal.ZERO,                                               "%#+0(1.6f",    "+0.000000"},
+                {BigDecimal.ZERO,                                               "%-+(8.4f",     "+0.0000 "},
+                {BigDecimal.ZERO,                                               "% 0#(9.8f",    " 0.00000000"},
+                {BigDecimal.ONE,                                                "%f",           "1.000000"},
+                {BigDecimal.ONE,                                                "%#.3f",        "1.000"},
+                {BigDecimal.ONE,                                                "%#,5f",        "1.000000"},
+                {BigDecimal.ONE,                                                "%- #(12.0f",   " 1.         "},
+                {BigDecimal.ONE,                                                "%#+0(1.6f",    "+1.000000"},
+                {BigDecimal.ONE,                                                "%-+(8.4f",     "+1.0000 "},
+                {BigDecimal.ONE,                                                "% 0#(9.8f",    " 1.00000000"},
+                {BigDecimal.TEN,                                                "%f",           "10.000000"},
+                {BigDecimal.TEN,                                                "%#.3f",        "10.000"},
+                {BigDecimal.TEN,                                                "%#,5f",        "10.000000"},
+                {BigDecimal.TEN,                                                "%- #(12.0f",   " 10.        "},
+                {BigDecimal.TEN,                                                "%#+0(1.6f",    "+10.000000"},
+                {BigDecimal.TEN,                                                "%-+(8.4f",     "+10.0000"},
+                {BigDecimal.TEN,                                                "% 0#(9.8f",    " 10.00000000"},
+                {new BigDecimal(-1),                                            "%f",           "-1.000000"},
+                {new BigDecimal(-1),                                            "%#.3f",        "-1.000"},
+                {new BigDecimal(-1),                                            "%#,5f",        "-1.000000"},
+                {new BigDecimal(-1),                                            "%- #(12.0f",   "(1.)        "},
+                {new BigDecimal(-1),                                            "%#+0(1.6f",    "(1.000000)"},
+                {new BigDecimal(-1),                                            "%-+(8.4f",     "(1.0000)"},
+                {new BigDecimal(-1),                                            "% 0#(9.8f",    "(1.00000000)"},
+                {new BigDecimal("9999999999999999999999999999999999999999999"), "%f",           "9999999999999999999999999999999999999999999.000000"},
+                {new BigDecimal("9999999999999999999999999999999999999999999"), "%#.3f",        "9999999999999999999999999999999999999999999.000"},
+                {new BigDecimal("9999999999999999999999999999999999999999999"), "%#,5f",        "9,999,999,999,999,999,999,999,999,999,999,999,999,999,999.000000"},
+                {new BigDecimal("9999999999999999999999999999999999999999999"), "%- #(12.0f",   " 9999999999999999999999999999999999999999999."},
+                {new BigDecimal("9999999999999999999999999999999999999999999"), "%#+0(1.6f",    "+9999999999999999999999999999999999999999999.000000"},
+                {new BigDecimal("9999999999999999999999999999999999999999999"), "%-+(8.4f",     "+9999999999999999999999999999999999999999999.0000"},
+                {new BigDecimal("9999999999999999999999999999999999999999999"), "% 0#(9.8f",    " 9999999999999999999999999999999999999999999.00000000"},
+                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%f",          "-9999999999999999999999999999999999999999999.000000"},
+                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%#.3f",       "-9999999999999999999999999999999999999999999.000"},
+                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%#,5f",       "-9,999,999,999,999,999,999,999,999,999,999,999,999,999,999.000000"},
+                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%- #(12.0f",  "(9999999999999999999999999999999999999999999.)"},
+                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%#+0(1.6f",   "(9999999999999999999999999999999999999999999.000000)"},
+                {new BigDecimal("-9999999999999999999999999999999999999999999"), "%-+(8.4f",    "(9999999999999999999999999999999999999999999.0000)"},
+                {new BigDecimal("-9999999999999999999999999999999999999999999"), "% 0#(9.8f",   "(9999999999999999999999999999999999999999999.00000000)"},
+        }; 
+        for (int i = 0; i < tripleF.length; i++) {
+            f = new Formatter(Locale.US);
+            f.format((String)tripleF[i][pattern], tripleF[i][input]);
+            assertEquals("triple[" + i + "]:" + tripleF[i][input] + ",pattern["
+                    + i + "]:" + tripleF[i][pattern], tripleF[i][output], f.toString());
+        }
+
+        f = new Formatter(Locale.US);
+        f.format("%f", new BigDecimal("5.0E9"));
+        // error on RI
+        // RI throw ArrayIndexOutOfBoundsException
+        assertEquals("5000000000.000000", f.toString());
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for exceptions in
+     *        Float/Double/BigDecimal conversion type 'e', 'E', 'g', 'G', 'f', 'a', 'A'
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalConversionException() {
+        Formatter f = null;
+
+        final char[] conversions = { 'e', 'E', 'g', 'G', 'f', 'a', 'A' };
+        final Object[] illArgs = { false, (byte) 1, (short) 2, 3, (long) 4,
+                new BigInteger("5"), new Character('c'), new Object(),
+                new Date() };
+        for (int i = 0; i < illArgs.length; i++) {
+            for (int j = 0; j < conversions.length; j++) {
+                try {
+                    f = new Formatter(Locale.UK);
+                    f.format("%" + conversions[j], illArgs[i]);
+                    fail("should throw IllegalFormatConversionException");
+                } catch (IllegalFormatConversionException e) {
+                    // expected
+                }
+            }
+        }
+
+        try {
+            f = new Formatter(Locale.UK);
+            f.format("%a", new BigDecimal(1));
+            fail("should throw IllegalFormatConversionException");
+        } catch (IllegalFormatConversionException e) {
+            // expected
+        }
+
+        try {
+            f = new Formatter(Locale.UK);
+            f.format("%A", new BigDecimal(1));
+            fail("should throw IllegalFormatConversionException");
+        } catch (IllegalFormatConversionException e) {
+            // expected
+        }
+
+        final String[] flagsConversionMismatches = { "%,e", "%,E", "%#g",
+                "%#G", "%,a", "%,A", "%(a", "%(A" };
+        for (int i = 0; i < flagsConversionMismatches.length; i++) {
+            try {
+                f = new Formatter(Locale.CHINA);
+                f.format(flagsConversionMismatches[i], new BigDecimal(1));
+                fail("should throw FormatFlagsConversionMismatchException");
+            } catch (FormatFlagsConversionMismatchException e) {
+                // expected
+            }
+            try {
+                f = new Formatter(Locale.JAPAN);
+                f.format(flagsConversionMismatches[i], (BigDecimal) null);
+                fail("should throw FormatFlagsConversionMismatchException");
+            } catch (FormatFlagsConversionMismatchException e) {
+                // expected
+            }
+        }
+
+        final String[] missingFormatWidths = { "%-0e", "%0e", "%-e", "%-0E",
+                "%0E", "%-E", "%-0g", "%0g", "%-g", "%-0G", "%0G", "%-G",
+                "%-0f", "%0f", "%-f", "%-0a", "%0a", "%-a", "%-0A", "%0A",
+                "%-A" };
+        for (int i = 0; i < missingFormatWidths.length; i++) {
+            try {
+                f = new Formatter(Locale.KOREA);
+                f.format(missingFormatWidths[i], 1f);
+                fail("should throw MissingFormatWidthException");
+            } catch (MissingFormatWidthException e) {
+                // expected
+            }
+
+            try {
+                f = new Formatter(Locale.KOREA);
+                f.format(missingFormatWidths[i], (Float) null);
+                fail("should throw MissingFormatWidthException");
+            } catch (MissingFormatWidthException e) {
+                // expected
+            }
+        }
+
+        final String[] illFlags = { "%+ e", "%+ E", "%+ g", "%+ G", "%+ f",
+                "%+ a", "%+ A", "%-03e", "%-03E", "%-03g", "%-03G", "%-03f",
+                "%-03a", "%-03A" };
+        for (int i = 0; i < illFlags.length; i++) {
+            try {
+                f = new Formatter(Locale.CANADA);
+                f.format(illFlags[i], 1.23d);
+                fail("should throw IllegalFormatFlagsException");
+            } catch (IllegalFormatFlagsException e) {
+                // expected
+            }
+
+            try {
+                f = new Formatter(Locale.CANADA);
+                f.format(illFlags[i], (Double) null);
+                fail("should throw IllegalFormatFlagsException");
+            } catch (IllegalFormatFlagsException e) {
+                // expected
+            }
+        }
+
+        f = new Formatter(Locale.US);
+        try {
+            f.format("%F", 1);
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for
+     *        Float/Double/BigDecimal exception throwing order
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalExceptionOrder() {
+        Formatter f = null;
+
+        /*
+         * Summary: UnknownFormatConversionException >
+         * MissingFormatWidthException > IllegalFormatFlagsException >
+         * FormatFlagsConversionMismatchException >
+         * IllegalFormatConversionException
+         * 
+         */
+        try {
+            // compare FormatFlagsConversionMismatchException and
+            // IllegalFormatConversionException
+            f = new Formatter(Locale.US);
+            f.format("%,e", (byte) 1);
+            fail("should throw FormatFlagsConversionMismatchException");
+        } catch (FormatFlagsConversionMismatchException e) {
+            // expected
+        }
+
+        try {
+            // compare IllegalFormatFlagsException and
+            // FormatFlagsConversionMismatchException
+            f = new Formatter(Locale.US);
+            f.format("%+ ,e", 1f);
+            fail("should throw IllegalFormatFlagsException");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+
+        try {
+            // compare MissingFormatWidthException and
+            // IllegalFormatFlagsException
+            f = new Formatter(Locale.US);
+            f.format("%+ -e", 1f);
+            fail("should throw MissingFormatWidthException");
+        } catch (MissingFormatWidthException e) {
+            // expected
+        }
+
+        try {
+            // compare UnknownFormatConversionException and
+            // MissingFormatWidthException
+            f = new Formatter(Locale.US);
+            f.format("%-F", 1f);
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for BigDecimal
+     *        exception throwing order
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalExceptionOrder() {
+        Formatter f = null;
+        BigDecimal bd = new BigDecimal("1.0");
+
+        /*
+         * Summary: UnknownFormatConversionException >
+         * MissingFormatWidthException > IllegalFormatFlagsException >
+         * FormatFlagsConversionMismatchException >
+         * IllegalFormatConversionException
+         * 
+         */
+        try {
+            // compare FormatFlagsConversionMismatchException and
+            // IllegalFormatConversionException
+            f = new Formatter(Locale.US);
+            f.format("%,e", (byte) 1);
+            fail("should throw FormatFlagsConversionMismatchException");
+        } catch (FormatFlagsConversionMismatchException e) {
+            // expected
+        }
+
+        try {
+            // compare IllegalFormatFlagsException and
+            // FormatFlagsConversionMismatchException
+            f = new Formatter(Locale.US);
+            f.format("%+ ,e", bd);
+            fail("should throw IllegalFormatFlagsException");
+        } catch (IllegalFormatFlagsException e) {
+            // expected
+        }
+
+        try {
+            // compare MissingFormatWidthException and
+            // IllegalFormatFlagsException
+            f = new Formatter(Locale.US);
+            f.format("%+ -e", bd);
+            fail("should throw MissingFormatWidthException");
+        } catch (MissingFormatWidthException e) {
+            // expected
+        }
+
+        // compare UnknownFormatConversionException and
+        // MissingFormatWidthException
+        try {
+            f = new Formatter(Locale.US);
+            f.format("%-F", bd);
+            fail("should throw UnknownFormatConversionException");
+        } catch (UnknownFormatConversionException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @tests java.util.Formatter#format(String, Object...) for null argment for
+     *        Float/Double/BigDecimal conversion
+     */
+    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalNullConversion() {
+        Formatter f = null;
+
+        // test (Float)null
+        f = new Formatter(Locale.FRANCE);
+        f.format("%#- (9.0e", (Float) null);
+        assertEquals("         ", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%-+(1.6E", (Float) null);
+        assertEquals("NULL", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("%+0(,8.4g", (Float) null);
+        assertEquals("    null", f.toString());
+
+        f = new Formatter(Locale.FRANCE);
+        f.format("%- (9.8G", (Float) null);
+        assertEquals("NULL     ", f.toString());
+
+        f = new Formatter(Locale.FRANCE);
+        f.format("%- (12.1f", (Float) null);
+        assertEquals("n           ", f.toString());
+
+        f = new Formatter(Locale.FRANCE);
+        f.format("% .4a", (Float) null);
+        assertEquals("null", f.toString());
+
+        f = new Formatter(Locale.FRANCE);
+        f.format("%06A", (Float) null);
+        assertEquals("  NULL", f.toString());
+
+        // test (Double)null
+        f = new Formatter(Locale.GERMAN);
+        f.format("%- (9e", (Double) null);
+        assertEquals("null     ", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%#-+(1.6E", (Double) null);
+        assertEquals("NULL", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%+0(6.4g", (Double) null);
+        assertEquals("  null", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%- (,5.8G", (Double) null);
+        assertEquals("NULL ", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("% (.4f", (Double) null);
+        assertEquals("null", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("%#.6a", (Double) null);
+        assertEquals("null", f.toString());
+
+        f = new Formatter(Locale.GERMAN);
+        f.format("% 2.5A", (Double) null);
+        assertEquals("NULL", f.toString());
+
+        // test (BigDecimal)null
+        f = new Formatter(Locale.UK);
+        f.format("%#- (6.2e", (BigDecimal) null);
+        assertEquals("nu    ", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("%-+(1.6E", (BigDecimal) null);
+        assertEquals("NULL", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("%+-(,5.3g", (BigDecimal) null);
+        assertEquals("nul  ", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("%0 3G", (BigDecimal) null);
+        assertEquals("NULL", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("%0 (9.0G", (BigDecimal) null);
+        assertEquals("         ", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("% (.5f", (BigDecimal) null);
+        assertEquals("null", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("%06a", (BigDecimal) null);
+        assertEquals("  null", f.toString());
+
+        f = new Formatter(Locale.UK);
+        f.format("% .5A", (BigDecimal) null);
+        assertEquals("NULL", f.toString());
+    }
+    
+    /**
+     * @tests java.util.Formatter.BigDecimalLayoutForm#values()
+     */
+    public void test_values() {
+        BigDecimalLayoutForm[] vals = BigDecimalLayoutForm.values();
+        assertEquals("Invalid length of enum values", 2, vals.length);
+        assertEquals("Wrong scientific value in enum", BigDecimalLayoutForm.SCIENTIFIC, vals[0]);
+        assertEquals("Wrong dec float value in enum", BigDecimalLayoutForm.DECIMAL_FLOAT, vals[1]);
+    }
+    
+    /**
+     * @tests java.util.Formatter.BigDecimalLayoutForm#valueOf(String)
+     */
+    public void test_valueOfLjava_lang_String() {
+        BigDecimalLayoutForm sci = BigDecimalLayoutForm.valueOf("SCIENTIFIC");
+        assertEquals("Wrong scientific value in enum", BigDecimalLayoutForm.SCIENTIFIC, sci);
+
+        BigDecimalLayoutForm decFloat = BigDecimalLayoutForm.valueOf("DECIMAL_FLOAT");
+        assertEquals("Wrong dec float value from valueOf ", BigDecimalLayoutForm.DECIMAL_FLOAT, decFloat);
+    }
+    
+    /*
+     * Regression test for Harmony-5845
+     * test the short name for timezone whether uses DaylightTime or not
+     */
+    public void test_DaylightTime() {
+        Calendar c1 = new GregorianCalendar(2007, 0, 1);
+        Calendar c2 = new GregorianCalendar(2007, 7, 1);
+
+        for (String tz : TimeZone.getAvailableIDs()) {
+            if (tz.equals("America/Los_Angeles")) {
+                c1.setTimeZone(TimeZone.getTimeZone(tz));
+                c2.setTimeZone(TimeZone.getTimeZone(tz));
+                assertTrue(String.format("%1$tZ%2$tZ", c1, c2).equals("PSTPDT"));
+            }
+            if (tz.equals("America/Panama")) {
+                c1.setTimeZone(TimeZone.getTimeZone(tz));
+                c2.setTimeZone(TimeZone.getTimeZone(tz));
+                assertTrue(String.format("%1$tZ%2$tZ", c1, c2).equals("ESTEST"));
+            }
+        }
+    }
+    
+    /*
+     * Regression test for Harmony-5845
+     * test scientific notation to follow RI's behavior
+     */
+    public void test_ScientificNotation() {
+        Formatter f = new Formatter();
+        MathContext mc = new MathContext(30);
+        BigDecimal value = new BigDecimal(0.1, mc);
+        f.format("%.30G", value);
+
+        String result = f.toString();
+        String expected = "0.100000000000000005551115123126";
+        assertEquals(expected, result);
+    }
+
+    
+    /**
+     * Setup resource files for testing
+     */
+    protected void setUp() throws IOException {
+        root = System.getProperty("user.name").equalsIgnoreCase("root");
+        notExist = File.createTempFile("notexist", null);
+        notExist.delete();
+
+        fileWithContent = File.createTempFile("filewithcontent", null);
+        BufferedOutputStream bw = new BufferedOutputStream(
+                new FileOutputStream(fileWithContent));
+        bw.write(1);// write something into the file
+        bw.close();
+
+        readOnly = File.createTempFile("readonly", null);
+        readOnly.setReadOnly();
+
+        secret = File.createTempFile("secret", null);
+        
+        defaultTimeZone = TimeZone.getDefault();
+        TimeZone cst = TimeZone.getTimeZone("Asia/Shanghai");
+        TimeZone.setDefault(cst);
+    }
+
+    /**
+     * Delete the resource files if they exist
+     */
+    protected void tearDown() {
+        if (notExist.exists()) {
+            notExist.delete();
+        }
+
+        if (fileWithContent.exists()) {
+            fileWithContent.delete();
+        }
+        if (readOnly.exists()) {
+            readOnly.delete();
+        }
+        if (secret.exists()) {
+            secret.delete();
+        }
+        
+        TimeZone.setDefault(defaultTimeZone);
+    }
+}
diff --git a/jdktools/make/properties.xml b/classlib/support/src/test/java/tests/support/Support_Excludes.java
similarity index 100%
rename from jdktools/make/properties.xml
rename to classlib/support/src/test/java/tests/support/Support_Excludes.java
diff --git a/common_resources/depends/build/defines.mak b/common_resources/depends/build/defines.mak
index 1898980..dd468e8 100644
--- a/common_resources/depends/build/defines.mak
+++ b/common_resources/depends/build/defines.mak
@@ -13,8 +13,8 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-HY_HDK=$(HY_TARGET)\hdk
-!include <$(HY_HDK)\build\make\properties.mak>
+HY_HDK=$(HY_TARGET)/hdk
+!include <$(HY_HDK)/build/make/properties.mak>
 
 !ifndef APPVER
 APPVER=4.0 #Default Windows version
diff --git a/common_resources/depends/build/rules.mak b/common_resources/depends/build/rules.mak
index 4f04077..fe710e3 100644
--- a/common_resources/depends/build/rules.mak
+++ b/common_resources/depends/build/rules.mak
@@ -24,7 +24,7 @@
 .rc.res:
 	rc -I..\include $<
 
-all: $(DLLNAME) $(EXENAME) $(LIBNAME) $(HDKINCLUDES)
+all: $(HY_BIN) $(DLLNAME) $(EXENAME) $(LIBNAME)
 
 !ifdef LIBNAME
 $(LIBNAME): $(BUILDFILES) $(VIRTFILES) $(MDLLIBFILES)
@@ -45,7 +45,7 @@
 	-manifest:no \
 	$(BUILDFILES) $(VIRTFILES) $(MDLLIBFILES) $(SYSLIBFILES) \
 	kernel32.lib  msvcrt.lib ws2_32.lib advapi32.lib user32.lib gdi32.lib \
-	comdlg32.lib winspool.lib $(LIBPATH)$(*F).exp
+	comdlg32.lib winspool.lib  $(LIBPATH)$(*F).exp
 	if exist $(LIBPATH)$(*F).manifest \
             mt -manifest $(LIBPATH)$(*F).manifest -outputresource:$(DLLNAME);#2
         -del $(LIBPATH)$(*F).manifest >nul 2>&1
@@ -79,71 +79,56 @@
     -del $(LIBPATH)$(EXEBASE).manifest >nul 2>&1
     -del $(CLEANFILES) >nul 2>&1
 
+$(HY_BIN):
         -mkdir $(HY_BIN)
 
 # C rules
 {$(HY_PLATFORM)/}.c{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {$(HY_ARCH)/}.c{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {$(HY_OS)/}.c{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {$(SHAREDSUB)}.c{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {$(SHAREDSUB)additional/}.c{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {.}.c{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {$(OSS_DIST)}.c{$(HY_BIN)}.obj: # for zlib_dist / fdlibm_dist
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 # C++ rules
 {$(HY_ARCH)/}.cpp{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {$(HY_OS)/}.cpp{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {$(SHAREDSUB)}.cpp{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 {.}.cpp{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(cc) $(cflags) $(HYCFLAGS) -Fo$*.obj $<
 
 # assembler rules
 {$(HY_PLATFORM)/}.asm{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(ml) /Fo$*.obj /c /Cp /W3 /nologo /coff /Zm /Zd /Zi /Gd $(VMASMDEBUG) -DWIN32 $<
 
 {$(HY_ARCH)/}.asm{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(ml) /Fo$*.obj /c /Cp /W3 /nologo /coff /Zm /Zd /Zi /Gd $(VMASMDEBUG) -DWIN32 $<
 
 {$(HY_OS)/}.asm{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(ml) /Fo$*.obj /c /Cp /W3 /nologo /coff /Zm /Zd /Zi /Gd $(VMASMDEBUG) -DWIN32 $<
 
 {$(SHAREDSUB)}.asm{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(ml) /Fo$*.obj /c /Cp /W3 /nologo /coff /Zm /Zd /Zi /Gd $(VMASMDEBUG) -DWIN32 $<
 
 {.}.asm{$(HY_BIN)}.obj:
-        -mkdir $(*D)
 	$(ml) /Fo$*.obj /c /Cp /W3 /nologo /coff /Zm /Zd /Zi /Gd $(VMASMDEBUG) -DWIN32 $<
diff --git a/drlvm/build.xml b/drlvm/build.xml
index 1631424..3bfe38d 100644
--- a/drlvm/build.xml
+++ b/drlvm/build.xml
@@ -131,44 +131,34 @@
     <target name="build-extra" depends=""
         description="Compiles external dependencies">
         <ant antfile="make/extra/apr.xml" inheritall="false">
-             <propertyset refid="module.props" />
+            <propertyset refid="module.props" />
         </ant>
     </target>
 
     <target name="encoder">
-        <ant antfile="make/vm/encoder.xml" inheritall="false">
-             <propertyset refid="module.props" />
-        </ant>
+        <make dir="modules/vm/src/main/native/encoder/${hy.os.family}" />
     </target>
 
     <target name="port" depends="build-extra">
-        <ant antfile="make/vm/port.xml" inheritall="false">
-             <propertyset refid="module.props" />
-        </ant>
+        <make dir="modules/vm/src/main/native/port/${hy.os.family}" />
     </target>
 
     <target name="port_ch" depends="port">
-        <ant antfile="make/vm/port_ch.xml" inheritall="false">
-             <propertyset refid="module.props" />
-        </ant>
+        <make dir="modules/vm/src/main/native/port_ch/${hy.os.family}" />
     </target>
 
     <target name="hythr" depends="port">
-        <ant antfile="make/vm/hythr.xml" inheritall="false">
-             <propertyset refid="module.props" />
-        </ant>
+        <make dir="modules/vm/src/main/native/hythr/${hy.os.family}" />
     </target>
 
     <target name="verifier">
-        <ant antfile="make/vm/verifier.xml" inheritall="false">
-             <propertyset refid="module.props" />
-        </ant>
+        <make dir="modules/vm/src/main/native/verifier/${hy.os.family}" />
     </target>
 
     <target name="verifier-ext"
             description="Build a verifier extentions library">
         <ant antfile="make/vm/verifier-ext.xml" inheritall="false">
-             <propertyset refid="module.props" />
+            <propertyset refid="module.props" />
         </ant>
     </target>
 
@@ -182,44 +172,44 @@
 
     <target name="vmcore" depends="encoder, port, port_ch, hythr, verifier">
         <ant antfile="make/vm/vmcore.xml" inheritall="false">
-             <propertyset refid="module.props" />
+            <propertyset refid="module.props" />
         </ant>
+        <make dir="modules/vm/src/main/native/vmcore/${hy.os.family}" />
     </target>
 
     <target name="em" depends="vmcore">
-        <ant antfile="make/vm/em.xml" inheritall="false">
-             <propertyset refid="module.props" />
-        </ant>
+        <make dir="modules/vm/src/main/native/em/${hy.os.family}" />
     </target>
 
     <target name="interpreter" depends="vmcore">
         <ant antfile="make/vm/interpreter.xml" inheritall="false">
-             <propertyset refid="module.props" />
+            <propertyset refid="module.props" />
         </ant>
+        <make dir="modules/vm/src/main/native/interpreter/${hy.os.family}" />
     </target>
 
     <target name="kernel">
         <ant antfile="make/vm/kernel.xml" inheritall="false">
-             <propertyset refid="module.props" />
+            <propertyset refid="module.props" />
         </ant>
     </target>
 
     <target name="vmi" depends="vmcore">
-        <ant antfile="make/vm/vmi.xml" inheritall="false">
-             <propertyset refid="module.props" />
-        </ant>
+        <make dir="modules/vm/src/main/native/vmi/${hy.os.family}" />
     </target>
 
     <target name="jitrino" depends="vmcore">
         <ant antfile="make/vm/jitrino.xml" inheritall="false">
-             <propertyset refid="module.props" />
+            <propertyset refid="module.props" />
         </ant>
+        <make dir="modules/vm/src/main/native/jitrino/${hy.os.family}" />
     </target>
 
     <target name="gc_gen" depends="vmcore,kernel">
         <ant antfile="make/vm/gc_gen.xml" inheritall="false">
-             <propertyset refid="module.props" />
+            <propertyset refid="module.props" />
         </ant>
+        <make dir="modules/vm/src/main/native/gc_gen/${hy.os.family}" />
     </target>
 
     <target name="-init-hdk">
diff --git a/drlvm/make/vm/gc_gen.xml b/drlvm/make/vm/gc_gen.xml
index 4789019..fae1c7a 100644
--- a/drlvm/make/vm/gc_gen.xml
+++ b/drlvm/make/vm/gc_gen.xml
@@ -26,12 +26,6 @@
     <import file="../build-java.xml"/>
     
     <target name="build">
-        <antcall target="build-uncompressed">
-            <param name="hy.module" value="gc_gen_uncomp"/>
-        </antcall>
-        <antcall target="build-compressed">
-            <param name="hy.module" value="gc_gen"/>
-        </antcall>
         <make-java component="gc_gen" src="${vm.home}/gc_gen/javasrc"
             manifest="${vm.home}/gc_gen/resource/MANIFEST.MF">
             <classpath>
@@ -41,100 +35,6 @@
             </classpath>
         </make-java>
     </target>
-        
-    <target name="init" depends="-common-vm">
-        <condition property="build.compressed.gc">
-            <not><!-- refs.comp.mode is not REFS_USE_UNCOMPRESSED for compressed and runtime switching modes -->
-                <equals arg1="${refs.comp.mode}" arg2="REFS_USE_UNCOMPRESSED" />
-            </not>
-        </condition>
-        <condition property="build.uncompressed.gc">
-            <not><!-- refs.comp.mode is not REFS_USE_COMPRESSED for uncompressed and runtime switching modes -->
-                <equals arg1="${refs.comp.mode}" arg2="REFS_USE_COMPRESSED" />
-            </not>
-        </condition>
-        
-        <path id="gc.includes">
-            <dirset dir="${vm.home}">
-                <include name="include" />
-                <include name="port/include" />
-                <include name="vmcore/include" />
-                <include name="vmcore/src/util/win/include" if="is.windows"/>
-                <include name="vmcore/src/util/linux/include" if="is.unix"/>
-            </dirset>
-            <dirset dir="${vm.home}/gc_gen/src">
-            	<include name="common" />
-                <include name="gen" />
-                <include name="mark_compact" />
-                <include name="mark_sweep" />
-                <include name="move_compact" />
-                <include name="semi_space" />
-                <include name="los" />
-                <include name="thread" />
-                <include name="trace_forward" />
-                <include name="utils" />
-                <include name="jni" />
-                <include name="verify" />
-                <include name="finalizer_weakref" />
-            </dirset>
-            <pathelement location="${drlvm.include.dir}" />
-        </path>
-        
-        <compiler id="cpp.compiler" extends="common.cpp.compiler">
-            <includepath><path refid="gc.includes"/></includepath>
-            <fileset dir="${vm.home}/gc_gen/src">
-                <selector refid="gc.depends"/>
-                <include name="common/*.cpp" />
-                <include name="gen/*.cpp" />
-                <include name="mark_compact/*.cpp" />
-                <include name="mark_sweep/*.cpp" />
-                <include name="move_compact/*.cpp" />
-                <include name="semi_space/*.cpp" />
-                <include name="los/*.cpp" />
-                <include name="thread/*.cpp" />
-                <include name="trace_forward/*.cpp" />
-                <include name="utils/*.cpp" />
-                <include name="jni/*.cpp" />
-                <include name="verify/*.cpp" />
-                <include name="finalizer_weakref/*.cpp" />
-            </fileset>
-
-            <defineset define="BUILDING_GC" />
-        </compiler>
-
-        <linker id="linker" extends="common.linker">
-            <libset libs="harmonyvm" dir="${drlvm.lib.dir}" if="is.windows"/>
-            <libset libs="hythr" dir="${drlvm.shlib.dir}" />
-            <linkerarg value="-Bsymbolic" if="is.unix"/>
-            <linkerarg value="--version-script=${vm.home}/gc_gen/build/gc_gen.exp" if="is.unix"/>
-        </linker>
-
-    </target>
-    
-    <target name="build-uncompressed" depends="init" if="build.uncompressed.gc">
-        <init-native />
-        <depend-includes paths="gc.includes"/>
-        <depend-selector rebuild-flag="gc.includes.uptodate" id="gc.depends"/>
-        <compile-cc>
-            <compiler refid="cpp.compiler"/>
-        </compile-cc>
-        <link-lib name="gc_gen_uncomp" type="shared">
-            <linker refid="linker"/>
-        </link-lib>
-   </target>
-    
-    <target name="build-compressed" depends="init" if="build.compressed.gc">
-        <init-native/>
-        <depend-includes paths="gc.includes"/>
-        <depend-selector rebuild-flag="gc.includes.uptodate" id="gc.depends"/>
-        <compile-cc>
-            <compiler refid="cpp.compiler"/>
-            <defineset define="COMPRESS_REFERENCE" />
-        </compile-cc>
-        <link-lib name="gc_gen" type="shared">
-            <linker refid="linker"/>
-        </link-lib>        
-   </target>
     
     <target name="clean" >
         <clean-native component="gc_gen"/>
diff --git a/drlvm/make/vm/interpreter.xml b/drlvm/make/vm/interpreter.xml
index 0a71dec..a82a5da 100644
--- a/drlvm/make/vm/interpreter.xml
+++ b/drlvm/make/vm/interpreter.xml
@@ -23,70 +23,8 @@
     <import file="common-vm.xml"/>
         
     <target name="build" depends="-common-vm">        
-        <init-native/>
-        
-        <compile-asm>
-            <fileset id="int.asm" dir="${vm.home}/interpreter/src">
-                <include name="invokeJNI_ia32.asm" if="is.unix.x86"/>
-                <include name="invokeJNI_em64t.asm" if="is.unix.x86_64"/>
-                <include name="invokeJNI_ipf.asm" if="is.unix.ia64"/>
-    
-                <exclude name="*" if="is.windows.x86"/>
-                <include name="invokeJNI_Windows_ipf.asm" if="is.windows.ia64"/>
-                <include name="invokeJNI_Windows_em64t.asm" if="is.windows.x86_64"/>
-            </fileset>
-        </compile-asm>
-        
-        <path id="int.includes">
-            <dirset dir="${vm.home}">
-                <include name="include" />
-                <include name="vmcore/include" />
-                <include name="port/include" />
-
-                <include name="vmcore/src/util/win/include" if="is.windows"/>
-                <include name="vmcore/src/util/linux/include" if="is.unix"/>
-
-                <include name="vmcore/src/util/ipf/include" if="is.ia64"/>
-                <include name="vmcore/src/util/ipf/base_natives" if="is.ia64"/>
-                <include name="vmcore/src/lil/ipf/include" if="is.ia64"/>
-
-                <include name="vmcore/src/util/ia32/base_natives" if="is.x86"/>
-                <include name="port/src/encoder/ia32_em64t" if="is.x86"/>
-                <include name="vmcore/src/lil/ia32/include" if="is.x86"/>
-
-                <include name="vmcore/src/util/em64t/base_natives" if="is.x86_64"/>
-                <include name="port/src/encoder/ia32_em64t" if="is.x86_64"/>
-                <include name="vmcore/src/lil/em64t/include" if="is.x86_64"/>
-            </dirset>
-            <pathelement location="${drlvm.include.dir}" />
-        </path>
-        <depend-includes paths="int.includes"/>
-        <depend-selector rebuild-flag="int.includes.uptodate" id="int.depends"/>
-
-        <compile-cc>
-        <compiler id="cpp.compiler" extends="common.cpp.compiler">
-            <includepath><path refid="int.includes"/></includepath>
-            <fileset dir="${vm.home}/interpreter/src">
-                <selector refid="int.depends"/>
-                <include name="*.cpp" />
-                <exclude name="interp_native_ia32.cpp" unless="is.x86"/>
-                <exclude name="interp_native_ipf.cpp" unless="is.ia64"/>
-                <exclude name="interp_native_em64t.cpp" unless="is.x86_64"/>
-            </fileset>
-
-            <compilerarg value="/Op" if="is.windows" unless="is.cfg.debug"/>
-            <compilerarg value="-Qwd1572" if="is.icl"/>
-        </compiler>
-        </compile-cc>
-
-        <link-lib name="interpreter" type="shared">
-            <linker id="linker" extends="common.linker">
-                <linkerarg value="--version-script=${vm.home}/interpreter/build/interpreter.exp" if="is.unix"/>
-                <libset libs="harmonyvm,hythr" dir="${drlvm.shlib.dir}" />
-            </linker>
-        </link-lib>
-
-        <copy todir="${drlvm.bin.dir}" file="${vm.home}/interpreter/interpreter.emconf" />
+        <copy todir="${drlvm.bin.dir}"
+              file="${vm.home}/interpreter/interpreter.emconf" />
     </target>
     
     <target name="clean" >
diff --git a/drlvm/make/vm/jitrino.xml b/drlvm/make/vm/jitrino.xml
index a3bfb25..3f399af 100644
--- a/drlvm/make/vm/jitrino.xml
+++ b/drlvm/make/vm/jitrino.xml
@@ -24,79 +24,10 @@
         <clean-native />
     </target>
  
-    <target name="build" depends="-init-win,-init-unix">
-        <init-native/>
-        
-        <path id="jit.includes">
-            <dirset dir="${vm.home}/jitrino/src">
-                <include name="dynopt" />
-                <include name="main" />
-                <include name="shared" />
-                <include name="optimizer" />
-                <include name="optimizer/ssa" />
-                <include name="optimizer/abcd" />
-                <include name="translator" />
-                <include name="translator/java" />
-                <include name="vm" />
-                <include name="codegenerator" />
-
-                <include name="codegenerator/ia32" unless="is.ia64"/>
-                <include name="jet" unless="is.ia64"/>
-
-                <include name="codegenerator/ipf" if="is.ia64"/>
-                <include name="codegenerator/ipf/include" if="is.ia64"/>
-            </dirset>
-            <dirset dir="${vm.home}">
-                <include name="port/src/encoder/ia32_em64t" unless="is.ia64"/>
-                <include name="vmcore/src/util/win/include" if="is.windows"/>
-                <include name="vmcore/src/util/linux/include" if="is.unix"/>
-            </dirset>
-            <pathelement location="${vm.home}/include" />
-            <pathelement location="${vm.home}/vmcore/include" />
-            <pathelement location="${vm.home}/port/include" />
-            <pathelement location="${drlvm.include.dir}" />
-        </path>
-        <depend-includes paths="jit.includes"/>
-        <depend-selector rebuild-flag="jit.includes.uptodate" id="jit.depends"/>
-
-        <compile-cc>
-            <compiler id="cpp.compiler" extends="plaf.cpp.compiler">
-                <includepath><path refid="jit.includes"/></includepath>
-                <fileset dir="${vm.home}/jitrino/src">
-                    <selector refid="jit.depends"/>
-                    <include name="dynopt/*.cpp" />
-                    <include name="main/*.cpp" />
-                    <include name="shared/*.cpp" />
-                    <include name="optimizer/*.cpp" />
-                    <include name="optimizer/ssa/*.cpp" />
-                    <include name="optimizer/abcd/*.cpp" />
-                    <include name="translator/*.cpp" />
-                    <include name="translator/java/*.cpp" />
-                    <include name="vm/*.cpp" />
-                    <include name="codegenerator/*.cpp"/>
-    
-                    <include name="codegenerator/ipf/*.cpp" if="is.ia64"/>
-                    <include name="codegenerator/ia32/*.cpp" unless="is.ia64"/>
-                    <include name="jet/*.cpp" unless="is.ia64"/>
-                </fileset>
-    
-                <defineset define="PROJECT_JITRINO" />
-                <defineset define="JIT_LOGS,JIT_STATS" if="is.cfg.debug" />
-            </compiler>
-        </compile-cc>
-        <link-lib name="jitrino" type="shared">
-            <linker id="jitrino.linker" extends="common.linker">
-                <libset libs="harmonyvm,encoder,hythr" dir="${drlvm.lib.dir}" if="is.windows"/>
-                <linkerarg value="/OPT:REF" if="is.windows"/>
-        
-                <syslibset type="shared" libs="m" if="is.unix"/>
-                <syslibset type="shared" libs="dl" if="is.linux"/>
-                <linkerarg value="--version-script=${vm.home}/jitrino/build/jitrino.exp" if="is.unix"/>
-            </linker>
-        </link-lib>
-
+    <target name="build">
         <echo message="Copying configuration files for jitrino..."/> 
         <copy todir="${drlvm.bin.dir}" flatten="true">
+            <!-- TOFIX: move to more appropriate directory -->
               <fileset dir="${vm.home}/jitrino/config">
                   <include name="ia32/*" if="is.x86"/>
                   <include name="em64t/*" if="is.x86_64"/>
@@ -105,109 +36,4 @@
         </copy>
     </target>
 
-            <!-- windows specific -->
-        <target name="-init-win" depends="-common-vm" if="is.windows">
-            <compiler id="plaf.cpp.compiler" extends="common.cpp.compiler">
-                <!-- _CRT_SECURE_NO_DEPRECATE added to suppress a huge amount of complaints from msvc em64t compiler -->
-                <defineset define="_MBCS,_REENTRANT,__SMP__,_HAS_ITERATOR_DEBUGGING=0,_SECURE_SCL=0" />
-
-                <compilerarg value="/TP" />
-                <compilerarg value="/Zc:forScope" />
-                <compilerarg value="/WL" />
-                <compilerarg value="/W4" />
-<!--                <compilerarg value="/WX" /> -->
-
-                <compilerarg value="/Gm" if="is.cfg.debug"/>
-                <compilerarg value="/RTC1" if="is.cfg.debug"/>
-
-                <compilerarg value="/Ot" if="is.cfg.release"/>
-
-                <compilerarg value="/Qvec_report0" if="is.icl" unless="is.cfg.debug"/>
-                <compilerarg value="/Qww1,82,111,172,181,279,280,373,424,593,654,858" if="is.icl"/>
-                <compilerarg value="/Qwd82,193,271,304,373,383,424,444,654,869,981,1125,1418,1419,1572,1683" if="is.icl"/>
-                    <!--
-                      # /Qwd[tag,...] Disable the soft diagnostics that corresponds to tag. 
-                      # /Qwr[tag,...] Override the severity of the soft diagnostics corresponding to tag and make it a remark. 
-                      # /Qww[tag,...] Override the severity of the soft diagnostics corresponding to tag and make it a warning. 
-                      # /Qwe[tag,...] Override the severity of the soft diagnostics corresponding to tag and make it an error.
-                      #
-                      # Following icl warning added to icl command line
-                      #
-                      # remark #1: last line of file ends without a newline      
-                      # remark #82: storage class is not first
-                      # remark #111: statement is unreachable
-                      # remark #181: argument is incompatible with corresponding format string conversion
-                      # remark #193: zero used for undefined preprocessing identifier
-                      # remark #271: trailing comma is nonstandard   
-                      # remark #279: controlling expression is constant    
-                      # remark #280: selector expression is constant
-                      # remark #304: access control not specified ("private" by default)     
-                      # remark #373: "xxx" is inaccessible
-                      # remark #383: value copied to temporary, reference to temporary used
-                      # remark #424: extra ";" ignored
-                      # remark #444: destructor for base class "..." is not virtual    
-                      # remark #593: variable "xxx" was set but never used
-                      # remark #654: overloaded virtual function "xxx" is only partially overridden in class "yyy"
-                      # remark #858: type qualifier on return type is meaningless
-                      # remark #869: parameter "o" was never referenced    
-                      # remark #981: operands are evaluated in unspecified order
-                      # remark #1418: external definition with no prior declaration    
-                      # remark #1419: external declaration in primary source file      
-                      #
-                      # warning #1125: function "xxx" is hidden by "yyy" - virtual function override intended?
-                      # warning #1572: floating-point equality and inequality comparisons are unreliable
-                    -->
-
-                <compilerarg value="/wd4201" if="is.msvc"/>
-                <compilerarg value="/wd4244" if="is.msvc"/>
-                <compilerarg value="/wd4512" if="is.msvc"/>
-                <compilerarg value="/wd4702" if="is.msvc"/>
-                <compilerarg value="/wd4100" if="is.msvc"/>
-                <compilerarg value="/wd4127" if="is.msvc"/>
-                <compilerarg value="/wd4718" if="is.msvc" unless="is.cfg.debug"/>
-                    <!--
-                      #4201 - W4, nonstandart extention - nameless struct or union
-                      #4702 - W4, unreachable code (fired in STL's <list>)
-                      #4512 - assigment operator can not be generated
-                      #4100 - unreferenced formal parameter
-                      #4127 - conditional expression is constant
-                      #4718 - release: recursive call has no side effects, deleting
-
-                      # specify where to put the per-compilation unit pdb
-                      # this is needed to make the parallel compilation to work with cl: 
-                      # the default name is the same for all input files (vc70.pdb) and 
-                      # thus causes problems during parralel build.
-                    -->
-            </compiler>
-        </target>
-        
-        <target name="-init-unix" depends="-common-vm" if="is.unix">
-            <compiler id="plaf.cpp.compiler" extends="common.cpp.compiler">
-                <compilerarg value="-fmessage-length=0" if="is.gcc"/>
-                <compilerarg value="-Wall" if="is.gcc"/>
-                <compilerarg value="-Werror" if="is.gcc"/>
-                <compilerarg value="-Wno-uninitialized" if="is.gcc"/>
-
-                <compilerarg value="-x" />
-                <compilerarg value="c++" />
-                <compilerarg value="-fPIC" />
-                <compilerarg value="-fno-exceptions" />
-
-                <compilerarg value="-wd68" if="is.icc"/>
-                <compilerarg value="-wd654" if="is.icc"/>
-                <compilerarg value="-wd854" if="is.icc"/>
-                <compilerarg value="-wd470" if="is.icc"/>
-                <compilerarg value="-wd1572" if="is.icc"/>
-                <compilerarg value="-wd1125" if="is.icc"/>
-                    <!--                        
-                      # 470 - 'qualified name is not allowed in member declaration'
-                      # warning #1125: function "xxx" is hidden by "yyy"
-                      - virtual function override intended 
-                      # warning #1572: floating-point equality and inequality comparisons are unreliable
-                    -->
-
-                <compilerarg value="-O" if="is.unix" unless="is.cfg.debug"/>
-            </compiler>
-        </target>
-
 </project>
diff --git a/drlvm/make/vm/vmcore.xml b/drlvm/make/vm/vmcore.xml
index d040e97..36459e4 100644
--- a/drlvm/make/vm/vmcore.xml
+++ b/drlvm/make/vm/vmcore.xml
@@ -67,144 +67,12 @@
     </target>
 
     <target name="build" depends="setup,stamp-version,-common-vm">
-        <init-native component="vmcore"/>
-        
-        <compile-asm>
-            <fileset id="vmcore.asm" dir="${vm.home}/vmcore">
-                <include name="src/util/ipf/base/*.asm" if="is.unix.ia64"/>
-                <include name="src/util/win/em64t/*.asm" if="is.windows.x86_64"/>
-            </fileset>
-        </compile-asm>
-
-        <path id="vmcore.includes">
-            <dirset dir="${vm.home}">
-                <include name="include" />
-                <include name="vmcore/include" />
-                <include name="port/include" />
-            
-                <include name="vmcore/src/util/win/include" if="is.windows"/>
-                <include name="vmcore/src/util/linux/include" if="is.unix"/>
-
-                <include name="vmcore/src/util/ipf/include" if="is.ia64"/>
-                <include name="vmcore/src/util/ipf/base_natives" if="is.ia64"/>
-                <include name="vmcore/src/lil/ipf/include" if="is.ia64"/>
-
-                <include name="vmcore/src/util/ia32/base_natives" if="is.x86"/>
-                <include name="port/src/encoder/ia32_em64t" if="is.x86"/>
-                <include name="vmcore/src/lil/ia32/include" if="is.x86"/>
-
-                <include name="vmcore/src/util/em64t/base_natives" if="is.x86_64"/>
-                <include name="port/src/encoder/ia32_em64t" if="is.x86_64"/>
-                <include name="vmcore/src/lil/em64t/include" if="is.x86_64"/>
-            </dirset>
-            <pathelement location="${drlvm.include.dir}" />
-            <pathelement location="${hy.hdk}/include" />
-        </path>
-        <depend-includes paths="vmcore.includes"/>
-        <depend-selector rebuild-flag="vmcore.includes.uptodate" id="vmcore.depends"/>
-
-        <compile-cc>
-        <compiler id="cpp.compiler" extends="common.cpp.compiler">
-            <includepath><path refid="vmcore.includes"/></includepath>
-            <fileset dir="${vm.home}/vmcore/src">
-                <selector refid="vmcore.depends"/>
-                <include name="class_support/*.cpp" />
-                <include name="exception/*.cpp" />
-                <include name="init/*.cpp" />
-                <include name="gc/*.cpp" />
-                <include name="interpreter/*.cpp" />
-                <include name="jit/*.cpp" />
-                <include name="jni/*.cpp" />
-                <include name="jvmti/*.cpp" />
-                <include name="ncai/*.cpp" />
-                <include name="object/*.cpp" />
-                <include name="reflection/*.cpp" />
-                <include name="stack/*.cpp" />
-                <include name="thread/*.cpp" />
-                <include name="thread/helpers/thread_helpers.cpp" />
-                <include name="thread/helpers/thread_helpers_ia32.cpp" if="is.x86"/>
-                <include name="thread/helpers/thread_helpers_em64t.cpp" if="is.x86_64"/>
-                <include name="thread/helpers/thread_helpers_ipf.cpp" if="is.ia64"/>
-                <include name="util/*.cpp" />
-                <include name="lil/*.cpp" />
-                <include name="lil/stack_iterator/*.cpp" />
-            </fileset>
-
-            <fileset dir="${vm.home}/vmcore/src/kernel_classes/native">
-                <selector refid="vmcore.depends"/>
-                <include name="*.cpp" />
-                <exclude name="Runtime_win.cpp" if="is.unix"/>
-                <exclude name="System_win.cpp" if="is.unix"/>
-                <exclude name="Runtime_lnx.cpp" if="is.windows"/>
-                <exclude name="System_lnx.cpp" if="is.windows"/>
-            </fileset>
-
-            <fileset dir="${vm.home}">
-                <selector refid="vmcore.depends"/>
-                <include name="vmstart/src/compmgr/*.cpp" />
-            </fileset>
-
-            <fileset dir="${vm.home}/vmcore/src">
-                <selector refid="vmcore.depends"/>
-                <include name="thread/win/*.cpp" if="is.windows"/>
-                <include name="util/win/*.cpp" if="is.windows"/>
-                <include name="ncai/utils/*win.cpp" if="is.windows"/>
-
-                <include name="util/win/ia32/*.cpp" if="is.windows.x86"/>
-                <include name="util/win/em64t/*.cpp" if="is.windows.x86_64"/>
-                <include name="util/win/ia32_em64t/*.cpp" if="is.windows" unless="is.ia64"/>
-                <include name="util/win/ipf/*.cpp" if="is.windows.ia64"/>
-
-                <include name="util/ipf/**/*.cpp" if="is.ia64"/>
-                <include name="util/ia32/**/*.cpp" if="is.x86"/>
-                <include name="util/em64t/**/*.cpp" if="is.x86_64"/>
-
-                <include name="ncai/utils/*ipf.cpp" if="is.ia64"/>
-                <include name="ncai/utils/*ia32.cpp" if="is.x86"/>
-                <include name="ncai/utils/*em64t.cpp" if="is.x86_64"/>
-
-                <include name="thread/linux/*.cpp" if="is.unix"/>
-                <include name="util/linux/*.cpp" if="is.unix"/>
-                <include name="ncai/utils/*linux.cpp" if="is.unix"/>
-                <exclude name="util/linux/signals_ia32.cpp" unless="is.unix.x86"/>
-                <exclude name="util/linux/signals_em64t.cpp" unless="is.unix.x86_64"/>
-                <exclude name="util/linux/signals_ipf.cpp" unless="is.unix.ia64"/>
-                <include name="util/linux/ia32_em64t/*.cpp" if="is.unix" unless="is.ia64"/>
-
-                <include name="lil/ipf/*.cpp" if="is.ia64"/>
-                <include name="lil/ia32/*.cpp" if="is.x86"/>
-                <include name="lil/em64t/*.cpp" if="is.x86_64"/>
-            </fileset>
-
-            <compilerarg value="/Qwd94" if="is.icl"/>
-            <defineset define="BUILDING_VM,APR_DECLARE_STATIC" />
-        </compiler>
-        </compile-cc>
-        
-        <link-lib name="harmonyvm" type="shared">
-            <linker id="linker" extends="common.linker">
-                <libset libs="port,encoder,verifier,apr-1"
-                    dir="${drlvm.lib.dir}" />
-                <libset libs="hythr" dir="${drlvm.shlib.dir}" />
-                <libset libs="icuuc" dir="${drlvm.shlib.dir}"/>
-                <libset libs="ch" dir="${drlvm.shlib.dir}" />
-                <libset libs="hyzlib" dir="${hy.hdk.shlibs}"
-                        unless="hy.skip.zlib"/>
-                <syslibset type="shared" libs="z" if="hy.skip.zlib"/>
-
-                <linkerarg value="/DEF:${vm.home}/vmcore/src/harmonyvm64.def" if="is.windows.x86_64"/>
-                <linkerarg value="/DEF:${vm.home}/vmcore/src/harmonyvm.def" if="is.windows.x86"/>
-                <linkerarg value="--version-script=${vm.home}/vmcore/build/vmcore.exp" if="is.unix"/>
-                
-                <syslibset type="shared" libs="m,dl,stdc++,pthread,gcc_s,rt" if="is.linux"/>
-                <syslibset type="shared" libs="m,stdc++,pthread" if="is.freebsd"/> 
-                <linkerarg value="--export-dynamic" if="is.freebsd"/>
-            </linker>
-        </link-lib>        
-        
         <echo message="Copying files for internationalization..."/>
         <copy todir="${drlvm.bin.dir}" flatten="true" >
-            <fileset dir="${vm.home}/vmcore/src/init">
+            <!--
+                 TOFIX: move to more appropriate directory or copy in makefile?
+              -->
+            <fileset dir="modules/vm/src/main/native/vmcore/shared/init">
                 <include name="harmony*.properties" />
             </fileset>
         </copy>
diff --git a/drlvm/vm/em/src/DrlEMImpl.cpp b/drlvm/modules/vm/src/main/native/em/shared/DrlEMImpl.cpp
similarity index 100%
rename from drlvm/vm/em/src/DrlEMImpl.cpp
rename to drlvm/modules/vm/src/main/native/em/shared/DrlEMImpl.cpp
diff --git a/drlvm/vm/em/src/DrlEMImpl.h b/drlvm/modules/vm/src/main/native/em/shared/DrlEMImpl.h
similarity index 100%
rename from drlvm/vm/em/src/DrlEMImpl.h
rename to drlvm/modules/vm/src/main/native/em/shared/DrlEMImpl.h
diff --git a/drlvm/vm/em/src/DrlProfileCollectionFramework.h b/drlvm/modules/vm/src/main/native/em/shared/DrlProfileCollectionFramework.h
similarity index 100%
rename from drlvm/vm/em/src/DrlProfileCollectionFramework.h
rename to drlvm/modules/vm/src/main/native/em/shared/DrlProfileCollectionFramework.h
diff --git a/drlvm/vm/em/src/EBProfileCollector.cpp b/drlvm/modules/vm/src/main/native/em/shared/EBProfileCollector.cpp
similarity index 100%
rename from drlvm/vm/em/src/EBProfileCollector.cpp
rename to drlvm/modules/vm/src/main/native/em/shared/EBProfileCollector.cpp
diff --git a/drlvm/vm/em/src/EBProfileCollector.h b/drlvm/modules/vm/src/main/native/em/shared/EBProfileCollector.h
similarity index 100%
rename from drlvm/vm/em/src/EBProfileCollector.h
rename to drlvm/modules/vm/src/main/native/em/shared/EBProfileCollector.h
diff --git a/drlvm/vm/em/src/EdgeProfileCollector.cpp b/drlvm/modules/vm/src/main/native/em/shared/EdgeProfileCollector.cpp
similarity index 100%
rename from drlvm/vm/em/src/EdgeProfileCollector.cpp
rename to drlvm/modules/vm/src/main/native/em/shared/EdgeProfileCollector.cpp
diff --git a/drlvm/vm/em/src/EdgeProfileCollector.h b/drlvm/modules/vm/src/main/native/em/shared/EdgeProfileCollector.h
similarity index 100%
rename from drlvm/vm/em/src/EdgeProfileCollector.h
rename to drlvm/modules/vm/src/main/native/em/shared/EdgeProfileCollector.h
diff --git a/drlvm/vm/em/src/MTable.cpp b/drlvm/modules/vm/src/main/native/em/shared/MTable.cpp
similarity index 100%
rename from drlvm/vm/em/src/MTable.cpp
rename to drlvm/modules/vm/src/main/native/em/shared/MTable.cpp
diff --git a/drlvm/vm/em/src/MTable.h b/drlvm/modules/vm/src/main/native/em/shared/MTable.h
similarity index 100%
rename from drlvm/vm/em/src/MTable.h
rename to drlvm/modules/vm/src/main/native/em/shared/MTable.h
diff --git a/drlvm/vm/em/src/NValueProfileCollector.cpp b/drlvm/modules/vm/src/main/native/em/shared/NValueProfileCollector.cpp
similarity index 100%
rename from drlvm/vm/em/src/NValueProfileCollector.cpp
rename to drlvm/modules/vm/src/main/native/em/shared/NValueProfileCollector.cpp
diff --git a/drlvm/vm/em/src/NValueProfileCollector.h b/drlvm/modules/vm/src/main/native/em/shared/NValueProfileCollector.h
similarity index 100%
rename from drlvm/vm/em/src/NValueProfileCollector.h
rename to drlvm/modules/vm/src/main/native/em/shared/NValueProfileCollector.h
diff --git a/drlvm/vm/em/src/em_intf.cpp b/drlvm/modules/vm/src/main/native/em/shared/em_intf.cpp
similarity index 100%
rename from drlvm/vm/em/src/em_intf.cpp
rename to drlvm/modules/vm/src/main/native/em/shared/em_intf.cpp
diff --git a/drlvm/vm/em/src/method_lookup.cpp b/drlvm/modules/vm/src/main/native/em/shared/method_lookup.cpp
similarity index 100%
rename from drlvm/vm/em/src/method_lookup.cpp
rename to drlvm/modules/vm/src/main/native/em/shared/method_lookup.cpp
diff --git a/drlvm/vm/em/src/method_lookup.h b/drlvm/modules/vm/src/main/native/em/shared/method_lookup.h
similarity index 100%
rename from drlvm/vm/em/src/method_lookup.h
rename to drlvm/modules/vm/src/main/native/em/shared/method_lookup.h
diff --git a/drlvm/modules/vm/src/main/native/em/unix/exports.txt b/drlvm/modules/vm/src/main/native/em/unix/exports.txt
new file mode 100644
index 0000000..46b023a
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/em/unix/exports.txt
@@ -0,0 +1 @@
+EmInitialize
diff --git a/drlvm/modules/vm/src/main/native/em/unix/makefile b/drlvm/modules/vm/src/main/native/em/unix/makefile
new file mode 100644
index 0000000..16e1c98
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/em/unix/makefile
@@ -0,0 +1,45 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'em'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/vm/native/em/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+
+INCLUDES := -I$(VM_HOME)include -I$(VM_HOME)port/include \
+            -I$(VM_HOME)vmcore/include $(INCLUDES)
+
+BUILDFILES := \
+  DrlEMImpl.o EBProfileCollector.o EdgeProfileCollector.o MTable.o \
+  NValueProfileCollector.o em_intf.o method_lookup.o
+
+OSLIBS += $(STDCLIBS)
+MDLLIBFILES += $(DLLPATH)default/libharmonyvm$(HY_LINKLIB_SUFFIX) \
+  $(LIBPATH)libapr-1.a
+
+DLLNAME = $(DLLPATH)default/libem$(HY_SHLIB_SUFFIX)
+EXPNAME = EM_0.1
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/dec_base.cpp b/drlvm/modules/vm/src/main/native/encoder/shared/x86/dec_base.cpp
similarity index 99%
rename from drlvm/vm/port/src/encoder/ia32_em64t/dec_base.cpp
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/dec_base.cpp
index 77d61b1..d04968d 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/dec_base.cpp
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/dec_base.cpp
@@ -172,7 +172,7 @@
     return tmp.size;
 }
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 #define EXTEND_REG(reg, flag)                        \
     ((NULL == rex || 0 == rex->flag) ? reg : (reg + 8))
 #else
@@ -301,7 +301,7 @@
         *pbuf += 4;
         }        
         return true;
-#ifdef _EM64T_
+#ifdef HYX86_64
     case OpcodeByteKind_io:
         {
         long long int ival = *(long long int*)*pbuf;
@@ -338,12 +338,12 @@
         char *opcode_ptr = const_cast<char *>(odesc.opcode);
         int opcode_len = odesc.opcode_len;
         Rex *prex = NULL;
-#ifdef _EM64T_
+#ifdef HYX86_64
         Rex rex;
 #endif
 
         *pbuf = save_pbuf;
-#ifdef _EM64T_
+#ifdef HYX86_64
         // Match REX prefixes
         unsigned char rex_byte = (*pbuf)[0];
         if ((rex_byte & 0xf0) == 0x40)
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/dec_base.h b/drlvm/modules/vm/src/main/native/encoder/shared/x86/dec_base.h
similarity index 100%
rename from drlvm/vm/port/src/encoder/ia32_em64t/dec_base.h
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/dec_base.h
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_base.cpp
similarity index 98%
rename from drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_base.cpp
index 208ad7d..c1827c8 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_base.cpp
@@ -122,7 +122,7 @@
         else {
             modrm.mod = 3; // 11
             modrm.rm = getHWRegIndex(opnds[memidx].reg());
-#ifdef _EM64T_
+#ifdef HYX86_64
             if (opnds[memidx].need_rex() && needs_rex_r(opnds[memidx].reg())) {
                 prex->b = 1;
             }
@@ -130,7 +130,7 @@
             ++stream;
         }
         modrm.reg = getHWRegIndex(opnds[regidx].reg());
-#ifdef _EM64T_
+#ifdef HYX86_64
         if (opnds[regidx].need_rex() && needs_rex_r(opnds[regidx].reg())) {
             prex->r = 1;
         }
@@ -156,7 +156,7 @@
         else {
             modrm.mod = 3; // 11
             modrm.rm = getHWRegIndex(opnds[idx].reg());
-#ifdef _EM64T_
+#ifdef HYX86_64
             if (opnds[idx].need_rex() && needs_rex_r(opnds[idx].reg())) {
                 prex->b = 1;
             }
@@ -184,9 +184,9 @@
     case OpcodeByteKind_ib>>8:
     case OpcodeByteKind_iw>>8:
     case OpcodeByteKind_id>>8:
-#ifdef _EM64T_
+#ifdef HYX86_64
     case OpcodeByteKind_io>>8:
-#endif //_EM64T_
+#endif //HYX86_64
         //  ib, iw, id - A 1-byte (ib), 2-byte (iw), or 4-byte (id) 
         //  immediate operand to the instruction that follows the 
         //  opcode, ModR/M bytes or scale-indexing bytes. The opcode 
@@ -208,7 +208,7 @@
                 *(unsigned*)stream = (unsigned)opnds[idx].imm();
                 stream += 4;
             }
-#ifdef _EM64T_
+#ifdef HYX86_64
             else {
                 assert(kind == OpcodeByteKind_io);
                 *(long long*)stream = (long long)opnds[idx].imm();
@@ -254,7 +254,7 @@
         const unsigned lowByte = (byte & OpcodeByteKind_OpcodeMask);
         *(unsigned char*)stream = (unsigned char)lowByte + 
                                    getHWRegIndex(opnds[*pargsCount].reg());
-#ifdef _EM64T_
+#ifdef HYX86_64
         if (opnds[*pargsCount].need_rex() && needs_rex_r(opnds[*pargsCount].reg())) {
         prex->b = 1;
         }
@@ -288,7 +288,7 @@
 #endif
 
     const OpcodeDesc * odesc = lookup(mn, opnds);
-#if !defined(_EM64T_)
+#if !defined(HYX86_64)
     bool copy_opcode = true;
     Rex *prex = NULL;
 #else
@@ -460,7 +460,7 @@
         // ... yes - only have disp
         // On EM64T, the simply [disp] addressing means 'RIP-based' one - 
         // must have to use SIB to encode 'DS: based'
-#ifdef _EM64T_
+#ifdef HYX86_64
         modrm.mod = 0;  // 00 - ..
         modrm.rm = 4;   // 100 - have SIB
         
@@ -562,12 +562,12 @@
         // the only reason we're here without index, is that we have {E|R}SP 
         // or R12 as a base. Another possible reason - EBP without a disp - 
         // is handled above by adding a fake disp8
-#ifdef _EM64T_
+#ifdef HYX86_64
         assert(op.base() != RegName_Null && (equals(op.base(), REG_STACK) || 
                                              equals(op.base(), RegName_R12)));
-#else  // _EM64T_
+#else  // HYX86_64
         assert(op.base() != RegName_Null && equals(op.base(), REG_STACK));
-#endif //_EM64T_
+#endif //HYX86_64
         sib.scale = 0;  // SS = 00
         sib.index = 4;  // SS + index=100 means 'no index'
     }
@@ -757,7 +757,7 @@
     assert(!odesc->last);
     assert(odesc->roles.count == opnds.count());
     assert(odesc->platf != OpcodeInfo::decoder);
-#if !defined(_EM64T_)
+#if !defined(HYX86_64)
     // tuning was done for IA32 only, so no size restriction on EM64T
     //assert(sizeof(OpcodeDesc)==128);
 #endif
@@ -885,7 +885,7 @@
 }
 
 registers[] = {
-#ifdef _EM64T_
+#ifdef HYX86_64
     {"RAX",         RegName_RAX},
     {"RBX",         RegName_RBX},
     {"RCX",         RegName_RCX},
@@ -912,7 +912,7 @@
     {"EBP",         RegName_EBP},
     {"ESI",         RegName_ESI},
     {"EDI",         RegName_EDI},
-#ifdef _EM64T_
+#ifdef HYX86_64
     {"R8D",         RegName_R8D},
     {"R9D",         RegName_R9D},
     {"R10D",        RegName_R10D},
@@ -936,7 +936,7 @@
     {"CL",          RegName_CL},
     {"DL",          RegName_DL},
     {"BL",          RegName_BL},
-#if !defined(_EM64T_)
+#if !defined(HYX86_64)
     {"AH",          RegName_AH},
     {"CH",          RegName_CH},
     {"DH",          RegName_DH},
@@ -998,7 +998,7 @@
     {"XMM5",        RegName_XMM5},
     {"XMM6",        RegName_XMM6},
     {"XMM7",        RegName_XMM7},
-#ifdef _EM64T_
+#ifdef HYX86_64
     {"XMM8",       RegName_XMM8},
     {"XMM9",       RegName_XMM9},
     {"XMM10",      RegName_XMM10},
@@ -1018,7 +1018,7 @@
     {"XMM5S",       RegName_XMM5S},
     {"XMM6S",       RegName_XMM6S},
     {"XMM7S",       RegName_XMM7S},
-#ifdef _EM64T_
+#ifdef HYX86_64
     {"XMM8S",       RegName_XMM8S},
     {"XMM9S",       RegName_XMM9S},
     {"XMM10S",      RegName_XMM10S},
@@ -1037,7 +1037,7 @@
     {"XMM5D",       RegName_XMM5D},
     {"XMM6D",       RegName_XMM6D},
     {"XMM7D",       RegName_XMM7D},
-#ifdef _EM64T_
+#ifdef HYX86_64
     {"XMM8D",       RegName_XMM8D},
     {"XMM9D",       RegName_XMM9D},
     {"XMM10D",      RegName_XMM10D},
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_base.h
similarity index 99%
rename from drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_base.h
index 7f53fae..6a794a1 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_base.h
@@ -400,7 +400,7 @@
          */
         unsigned hash(void) const { return m_hash; }
         //
-#ifdef _EM64T_
+#ifdef HYX86_64
         bool need_rex(void) const { return m_need_rex; }
 #else
         bool need_rex(void) const { return false; }
@@ -475,7 +475,7 @@
         void hash_it(void)
         {
             m_hash = size_hash[m_size] | kind_hash[m_kind];
-#ifdef _EM64T_
+#ifdef HYX86_64
             m_need_rex = false;
             if (is_reg() && is_em64t_extra_reg(m_reg)) {
                 m_need_rex = true;
@@ -544,7 +544,7 @@
             m_operands[m_count++] = op;
             m_need_rex = m_need_rex || op.m_need_rex;
         }
-#ifdef _EM64T_
+#ifdef HYX86_64
         bool need_rex(void) const { return m_need_rex; }
 #else
         bool need_rex(void) const { return false; }
@@ -584,7 +584,7 @@
     static char* encode_aux(char* stream, unsigned aux, 
                             const Operands& opnds, const OpcodeDesc * odesc,
                             unsigned * pargsCount, Rex* prex);
-#ifdef _EM64T_
+#ifdef HYX86_64
     /**
      * @brief Returns true if the 'reg' argument represents one of the new 
      *        EM64T registers - R8(D)-R15(D).
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_defs.h
similarity index 98%
rename from drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_defs.h
index 4661652..f4231c3 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_defs.h
@@ -40,7 +40,7 @@
     #define COUNTOF(a)      (sizeof(a)/sizeof(a[0]))
 #endif
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     /**
      * A stack pointer of default platform's size.
      */
@@ -166,7 +166,7 @@
 
     RegName_Null = 0, 
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     /*
     An index part of the RegName-s for RAX-RDI, EAX-ESI, AX-SI and AL-BH is 
     the same as the index used during instructions encoding. The same rule 
@@ -191,7 +191,7 @@
     RegName_R13 = REGNAME(OpndKind_GPReg,OpndSize_64,13),
     RegName_R14 = REGNAME(OpndKind_GPReg,OpndSize_64,14),
     RegName_R15 = REGNAME(OpndKind_GPReg,OpndSize_64,15),
-#endif //~_EM64T_
+#endif //~HYX86_64
 
     RegName_EAX=REGNAME(OpndKind_GPReg,OpndSize_32,0),
     RegName_ECX=REGNAME(OpndKind_GPReg,OpndSize_32,1),
@@ -202,7 +202,7 @@
     RegName_ESI=REGNAME(OpndKind_GPReg,OpndSize_32,6),
     RegName_EDI=REGNAME(OpndKind_GPReg,OpndSize_32,7),
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName_R8D  = REGNAME(OpndKind_GPReg,OpndSize_32,8),
     RegName_R9D  = REGNAME(OpndKind_GPReg,OpndSize_32,9),
     RegName_R10D = REGNAME(OpndKind_GPReg,OpndSize_32,10),
@@ -211,7 +211,7 @@
     RegName_R13D = REGNAME(OpndKind_GPReg,OpndSize_32,13),
     RegName_R14D = REGNAME(OpndKind_GPReg,OpndSize_32,14),
     RegName_R15D = REGNAME(OpndKind_GPReg,OpndSize_32,15),
-#endif //~_EM64T_
+#endif //~HYX86_64
 
     RegName_AX=REGNAME(OpndKind_GPReg,OpndSize_16,0),
     RegName_CX=REGNAME(OpndKind_GPReg,OpndSize_16,1),
@@ -222,7 +222,7 @@
     RegName_SI=REGNAME(OpndKind_GPReg,OpndSize_16,6),
     RegName_DI=REGNAME(OpndKind_GPReg,OpndSize_16,7),
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName_R8S  = REGNAME(OpndKind_GPReg,OpndSize_16,8),
     RegName_R9S  = REGNAME(OpndKind_GPReg,OpndSize_16,9),
     RegName_R10S = REGNAME(OpndKind_GPReg,OpndSize_16,10),
@@ -231,7 +231,7 @@
     RegName_R13S = REGNAME(OpndKind_GPReg,OpndSize_16,13),
     RegName_R14S = REGNAME(OpndKind_GPReg,OpndSize_16,14),
     RegName_R15S = REGNAME(OpndKind_GPReg,OpndSize_16,15),
-#endif //~_EM64T_
+#endif //~HYX86_64
     
     RegName_AL=REGNAME(OpndKind_GPReg,OpndSize_8,0),
     RegName_CL=REGNAME(OpndKind_GPReg,OpndSize_8,1),
@@ -241,7 +241,7 @@
     // AH is not accessible on EM64T, instead encoded register is SPL, so decoded
     // register will return incorrect enum
     RegName_AH=REGNAME(OpndKind_GPReg,OpndSize_8,4),
-#if !defined(_EM64T_)    
+#if !defined(HYX86_64)    
     RegName_CH=REGNAME(OpndKind_GPReg,OpndSize_8,5),
     RegName_DH=REGNAME(OpndKind_GPReg,OpndSize_8,6),
     RegName_BH=REGNAME(OpndKind_GPReg,OpndSize_8,7),
@@ -307,7 +307,7 @@
     RegName_XMM6=REGNAME(OpndKind_XMMReg,OpndSize_128,6),
     RegName_XMM7=REGNAME(OpndKind_XMMReg,OpndSize_128,7),
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName_XMM8  = REGNAME(OpndKind_XMMReg,OpndSize_128,0), 
     RegName_XMM9  = REGNAME(OpndKind_XMMReg,OpndSize_128,1),
     RegName_XMM10 = REGNAME(OpndKind_XMMReg,OpndSize_128,2),
@@ -316,7 +316,7 @@
     RegName_XMM13 = REGNAME(OpndKind_XMMReg,OpndSize_128,5),
     RegName_XMM14 = REGNAME(OpndKind_XMMReg,OpndSize_128,6),
     RegName_XMM15 = REGNAME(OpndKind_XMMReg,OpndSize_128,7),
-#endif //~_EM64T_
+#endif //~HYX86_64
 
 #endif  // ~TESTING_ENCODER
 
@@ -328,7 +328,7 @@
     RegName_XMM5S=REGNAME(OpndKind_XMMReg,OpndSize_32,5),
     RegName_XMM6S=REGNAME(OpndKind_XMMReg,OpndSize_32,6),
     RegName_XMM7S=REGNAME(OpndKind_XMMReg,OpndSize_32,7),
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName_XMM8S=REGNAME(OpndKind_XMMReg,OpndSize_32,8), 
     RegName_XMM9S=REGNAME(OpndKind_XMMReg,OpndSize_32,9),
     RegName_XMM10S=REGNAME(OpndKind_XMMReg,OpndSize_32,10),
@@ -337,7 +337,7 @@
     RegName_XMM13S=REGNAME(OpndKind_XMMReg,OpndSize_32,13),
     RegName_XMM14S=REGNAME(OpndKind_XMMReg,OpndSize_32,14),
     RegName_XMM15S=REGNAME(OpndKind_XMMReg,OpndSize_32,15),
-#endif // ifdef _EM64T_
+#endif // ifdef HYX86_64
     RegName_XMM0D=REGNAME(OpndKind_XMMReg,OpndSize_64,0), 
     RegName_XMM1D=REGNAME(OpndKind_XMMReg,OpndSize_64,1),
     RegName_XMM2D=REGNAME(OpndKind_XMMReg,OpndSize_64,2),
@@ -346,7 +346,7 @@
     RegName_XMM5D=REGNAME(OpndKind_XMMReg,OpndSize_64,5),
     RegName_XMM6D=REGNAME(OpndKind_XMMReg,OpndSize_64,6),
     RegName_XMM7D=REGNAME(OpndKind_XMMReg,OpndSize_64,7),
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName_XMM8D=REGNAME(OpndKind_XMMReg,OpndSize_64,8), 
     RegName_XMM9D=REGNAME(OpndKind_XMMReg,OpndSize_64,9),
     RegName_XMM10D=REGNAME(OpndKind_XMMReg,OpndSize_64,10),
@@ -355,7 +355,7 @@
     RegName_XMM13D=REGNAME(OpndKind_XMMReg,OpndSize_64,13),
     RegName_XMM14D=REGNAME(OpndKind_XMMReg,OpndSize_64,14),
     RegName_XMM15D=REGNAME(OpndKind_XMMReg,OpndSize_64,15),
-#endif // ifdef _EM64T_
+#endif // ifdef HYX86_64
 #ifdef _HAVE_MMX_
     RegName_MMX0=REGNAME(OpndKind_MMXReg,OpndSize_64,0),
     RegName_MMX1=REGNAME(OpndKind_MMXReg,OpndSize_64,1),
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_prvt.h
similarity index 98%
rename from drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_prvt.h
index 453b30d..09f01c7 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_prvt.h
@@ -42,7 +42,7 @@
     OpcodeByteKind_ib                       = 0x0400,
     OpcodeByteKind_iw                       = 0x0500,
     OpcodeByteKind_id                       = 0x0600,
-#ifdef _EM64T_
+#ifdef HYX86_64
     OpcodeByteKind_io                       = 0x0700,
 #endif
     OpcodeByteKind_cb                       = 0x0800,
@@ -55,7 +55,7 @@
     OpcodeByteKind_rb                       = 0x0E00,
     OpcodeByteKind_rw                       = 0x0F00,
     OpcodeByteKind_rd                       = 0x1000,
-#ifdef _EM64T_
+#ifdef HYX86_64
     OpcodeByteKind_ro                       = 0x1100,
     //OpcodeByteKind_REX                    = 0x1200,
     OpcodeByteKind_REX_W                    = 0x1300,
@@ -139,36 +139,36 @@
 #define AH          {OpndKind_GPReg, OpndSize_8, RegName_AH}
 #define AX          {OpndKind_GPReg, OpndSize_16, RegName_AX}
 #define EAX         {OpndKind_GPReg, OpndSize_32, RegName_EAX}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define RAX     {OpndKind_GPReg, OpndSize_64, RegName_RAX }
 #endif
 
 #define CL          {OpndKind_GPReg, OpndSize_8, RegName_CL}
 #define ECX         {OpndKind_GPReg, OpndSize_32, RegName_ECX}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define RCX         {OpndKind_GPReg, OpndSize_64, RegName_RCX}
 #endif
 
 #define DX          {OpndKind_GPReg, OpndSize_16, RegName_DX}
 #define EDX         {OpndKind_GPReg, OpndSize_32, RegName_EDX}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define RDX     { OpndKind_GPReg, OpndSize_64, RegName_RDX }
 #endif
 
 #define ESI         {OpndKind_GPReg, OpndSize_32, RegName_ESI}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define RSI     { OpndKind_GPReg, OpndSize_64, RegName_RSI }
 #endif
 
 #define EDI         {OpndKind_GPReg, OpndSize_32, RegName_EDI}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define RDI     { OpndKind_GPReg, OpndSize_64, RegName_RDI }
 #endif
 
 #define r8          {OpndKind_GPReg, OpndSize_8, RegName_Null}
 #define r16         {OpndKind_GPReg, OpndSize_16, RegName_Null}
 #define r32         {OpndKind_GPReg, OpndSize_32, RegName_Null}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define r64     { OpndKind_GPReg, OpndSize_64, RegName_Null }
 #endif
 
@@ -183,14 +183,14 @@
 #define m16         {OpndKind_Mem, OpndSize_16, RegName_Null}
 #define m32         {OpndKind_Mem, OpndSize_32, RegName_Null}
 #define m64         {OpndKind_Mem, OpndSize_64, RegName_Null}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define r_m64   { (OpndKind)(OpndKind_GPReg|OpndKind_Mem),      OpndSize_64, RegName_Null }
 #endif
 
 #define imm8        {OpndKind_Imm, OpndSize_8, RegName_Null}
 #define imm16       {OpndKind_Imm, OpndSize_16, RegName_Null}
 #define imm32       {OpndKind_Imm, OpndSize_32, RegName_Null}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define imm64   {OpndKind_Imm, OpndSize_64, RegName_Null }
 #endif
 
@@ -199,7 +199,7 @@
 #define moff8        {OpndKind_Imm, OpndSize_32, RegName_Null}
 #define moff16       {OpndKind_Imm, OpndSize_32, RegName_Null}
 #define moff32       {OpndKind_Imm, OpndSize_32, RegName_Null}
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define moff64       {OpndKind_Imm, OpndSize_64, RegName_Null}
 #endif
 
@@ -224,7 +224,7 @@
 #define fp32        {OpndKind_FPReg, OpndSize_32, RegName_Null}
 #define fp64        {OpndKind_FPReg, OpndSize_64, RegName_Null}
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define io      OpcodeByteKind_io
     #define REX_W   OpcodeByteKind_REX_W
 
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_tabl.cpp
similarity index 99%
rename from drlvm/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_tabl.cpp
index 4a46572..f4b3b1f 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/enc_tabl.cpp
@@ -28,9 +28,9 @@
 
 
 // need to use EM64T-specifics - new registers, defines from enc_prvt, etc...
-#if !defined(_EM64T_)
+#if !defined(HYX86_64)
     #define UNDEF_EM64T
-    #define _EM64T_
+    #define HYX86_64
 #endif
 
 #define USE_ENCODER_DEFINES
@@ -38,7 +38,7 @@
 #include "enc_defs.h"
 
 #ifdef UNDEF_EM64T
-    #undef _EM64T_
+    #undef HYX86_64
 #endif
 
 #if !defined(_HAVE_MMX_)
@@ -942,7 +942,7 @@
 
 BEGIN_MNEMONIC(IDIV, MF_AFFECTS_FLAGS, DU_DU_U)
 BEGIN_OPCODES()
-#if !defined(_EM64T_)
+#if !defined(HYX86_64)
     {OpcodeInfo::all,   {0xF6, _7},         {AH, AL, r_m8},     DU_DU_U },
     {OpcodeInfo::all,   {Size16, 0xF7, _7}, {DX, AX, r_m16},    DU_DU_U },
 #endif
@@ -1698,7 +1698,7 @@
             break;
         }
         odesc.last = 0;
-#ifdef _EM64T_
+#ifdef HYX86_64
         if (oinfo.platf == OpcodeInfo::ia32) { continue; }
         if (oinfo.platf == OpcodeInfo::decoder32) { continue; }
 #else
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/encoder.cpp b/drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.cpp
similarity index 98%
rename from drlvm/vm/port/src/encoder/ia32_em64t/encoder.cpp
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.cpp
index 7c1fc7a..032ea82 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/encoder.cpp
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.cpp
@@ -35,7 +35,7 @@
 
 
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 
 R_Opnd rax_opnd(rax_reg);
 R_Opnd rcx_opnd(rcx_reg);
@@ -75,7 +75,7 @@
 R_Opnd esi_opnd(esi_reg);
 R_Opnd edi_opnd(edi_reg);
 
-#endif //_EM64T_
+#endif //HYX86_64
 
 XMM_Opnd xmm0_opnd(xmm0_reg);
 XMM_Opnd xmm1_opnd(xmm1_reg);
@@ -95,7 +95,7 @@
 extern const Mnemonic map_of_shift_opcode_2_mnemonic[];
 
 const RegName map_of_regno_2_regname [] = {
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName_RAX,    RegName_RBX,    RegName_RCX,    RegName_RDX,
     RegName_RDI,    RegName_RSI,    RegName_RSP,    RegName_RBP,
     RegName_R8,     RegName_R9,     RegName_R10,    RegName_R11,
@@ -111,7 +111,7 @@
     RegName_XMM0,   RegName_XMM1,   RegName_XMM2,   RegName_XMM3,
     RegName_XMM4,   RegName_XMM5,   RegName_XMM6,   RegName_XMM7,
     RegName_FS,
-#endif  // _EM64T_
+#endif  // HYX86_64
 
     RegName_Null,
 };
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/encoder.h b/drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.h
similarity index 98%
rename from drlvm/vm/port/src/encoder/ia32_em64t/encoder.h
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.h
index fb7a6a6..9b69cbc 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/encoder.h
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.h
@@ -22,7 +22,7 @@
  * @brief Simple interface for generating processor instructions.
  *
  * The interface works for both IA32 and EM64T. By default, only IA32 
- * capabilities are presented. To enable EM64T feature, the _EM64T_ macro 
+ * capabilities are presented. To enable EM64T feature, the HYX86_64 macro 
  * must be defined (and, of course, a proper library version to be used).
  * 
  * The interface is based on the original ia32.h encoder interface,
@@ -40,7 +40,7 @@
 #include "enc_base.h"
 #include "open/types.h"
 
-#ifdef _EM64T_ 
+#ifdef HYX86_64 
 // size of general-purpose value on the stack in bytes
 #define GR_STACK_SIZE 8
 // size of floating-point value on the stack in bytes
@@ -75,7 +75,7 @@
 #endif
 
 enum Reg_No {
-#ifdef _EM64T_
+#ifdef HYX86_64
     rax_reg = 0,rbx_reg,    rcx_reg,    rdx_reg,
     rdi_reg,    rsi_reg,    rsp_reg,    rbp_reg,
     r8_reg,     r9_reg,     r10_reg,    r11_reg,
@@ -85,7 +85,7 @@
     xmm8_reg,   xmm9_reg,   xmm10_reg,  xmm11_reg,
     xmm12_reg,  xmm13_reg,  xmm14_reg,  xmm15_reg,
 
-#else   // !defined(_EM64T_)
+#else   // !defined(HYX86_64)
 
     eax_reg = 0,ebx_reg,    ecx_reg,    edx_reg,
     edi_reg,    esi_reg,    esp_reg,    ebp_reg,        
@@ -105,7 +105,7 @@
     size_32,
     size_64,
     n_size,
-#ifdef _EM64T_
+#ifdef HYX86_64
     size_platf = size_64
 #else
     size_platf = size_32
@@ -217,7 +217,7 @@
 
 protected:
     union {
-#ifdef _EM64T_
+#ifdef HYX86_64
         int64           value;
         unsigned char   bytes[8];
 #else
@@ -238,7 +238,7 @@
     }
     Imm_Opnd(const Imm_Opnd& that): Opnd(Imm), value(that.value), size(that.size) {};
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     Imm_Opnd(Opnd_Size sz, int64 val): Opnd(Imm), value(val), size(sz) {
 #ifndef NDEBUG
         switch (size) {
@@ -392,7 +392,7 @@
 //
 // operand structures for ia32 registers
 //
-#ifdef _EM64T_
+#ifdef HYX86_64
 
 extern R_Opnd rax_opnd;
 extern R_Opnd rcx_opnd;
@@ -431,7 +431,7 @@
 extern R_Opnd esi_opnd;
 extern R_Opnd edi_opnd;
 
-#endif // _EM64T_
+#endif // HYX86_64
 
 extern XMM_Opnd xmm0_opnd;
 extern XMM_Opnd xmm1_opnd;
diff --git a/drlvm/vm/port/src/encoder/ia32_em64t/encoder.inl b/drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.inl
similarity index 99%
rename from drlvm/vm/port/src/encoder/ia32_em64t/encoder.inl
rename to drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.inl
index 32e8125..df59f7d 100644
--- a/drlvm/vm/port/src/encoder/ia32_em64t/encoder.inl
+++ b/drlvm/modules/vm/src/main/native/encoder/shared/x86/encoder.inl
@@ -114,7 +114,7 @@
 
 ENCODER_DECLARE_EXPORT char * push(char * stream, const Imm_Opnd & imm) {
     EncoderBase::Operands args;
-#ifdef _EM64T_
+#ifdef HYX86_64
     add_imm(args, imm);
 #else
     // we need this workaround to be compatible with the former ia32 encoder implementation
@@ -289,7 +289,7 @@
 // divide instructions: div, idiv
 ENCODER_DECLARE_EXPORT char * idiv(char * stream, const RM_Opnd & rm, Opnd_Size sz) {
     EncoderBase::Operands args;
-#ifdef _EM64T_
+#ifdef HYX86_64
     add_r(args, rdx_opnd, sz);
     add_r(args, rax_opnd, sz);
 #else
@@ -602,7 +602,7 @@
  *       destroyed).
  */
 ENCODER_DECLARE_EXPORT char * jump(char * stream, char * target) {
-#ifdef _EM64T_
+#ifdef HYX86_64
     int64 offset = target - stream;
     // sub 2 bytes for the short version
     offset -= 2;
@@ -698,7 +698,7 @@
 */
 ENCODER_DECLARE_EXPORT char * call(char * stream, const char * target)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     int64 offset = target - stream;
     if (fit32(offset)) {
         offset -= 5; // sub 5 bytes for this instruction
diff --git a/drlvm/modules/vm/src/main/native/encoder/unix/makefile b/drlvm/modules/vm/src/main/native/encoder/unix/makefile
new file mode 100644
index 0000000..6bd3d67
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/encoder/unix/makefile
@@ -0,0 +1,50 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'encoder'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/port/native/encoder/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE
+
+INCLUDES := -I$(VM_HOME)port/include -I$(VM_HOME)include $(INCLUDES)
+
+OPT += -fno-exceptions -Wno-deprecated -g -O2
+
+HDKINCLUDES = $(HY_HDK)/include/dec_base.h $(HY_HDK)/include/enc_base.h \
+  $(HY_HDK)/include/enc_prvt.h $(HY_HDK)/include/enc_defs.h \
+  $(HY_HDK)/include/encoder.h $(HY_HDK)/include/encoder.inl
+BUILDFILES = dec_base.o enc_base.o encoder.o enc_tabl.o
+LIBNAME = $(LIBPATH)libencoder.a
+
+include $(HY_HDK)/build/make/rules.mk
+
+$(HY_BIN)%.o: $(SHAREDSUB)$(HY_ARCH_FAMILY)/%.cpp
+	@mkdir -p $(@D)
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ $<
+
+$(HY_HDK)/include/%.h: $(SHAREDSUB)$(HY_ARCH_FAMILY)/%.h
+	mkdir -p $(@D)
+	cp -p $< $@
+
+$(HY_HDK)/include/%.inl: $(SHAREDSUB)$(HY_ARCH_FAMILY)/%.inl
+	mkdir -p $(@D)
+	cp -p $< $@
diff --git a/drlvm/vm/gc_gen/src/COPYRIGHT b/drlvm/modules/vm/src/main/native/gc_gen/shared/COPYRIGHT
similarity index 100%
rename from drlvm/vm/gc_gen/src/COPYRIGHT
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/COPYRIGHT
diff --git a/drlvm/vm/gc_gen/src/LICENSE b/drlvm/modules/vm/src/main/native/gc_gen/shared/LICENSE
similarity index 100%
rename from drlvm/vm/gc_gen/src/LICENSE
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/LICENSE
diff --git a/drlvm/vm/gc_gen/src/NOTICE b/drlvm/modules/vm/src/main/native/gc_gen/shared/NOTICE
similarity index 100%
rename from drlvm/vm/gc_gen/src/NOTICE
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/NOTICE
diff --git a/drlvm/vm/gc_gen/src/common/collection_scheduler.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/collection_scheduler.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/collection_scheduler.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/collection_scheduler.cpp
diff --git a/drlvm/vm/gc_gen/src/common/collection_scheduler.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/collection_scheduler.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/collection_scheduler.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/collection_scheduler.h
diff --git a/drlvm/vm/gc_gen/src/common/compressed_ref.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/compressed_ref.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/compressed_ref.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/compressed_ref.cpp
diff --git a/drlvm/vm/gc_gen/src/common/compressed_ref.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/compressed_ref.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/compressed_ref.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/compressed_ref.h
diff --git a/drlvm/vm/gc_gen/src/common/concurrent_collection_scheduler.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/concurrent_collection_scheduler.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/concurrent_collection_scheduler.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/concurrent_collection_scheduler.cpp
diff --git a/drlvm/vm/gc_gen/src/common/concurrent_collection_scheduler.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/concurrent_collection_scheduler.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/concurrent_collection_scheduler.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/concurrent_collection_scheduler.h
diff --git a/drlvm/vm/gc_gen/src/common/fix_repointed_refs.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/fix_repointed_refs.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/fix_repointed_refs.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/fix_repointed_refs.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_block.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_block.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_block.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_block.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_block.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_block.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_block.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_block.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_common.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_common.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_common.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_common.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_common.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_common.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_common.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_common.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_concurrent.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_concurrent.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_concurrent.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_concurrent.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_concurrent.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_concurrent.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_concurrent.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_concurrent.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_for_barrier.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_barrier.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_for_barrier.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_barrier.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_for_barrier.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_barrier.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_for_barrier.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_barrier.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_for_class.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_class.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_for_class.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_class.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_for_class.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_class.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_for_class.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_class.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_for_vm.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_vm.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_for_vm.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_for_vm.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_metadata.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_metadata.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_metadata.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_metadata.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_metadata.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_metadata.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_metadata.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_metadata.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_options.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_options.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_options.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_options.cpp
diff --git a/drlvm/vm/gc_gen/src/common/gc_platform.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_platform.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_platform.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_platform.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_properties.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_properties.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_properties.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_properties.h
diff --git a/drlvm/vm/gc_gen/src/common/gc_space.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_space.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/gc_space.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/gc_space.h
diff --git a/drlvm/vm/gc_gen/src/common/hashcode.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/hashcode.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/hashcode.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/hashcode.cpp
diff --git a/drlvm/vm/gc_gen/src/common/hashcode.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/hashcode.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/hashcode.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/hashcode.h
diff --git a/drlvm/vm/gc_gen/src/common/interior_pointer.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/interior_pointer.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/interior_pointer.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/interior_pointer.cpp
diff --git a/drlvm/vm/gc_gen/src/common/interior_pointer.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/interior_pointer.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/interior_pointer.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/interior_pointer.h
diff --git a/drlvm/vm/gc_gen/src/common/large_pages.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/large_pages.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/large_pages.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/large_pages.cpp
diff --git a/drlvm/vm/gc_gen/src/common/mark_scan_pool.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/mark_scan_pool.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/mark_scan_pool.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/mark_scan_pool.cpp
diff --git a/drlvm/vm/gc_gen/src/common/object_status.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/object_status.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/object_status.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/object_status.h
diff --git a/drlvm/vm/gc_gen/src/common/space_tuner.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/space_tuner.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/space_tuner.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/space_tuner.cpp
diff --git a/drlvm/vm/gc_gen/src/common/space_tuner.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/space_tuner.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/space_tuner.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/space_tuner.h
diff --git a/drlvm/vm/gc_gen/src/common/weak_roots.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/common/weak_roots.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/common/weak_roots.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/common/weak_roots.cpp
diff --git a/drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref.cpp
diff --git a/drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref.h
diff --git a/drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref_metadata.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref_metadata.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref_metadata.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref_metadata.cpp
diff --git a/drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref_metadata.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref_metadata.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/finalizer_weakref/finalizer_weakref_metadata.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/finalizer_weakref/finalizer_weakref_metadata.h
diff --git a/drlvm/vm/gc_gen/src/gen/gen.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/gen/gen.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen.cpp
diff --git a/drlvm/vm/gc_gen/src/gen/gen.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/gen/gen.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen.h
diff --git a/drlvm/vm/gc_gen/src/gen/gen_adapt.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_adapt.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/gen/gen_adapt.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_adapt.cpp
diff --git a/drlvm/vm/gc_gen/src/gen/gen_stats.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_stats.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/gen/gen_stats.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_stats.cpp
diff --git a/drlvm/vm/gc_gen/src/gen/gen_stats.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_stats.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/gen/gen_stats.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_stats.h
diff --git a/drlvm/vm/gc_gen/src/gen/gen_utils.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_utils.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/gen/gen_utils.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/gen/gen_utils.cpp
diff --git a/drlvm/vm/gc_gen/src/jni/java_natives.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/jni/java_natives.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/jni/java_natives.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/jni/java_natives.cpp
diff --git a/drlvm/vm/gc_gen/src/jni/java_support.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/jni/java_support.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/jni/java_support.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/jni/java_support.cpp
diff --git a/drlvm/vm/gc_gen/src/jni/java_support.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/jni/java_support.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/jni/java_support.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/jni/java_support.h
diff --git a/drlvm/vm/gc_gen/src/los/free_area_pool.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/los/free_area_pool.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/los/free_area_pool.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/los/free_area_pool.cpp
diff --git a/drlvm/vm/gc_gen/src/los/free_area_pool.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/los/free_area_pool.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/los/free_area_pool.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/los/free_area_pool.h
diff --git a/drlvm/vm/gc_gen/src/los/lspace.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/los/lspace.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/los/lspace.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/los/lspace.cpp
diff --git a/drlvm/vm/gc_gen/src/los/lspace.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/los/lspace.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/los/lspace.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/los/lspace.h
diff --git a/drlvm/vm/gc_gen/src/los/lspace_alloc_collect.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/los/lspace_alloc_collect.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/los/lspace_alloc_collect.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/los/lspace_alloc_collect.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/fallback_mark_scan.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/fallback_mark_scan.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/fallback_mark_scan.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/fallback_mark_scan.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace.h
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace_alloc.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_alloc.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace_alloc.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_alloc.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace_collect_compact.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_collect_compact.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace_collect_compact.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_collect_compact.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace_collect_compact.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_collect_compact.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace_collect_compact.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_collect_compact.h
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace_extend_compact.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_extend_compact.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace_extend_compact.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_extend_compact.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace_move_compact.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_move_compact.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace_move_compact.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_move_compact.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/mspace_slide_compact.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_slide_compact.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/mspace_slide_compact.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/mspace_slide_compact.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_compact/space_tune_mark_scan.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/space_tune_mark_scan.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_compact/space_tune_mark_scan.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_compact/space_tune_mark_scan.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/gc_ms.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/gc_ms.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/gc_ms.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/gc_ms.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/gc_ms.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/gc_ms.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/gc_ms.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/gc_ms.h
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/sspace_compact.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/sspace_compact.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/sspace_compact.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/sspace_compact.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/sspace_mark_concurrent.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/sspace_mark_concurrent.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/sspace_mark_concurrent.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/sspace_mark_concurrent.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace.h
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_alloc.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_alloc.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_alloc.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_alloc.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_alloc.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_alloc.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_alloc.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_alloc.h
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_chunk.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_chunk.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_chunk.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_chunk.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_chunk.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_chunk.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_chunk.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_chunk.h
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_compact.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_compact.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_compact.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_compact.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_concurrent_gc_stats.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_concurrent_gc_stats.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_concurrent_gc_stats.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_concurrent_gc_stats.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_fallback_mark.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_fallback_mark.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_fallback_mark.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_fallback_mark.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_mark.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_mark.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_mostly_concurrent.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_mostly_concurrent.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_mostly_concurrent.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_mostly_concurrent.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_otf_concurrent.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_otf_concurrent.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_otf_concurrent.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_otf_concurrent.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_sweep.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_sweep.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_sweep.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_sweep.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_sweep.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_sweep.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_mark_sweep.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_mark_sweep.h
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_sweep.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_sweep.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_sweep.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_sweep.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_sweep_concurrent.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_sweep_concurrent.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_sweep_concurrent.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_sweep_concurrent.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_verify.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_verify.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_verify.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_verify.cpp
diff --git a/drlvm/vm/gc_gen/src/mark_sweep/wspace_verify.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_verify.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/mark_sweep/wspace_verify.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/mark_sweep/wspace_verify.h
diff --git a/drlvm/vm/gc_gen/src/move_compact/gc_mc.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/move_compact/gc_mc.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/move_compact/gc_mc.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/move_compact/gc_mc.cpp
diff --git a/drlvm/vm/gc_gen/src/move_compact/gc_mc.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/move_compact/gc_mc.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/move_compact/gc_mc.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/move_compact/gc_mc.h
diff --git a/drlvm/vm/gc_gen/src/semi_space/sspace.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/semi_space/sspace.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace.cpp
diff --git a/drlvm/vm/gc_gen/src/semi_space/sspace.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/semi_space/sspace.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace.h
diff --git a/drlvm/vm/gc_gen/src/semi_space/sspace_alloc.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_alloc.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/semi_space/sspace_alloc.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_alloc.cpp
diff --git a/drlvm/vm/gc_gen/src/semi_space/sspace_forward.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_forward.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/semi_space/sspace_forward.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_forward.cpp
diff --git a/drlvm/vm/gc_gen/src/semi_space/sspace_gen_ss_pool.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_gen_ss_pool.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/semi_space/sspace_gen_ss_pool.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_gen_ss_pool.cpp
diff --git a/drlvm/vm/gc_gen/src/semi_space/sspace_nongen_ss_pool.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_nongen_ss_pool.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/semi_space/sspace_nongen_ss_pool.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/semi_space/sspace_nongen_ss_pool.cpp
diff --git a/drlvm/vm/gc_gen/src/thread/collector.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/collector.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/collector.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/collector.cpp
diff --git a/drlvm/vm/gc_gen/src/thread/collector.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/collector.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/collector.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/collector.h
diff --git a/drlvm/vm/gc_gen/src/thread/collector_alloc.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/collector_alloc.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/collector_alloc.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/collector_alloc.h
diff --git a/drlvm/vm/gc_gen/src/thread/conclctor.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/conclctor.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/conclctor.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/conclctor.cpp
diff --git a/drlvm/vm/gc_gen/src/thread/conclctor.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/conclctor.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/conclctor.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/conclctor.h
diff --git a/drlvm/vm/gc_gen/src/thread/gc_thread.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/gc_thread.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/gc_thread.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/gc_thread.cpp
diff --git a/drlvm/vm/gc_gen/src/thread/gc_thread.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/gc_thread.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/gc_thread.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/gc_thread.h
diff --git a/drlvm/vm/gc_gen/src/thread/mutator.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/mutator.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/mutator.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/mutator.cpp
diff --git a/drlvm/vm/gc_gen/src/thread/mutator.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/mutator.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/mutator.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/mutator.h
diff --git a/drlvm/vm/gc_gen/src/thread/mutator_alloc.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/thread/mutator_alloc.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/thread/mutator_alloc.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/thread/mutator_alloc.cpp
diff --git a/drlvm/vm/gc_gen/src/trace_forward/fspace.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/trace_forward/fspace.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace.cpp
diff --git a/drlvm/vm/gc_gen/src/trace_forward/fspace.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/trace_forward/fspace.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace.h
diff --git a/drlvm/vm/gc_gen/src/trace_forward/fspace_alloc.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace_alloc.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/trace_forward/fspace_alloc.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace_alloc.cpp
diff --git a/drlvm/vm/gc_gen/src/trace_forward/fspace_gen_forward_pool.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace_gen_forward_pool.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/trace_forward/fspace_gen_forward_pool.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace_gen_forward_pool.cpp
diff --git a/drlvm/vm/gc_gen/src/trace_forward/fspace_nongen_forward_pool.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace_nongen_forward_pool.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/trace_forward/fspace_nongen_forward_pool.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/fspace_nongen_forward_pool.cpp
diff --git a/drlvm/vm/gc_gen/src/trace_forward/sspace_temp.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/sspace_temp.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/trace_forward/sspace_temp.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/trace_forward/sspace_temp.cpp
diff --git a/drlvm/vm/gc_gen/src/utils/bidir_list.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/bidir_list.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/bidir_list.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/bidir_list.h
diff --git a/drlvm/vm/gc_gen/src/utils/bit_ops.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/bit_ops.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/bit_ops.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/bit_ops.h
diff --git a/drlvm/vm/gc_gen/src/utils/seq_list.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/seq_list.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/seq_list.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/seq_list.h
diff --git a/drlvm/vm/gc_gen/src/utils/sync_pool.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/sync_pool.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/sync_pool.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/sync_pool.h
diff --git a/drlvm/vm/gc_gen/src/utils/sync_queue.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/sync_queue.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/sync_queue.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/sync_queue.h
diff --git a/drlvm/vm/gc_gen/src/utils/sync_stack.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/sync_stack.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/sync_stack.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/sync_stack.h
diff --git a/drlvm/vm/gc_gen/src/utils/uneven_map.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/uneven_map.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/uneven_map.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/uneven_map.h
diff --git a/drlvm/vm/gc_gen/src/utils/vector_block.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/utils/vector_block.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/utils/vector_block.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/utils/vector_block.h
diff --git a/drlvm/vm/gc_gen/src/verify/verifier_common.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_common.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verifier_common.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_common.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verifier_common.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_common.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verifier_common.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_common.h
diff --git a/drlvm/vm/gc_gen/src/verify/verifier_metadata.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_metadata.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verifier_metadata.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_metadata.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verifier_metadata.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_metadata.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verifier_metadata.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_metadata.h
diff --git a/drlvm/vm/gc_gen/src/verify/verifier_scanner.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_scanner.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verifier_scanner.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verifier_scanner.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verify_blocked_space.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_blocked_space.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_blocked_space.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_blocked_space.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verify_concurrent_mark.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_concurrent_mark.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_concurrent_mark.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_concurrent_mark.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verify_gc_effect.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_gc_effect.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_gc_effect.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_gc_effect.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verify_gc_effect.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_gc_effect.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_gc_effect.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_gc_effect.h
diff --git a/drlvm/vm/gc_gen/src/verify/verify_live_heap.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_live_heap.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_live_heap.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_live_heap.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verify_live_heap.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_live_heap.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_live_heap.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_live_heap.h
diff --git a/drlvm/vm/gc_gen/src/verify/verify_mutator_effect.cpp b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_mutator_effect.cpp
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_mutator_effect.cpp
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_mutator_effect.cpp
diff --git a/drlvm/vm/gc_gen/src/verify/verify_mutator_effect.h b/drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_mutator_effect.h
similarity index 100%
rename from drlvm/vm/gc_gen/src/verify/verify_mutator_effect.h
rename to drlvm/modules/vm/src/main/native/gc_gen/shared/verify/verify_mutator_effect.h
diff --git a/drlvm/modules/vm/src/main/native/gc_gen/unix/exports.txt b/drlvm/modules/vm/src/main/native/gc_gen/unix/exports.txt
new file mode 100644
index 0000000..a082306
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/gc_gen/unix/exports.txt
@@ -0,0 +1,55 @@
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_TLSGCOffset
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getGenMode
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getNosBoundary
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_helperCallback
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getPrefetchDist
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getZeroingSize
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getPrefetchStride
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getTlaFreeOffset
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getTlaCeilingOffset
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getTlaEndOffset
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getGCObjectAlignment
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getLargeObjectSize
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_isPrefetchEnabled
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getVTBase
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getArrayElemSizeOffsetInGCVT
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getArrayFirstElemOffsetInGCVT
+Java_org_apache_harmony_drlvm_gc_1gen_GCHelper_getGCAllocatedSizeOffsetInGCVT
+gc_add_compressed_root_set_entry
+gc_add_root_set_entry
+gc_add_root_set_entry_interior_pointer
+gc_add_weak_root_set_entry
+gc_alloc
+gc_alloc_fast
+gc_class_prepared
+gc_clear_mutator_block_flag
+gc_finalize_on_exit
+gc_force_gc
+gc_free_memory
+gc_get_collection_count
+gc_get_collection_time
+gc_get_hashcode
+gc_get_next_live_object
+gc_heap_base_address
+gc_heap_ceiling_address
+gc_heap_slot_write_ref
+gc_heap_write_global_slot
+gc_heap_write_ref
+gc_heap_wrote_object
+gc_heap_copy_object_array
+gc_init
+gc_is_object_pinned
+gc_iterate_heap
+gc_max_memory
+gc_pin_object
+gc_requires_barriers
+gc_set_mutator_block_flag
+gc_supports_class_unloading
+gc_supports_compressed_references
+gc_thread_init
+gc_thread_kill
+gc_time_since_last_gc
+gc_total_memory
+gc_unpin_object
+gc_vm_initialized
+gc_wrapup
diff --git a/drlvm/modules/vm/src/main/native/gc_gen/unix/makefile b/drlvm/modules/vm/src/main/native/gc_gen/unix/makefile
new file mode 100644
index 0000000..45959f8
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/gc_gen/unix/makefile
@@ -0,0 +1,81 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'gc_gen_uncomp'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/vm/native/gc_gen_uncomp/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE \
+  -DBUILDING_GC -DREFS_USE_COMPRESSED
+
+OPT += -fexceptions
+
+INCLUDES := \
+  -I$(VM_HOME)port/include \
+  -I$(VM_HOME)include -I$(VM_HOME)vmcore/include \
+  -I$(SHAREDSUB)common \
+  $(INCLUDES)
+
+BUILDFILES := \
+  common/collection_scheduler.o common/compressed_ref.o \
+  common/concurrent_collection_scheduler.o common/gc_block.o \
+  common/gc_common.o common/gc_concurrent.o common/gc_for_barrier.o \
+  common/gc_for_class.o common/gc_for_vm.o common/gc_metadata.o \
+  common/gc_options.o common/hashcode.o common/interior_pointer.o \
+  common/large_pages.o common/mark_scan_pool.o common/space_tuner.o \
+  common/weak_roots.o \
+  finalizer_weakref/finalizer_weakref.o \
+  finalizer_weakref/finalizer_weakref_metadata.o \
+  gen/gen.o gen/gen_adapt.o gen/gen_stats.o gen/gen_utils.o \
+  jni/java_natives.o jni/java_support.o \
+  los/free_area_pool.o los/lspace.o los/lspace_alloc_collect.o \
+  mark_compact/fallback_mark_scan.o mark_compact/mspace.o \
+  mark_compact/mspace_alloc.o mark_compact/mspace_collect_compact.o \
+  mark_compact/mspace_extend_compact.o mark_compact/mspace_move_compact.o \
+  mark_compact/mspace_slide_compact.o mark_compact/space_tune_mark_scan.o \
+  mark_sweep/gc_ms.o mark_sweep/sspace_compact.o \
+  mark_sweep/sspace_mark_concurrent.o mark_sweep/wspace.o \
+  mark_sweep/wspace_alloc.o mark_sweep/wspace_chunk.o \
+  mark_sweep/wspace_compact.o mark_sweep/wspace_concurrent_gc_stats.o \
+  mark_sweep/wspace_fallback_mark.o mark_sweep/wspace_mark.o \
+  mark_sweep/wspace_mark_mostly_concurrent.o \
+  mark_sweep/wspace_mark_otf_concurrent.o mark_sweep/wspace_mark_sweep.o \
+  mark_sweep/wspace_sweep.o mark_sweep/wspace_sweep_concurrent.o \
+  mark_sweep/wspace_verify.o \
+  move_compact/gc_mc.o \
+  semi_space/sspace.o semi_space/sspace_alloc.o semi_space/sspace_forward.o \
+  semi_space/sspace_gen_ss_pool.o semi_space/sspace_nongen_ss_pool.o \
+  thread/collector.o thread/conclctor.o thread/gc_thread.o thread/mutator.o \
+  thread/mutator_alloc.o \
+  trace_forward/fspace.o trace_forward/fspace_alloc.o \
+  trace_forward/fspace_gen_forward_pool.o \
+  trace_forward/fspace_nongen_forward_pool.o trace_forward/sspace_temp.o \
+  verify/verifier_common.o verify/verifier_metadata.o \
+  verify/verifier_scanner.o verify/verify_blocked_space.o \
+  verify/verify_concurrent_mark.o verify/verify_gc_effect.o \
+  verify/verify_live_heap.o verify/verify_mutator_effect.o
+
+LDFLAGS += -Bsymbolic
+
+DLLNAME = $(DLLPATH)default/libgc_gen_uncomp$(HY_SHLIB_SUFFIX)
+EXPNAME = GC_GEN_0.1
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/thread/src/thread_classlib_defs.h b/drlvm/modules/vm/src/main/native/hythr/shared/thread_classlib_defs.h
similarity index 100%
rename from drlvm/vm/thread/src/thread_classlib_defs.h
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_classlib_defs.h
diff --git a/drlvm/vm/thread/src/thread_init.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_init.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_init.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_init.c
diff --git a/drlvm/vm/thread/src/thread_native_attrs.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_attrs.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_attrs.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_attrs.c
diff --git a/drlvm/vm/thread/src/thread_native_basic.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_basic.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_basic.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_basic.c
diff --git a/drlvm/vm/thread/src/thread_native_condvar.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_condvar.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_condvar.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_condvar.c
diff --git a/drlvm/vm/thread/src/thread_native_fat_monitor.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_fat_monitor.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_fat_monitor.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_fat_monitor.c
diff --git a/drlvm/vm/thread/src/thread_native_groups.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_groups.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_groups.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_groups.c
diff --git a/drlvm/vm/thread/src/thread_native_interrupt.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_interrupt.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_interrupt.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_interrupt.c
diff --git a/drlvm/vm/thread/src/thread_native_iterator.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_iterator.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_iterator.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_iterator.c
diff --git a/drlvm/vm/thread/src/thread_native_latch.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_latch.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_latch.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_latch.c
diff --git a/drlvm/vm/thread/src/thread_native_park.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_park.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_park.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_park.c
diff --git a/drlvm/vm/thread/src/thread_native_semaphore.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_semaphore.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_semaphore.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_semaphore.c
diff --git a/drlvm/vm/thread/src/thread_native_state.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_state.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_state.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_state.c
diff --git a/drlvm/vm/thread/src/thread_native_suspend.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_suspend.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_suspend.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_suspend.c
diff --git a/drlvm/vm/thread/src/thread_native_thin_monitor.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_thin_monitor.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_native_thin_monitor.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_thin_monitor.c
diff --git a/drlvm/vm/thread/src/thread_native_tls.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_tls.c
similarity index 98%
rename from drlvm/vm/thread/src/thread_native_tls.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_native_tls.c
index 9d94514..be9e41f 100644
--- a/drlvm/vm/thread/src/thread_native_tls.c
+++ b/drlvm/modules/vm/src/main/native/hythr/shared/thread_native_tls.c
@@ -51,7 +51,7 @@
 }
 
 #if !defined(_WIN32) && defined(HYTHREAD_FAST_TLS)
-    #if defined(_EM64T_)
+    #if defined(HYX86_64)
         #define HYTHREAD_TLS_GET_VAR_OFFSET(var,offset) \
         { \
             void* tmp1 = &var; \
@@ -62,7 +62,7 @@
         //TODO: GCC-specific, need to add ICL
         //#define HYTHREAD_TLS_GET_VAR_OFFSET(var,offset) \
         //    { void* tmp;  __asm ("movq " #var "@GOTTPOFF(%%rip), %0" : "=r" (tmp)); offset = tmp; }
-    #elif defined(_IA32_)
+    #elif defined(HYX86)
         #define HYTHREAD_TLS_GET_VAR_OFFSET(var,offset) \
         { \
             void* tmp1 = &var; \
diff --git a/drlvm/vm/thread/src/thread_ncai_common.c b/drlvm/modules/vm/src/main/native/hythr/shared/thread_ncai_common.c
similarity index 100%
rename from drlvm/vm/thread/src/thread_ncai_common.c
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_ncai_common.c
diff --git a/drlvm/vm/thread/src/thread_private.h b/drlvm/modules/vm/src/main/native/hythr/shared/thread_private.h
similarity index 100%
rename from drlvm/vm/thread/src/thread_private.h
rename to drlvm/modules/vm/src/main/native/hythr/shared/thread_private.h
diff --git a/drlvm/modules/vm/src/main/native/hythr/unix/exports.txt b/drlvm/modules/vm/src/main/native/hythr/unix/exports.txt
new file mode 100644
index 0000000..3a2c547
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/hythr/unix/exports.txt
@@ -0,0 +1,175 @@
+get_tls_helper
+hythread_allocate_library
+hythread_startup_library
+hythread_shutdown_library
+hythread_detach
+hythread_detach_ex
+hythread_tls_alloc
+hythread_sleep_interruptable
+hythread_cancel
+hythread_monitor_enter
+hythread_monitor_notify_all
+hythread_attach
+hythread_attach_ex
+hythread_monitor_destroy
+hythread_monitor_num_waiting
+hythread_interrupted
+hythread_park
+hythread_monitor_init_with_name
+hythread_monitor_try_enter
+hythread_self_slow
+hythread_self
+hythread_set_self
+tm_self_tls
+hythread_tls_free
+hythread_yield
+hythread_yield_other
+hythread_suspend
+hythread_interrupt
+hythread_tls_set
+hythread_create
+hythread_monitor_wait
+hythread_monitor_wait_interruptable
+hythread_monitor_exit
+hythread_set_priority
+hythread_unpark
+hythread_sleep
+hythread_global
+hythread_tls_alloc_with_finalizer
+hythread_monitor_wait_timed
+hythread_resume
+hythread_monitor_notify
+hythread_get_priority
+hythread_tls_get
+hythread_tls_get_request_offset
+hythread_get_hythread_offset_in_tls
+hythread_uses_fast_tls
+hythread_tls_get_offset
+hythread_get_struct_size
+hythread_global_lock
+hythread_global_unlock
+hythread_create_ex
+hythread_clear_interrupted_other
+hythread_get_self_id
+hythread_get_id
+hythread_get_thread
+hythread_get_thread_times
+hythread_struct_init
+hythread_cancel_all
+hythread_group_create
+hythread_group_release
+hythread_group_get_list
+hythread_set_to_group
+hythread_is_suspend_enabled
+hythread_suspend_enable
+hythread_suspend_disable
+hythread_exception_safe_point
+hythread_safe_point
+hythread_safe_point_other
+hythread_send_suspend_request
+hythread_suspend_other
+hythread_set_safepoint_callback
+hythread_suspend_all
+hythread_resume_all
+hythread_iterator_create
+hythread_iterator_release
+hythread_iterator_reset
+hythread_iterator_reset
+hythread_iterator_next
+hythread_iterator_has_next
+hythread_iterator_size
+hythread_thin_monitor_create
+hythread_thin_monitor_enter
+hythread_thin_monitor_try_enter
+hythread_thin_monitor_exit
+hythread_thin_monitor_release
+hythread_thin_monitor_wait
+hythread_thin_monitor_wait_timed
+hythread_thin_monitor_wait_interruptable
+hythread_thin_monitor_notify
+hythread_thin_monitor_notify_all
+hythread_thin_monitor_destroy
+hythread_thin_monitor_get_owner
+hythread_native_resource_is_live
+hythread_reclaim_resources
+hythread_suspend_thread_native
+hythread_resume_thread_native
+hythread_get_suspend_count_native
+hythread_get_thread_context
+hythread_set_thread_context
+hythread_add_task
+hythread_get_function_pointer
+hythread_get_data_pointer
+hythread_get_next_task
+hythread_destroy_task_iterator
+hythread_create_task_iterator
+hythread_init_task_manager
+hythread_destroy_task_manager
+hythread_join_all_task
+hythread_shutdown_after_execute_all_task
+hythread_get_thread_count
+hythread_get_task_count
+hysem_post
+hysem_wait
+hysem_destroy
+hycond_create
+hycond_wait
+hycond_wait_timed
+hycond_wait_timed_raw
+hycond_wait_interruptable
+hycond_notify
+hycond_notify_all
+hycond_destroy
+hylatch_create
+hylatch_wait
+hylatch_wait_timed
+hylatch_wait_interruptable
+hylatch_set
+hylatch_count_down
+hylatch_get_count
+hylatch_destroy
+hysem_create
+hysem_wait_timed
+hysem_wait_interruptable
+hysem_getvalue
+hysem_set
+hythread_exit
+hythread_is_alive
+hythread_init
+hythread_shutdown
+hythread_shutdowning
+hythread_lib_state
+hythread_lib_create
+hythread_lib_destroy
+hythread_lib_lock
+hythread_lib_unlock
+set_safepoint_callback
+hythread_inflate_lock
+hythread_is_fat_lock
+hythread_owns_thin_lock
+hythread_unreserve_lock
+hythread_set_suspend_disable
+hythread_reset_suspend_disable
+hythread_is_blocked_on_monitor_enter
+hythread_is_waiting
+hythread_is_in_native
+hythread_is_suspended
+hythread_is_parked
+hythread_is_in_monitor_wait
+hythread_is_sleeping
+hythread_is_waiting_with_timeout
+hythread_is_waiting_indefinitely
+hythread_is_runnable
+hythread_is_terminated
+hythread_thin_monitor_get_recursion
+get_java_thread_group
+tm_properties
+hythread_thread_lock
+hythread_thread_unlock
+hythread_get_state
+hythread_set_state
+hythread_get_thread_id_offset
+hythread_set_thread_stop_callback
+hythread_wait_for_nondaemon_threads
+hythread_increase_nondaemon_threads_count
+hythread_decrease_nondaemon_threads_count
diff --git a/drlvm/modules/vm/src/main/native/hythr/unix/makefile b/drlvm/modules/vm/src/main/native/hythr/unix/makefile
new file mode 100644
index 0000000..c3c9999
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/hythr/unix/makefile
@@ -0,0 +1,55 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'hythr'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/port/native/hythr/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE \
+  -DAPR_DECLARE_EXPORT
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+
+INCLUDES := -I$(VM_HOME)include -I$(VM_HOME)port/include \
+            -I$(VM_HOME)port/src/thread/include $(INCLUDES)
+
+BUILDFILES := \
+  os_condvar.o \
+  thread_init.o thread_native_attrs.o thread_native_basic.o \
+  thread_native_condvar.o thread_native_fat_monitor.o \
+  thread_native_groups.o thread_native_interrupt.o thread_native_iterator.o \
+  thread_native_latch.o thread_native_park.o thread_native_semaphore.o \
+  thread_native_state.o thread_native_suspend.o \
+  thread_native_thin_monitor.o thread_native_tls.o thread_ncai_common.o
+
+DLLNAME = $(DLLPATH)default/libhythr$(HY_SHLIB_SUFFIX)
+ifeq ($(HY_NO_THR),false)
+EXPNAME = HYTHR_0.1
+else
+EXPNAME = HYTHR_0.2
+endif
+
+OSLIBS += -lpthread -lrt
+MDLLIBFILES += $(LIBPATH)libapr-1.a $(LIBPATH)libport.a
+LDFLAGS += -Wl,-init -Wl,hythread_library_init
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/thread/src/linux/os_condvar.c b/drlvm/modules/vm/src/main/native/hythr/unix/os_condvar.c
similarity index 100%
rename from drlvm/vm/thread/src/linux/os_condvar.c
rename to drlvm/modules/vm/src/main/native/hythr/unix/os_condvar.c
diff --git a/drlvm/vm/thread/src/win/os_condvar.c b/drlvm/modules/vm/src/main/native/hythr/windows/os_condvar.c
similarity index 100%
rename from drlvm/vm/thread/src/win/os_condvar.c
rename to drlvm/modules/vm/src/main/native/hythr/windows/os_condvar.c
diff --git a/drlvm/vm/interpreter/src/interp_native_ipf.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/ia64/interp_native.cpp
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_native_ipf.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/ia64/interp_native.cpp
diff --git a/drlvm/vm/interpreter/src/interp_defs.h b/drlvm/modules/vm/src/main/native/interpreter/shared/interp_defs.h
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_defs.h
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interp_defs.h
diff --git a/drlvm/vm/interpreter/src/interp_exports.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/interp_exports.cpp
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_exports.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interp_exports.cpp
diff --git a/drlvm/vm/interpreter/src/interp_native.h b/drlvm/modules/vm/src/main/native/interpreter/shared/interp_native.h
similarity index 94%
rename from drlvm/vm/interpreter/src/interp_native.h
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interp_native.h
index 35310d0..40219cc 100644
--- a/drlvm/vm/interpreter/src/interp_native.h
+++ b/drlvm/modules/vm/src/main/native/interpreter/shared/interp_native.h
@@ -20,14 +20,7 @@
  */
 
 #include "vm_core_types.h"
-
-#ifdef _IPF_
-#include "../m2n_ipf_internal.h"
-#elif defined _EM64T_
-#include "../m2n_em64t_internal.h"
-#else
-#include "../m2n_ia32_internal.h"
-#endif
+#include "m2n_internal.h"
 
 /**
  * Enumerates thread-assocciated references that are not stored on the
diff --git a/drlvm/vm/interpreter/src/interp_stack_trace.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/interp_stack_trace.cpp
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_stack_trace.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interp_stack_trace.cpp
diff --git a/drlvm/vm/interpreter/src/interp_vm_helpers.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/interp_vm_helpers.cpp
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_vm_helpers.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interp_vm_helpers.cpp
diff --git a/drlvm/vm/interpreter/src/interp_vm_helpers.h b/drlvm/modules/vm/src/main/native/interpreter/shared/interp_vm_helpers.h
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_vm_helpers.h
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interp_vm_helpers.h
diff --git a/drlvm/vm/interpreter/src/interpreter.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/interpreter.cpp
similarity index 99%
rename from drlvm/vm/interpreter/src/interpreter.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interpreter.cpp
index 0f0a59a..a00d8cb 100644
--- a/drlvm/vm/interpreter/src/interpreter.cpp
+++ b/drlvm/modules/vm/src/main/native/interpreter/shared/interpreter.cpp
@@ -854,7 +854,7 @@
     arg1 = frame.stack.getLong(2);
     frame.stack.pop(2);
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     if (arg1.i64 == -arg1.i64) {
         if (arg0.i64 == -1) {
             res.i64 = arg1.i64;
@@ -878,7 +878,7 @@
     }
     arg1 = frame.stack.getLong(2);
     frame.stack.pop(2);
-#ifdef _EM64T_
+#ifdef HYX86_64
     if (arg1.i64 == -arg1.i64) {
         if (arg0.i64 == -1) {
             res.i64 = 0l;
diff --git a/drlvm/vm/interpreter/src/interpreter_ti.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/interpreter_ti.cpp
similarity index 100%
rename from drlvm/vm/interpreter/src/interpreter_ti.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/interpreter_ti.cpp
diff --git a/drlvm/vm/interpreter/src/interp_native_ia32.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/x86/interp_native.cpp
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_native_ia32.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/x86/interp_native.cpp
diff --git a/drlvm/vm/interpreter/src/interp_native_em64t.cpp b/drlvm/modules/vm/src/main/native/interpreter/shared/x86_64/interp_native.cpp
similarity index 100%
rename from drlvm/vm/interpreter/src/interp_native_em64t.cpp
rename to drlvm/modules/vm/src/main/native/interpreter/shared/x86_64/interp_native.cpp
diff --git a/drlvm/modules/vm/src/main/native/interpreter/unix/exports.txt b/drlvm/modules/vm/src/main/native/interpreter/unix/exports.txt
new file mode 100644
index 0000000..a28312c
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/interpreter/unix/exports.txt
@@ -0,0 +1,15 @@
+JIT_call_returns_a_reference
+JIT_can_enumerate
+JIT_compile_method
+JIT_compile_method_with_params
+JIT_deinit
+JIT_execute_method
+JIT_fix_handler_context
+JIT_gen_method_info
+JIT_get_address_of_this
+JIT_get_root_set_for_thread_dump
+JIT_get_root_set_from_stack_frame
+JIT_init
+JIT_init_with_data
+JIT_supports_compressed_references
+JIT_unwind_stack_frame
diff --git a/drlvm/vm/interpreter/src/invokeJNI_ipf.asm b/drlvm/modules/vm/src/main/native/interpreter/unix/ia64/invokeJNI.s
similarity index 100%
rename from drlvm/vm/interpreter/src/invokeJNI_ipf.asm
rename to drlvm/modules/vm/src/main/native/interpreter/unix/ia64/invokeJNI.s
diff --git a/drlvm/modules/vm/src/main/native/interpreter/unix/makefile b/drlvm/modules/vm/src/main/native/interpreter/unix/makefile
new file mode 100644
index 0000000..ab26aa6
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/interpreter/unix/makefile
@@ -0,0 +1,44 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'interpreter'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/vm/native/interpreter/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+
+INCLUDES := -I$(VM_HOME)include -I$(VM_HOME)port/include \
+            -I$(VM_HOME)vmcore/include $(INCLUDES)
+
+BUILDFILES := \
+  interp_exports.o interp_native.o interp_stack_trace.o interp_vm_helpers.o \
+  interpreter.o interpreter_ti.o invokeJNI.o
+
+DLLNAME = $(DLLPATH)default/libinterpreter$(HY_SHLIB_SUFFIX)
+EXPNAME = INTERPRETER_0.1
+
+AS := $(CXX)
+ASFLAGS := -Wa,--fatal-warnings -c -x assembler-with-cpp -g
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/interpreter/src/invokeJNI_ia32.asm b/drlvm/modules/vm/src/main/native/interpreter/unix/x86/invokeJNI.s
similarity index 100%
rename from drlvm/vm/interpreter/src/invokeJNI_ia32.asm
rename to drlvm/modules/vm/src/main/native/interpreter/unix/x86/invokeJNI.s
diff --git a/drlvm/vm/interpreter/src/invokeJNI_em64t.asm b/drlvm/modules/vm/src/main/native/interpreter/unix/x86_64/invokeJNI.s
similarity index 100%
rename from drlvm/vm/interpreter/src/invokeJNI_em64t.asm
rename to drlvm/modules/vm/src/main/native/interpreter/unix/x86_64/invokeJNI.s
diff --git a/drlvm/vm/interpreter/src/invokeJNI_Windows_ipf.asm b/drlvm/modules/vm/src/main/native/interpreter/windows/ia64/invokeJNI.s
similarity index 100%
rename from drlvm/vm/interpreter/src/invokeJNI_Windows_ipf.asm
rename to drlvm/modules/vm/src/main/native/interpreter/windows/ia64/invokeJNI.s
diff --git a/jdktools/make/properties.xml b/drlvm/modules/vm/src/main/native/interpreter/windows/x86/invokeJNI.s
similarity index 100%
copy from jdktools/make/properties.xml
copy to drlvm/modules/vm/src/main/native/interpreter/windows/x86/invokeJNI.s
diff --git a/drlvm/vm/interpreter/src/invokeJNI_Windows_em64t.asm b/drlvm/modules/vm/src/main/native/interpreter/windows/x86_64/invokeJNI.s
similarity index 100%
rename from drlvm/vm/interpreter/src/invokeJNI_Windows_em64t.asm
rename to drlvm/modules/vm/src/main/native/interpreter/windows/x86_64/invokeJNI.s
diff --git a/drlvm/vm/jitrino/src/codegenerator/CodeGenIntfc.h b/drlvm/modules/vm/src/main/native/jitrino/shared/codegenerator/CodeGenIntfc.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/CodeGenIntfc.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/codegenerator/CodeGenIntfc.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/RuntimeInterface.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/codegenerator/RuntimeInterface.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/RuntimeInterface.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/codegenerator/RuntimeInterface.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/RuntimeInterface.h b/drlvm/modules/vm/src/main/native/jitrino/shared/codegenerator/RuntimeInterface.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/RuntimeInterface.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/codegenerator/RuntimeInterface.h
diff --git a/drlvm/vm/jitrino/src/dynopt/EdgeProfiler.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/EdgeProfiler.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/dynopt/EdgeProfiler.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/EdgeProfiler.cpp
diff --git a/drlvm/vm/jitrino/src/dynopt/StaticProfiler.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/StaticProfiler.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/dynopt/StaticProfiler.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/StaticProfiler.cpp
diff --git a/drlvm/vm/jitrino/src/dynopt/StaticProfiler.h b/drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/StaticProfiler.h
similarity index 100%
rename from drlvm/vm/jitrino/src/dynopt/StaticProfiler.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/StaticProfiler.h
diff --git a/drlvm/vm/jitrino/src/dynopt/ValueProfiler.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/ValueProfiler.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/dynopt/ValueProfiler.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/dynopt/ValueProfiler.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/CodeGenerator_arch.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/CodeGenerator_arch.cpp
index 8e87425..2edff15 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/CodeGenerator_arch.cpp
@@ -22,7 +22,7 @@
 
 #include "Jitrino.h"
 #include "CodeSelectors.h"
-#include "IpfCodeGenerator.h"
+#include "CodeGenerator_arch.h"
 #include "IpfCodeSelector.h"
 #include "IpfCodeLayouter.h"
 #include "IpfLiveAnalyzer.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfCfg.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCfg.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfCfg.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCfg.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfCfgVerifier.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCfgVerifier.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfCfgVerifier.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCfgVerifier.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfCodeLayouter.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCodeLayouter.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfCodeLayouter.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCodeLayouter.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfCodeSelector.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCodeSelector.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfCodeSelector.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfCodeSelector.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfEmitter.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfEmitter.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfEmitter.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfEmitter.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfEncoder.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfEncoder.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfEncoder.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfEncoder.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfInst.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfInst.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfInst.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfInst.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfInstCodeSelector.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfInstCodeSelector.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfInstrumentator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfInstrumentator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfInstrumentator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfInstrumentator.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfIrPrinter.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfIrPrinter.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfIrPrinter.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfIrPrinter.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfLiveAnalyzer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfLiveAnalyzer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfLiveAnalyzer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfLiveAnalyzer.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfLiveManager.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfLiveManager.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfLiveManager.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfLiveManager.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfOpnd.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfOpnd.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfOpnd.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfOpnd.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfOpndManager.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfOpndManager.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfOpndManager.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfOpndManager.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfPrologEpilogGenerator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfPrologEpilogGenerator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfPrologEpilogGenerator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfPrologEpilogGenerator.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfRegisterAllocator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfRegisterAllocator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfRegisterAllocator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfRegisterAllocator.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfRuntimeSupport.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfRuntimeSupport.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfRuntimeSupport.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfRuntimeSupport.cpp
index b382d37..7070ecf 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfRuntimeSupport.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfRuntimeSupport.cpp
@@ -75,7 +75,7 @@
 //   Root Set info
 //
 // Stack info structure
-//   see struct StackInfo in IpfRuntimeInterface.h
+//   see struct StackInfo in RuntimeInterface_arch.h
 //
 // Root set info structure
 //                +---------------+
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfSpillGen.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfSpillGen.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfSpillGen.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfSpillGen.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfType.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfType.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfType.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfType.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfVerifier.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfVerifier.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfVerifier.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/IpfVerifier.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/RuntimeInterface_arch.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/RuntimeInterface_arch.cpp
index b0ff775..86254f4 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/RuntimeInterface_arch.cpp
@@ -20,7 +20,7 @@
  *
  */
 
-#include "IpfRuntimeInterface.h"
+#include "RuntimeInterface_arch.h"
 #include "IpfEncoder.h"
 #include "IpfType.h"
 #include "IpfOpndManager.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/CodeGenerator_arch.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/CodeGenerator_arch.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCfg.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCfg.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCfg.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCfg.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCfgVerifier.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCfgVerifier.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCfgVerifier.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCfgVerifier.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCodeLayouter.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCodeLayouter.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCodeLayouter.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCodeLayouter.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCodeSelector.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfCodeSelector.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfEmitter.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfEmitter.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfEmitter.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfEmitter.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfEncoder.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfEncoder.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfEncoder.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfEncoder.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfInstrumentator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfInstrumentator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfInstrumentator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfInstrumentator.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfIrPrinter.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfIrPrinter.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfIrPrinter.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfIrPrinter.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfLiveAnalyzer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfLiveAnalyzer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfLiveAnalyzer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfLiveAnalyzer.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfLiveManager.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfLiveManager.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfLiveManager.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfLiveManager.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfOpndManager.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfOpndManager.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfOpndManager.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfOpndManager.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfPrologEpilogGenerator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfPrologEpilogGenerator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfPrologEpilogGenerator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfPrologEpilogGenerator.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfRegisterAllocator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfRegisterAllocator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfRegisterAllocator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfRegisterAllocator.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfRuntimeSupport.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfRuntimeSupport.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfRuntimeSupport.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfRuntimeSupport.h
index 4996438..1ab41ea 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfRuntimeSupport.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfRuntimeSupport.h
@@ -25,7 +25,7 @@
 
 #include "IpfCfg.h"
 #include "IpfOpndManager.h"
-#include "IpfRuntimeInterface.h"
+#include "RuntimeInterface_arch.h"
 
 namespace Jitrino {
 namespace IPF {
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfSpillGen.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfSpillGen.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfSpillGen.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfSpillGen.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfType.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfType.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfType.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfType.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfVerifier.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfVerifier.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfVerifier.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/IpfVerifier.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfRuntimeInterface.h b/drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/RuntimeInterface_arch.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ipf/include/IpfRuntimeInterface.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/ia64/codegenerator/include/RuntimeInterface_arch.h
diff --git a/drlvm/vm/jitrino/src/jet/arith_rt.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/arith_rt.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/arith_rt.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/arith_rt.cpp
diff --git a/drlvm/vm/jitrino/src/jet/arith_rt.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/arith_rt.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/arith_rt.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/arith_rt.h
diff --git a/drlvm/vm/jitrino/src/jet/bcproc.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/bcproc.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/bcproc.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/bcproc.cpp
diff --git a/drlvm/vm/jitrino/src/jet/bcproc.inl b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/bcproc.inl
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/bcproc.inl
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/bcproc.inl
diff --git a/drlvm/vm/jitrino/src/jet/cg.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/cg.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg.cpp
index 701dd1c..1a1ba2c 100644
--- a/drlvm/vm/jitrino/src/jet/cg.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg.cpp
@@ -729,7 +729,7 @@
 
 void CodeGen::gen_throw(Class_Handle exnClass, bool restore)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     bool lazy = false;
 #else
     bool lazy = true;
@@ -737,7 +737,7 @@
     BBState saveBB;
 
     //TODO: Workaround for x86-64 stack should be aligned to half of 16
-#ifdef _EM64T_
+#ifdef HYX86_64
     alu(alu_sub, sp, (unsigned)STACK_SLOT_SIZE);
     alu(alu_and, sp, ~((unsigned)STACK_SLOT_SIZE));
     alu(alu_add, sp, (unsigned)STACK_SLOT_SIZE);
diff --git a/drlvm/vm/jitrino/src/jet/cg.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/cg.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg.h
diff --git a/drlvm/vm/jitrino/src/jet/cg_arith.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_arith.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/cg_arith.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_arith.cpp
index b20649a..926ed43 100644
--- a/drlvm/vm/jitrino/src/jet/cg_arith.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_arith.cpp
@@ -247,7 +247,7 @@
     const Val& v2 = m_jframe->dip(0);
 /*    if (false )v2.
         
-#ifdef _IA32_
+#ifdef HYX86
         // on IA32 can use address in a displacement
         alu(to_alu(op), v1, ar_x, (int)v2.addr());
 #else
diff --git a/drlvm/vm/jitrino/src/jet/cg_br.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_br.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/cg_br.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_br.cpp
index d445ecc..97604f1 100644
--- a/drlvm/vm/jitrino/src/jet/cg_br.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_br.cpp
@@ -221,7 +221,7 @@
     
     AR gr_tabl = valloc(jobj);
     movp(gr_tabl, DATA_SWITCH_TABLE | m_curr_inst->pc, m_bbinfo->start);
-#ifdef _EM64T_
+#ifdef HYX86_64
     // On EM64T, we operate with I_32 value in a register, but the 
     // register will be used as 64 bit in address form - have to extend
     sx(Opnd(i64, val.reg()), Opnd(i32, val.reg()));
diff --git a/drlvm/vm/jitrino/src/jet/cg_dbg.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_dbg.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/cg_dbg.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_dbg.cpp
diff --git a/drlvm/vm/jitrino/src/jet/cg_fld_arr.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_fld_arr.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/cg_fld_arr.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_fld_arr.cpp
diff --git a/drlvm/vm/jitrino/src/jet/cg_ia32.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_ia32.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/cg_ia32.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_ia32.cpp
diff --git a/drlvm/vm/jitrino/src/jet/cg_instr.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_instr.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/cg_instr.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_instr.cpp
index e8bfb16..e7ceda4 100644
--- a/drlvm/vm/jitrino/src/jet/cg_instr.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_instr.cpp
@@ -43,7 +43,7 @@
         return;
     }
 
-#ifdef _IA32_
+#ifdef HYX86
     AR addr = ar_x;
     int off = (int)m_p_backedge_counter;
 #else
@@ -126,7 +126,7 @@
     //JVMTI helper takes field handle, method handle, byte code location, pointer
     //to reference for fields or NULL for statics, pointer to field value
 
-#ifndef _EM64T_
+#ifndef HYX86_64
     // Workaround since do_mov do not put jlong on stack in gen_args on ia32
     SYNC_FIRST(static const CallSig cs_ti_fmodif(CCONV_HELPERS, jvoid, jobj, jobj, i32, i32, jobj, jobj));
     Val vlocation((jlong)m_pc);
@@ -164,7 +164,7 @@
     if (field_op) {
         vobject = vstack(ref_depth);
     }
-#ifndef _EM64T_
+#ifndef HYX86_64
     // Workaround since do_mov do not put jlong on stack in gen_args on ia32
     gen_args(cs_ti_fmodif, 0, &vfield, &vmeth, &vlocationHi, &vlocation, &vobject, &fieldValPtr);
 #else
@@ -223,7 +223,7 @@
     //JVMTI helper takes field handle, method handle, byte code location, pointer
     //to reference for fields or NULL for statics
 
-#ifndef _EM64T_
+#ifndef HYX86_64
     // Workaround since do_mov do not put jlong on stack in gen_args on ia32
     SYNC_FIRST(static const CallSig cs_ti_faccess(CCONV_HELPERS, jvoid, jobj, jobj, i32, i32, jobj));
     Val vlocation((jlong)m_pc);
@@ -243,7 +243,7 @@
         vobject = vstack(0);
     }
     
-#ifndef _EM64T_
+#ifndef HYX86_64
     // Workaround since do_mov do not put jlong on stack in gen_args on ia32
     gen_args(cs_ti_faccess, 0, &vfield, &vmeth, &vlocationHi, &vlocation, &vobject);
 #else
diff --git a/drlvm/vm/jitrino/src/jet/cg_meth.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_meth.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/cg_meth.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_meth.cpp
index 38d87a1..3f8a137 100644
--- a/drlvm/vm/jitrino/src/jet/cg_meth.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_meth.cpp
@@ -169,7 +169,7 @@
         push(idx);
     }
     //
-#ifdef _EM64T_
+#ifdef HYX86_64
     mov(fill, (uint_ptr)0xDEADBEEFDEADBEEF);
 #else
     mov(fill, 0xDEADBEEF);
@@ -694,7 +694,7 @@
         }
     }
     else if (is_big(retType)) {
-#ifdef _IA32_
+#ifdef HYX86
         vswap(0);
         vswap(1);
         AR out_reg1 = cs.ret_reg(1); 
@@ -949,7 +949,7 @@
             gen_check_null(*thiz, false);
 
         void * paddr = method_get_indirect_address(meth);
-#ifdef _IA32_
+#ifdef HYX86
         Opnd ptr(jobj, ar_x, paddr);
 #else
         AR gr = valloc(jobj);
@@ -1020,7 +1020,7 @@
         zx2(Opnd(i32, ar), Opnd(jt,ar));
         jt = i32;
     }
-#ifdef _IA32_
+#ifdef HYX86
     if(ar == fp0) {
         // Cant use vstack_off right here, as the item is not yet pushed.
         unsigned slot = m_jframe->size();
diff --git a/drlvm/vm/jitrino/src/jet/cg_obj.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_obj.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/cg_obj.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_obj.cpp
diff --git a/drlvm/vm/jitrino/src/jet/cg_regs.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_regs.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/cg_regs.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_regs.cpp
index f725dc9..3b49094 100644
--- a/drlvm/vm/jitrino/src/jet/cg_regs.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_regs.cpp
@@ -266,7 +266,7 @@
     //}
     
     if (s.jt() == jobj) {
-#ifdef _EM64T_
+#ifdef HYX86_64
         //TODO: it may be not always necessary to upload to register.
         toReg = true;
 #endif    
diff --git a/drlvm/vm/jitrino/src/jet/cg_stk.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_stk.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/cg_stk.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/cg_stk.cpp
diff --git a/drlvm/vm/jitrino/src/jet/compiler.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/compiler.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/compiler.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/compiler.cpp
diff --git a/drlvm/vm/jitrino/src/jet/compiler.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/compiler.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/compiler.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/compiler.h
diff --git a/drlvm/vm/jitrino/src/jet/csig.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/csig.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/csig.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/csig.cpp
diff --git a/drlvm/vm/jitrino/src/jet/csig.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/csig.h
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/csig.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/csig.h
index 656eb6d..6eee568 100644
--- a/drlvm/vm/jitrino/src/jet/csig.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/csig.h
@@ -90,7 +90,7 @@
  */
 #define CCONV_CDECL_IA32       (CCONV_CALLER_POPS | CCONV_MEM | CCONV_RETURN_FP_THROUGH_FPU)
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     /**
      * @brief EM64T calling convention.
      */
@@ -127,7 +127,7 @@
  */
 #define CCONV_MULTIANEWARRAY    CCONV_CDECL_IA32
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     /**
      * @brief On IA-32 it's CCONV_MANAGED_IA32, on EM64T it's CCONV_EM64T.
      */
diff --git a/drlvm/vm/jitrino/src/jet/enc.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/enc.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc.cpp
index 520b1bc..a7da127 100644
--- a/drlvm/vm/jitrino/src/jet/enc.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc.cpp
@@ -330,7 +330,7 @@
                    const CallSig& cs, unsigned idx, ...)
 {
 //TODO: Add IA-64 check
-#ifdef _EM64T_
+#ifdef HYX86_64
     if (check_stack) {
         alu(alu_test, sp, 0x0F);
         unsigned br_off = br(z, 0, 0, hint_none);
@@ -368,7 +368,7 @@
                 mov(Opnd(i32, sp, cs.off(i)), val);
             }
             else {
-#ifdef _EM64T_
+#ifdef HYX86_64
                 int_ptr val = va_arg(valist, int_ptr);
                 mov(Opnd(i64, sp, cs.off(i)), val);
 #else
@@ -380,7 +380,7 @@
             }
         }
         else if (jt==i64) {
-#ifdef _EM64T_
+#ifdef HYX86_64
             int_ptr val = va_arg(valist, int_ptr);
             mov(gr == gr_x ? Opnd(i64, sp, cs.off(i)) : Opnd(i64, gr), val);
 #else
diff --git a/drlvm/vm/jitrino/src/jet/enc.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc.h
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/enc.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc.h
index 5d2fc73..0fac059 100644
--- a/drlvm/vm/jitrino/src/jet/enc.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc.h
@@ -214,7 +214,7 @@
  */
 inline bool is_big(jtype jt)
 {
-#if defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86_64) || defined(_IPF_)
     return false;
 #else
     return jt==i64;
@@ -241,7 +241,7 @@
  */
 inline bool is_ia32(void)
 {
-#if defined(_IA32_)
+#if defined(HYX86)
     return true;
 #else
     return false;
@@ -264,7 +264,7 @@
  */
 inline bool fits32(const void* addr)
 {
-#ifdef _IA32_
+#ifdef HYX86
     return true;
 #else
     return fits32((jlong)(int_ptr)addr);
@@ -295,7 +295,7 @@
     //
     // EAX, EBX, ECX, EDX, ESI, EDI, 
     gr0, gr1, gr2, gr3, gr4, gr5, 
-#ifdef _EM64T_
+#ifdef HYX86_64
     // R8, R9, R10, R11, R12, R13, R14, R15
     gr6, gr7, gr8, gr9, gr10, gr11, gr12, gr13, 
 #endif
@@ -304,7 +304,7 @@
     // Float-point registers
     //
     fr0, fr1, fr2, fr3, fr4, fr5, fr6, fr7, 
-#ifdef _EM64T_
+#ifdef HYX86_64
     fr8, fr9, fr10, fr11, fr12, fr13, fr14, fr15, 
 #endif
     //
@@ -312,7 +312,7 @@
     //
     fp0, // top FPU stacked register
     //
-#ifdef _EM64T_
+#ifdef HYX86_64
     gr_num=15,      /// not including sp
     gr_total = 16,  /// including sp
     fr_num=16,
@@ -604,7 +604,7 @@
         m_base = base; m_index = index;
         m_scale = scale; m_disp = disp;
     }
-#ifdef _IA32_
+#ifdef HYX86
     /**
      * @brief Constructs memory operand, the given pointer is stored as 
      *        displacement.
diff --git a/drlvm/vm/jitrino/src/jet/enc_ia32.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc_ia32.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/jet/enc_ia32.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc_ia32.cpp
index 8f6f343..682d37a 100644
--- a/drlvm/vm/jitrino/src/jet/enc_ia32.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc_ia32.cpp
@@ -26,7 +26,7 @@
 #include "enc_ia32.h"
 #include "trace.h"
 
-#ifdef _IA32_
+#ifdef HYX86
 #include "enc_prvt.h"
 #endif
 
@@ -59,10 +59,10 @@
 static const RegName reg_map[] = {
     RegName_EAX, RegName_EBX, RegName_ECX, RegName_EDX, 
     RegName_ESI, RegName_EDI, 
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName_R8D, RegName_R9D, RegName_R10D, RegName_R11D, 
     RegName_R12D, RegName_R13D, RegName_R14D, RegName_R15D, 
-#endif //_EM64T_
+#endif //HYX86_64
     RegName_EBP,  RegName_ESP
 };
 
@@ -83,7 +83,7 @@
             assert(idx<COUNTOF(reg_map));
             reg = reg_map[idx];
         
-#if !defined(_EM64T_) && defined(_DEBUG)
+#if !defined(HYX86_64) && defined(_DEBUG)
             // On IA32 can not encode the lower 8 bits of the following regs
             if (equals(reg, RegName_EBP) || equals(reg, RegName_ESI) ||
                 equals(reg, RegName_EDI) || equals(reg, RegName_ESP)) {
@@ -92,7 +92,7 @@
 #endif
             OpndSize sz;
             if (jt == jvoid) {
-#ifdef _EM64T_
+#ifdef HYX86_64
                 sz = OpndSize_64;
 #else
                 sz = OpndSize_32;
@@ -199,7 +199,7 @@
 }
 
 AR get_cconv_fr(unsigned i, unsigned pos_in_args) {
-#ifdef _EM64T_
+#ifdef HYX86_64
 #ifdef _WIN64
     bool compact = false;
 #else
@@ -223,7 +223,7 @@
 }
 
 AR get_cconv_gr(unsigned i, unsigned pos_in_args) {
-#ifdef _EM64T_
+#ifdef HYX86_64
 #ifdef _WIN64
     bool compact = false;
 	static const AR grs[] = {
@@ -305,7 +305,7 @@
     assert(getRegKind(reg)==OpndKind_GPReg);
     if (equals(reg, RegName_EBX))   return true;
     if (equals(reg, RegName_EBP))   return true;
-#ifdef _EM64T_
+#ifdef HYX86_64
 #ifdef _WIN64
     if (equals(reg, RegName_RDI))   return true;
     if (equals(reg, RegName_RSI))   return true;
@@ -369,7 +369,7 @@
     if (jt == i32 || jt == flt32) return OpndSize_32;
     if (jt == i16 || jt == u16) return OpndSize_16;
     if (jt == i8) return OpndSize_8;
-#ifdef _IA32_
+#ifdef HYX86
     if (jt == jobj) return OpndSize_32;
 #else
     if (jt == jobj) return OpndSize_64;
@@ -382,7 +382,7 @@
                           Opnd& op0, Opnd& op1, 
                           const Opnd& _op0, const Opnd& _op1)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     // no op.
     op0 = _op0;
     op1 = _op1;
@@ -440,7 +440,7 @@
                           const Opnd& op0, const Opnd& op1, 
                           const Opnd& _op0, const Opnd& _op1)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     // no op.
     if (true) return;
 #endif
@@ -472,7 +472,7 @@
     return getRegNameString(reg);
 }
 
-#if defined(_IA32_)
+#if defined(HYX86)
 static int get_reg_idx(AR ar)
 {
     assert(is_gr(ar) && ar != ar_x);
@@ -541,11 +541,11 @@
     ((ModRM*)buf)->reg = getRegIndex(reg);
 }
 
-#endif // ifdef _IA32_
+#endif // ifdef HYX86
 
 void Encoder::mov_impl(const Opnd& _op0, const Opnd& _op1)
 {
-#if defined(_IA32_)
+#if defined(HYX86)
     //
     // mov_impl() and its calls to add_arg() are the hottest methods on 
     // client startups, especially with the massive ones like Eclipse.
@@ -605,7 +605,7 @@
     assert(_op0.reg() != fp0 && _op1.reg() != fp0);
     assert(is_f(_op0.jt()) == is_f(_op1.jt()));
     
-#ifdef _EM64T_
+#ifdef HYX86_64
     // A special case on EM64T - emulation of 'mov mem64, imm64'
     if (_op0.is_mem() && _op1.is_imm() && 
         (_op1.jt() == i64 || _op1.jt() == jobj)) {
@@ -833,7 +833,7 @@
 {
     EncoderBase::Operands args;
     args.add(devirt(op0));
-#ifdef _EM64T_
+#ifdef HYX86_64
     args.add(EncoderBase::Operand(OpndSize_64, (int_ptr)op1));
 #else
     args.add(EncoderBase::Operand(OpndSize_32, (int_ptr)op1));
diff --git a/drlvm/vm/jitrino/src/jet/enc_ia32.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc_ia32.h
similarity index 93%
rename from drlvm/vm/jitrino/src/jet/enc_ia32.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc_ia32.h
index 708f04d..f9e0168 100644
--- a/drlvm/vm/jitrino/src/jet/enc_ia32.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/enc_ia32.h
@@ -23,8 +23,8 @@
  * @brief Encoder definitions specific for IA-32 and Intel 64 platforms.
  */
  
-#if !defined(__ENC_IA32_H_INCLUDED__)
-#define __ENC_IA32_H_INCLUDED__
+#if !defined(__ENCHYX86H_INCLUDED__)
+#define __ENCHYX86H_INCLUDED__
 
 #include "enc.h"
 
@@ -55,4 +55,4 @@
 }
 }; // ~namespace Jitrino::Jet
 
-#endif  // __ENC_IA32_H_INCLUDED__
+#endif  // __ENCHYX86H_INCLUDED__
diff --git a/drlvm/vm/jitrino/src/jet/jdefs.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jdefs.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/jdefs.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/jdefs.cpp
diff --git a/drlvm/vm/jitrino/src/jet/jdefs.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jdefs.h
similarity index 97%
rename from drlvm/vm/jitrino/src/jet/jdefs.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/jdefs.h
index 633c8f2..e7f2072 100644
--- a/drlvm/vm/jitrino/src/jet/jdefs.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jdefs.h
@@ -86,7 +86,7 @@
 #else
     // stdcall has no meaning on platforms other than Lin32
     #undef stdcall__
-    #if defined(_IA32_) && !defined(stdcall__)
+    #if defined(HYX86) && !defined(stdcall__)
         #define stdcall__    __attribute__ ((__stdcall__))
     #else
     #define stdcall__
@@ -96,19 +96,19 @@
 #endif
 //
 // gcc def on EM64T
-#if defined(__x86_64__) && !defined(_EM64T_)
-    #define _EM64T_  1
-    #undef  _IA32_
+#if defined(__x86_64__) && !defined(HYX86_64)
+    #define HYX86_64  1
+    #undef  HYX86
 #endif
 
-#if defined(__i386__) && !defined(_IA32_)
-    #undef  _EM64T_
-    #define _IA32_ 1
+#if defined(__i386__) && !defined(HYX86)
+    #undef  HYX86_64
+    #define HYX86 1
 #endif
 
-#if !defined(_EM64T_) && !defined(_IPF_) && !defined(_IA32_)
+#if !defined(HYX86_64) && !defined(_IPF_) && !defined(HYX86)
     // presuming we're working on ia-32
-    #define _IA32_ 1
+    #define HYX86 1
 #endif
 
 
@@ -553,7 +553,7 @@
     jtypes_count, 
     /// max number of types
     num_jtypes = jtypes_count,
-#ifdef _EM64T_
+#ifdef HYX86_64
     iplatf=i64,
 #else
     /// platform-native size for integer (fits into general-purpose register)
diff --git a/drlvm/vm/jitrino/src/jet/jet.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jet.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/jet.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/jet.cpp
index 1662a97..dc94bb2 100644
--- a/drlvm/vm/jitrino/src/jet/jet.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jet.cpp
@@ -177,7 +177,7 @@
 
 bool supports_compresed_refs(void)
 {
-#if defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86_64) || defined(_IPF_)
     return true;
 #else
     return false;
diff --git a/drlvm/vm/jitrino/src/jet/jet.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jet.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/jet.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/jet.h
diff --git a/drlvm/vm/jitrino/src/jet/jframe.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jframe.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/jframe.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/jframe.cpp
diff --git a/drlvm/vm/jitrino/src/jet/jframe.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/jframe.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/jframe.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/jframe.h
diff --git a/drlvm/vm/jitrino/src/jet/magics.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/magics.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/magics.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/magics.cpp
diff --git a/drlvm/vm/jitrino/src/jet/mib.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/mib.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/mib.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/mib.cpp
diff --git a/drlvm/vm/jitrino/src/jet/mib.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/mib.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/mib.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/mib.h
diff --git a/drlvm/vm/jitrino/src/jet/rt.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/rt.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt.cpp
index b176390..949f920 100644
--- a/drlvm/vm/jitrino/src/jet/rt.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt.cpp
@@ -58,7 +58,7 @@
 static const unsigned bp_mask  = 1<<bit_no(bp_idx);
 static const int bp_spill_off = ((StackFrame*)NULL)->spill(bp);
 
-#ifdef _IA32_
+#ifdef HYX86
 //
 static AR ebx = virt(RegName_EBX);
 static const unsigned ebx_idx = ar_idx(ebx);
@@ -78,7 +78,7 @@
 static const unsigned edi_mask  = 1<<bit_no(edi_idx);
 static const int      edi_spill_off = ((StackFrame*)NULL)->spill(edi);
 //
-#endif // _IA32_
+#endif // HYX86
 
 
 /**
@@ -178,7 +178,7 @@
     UNSAFE_REGION_END
 #endif
 
-#if defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86_64) || defined(_IPF_)
     // Common version for all platforms but IA32
     for (unsigned i=0; i<gr_num; i++) {
         AR ar = _gr(i);
@@ -564,7 +564,7 @@
         if (!tst(map, var_num)) {
             return EXE_ERROR_TYPE_MISMATCH;
         }
-#ifdef _EM64T_
+#ifdef HYX86_64
     case VM_DATA_TYPE_STRING:
         var_ptr_to_64 = (uint64*)value_ptr;
         *var_ptr_to_64 = *(uint64*)(ebp + frame.local(var_num));
@@ -601,7 +601,7 @@
     case VM_DATA_TYPE_INT64:
     case VM_DATA_TYPE_UINT64:
     case VM_DATA_TYPE_F8:
-#ifdef _EM64T_
+#ifdef HYX86_64
     case VM_DATA_TYPE_ARRAY:
     case VM_DATA_TYPE_CLASS:
     case VM_DATA_TYPE_STRING:
diff --git a/drlvm/vm/jitrino/src/jet/rt.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/rt.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt.h
diff --git a/drlvm/vm/jitrino/src/jet/rt_ia32.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt_ia32.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/rt_ia32.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt_ia32.cpp
index d00605e..5715eb3 100644
--- a/drlvm/vm/jitrino/src/jet/rt_ia32.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/rt_ia32.cpp
@@ -31,7 +31,7 @@
 
 void *** devirt(AR gr, const JitFrameContext * jfc)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     if (gr==gr_x)   return (void***)&jfc->p_rip;
     if (gr == sp)   return (void***)&jfc->rsp;
     if (gr == bp)   return (void***)&jfc->p_rbp;
diff --git a/drlvm/vm/jitrino/src/jet/sconsts.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/sconsts.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/sconsts.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/sconsts.cpp
diff --git a/drlvm/vm/jitrino/src/jet/sconsts.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/sconsts.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/sconsts.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/sconsts.h
diff --git a/drlvm/vm/jitrino/src/jet/sframe.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/sframe.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/sframe.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/sframe.h
diff --git a/drlvm/vm/jitrino/src/jet/stats.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/stats.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/stats.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/stats.cpp
diff --git a/drlvm/vm/jitrino/src/jet/stats.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/stats.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/stats.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/stats.h
diff --git a/drlvm/vm/jitrino/src/jet/structs.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/structs.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/structs.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/structs.h
diff --git a/drlvm/vm/jitrino/src/jet/trace.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/trace.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/trace.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/trace.cpp
diff --git a/drlvm/vm/jitrino/src/jet/trace.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/trace.h
similarity index 100%
rename from drlvm/vm/jitrino/src/jet/trace.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/trace.h
diff --git a/drlvm/vm/jitrino/src/jet/val.h b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/val.h
similarity index 99%
rename from drlvm/vm/jitrino/src/jet/val.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/jet/val.h
index f116d56..208cbbb 100644
--- a/drlvm/vm/jitrino/src/jet/val.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/jet/val.h
@@ -131,7 +131,7 @@
         m_base = base; m_index = index;
         m_scale = scale; m_disp = disp;
     }
-#ifdef _IA32_
+#ifdef HYX86
     /**
      * Special-purpose ctor, only exists on IA-32.
      * 
diff --git a/drlvm/vm/jitrino/src/main/CompilationContext.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/main/CompilationContext.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/main/CompilationContext.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/CompilationContext.cpp
diff --git a/drlvm/vm/jitrino/src/main/CompilationContext.h b/drlvm/modules/vm/src/main/native/jitrino/shared/main/CompilationContext.h
similarity index 100%
rename from drlvm/vm/jitrino/src/main/CompilationContext.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/CompilationContext.h
diff --git a/drlvm/vm/jitrino/src/main/JITInstanceContext.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/main/JITInstanceContext.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/main/JITInstanceContext.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/JITInstanceContext.cpp
diff --git a/drlvm/vm/jitrino/src/main/JITInstanceContext.h b/drlvm/modules/vm/src/main/native/jitrino/shared/main/JITInstanceContext.h
similarity index 100%
rename from drlvm/vm/jitrino/src/main/JITInstanceContext.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/JITInstanceContext.h
diff --git a/drlvm/vm/jitrino/src/main/Jitrino.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/main/Jitrino.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/main/Jitrino.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/Jitrino.cpp
index c196b76..9cd3143 100644
--- a/drlvm/vm/jitrino/src/main/Jitrino.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/main/Jitrino.cpp
@@ -43,11 +43,7 @@
 #include "PMF.h"
 #include "PMFAction.h"
 
-#if defined(_IPF_)
-    #include "IpfRuntimeInterface.h"
-#else
-    #include "ia32/Ia32RuntimeInterface.h"
-#endif
+#include "RuntimeInterface_arch.h"
 
 #include <ostream>
 
diff --git a/drlvm/vm/jitrino/src/main/Jitrino.h b/drlvm/modules/vm/src/main/native/jitrino/shared/main/Jitrino.h
similarity index 100%
rename from drlvm/vm/jitrino/src/main/Jitrino.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/Jitrino.h
diff --git a/drlvm/vm/jitrino/src/main/Log.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/main/Log.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/main/Log.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/Log.cpp
diff --git a/drlvm/vm/jitrino/src/main/Log.h b/drlvm/modules/vm/src/main/native/jitrino/shared/main/Log.h
similarity index 100%
rename from drlvm/vm/jitrino/src/main/Log.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/Log.h
diff --git a/drlvm/vm/jitrino/src/main/LogStream.h b/drlvm/modules/vm/src/main/native/jitrino/shared/main/LogStream.h
similarity index 100%
rename from drlvm/vm/jitrino/src/main/LogStream.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/LogStream.h
diff --git a/drlvm/vm/jitrino/src/main/PMF.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/main/PMF.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/main/PMF.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/PMF.cpp
diff --git a/drlvm/vm/jitrino/src/main/PMF.h b/drlvm/modules/vm/src/main/native/jitrino/shared/main/PMF.h
similarity index 100%
rename from drlvm/vm/jitrino/src/main/PMF.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/PMF.h
diff --git a/drlvm/vm/jitrino/src/main/PMFAction.h b/drlvm/modules/vm/src/main/native/jitrino/shared/main/PMFAction.h
similarity index 100%
rename from drlvm/vm/jitrino/src/main/PMFAction.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/main/PMFAction.h
diff --git a/drlvm/vm/jitrino/src/optimizer/CSEHash.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CSEHash.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/CSEHash.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CSEHash.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/CSEHash.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CSEHash.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/CSEHash.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CSEHash.h
diff --git a/drlvm/vm/jitrino/src/optimizer/CodeGenerator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeGenerator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/CodeGenerator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeGenerator.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/CodeSelectors.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeSelectors.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/optimizer/CodeSelectors.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeSelectors.cpp
index 39c487a..2362f95 100644
--- a/drlvm/vm/jitrino/src/optimizer/CodeSelectors.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeSelectors.cpp
@@ -932,7 +932,7 @@
                 if (!genConsts) break;
                 ConstInst* constInst = (ConstInst*)inst;
                 switch (inst->getType()) {
-#ifdef _IA32_
+#ifdef HYX86
         case Type::UIntPtr:
         case Type::IntPtr:
         case Type::UnmanagedPtr:
@@ -940,7 +940,7 @@
         case Type::Int32:
             cgInst = instructionCallback.ldc_i4(constInst->getValue().i4);
             break;
-#ifdef _EM64T_
+#ifdef HYX86_64
         case Type::UIntPtr:
         case Type::IntPtr:
         case Type::UnmanagedPtr:
diff --git a/drlvm/vm/jitrino/src/optimizer/CodeSelectors.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeSelectors.h
similarity index 97%
rename from drlvm/vm/jitrino/src/optimizer/CodeSelectors.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeSelectors.h
index 1014587..2af757d 100644
--- a/drlvm/vm/jitrino/src/optimizer/CodeSelectors.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/CodeSelectors.h
@@ -22,12 +22,7 @@
 #ifndef CODESELECTORS_H_
 #define CODESELECTORS_H_
 
-
-#if defined(_IPF_)
-    #include "IpfCodeGenerator.h"
-#else
-    #include "ia32/Ia32CodeGenerator.h"
-#endif
+#include "CodeGenerator_arch.h"
 
 #include "irmanager.h"
 
diff --git a/drlvm/vm/jitrino/src/optimizer/FastArrayFilling.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/FastArrayFilling.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/optimizer/FastArrayFilling.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/FastArrayFilling.cpp
index 38eebd5..3b0478e 100644
--- a/drlvm/vm/jitrino/src/optimizer/FastArrayFilling.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/FastArrayFilling.cpp
@@ -279,7 +279,7 @@
         inEdge = startNode->getInEdges().front();
 
         //get a new constant
-#ifdef _EM64T_
+#ifdef HYX86_64
         int64 val = (int64)((ConstInst*)constValue->getInst())->getValue().i8;
 #else
         I_32 val = (I_32)((ConstInst*)constValue->getInst())->getValue().i4;
@@ -290,7 +290,7 @@
             case Type::UInt8:
                 val |= (val << 8);
                 val |= (val << 16);
-#ifdef _EM64T_
+#ifdef HYX86_64
                 val |= (val << 32);
 #endif
                 break;
@@ -298,19 +298,19 @@
             case Type::UInt16:
             case Type::Char:
                 val |= (val << 16);
-#ifdef _EM64T_
+#ifdef HYX86_64
                 val |= (val << 32);
 #endif
                 break;
             case Type::Int32:
             case Type::UInt32:
-#ifdef _EM64T_
+#ifdef HYX86_64
                 val |= (val << 32);
                 break;
 #endif
             case Type::UIntPtr:
             case Type::IntPtr:
-#ifdef _EM64T_
+#ifdef HYX86_64
             case Type::UInt64:
             case Type::Int64:
 #endif
diff --git a/drlvm/vm/jitrino/src/optimizer/FlowGraph.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/FlowGraph.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/FlowGraph.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/FlowGraph.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/FlowGraph.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/FlowGraph.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/FlowGraph.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/FlowGraph.h
diff --git a/drlvm/vm/jitrino/src/optimizer/HLOAPIMagics.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/HLOAPIMagics.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/HLOAPIMagics.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/HLOAPIMagics.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/HLOAPIMagics.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/HLOAPIMagics.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/HLOAPIMagics.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/HLOAPIMagics.h
diff --git a/drlvm/vm/jitrino/src/optimizer/IRBuilder.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/IRBuilder.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/IRBuilder.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/IRBuilder.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/IRBuilder.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/IRBuilder.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/IRBuilder.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/IRBuilder.h
diff --git a/drlvm/vm/jitrino/src/optimizer/IRBuilderFlags.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/IRBuilderFlags.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/IRBuilderFlags.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/IRBuilderFlags.h
diff --git a/drlvm/vm/jitrino/src/optimizer/Inst.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Inst.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Inst.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Inst.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/Inst.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Inst.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Inst.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Inst.h
diff --git a/drlvm/vm/jitrino/src/optimizer/Loop.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Loop.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Loop.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Loop.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/Loop.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Loop.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Loop.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Loop.h
diff --git a/drlvm/vm/jitrino/src/optimizer/LoopUtils.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/LoopUtils.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/LoopUtils.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/LoopUtils.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/LoopUtils.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/LoopUtils.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/LoopUtils.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/LoopUtils.h
diff --git a/drlvm/vm/jitrino/src/optimizer/Opcode.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opcode.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Opcode.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opcode.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/Opcode.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opcode.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Opcode.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opcode.h
diff --git a/drlvm/vm/jitrino/src/optimizer/Opnd.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opnd.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Opnd.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opnd.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/Opnd.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opnd.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/Opnd.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/Opnd.h
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/abcdbounds.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/abcdbounds.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/abcdbounds.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/abcdbounds.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/abcdbounds.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/abcdbounds.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/abcdbounds.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/abcdbounds.h
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd.h
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd_solver.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd_solver.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd_solver.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd_solver.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd_solver.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd_solver.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/classic_abcd_solver.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/classic_abcd_solver.h
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/insertpi.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/insertpi.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/insertpi.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/insertpi.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/abcd/insertpi.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/insertpi.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/abcd/insertpi.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/abcd/insertpi.h
diff --git a/drlvm/vm/jitrino/src/optimizer/aliasanalyzer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/aliasanalyzer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/aliasanalyzer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/aliasanalyzer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/aliasanalyzer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/aliasanalyzer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/aliasanalyzer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/aliasanalyzer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/codelowerer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/codelowerer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/codelowerer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/codelowerer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/codelowerer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/codelowerer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/codelowerer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/codelowerer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/constantfolder.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/constantfolder.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/constantfolder.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/constantfolder.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/constantfolder.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/constantfolder.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/constantfolder.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/constantfolder.h
diff --git a/drlvm/vm/jitrino/src/optimizer/dabce.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/dabce.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/dabce.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/dabce.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/dabce.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/dabce.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/dabce.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/dabce.h
diff --git a/drlvm/vm/jitrino/src/optimizer/dataflow.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/dataflow.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/dataflow.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/dataflow.h
diff --git a/drlvm/vm/jitrino/src/optimizer/deadcodeeliminator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/deadcodeeliminator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/deadcodeeliminator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/deadcodeeliminator.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/deadcodeeliminator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/deadcodeeliminator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/deadcodeeliminator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/deadcodeeliminator.h
diff --git a/drlvm/vm/jitrino/src/optimizer/devirtualizer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/devirtualizer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/devirtualizer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/devirtualizer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/devirtualizer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/devirtualizer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/devirtualizer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/devirtualizer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/escanalyzer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escanalyzer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/escanalyzer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escanalyzer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/escanalyzer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escanalyzer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/escanalyzer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escanalyzer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/escapeanalyzer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escapeanalyzer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/escapeanalyzer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escapeanalyzer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/escapeanalyzer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escapeanalyzer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/escapeanalyzer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/escapeanalyzer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/gcmanagedpointeranalyzer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/gcmanagedpointeranalyzer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/gcmanagedpointeranalyzer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/gcmanagedpointeranalyzer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/gcmanagedpointeranalyzer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/gcmanagedpointeranalyzer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/gcmanagedpointeranalyzer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/gcmanagedpointeranalyzer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/globalcodemotion.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalcodemotion.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/globalcodemotion.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalcodemotion.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/globalcodemotion.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalcodemotion.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/globalcodemotion.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalcodemotion.h
diff --git a/drlvm/vm/jitrino/src/optimizer/globalopndanalyzer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalopndanalyzer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/globalopndanalyzer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalopndanalyzer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/globalopndanalyzer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalopndanalyzer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/globalopndanalyzer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/globalopndanalyzer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/hashvaluenumberer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/hashvaluenumberer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/hashvaluenumberer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/hashvaluenumberer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/helper_inliner.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/helper_inliner.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/helper_inliner.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/helper_inliner.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/inliner.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/inliner.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/optimizer/inliner.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/inliner.cpp
index c3c43a2..3b25124 100644
--- a/drlvm/vm/jitrino/src/optimizer/inliner.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/inliner.cpp
@@ -112,7 +112,7 @@
     _inlineMaxNodeThreshold = irm.getOptimizerFlags().hir_node_threshold * irm.getOptimizerFlags().inline_node_quota / 100;
 
     _inlineSkipExceptionPath = argSource->getBoolArg("skip_exception_path", INLINE_SKIP_EXCEPTION_PATH);
-#if defined  (_EM64T_) || defined (_IPF_)
+#if defined  (HYX86_64) || defined (_IPF_)
     _inlineSkipApiMagicMethods  = false;
 #else
     _inlineSkipApiMagicMethods = argSource->getBoolArg("skip_api_magics", true);
@@ -128,7 +128,7 @@
 #else
             //is_accepted will return 'true' for these methods by skip table-> no inlining will be done
             Method_Table::Decision des = Method_Table::mt_accepted; 
-#ifndef  _EM64T_ // not tested
+#ifndef  HYX86_64 // not tested
             _inlineSkipMethodTable->add_method_record("java/lang/Integer", "numberOfLeadingZeros", "(I)I", des, false);
             _inlineSkipMethodTable->add_method_record("java/lang/Integer", "numberOfTrailingZeros", "(I)I", des, false);
             _inlineSkipMethodTable->add_method_record("java/lang/Long", "numberOfLeadingZeros", "(J)I", des, false);
diff --git a/drlvm/vm/jitrino/src/optimizer/inliner.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/inliner.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/inliner.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/inliner.h
diff --git a/drlvm/vm/jitrino/src/optimizer/irmanager.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/irmanager.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/irmanager.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/irmanager.h
diff --git a/drlvm/vm/jitrino/src/optimizer/lazyexceptionopt.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/lazyexceptionopt.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/lazyexceptionopt.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/lazyexceptionopt.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/lazyexceptionopt.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/lazyexceptionopt.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/lazyexceptionopt.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/lazyexceptionopt.h
diff --git a/drlvm/vm/jitrino/src/optimizer/loop_unroll.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/loop_unroll.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/loop_unroll.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/loop_unroll.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/memoryopt.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/memoryopt.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/memoryopt.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/memoryopt.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/memoryopt.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/memoryopt.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/memoryopt.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/memoryopt.h
diff --git a/drlvm/vm/jitrino/src/optimizer/memoryoptrep.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/memoryoptrep.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/memoryoptrep.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/memoryoptrep.h
diff --git a/drlvm/vm/jitrino/src/optimizer/multiplybyconstant.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/multiplybyconstant.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/multiplybyconstant.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/multiplybyconstant.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/opndmap.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/opndmap.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/opndmap.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/opndmap.h
diff --git a/drlvm/vm/jitrino/src/optimizer/optarithmetic.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optarithmetic.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/optarithmetic.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optarithmetic.h
diff --git a/drlvm/vm/jitrino/src/optimizer/optimizer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optimizer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/optimizer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optimizer.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/optimizer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optimizer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/optimizer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optimizer.h
diff --git a/drlvm/vm/jitrino/src/optimizer/optpass.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optpass.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/optpass.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optpass.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/optpass.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optpass.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/optpass.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/optpass.h
diff --git a/drlvm/vm/jitrino/src/optimizer/osr.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/osr.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/osr.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/osr.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/osr.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/osr.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/osr.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/osr.h
diff --git a/drlvm/vm/jitrino/src/optimizer/pidgenerator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/pidgenerator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/pidgenerator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/pidgenerator.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/pidgenerator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/pidgenerator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/pidgenerator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/pidgenerator.h
diff --git a/drlvm/vm/jitrino/src/optimizer/reassociate.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/reassociate.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/reassociate.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/reassociate.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/reassociate.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/reassociate.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/reassociate.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/reassociate.h
diff --git a/drlvm/vm/jitrino/src/optimizer/simplifier.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifier.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/simplifier.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifier.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/simplifier.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifier.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/simplifier.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifier.h
diff --git a/drlvm/vm/jitrino/src/optimizer/simplifytaus.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifytaus.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/simplifytaus.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifytaus.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/simplifytaus.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifytaus.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/simplifytaus.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/simplifytaus.h
diff --git a/drlvm/vm/jitrino/src/optimizer/ssa/SSA.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/ssa/SSA.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/ssa/SSA.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/ssa/SSA.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/ssa/SSA.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/ssa/SSA.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/ssa/SSA.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/ssa/SSA.h
diff --git a/drlvm/vm/jitrino/src/optimizer/syncopt.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/syncopt.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/syncopt.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/syncopt.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/syncopt.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/syncopt.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/syncopt.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/syncopt.h
diff --git a/drlvm/vm/jitrino/src/optimizer/tailduplicator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/tailduplicator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/tailduplicator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/tailduplicator.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/tailduplicator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/tailduplicator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/tailduplicator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/tailduplicator.h
diff --git a/drlvm/vm/jitrino/src/optimizer/throwopt.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/throwopt.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/throwopt.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/throwopt.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/walkers.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/walkers.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/walkers.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/walkers.cpp
diff --git a/drlvm/vm/jitrino/src/optimizer/walkers.h b/drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/walkers.h
similarity index 100%
rename from drlvm/vm/jitrino/src/optimizer/walkers.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/optimizer/walkers.h
diff --git a/drlvm/vm/jitrino/src/shared/Algorithms.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Algorithms.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Algorithms.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Algorithms.cpp
diff --git a/drlvm/vm/jitrino/src/shared/Algorithms.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Algorithms.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Algorithms.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Algorithms.h
diff --git a/drlvm/vm/jitrino/src/shared/Arena.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Arena.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Arena.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Arena.cpp
diff --git a/drlvm/vm/jitrino/src/shared/Arena.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Arena.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Arena.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Arena.h
diff --git a/drlvm/vm/jitrino/src/shared/BitSet.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/BitSet.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/BitSet.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/BitSet.cpp
diff --git a/drlvm/vm/jitrino/src/shared/BitSet.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/BitSet.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/BitSet.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/BitSet.h
diff --git a/drlvm/vm/jitrino/src/shared/ControlFlowGraph.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/ControlFlowGraph.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/ControlFlowGraph.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/ControlFlowGraph.cpp
diff --git a/drlvm/vm/jitrino/src/shared/ControlFlowGraph.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/ControlFlowGraph.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/ControlFlowGraph.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/ControlFlowGraph.h
diff --git a/drlvm/vm/jitrino/src/shared/CountWriters.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/CountWriters.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/CountWriters.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/CountWriters.cpp
diff --git a/drlvm/vm/jitrino/src/shared/CountWriters.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/CountWriters.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/CountWriters.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/CountWriters.h
diff --git a/drlvm/vm/jitrino/src/shared/Counter.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Counter.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Counter.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Counter.h
diff --git a/drlvm/vm/jitrino/src/shared/Dlink.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Dlink.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Dlink.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Dlink.h
diff --git a/drlvm/vm/jitrino/src/shared/Dominator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Dominator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Dominator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Dominator.cpp
diff --git a/drlvm/vm/jitrino/src/shared/Dominator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Dominator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Dominator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Dominator.h
diff --git a/drlvm/vm/jitrino/src/shared/Event.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Event.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Event.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Event.h
diff --git a/drlvm/vm/jitrino/src/shared/FixFileName.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/FixFileName.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/FixFileName.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/FixFileName.cpp
diff --git a/drlvm/vm/jitrino/src/shared/FixFileName.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/FixFileName.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/FixFileName.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/FixFileName.h
diff --git a/drlvm/vm/jitrino/src/shared/HashSet.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/HashSet.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/HashSet.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/HashSet.h
diff --git a/drlvm/vm/jitrino/src/shared/HashTable.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/HashTable.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/HashTable.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/HashTable.h
diff --git a/drlvm/vm/jitrino/src/shared/Interval.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Interval.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Interval.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Interval.cpp
diff --git a/drlvm/vm/jitrino/src/shared/Interval.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Interval.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Interval.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Interval.h
diff --git a/drlvm/vm/jitrino/src/shared/List.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/List.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/List.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/List.h
diff --git a/drlvm/vm/jitrino/src/shared/LoopTree.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/LoopTree.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/LoopTree.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/LoopTree.cpp
diff --git a/drlvm/vm/jitrino/src/shared/LoopTree.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/LoopTree.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/LoopTree.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/LoopTree.h
diff --git a/drlvm/vm/jitrino/src/shared/MapSet.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/MapSet.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/MapSet.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/MapSet.h
diff --git a/drlvm/vm/jitrino/src/shared/MemoryAttribute.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryAttribute.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/MemoryAttribute.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryAttribute.cpp
diff --git a/drlvm/vm/jitrino/src/shared/MemoryAttribute.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryAttribute.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/MemoryAttribute.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryAttribute.h
diff --git a/drlvm/vm/jitrino/src/shared/MemoryManager.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryManager.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/MemoryManager.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryManager.cpp
diff --git a/drlvm/vm/jitrino/src/shared/MemoryManager.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryManager.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/MemoryManager.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/MemoryManager.h
diff --git a/drlvm/vm/jitrino/src/shared/PlatformDependant.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/PlatformDependant.h
similarity index 98%
rename from drlvm/vm/jitrino/src/shared/PlatformDependant.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/PlatformDependant.h
index c309604..34a1e82 100644
--- a/drlvm/vm/jitrino/src/shared/PlatformDependant.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/PlatformDependant.h
@@ -55,7 +55,7 @@
 #endif
     
     #define cdecl_       __attribute__ ((__cdecl__))
-#ifdef _EM64T_
+#ifdef HYX86_64
    #define stdcall__
 #else
     #define stdcall__    __attribute__ ((__stdcall__))
diff --git a/drlvm/vm/jitrino/src/shared/PrintDotFile.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/PrintDotFile.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/PrintDotFile.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/PrintDotFile.cpp
diff --git a/drlvm/vm/jitrino/src/shared/PrintDotFile.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/PrintDotFile.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/PrintDotFile.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/PrintDotFile.h
diff --git a/drlvm/vm/jitrino/src/shared/Queue.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Queue.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Queue.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Queue.h
diff --git a/drlvm/vm/jitrino/src/shared/Stack.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Stack.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Stack.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Stack.h
diff --git a/drlvm/vm/jitrino/src/shared/Stl.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Stl.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Stl.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Stl.h
diff --git a/drlvm/vm/jitrino/src/shared/StlPriorityQueue.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/StlPriorityQueue.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/StlPriorityQueue.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/StlPriorityQueue.h
diff --git a/drlvm/vm/jitrino/src/shared/Tree.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Tree.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Tree.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Tree.h
diff --git a/drlvm/vm/jitrino/src/shared/Type.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Type.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Type.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Type.cpp
diff --git a/drlvm/vm/jitrino/src/shared/Type.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/Type.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/Type.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/Type.h
diff --git a/drlvm/vm/jitrino/src/shared/VMMagic.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/VMMagic.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/VMMagic.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/VMMagic.cpp
diff --git a/drlvm/vm/jitrino/src/shared/VMMagic.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/VMMagic.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/VMMagic.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/VMMagic.h
diff --git a/drlvm/vm/jitrino/src/shared/XTimer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/XTimer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/XTimer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/XTimer.cpp
diff --git a/drlvm/vm/jitrino/src/shared/XTimer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/XTimer.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/XTimer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/XTimer.h
diff --git a/drlvm/vm/jitrino/src/shared/methodtable.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/methodtable.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/methodtable.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/methodtable.cpp
diff --git a/drlvm/vm/jitrino/src/shared/methodtable.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/methodtable.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/methodtable.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/methodtable.h
diff --git a/drlvm/vm/jitrino/src/shared/mkernel.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/mkernel.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/shared/mkernel.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/mkernel.cpp
index 25c50d7..d2d42b0 100644
--- a/drlvm/vm/jitrino/src/shared/mkernel.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/mkernel.cpp
@@ -193,11 +193,11 @@
 #endif    
 }
 
-#if defined(_EM64T_)
+#if defined(HYX86_64)
 bool CPUID::isSSE2Supported() {
     return true;
 }
-#elif defined(_IA32_) //older IA-32
+#elif defined(HYX86) //older IA-32
 bool CPUID::isSSE2Supported() {
     /*
      * cpuid instruction: 
diff --git a/drlvm/vm/jitrino/src/shared/mkernel.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/mkernel.h
similarity index 99%
rename from drlvm/vm/jitrino/src/shared/mkernel.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/mkernel.h
index 5fcca0d..f2bdb35 100644
--- a/drlvm/vm/jitrino/src/shared/mkernel.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/mkernel.h
@@ -602,7 +602,7 @@
 class CPUID {
     CPUID(){}
 public:
-#if defined(_IA32_) || defined(_EM64T_)
+#if defined(HYX86) || defined(HYX86_64)
     /** SSE2 is an extension of the IA-32 architecture, since 2000. */
     static bool isSSE2Supported();
 #endif
diff --git a/drlvm/vm/jitrino/src/shared/unionfind.h b/drlvm/modules/vm/src/main/native/jitrino/shared/shared/unionfind.h
similarity index 100%
rename from drlvm/vm/jitrino/src/shared/unionfind.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/shared/unionfind.h
diff --git a/drlvm/vm/jitrino/src/translator/ByteCodeParser.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/ByteCodeParser.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/ByteCodeParser.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/ByteCodeParser.h
diff --git a/drlvm/vm/jitrino/src/translator/ExceptionInfo.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/ExceptionInfo.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/ExceptionInfo.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/ExceptionInfo.h
diff --git a/drlvm/vm/jitrino/src/translator/TranslatorIntfc.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/TranslatorIntfc.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/TranslatorIntfc.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/TranslatorIntfc.cpp
diff --git a/drlvm/vm/jitrino/src/translator/TranslatorIntfc.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/TranslatorIntfc.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/TranslatorIntfc.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/TranslatorIntfc.h
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaByteCodeParser.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeParser.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaByteCodeParser.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeParser.cpp
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaByteCodeParser.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeParser.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaByteCodeParser.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeParser.h
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeTranslator.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeTranslator.cpp
index 0f317ac..f729117 100644
--- a/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeTranslator.cpp
@@ -67,7 +67,7 @@
         || matchType(name, "org/vmmagic/unboxed/AddressArray") 
         || matchType(name, "org/vmmagic/unboxed/ObjectReferenceArray")) 
     {
-#ifdef _EM64T_
+#ifdef HYX86_64
         return tm.getArrayType(tm.getInt64Type(), false);
 #else 
         return tm.getArrayType(tm.getInt32Type(), false);
@@ -740,7 +740,7 @@
                     case Type::Double:  constVal=irBuilder.genLdConstant(*(double*)fieldAddr);break;
                     case Type::Boolean: constVal=irBuilder.genLdConstant(*(bool*)fieldAddr);break;
                     case Type::UnmanagedPtr:  assert(fieldIsMagic); 
-#ifdef _IA32_
+#ifdef HYX86
                             constVal=irBuilder.genLdConstant(*(I_32*)fieldAddr);
 #else
                             assert(sizeof(void*)==8);
@@ -2757,7 +2757,7 @@
     else if (!strcmp(mname, "nullReference")) { loadConst = true; theConst =  0;}
     if (loadConst) {
         ConstInst::ConstValue v;
-#ifdef _EM64T_
+#ifdef HYX86_64
         v.i8 = theConst;
 #else
         v.i4 = theConst;        
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeTranslator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaByteCodeTranslator.h
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaFlowGraphBuilder.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaFlowGraphBuilder.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaFlowGraphBuilder.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaFlowGraphBuilder.cpp
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaFlowGraphBuilder.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaFlowGraphBuilder.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaFlowGraphBuilder.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaFlowGraphBuilder.h
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaLabelPrepass.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaLabelPrepass.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaLabelPrepass.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaLabelPrepass.cpp
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaLabelPrepass.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaLabelPrepass.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaLabelPrepass.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaLabelPrepass.h
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaTranslator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaTranslator.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaTranslator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaTranslator.cpp
diff --git a/drlvm/vm/jitrino/src/translator/java/JavaTranslator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaTranslator.h
similarity index 100%
rename from drlvm/vm/jitrino/src/translator/java/JavaTranslator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/translator/java/JavaTranslator.h
diff --git a/drlvm/vm/jitrino/src/vm/EMInterface.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/vm/EMInterface.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/vm/EMInterface.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/vm/EMInterface.cpp
diff --git a/drlvm/vm/jitrino/src/vm/EMInterface.h b/drlvm/modules/vm/src/main/native/jitrino/shared/vm/EMInterface.h
similarity index 100%
rename from drlvm/vm/jitrino/src/vm/EMInterface.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/vm/EMInterface.h
diff --git a/drlvm/vm/jitrino/src/vm/JITInterface.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/vm/JITInterface.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/vm/JITInterface.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/vm/JITInterface.cpp
index 4aa43af..45e2e57 100644
--- a/drlvm/vm/jitrino/src/vm/JITInterface.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/vm/JITInterface.cpp
@@ -420,7 +420,7 @@
 JITEXPORT Boolean
 JIT_supports_compressed_references(JIT_Handle jit)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
         return true;
 #else
         return false;
diff --git a/drlvm/vm/jitrino/src/vm/VMInterface.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/vm/VMInterface.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/vm/VMInterface.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/vm/VMInterface.cpp
diff --git a/drlvm/vm/jitrino/src/vm/VMInterface.h b/drlvm/modules/vm/src/main/native/jitrino/shared/vm/VMInterface.h
similarity index 100%
rename from drlvm/vm/jitrino/src/vm/VMInterface.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/vm/VMInterface.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGenerator.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/CodeGenerator_arch.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGenerator.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/CodeGenerator_arch.cpp
index bf7e4bc..69c2eae 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGenerator.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/CodeGenerator_arch.cpp
@@ -22,7 +22,7 @@
 
 #include <fstream>
 #include "Stl.h"
-#include "Ia32CodeGenerator.h"
+#include "CodeGenerator_arch.h"
 #include "Ia32CodeSelector.h"
 #include "Log.h"
 #include "Ia32IRManager.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGenerator.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/CodeGenerator_arch.h
similarity index 94%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGenerator.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/CodeGenerator_arch.h
index 0ee67f8..bf6ff8a 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGenerator.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/CodeGenerator_arch.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_CODE_GENERATOR_
-#define _IA32_CODE_GENERATOR_
+#ifndef HYX86CODE_GENERATOR_
+#define HYX86CODE_GENERATOR_
 
 #include "CodeGenIntfc.h"
 #include "Ia32IRManager.h"
@@ -55,4 +55,4 @@
 
 
 }} // namespace Ia32
-#endif // _IA32_CODE_GENERATOR
+#endif // HYX86CODE_GENERATOR
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32APIMagics.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32APIMagics.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32APIMagics.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32APIMagics.cpp
index a41b7e5..227cda6 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32APIMagics.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32APIMagics.cpp
@@ -113,7 +113,7 @@
 void APIMagicsHandlerSession::runImpl() {
     CompilationContext* cc = getCompilationContext();
     MemoryManager tmpMM("Inline API methods");
-#ifndef _EM64T_
+#ifndef HYX86_64
     bool mathAsMagic = getBoolArg("magic_math", true);
 #endif
     //finding all api magic calls
@@ -137,7 +137,7 @@
                         continue; 
                     };
                     if( ri->getKind() == Opnd::RuntimeInfo::Kind_MethodDirectAddr ){
-#ifndef _EM64T_
+#ifndef HYX86_64
                         MethodDesc * md = (MethodDesc*)ri->getValue(0);
                         const char* className = md->getParentType()->getName();
                         const char* methodName = md->getName();
@@ -362,7 +362,7 @@
 }
 
 void Long_numberOfLeadingZeros_Handler_x_J_x_I::run() {
-#ifdef _EM64T_
+#ifdef HYX86_64
     return;
 #else
 //  bsr r1,hi
@@ -419,7 +419,7 @@
 }
 
 void Long_numberOfTrailingZeros_Handler_x_J_x_I::run() {
-#ifdef _EM64T_
+#ifdef HYX86_64
     return;
 #else
 
@@ -495,7 +495,7 @@
 
     callInst->unlink();
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName counterRegName = RegName_RCX;
     RegName srcAddrRegName = RegName_RSI;
     RegName dstAddrRegName = RegName_RDI;
@@ -587,7 +587,7 @@
     Opnd* valForCounter = getCallSrc(callInst, 6);
     Opnd* res = getCallDst(callInst);
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName counterRegName = RegName_RCX;
     RegName thisAddrRegName = RegName_RSI;
     RegName trgtAddrRegName = RegName_RDI;
@@ -681,7 +681,7 @@
     Opnd* valForCounter = getCallSrc(callInst, 4);
     Opnd* res = getCallDst(callInst);
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     RegName counterRegName = RegName_RCX;
     RegName thisAddrRegName = RegName_RSI;
     RegName trgtAddrRegName = RegName_RDI;
@@ -752,7 +752,7 @@
     Opnd* start = getCallSrc(callInst, 6);
     Opnd* res = getCallDst(callInst);
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     Type*   counterType = irm->getTypeManager().getInt64Type();
     Constraint regConstr(OpndKind_GPReg, OpndSize_64);
 #else
@@ -938,7 +938,7 @@
                                   dstType == irm->getTypeManager().getIntPtrType()));
 
     if(srcType != dstType) {
-#ifdef _EM64T_
+#ifdef HYX86_64
         node->appendInst(irm->newInstEx(Mnemonic_MOVZX, 1, dst, src));
 #else
         node->appendInst(irm->newCopyPseudoInst(Mnemonic_MOV, dst, src));
@@ -966,7 +966,7 @@
     }
 
 //    TypeManager& typeManager = typeManager;
-#ifdef _EM64T_
+#ifdef HYX86_64
     Type * offType = typeManager.getInt64Type();
 #else
     Type * offType = typeManager.getInt32Type();
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BBPolling.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BBPolling.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BBPolling.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BBPolling.cpp
index a4cb2cd..940040a 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BBPolling.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BBPolling.cpp
@@ -261,7 +261,7 @@
 
     Type* tlsBaseType = irManager.getTypeManager().getUnmanagedPtrType(irManager.getTypeManager().getIntPtrType());
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     tlsBaseReg = irManager.newOpnd(tlsBaseType, Constraint(OpndKind_GPReg));
 #else
     tlsBaseReg = irManager.newOpnd(tlsBaseType, Constraint(RegName_EAX)|
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BCMap.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BCMap.h
similarity index 97%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BCMap.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BCMap.h
index e1b4b38..1a2ad1a 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BCMap.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BCMap.h
@@ -19,8 +19,8 @@
 * @author Intel, Vitaly N. Chaiko
 */
 
-#ifndef _IA32_BC_MAP_H_
-#define _IA32_BC_MAP_H_
+#ifndef HYX86BC_MAP_H_
+#define HYX86BC_MAP_H_
 
 #include "Stl.h"
 #include "MemoryManager.h"
@@ -105,4 +105,4 @@
 
 }} //namespace
 
-#endif /* _IA32_BC_MAP_H_ */
+#endif /* HYX86BC_MAP_H_ */
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BranchTrans.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BranchTrans.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32BranchTrans.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32BranchTrans.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CFG.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CFG.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CFG.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CFG.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CFG.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CFG.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CFG.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CFG.h
index 1e6ddef..d340c12 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CFG.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CFG.h
@@ -18,8 +18,8 @@
  * @author Intel, Vyacheslav P. Shakin, Mikhail Y. Fursov
  */
 
-#ifndef _IA32_CFG_H_
-#define _IA32_CFG_H_
+#ifndef HYX86CFG_H_
+#define HYX86CFG_H_
 
 #include "ControlFlowGraph.h"
 #include "MemoryManager.h"
@@ -161,4 +161,4 @@
 
 }; //namespace Ia32
 }
-#endif // _IA32_FLOWGRAPH_H
+#endif // HYX86FLOWGRAPH_H
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CallingConvention.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CallingConvention.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CallingConvention.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CallingConvention.cpp
index facf55b..762fbbe 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CallingConvention.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CallingConvention.cpp
@@ -55,7 +55,7 @@
 // STDCALLCallingConvention
 //========================================================================================
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 #ifdef _WIN64
 const RegName fastCallGPRegs[4] = {RegName_RCX, RegName_RDX, RegName_R8, RegName_R9} ;
 const RegName fastCallFPRegs[4] = {RegName_XMM0,RegName_XMM1,RegName_XMM2,RegName_XMM3};
@@ -65,7 +65,7 @@
 #endif
 #endif
 
-#ifdef _IA32_
+#ifdef HYX86
 //______________________________________________________________________________________
 void STDCALLCallingConventionIA32::getOpndInfo(ArgKind kind, U_32 count, OpndInfo * infos) const
 {
@@ -180,7 +180,7 @@
 }
 #endif
 
-#ifdef _IA32_
+#ifdef HYX86
 //______________________________________________________________________________________
 Constraint STDCALLCallingConventionIA32::getCalleeSavedRegs(OpndKind regKind) const
 {
@@ -210,7 +210,7 @@
 
 
 //______________________________________________________________________________________
-#ifdef _IA32_
+#ifdef HYX86
 void ManagedCallingConventionIA32::getOpndInfo(ArgKind kind, U_32 count, OpndInfo * infos) const
 {
     if (kind == ArgKind_RetArg) {
@@ -235,7 +235,7 @@
 #else
 #endif
 
-#ifdef _IA32_
+#ifdef HYX86
 #else
 void MultiArrayCallingConventionEM64T::getOpndInfo(ArgKind kind, U_32 count, OpndInfo * infos) const
 {
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CallingConvention.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CallingConvention.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CallingConvention.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CallingConvention.h
index ae75fbe..c166d45 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CallingConvention.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CallingConvention.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_CALLING_CONVENTION_H_
-#define _IA32_CALLING_CONVENTION_H_
+#ifndef HYX86CALLING_CONVENTION_H_
+#define HYX86CALLING_CONVENTION_H_
 
 #include "open/types.h"
 #include "Type.h"
@@ -43,7 +43,7 @@
 #define STACK_ALIGN16         (0x00000010)
 
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define STACK_REG RegName_RSP
     #define STACK_ALIGNMENT STACK_ALIGN_HALF16  
 #else
@@ -223,7 +223,7 @@
     virtual void    getOpndInfo(ArgKind kind, U_32 argCount, OpndInfo * infos) const;
 };
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 typedef STDCALLCallingConventionEM64T       STDCALLCallingConvention;
 typedef CDECLCallingConventionEM64T         CDECLCallingConvention;
 typedef ManagedCallingConventionEM64T       ManagedCallingConvention;
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CgUtils.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CgUtils.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CgUtils.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CgUtils.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CgUtils.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CgUtils.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CgUtils.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CgUtils.h
index 64cc3ee..4670c40 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CgUtils.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CgUtils.h
@@ -18,8 +18,8 @@
  * @author Alexander Astapchuk
  */
 
-#if !defined(__IA32_CGUTILS_INCLUDED__)
-#define __IA32_CGUTILS_INCLUDED__
+#if !defined(_HYX86CGUTILS_INCLUDED__)
+#define _HYX86CGUTILS_INCLUDED__
 
 #include "Ia32IRManager.h"
 
@@ -295,4 +295,4 @@
 
 }}; // ~namespace Jitrino::Ia32
 
-#endif  // ~ifndef __IA32_CGUTILS_INCLUDED__
+#endif  // ~ifndef _HYX86CGUTILS_INCLUDED__
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeEmitter.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeEmitter.cpp
index e5b654b..59ff414 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeEmitter.cpp
@@ -20,7 +20,7 @@
 
 #include "Ia32IRManager.h"
 #include "Log.h"
-#include "Ia32RuntimeInterface.h"
+#include "RuntimeInterface_arch.h"
 #include "Ia32Printer.h"
 #include "Ia32RegAllocCheck.h"
 #include "Ia32GCMap.h"
@@ -197,7 +197,7 @@
         Opnd::RuntimeInfo * ri=NULL;
         if (opnd->isPlacedIn(OpndKind_Mem)&&opnd->getMemOpndKind()==MemOpndKind_ConstantArea){
             Opnd * addrOpnd=opnd->getMemOpndSubOpnd(MemOpndSubOpndKind_Displacement);
-#ifndef _EM64T_
+#ifndef HYX86_64
             ri=addrOpnd->getRuntimeInfo();
             assert(ri->getKind()==Opnd::RuntimeInfo::Kind_ConstantAreaItem);
 #else
@@ -512,7 +512,7 @@
                     // the last two
                     ip = (U_8*)EncoderBase::nops((char*)ip,2);
                 }
-#ifdef _EM64T_
+#ifdef HYX86_64
                     // these nops are required for call transformation from immediate into register form
                     // nops for MOV r11, callTarget (when !fit32(call_offset) ) <opcode + 8 byte address>
                     ip = (U_8*)EncoderBase::nops((char*)ip, 10);
@@ -641,7 +641,7 @@
                 } else 
                     continue;
                 int64 offset=targetCodeStartAddr-instCodeEndAddr;
-#ifdef _EM64T_
+#ifdef HYX86_64
                 if ( !fit32(offset) ) { // offset is not a signed value that fits into 32 bits
                     // this is for direct calls only
                     assert(inst->hasKind(Inst::Kind_CallInst));
@@ -721,7 +721,7 @@
     // we can not guarantee the (callAddr+1) aligned
     // self-jump is a kind of lock for the time of call patching
     U_32 movSize =
-#ifdef _EM64T_
+#ifdef HYX86_64
                      10;
 #else
                      0; // no additional MOV on ia32
@@ -750,7 +750,7 @@
 
     // The patching itself
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     bool registerCallIsBeingPatched = ( 0xB8 == (0xF8 &(*(movAddr+1))) ); // test opcode (&0xF8 - to skip rd bits)
 
     EncoderBase::Operands args;
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGeneratorFlags.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeGeneratorFlags.h
similarity index 94%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGeneratorFlags.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeGeneratorFlags.h
index e717a7d..88722bd 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeGeneratorFlags.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeGeneratorFlags.h
@@ -18,8 +18,8 @@
 * @author Vyacheslav P. Shakin
 */
 
-#ifndef _IA32_CODE_GENERATORFLAGS_
-#define _IA32_CODE_GENERATORFLAGS_
+#ifndef HYX86CODE_GENERATORFLAGS_
+#define HYX86CODE_GENERATORFLAGS_
 
 namespace Jitrino
 {
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayout.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayout.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayout.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayout.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayout.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayout.h
similarity index 97%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayout.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayout.h
index 9113ffc..d97a312 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayout.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayout.h
@@ -18,8 +18,8 @@
  * @author Intel, Mikhail Y. Fursov
  */
 
-#ifndef _IA32_CODE_LAYOUT
-#define _IA32_CODE_LAYOUT
+#ifndef HYX86CODE_LAYOUT
+#define HYX86CODE_LAYOUT
 
 
 #include "Ia32IRManager.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutBottomUp.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutBottomUp.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutBottomUp.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutBottomUp.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutBottomUp.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutBottomUp.h
similarity index 95%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutBottomUp.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutBottomUp.h
index ab68623..8cac7d6 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutBottomUp.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutBottomUp.h
@@ -18,8 +18,8 @@
  * @author Intel, Mikhail Y. Fursov
  */
 
-#ifndef _IA32_CODE_LAYOUT_BOTTOM_UP
-#define _IA32_CODE_LAYOUT_BOTTOM_UP
+#ifndef HYX86CODE_LAYOUT_BOTTOM_UP
+#define HYX86CODE_LAYOUT_BOTTOM_UP
 
 #include "Ia32CodeLayout.h"
 namespace Jitrino
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutTopDown.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutTopDown.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutTopDown.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutTopDown.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutTopDown.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutTopDown.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutTopDown.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutTopDown.h
index a0c0e28..df9014d 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeLayoutTopDown.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeLayoutTopDown.h
@@ -18,8 +18,8 @@
  * @author Intel, Mikhail Y. Fursov
  */
 
-#ifndef _IA32_CODE_LAYOUT_TOP_DOWN
-#define _IA32_CODE_LAYOUT_TOP_DOWN
+#ifndef HYX86CODE_LAYOUT_TOP_DOWN
+#define HYX86CODE_LAYOUT_TOP_DOWN
 
 #include "Ia32CodeLayout.h"
 namespace Jitrino
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeSelector.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeSelector.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeSelector.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeSelector.cpp
index d81043c..5299061 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeSelector.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeSelector.cpp
@@ -20,7 +20,7 @@
 
 
 #include <stdlib.h>
-#include "Ia32CodeGenerator.h"
+#include "CodeGenerator_arch.h"
 #include "Ia32CodeSelector.h"
 #include "Ia32CFG.h"
 #include "Ia32InstCodeSelector.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeSelector.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeSelector.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeSelector.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeSelector.h
index 5cb1cb3..647dafa 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CodeSelector.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CodeSelector.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_CODE_SELECTOR_H_
-#define _IA32_CODE_SELECTOR_H_
+#ifndef HYX86CODE_SELECTOR_H_
+#define HYX86CODE_SELECTOR_H_
 
 #include "Stl.h"
 #include "CodeGenIntfc.h"
@@ -233,4 +233,4 @@
 }; //namespace Ia32
 }
 
-#endif // _IA32_CODE_SELECTOR_H_
+#endif // HYX86CODE_SELECTOR_H_
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ComplexAddrFormLoader.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ComplexAddrFormLoader.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ComplexAddrFormLoader.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ComplexAddrFormLoader.cpp
index e62ceac..cc64971 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ComplexAddrFormLoader.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ComplexAddrFormLoader.cpp
@@ -19,7 +19,7 @@
  */
 
 
-#include "Ia32CodeGenerator.h"
+#include "CodeGenerator_arch.h"
 #include "Ia32CFG.h"
 #include "Ia32IRManager.h"
 #include "Ia32Inst.h"
@@ -185,7 +185,7 @@
             return;
         } else if(src2->isPlacedIn(OpndKind_Imm)) {
             irManager->resolveRuntimeInfo(src2);
-#ifdef _EM64T_
+#ifdef HYX86_64
             if((src2->getImmValue() > (int64)0x7FFFFFFF) || (src2->getImmValue() < -((int64)0x10000000))) {
                 table.baseOp = table.suspOp;
                 return;
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Constraint.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Constraint.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Constraint.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Constraint.cpp
index 7ebf251..e273729 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Constraint.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Constraint.cpp
@@ -85,7 +85,7 @@
             case OpndKind_SReg:         return OpndSize_16;
             case OpndKind_FPReg:        return OpndSize_80;
             case OpndKind_XMMReg:       return OpndSize_128;
-#ifdef _EM64T_
+#ifdef HYX86_64
             case OpndKind_GPReg:        return OpndSize_64;
 #else
             case OpndKind_GPReg:        return OpndSize_32;
@@ -114,14 +114,14 @@
     U_32 newKind=kind, newMask=0;
     U_32 newRegKind=newKind & OpndKind_Reg;
     OpndSize maxSubregisterSize =
-#ifdef _EM64T_
+#ifdef HYX86_64
                                     OpndSize_32;
 #else
                                     OpndSize_16;
 #endif
 
     if (newRegKind == OpndKind_GPReg || ( (newRegKind & OpndKind_GPReg) && sz <= maxSubregisterSize) ){
-#ifndef _EM64T_
+#ifndef HYX86_64
         if (sz==OpndSize_8 && (s==OpndSize_16 || s==OpndSize_32))
             newMask=((mask>>4)|mask)&0xf;
         else if (sz==OpndSize_16)
@@ -155,7 +155,7 @@
     OpndKind regKind=getRegKind(regName);
 
     if (regKind==OpndKind_GPReg){
-#ifndef _EM64T_
+#ifndef HYX86_64
         if (sz==OpndSize_8 && (s==OpndSize_16 || s==OpndSize_32)){
             U_32 idx=getRegIndex(regName);
             if (idx>4)
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Constraint.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Constraint.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Constraint.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Constraint.h
index 0675289..2281c58 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Constraint.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Constraint.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_CONSTRAINT_H_
-#define _IA32_CONSTRAINT_H_
+#ifndef HYX86CONSTRAINT_H_
+#define HYX86CONSTRAINT_H_
 
 #include "open/types.h"
 #include "Ia32IRConstants.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ConstraintsResolver.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ConstraintsResolver.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ConstraintsResolver.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ConstraintsResolver.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ConstraintsResolver.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ConstraintsResolver.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ConstraintsResolver.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ConstraintsResolver.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CopyExpansion.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CopyExpansion.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CopyExpansion.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CopyExpansion.cpp
index a95c546..9253e9f 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32CopyExpansion.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32CopyExpansion.cpp
@@ -411,7 +411,7 @@
                             if (toOpnd->getRegName()==fromOpnd->getRegName())
                                 continue;
                         }else{
-#ifdef _EM64T_
+#ifdef HYX86_64
                             if (!calculatingRegUsage && ((toOpnd->isPlacedIn(OpndKind_Mem) && fromOpnd->isPlacedIn(OpndKind_Mem))||fromOpnd->isPlacedIn(OpndKind_Imm))){
 #else
                             if (!calculatingRegUsage && ((toOpnd->isPlacedIn(OpndKind_Mem) && fromOpnd->isPlacedIn(OpndKind_Mem))||(toOpnd->isPlacedIn(OpndKind_Reg) && fromOpnd->isPlacedIn(OpndKind_Imm)))){
@@ -422,7 +422,7 @@
                         }
                         copySequence = irManager->newCopySequence(Mnemonic_MOV, toOpnd, fromOpnd, gpRegUsageMask, flagsRegUsageMask);
                     }else if (mn==Mnemonic_PUSH||mn==Mnemonic_POP){
-#ifdef _EM64T_
+#ifdef HYX86_64
                         if (!calculatingRegUsage && (inst->getOpnd(0)->isPlacedIn(OpndKind_Mem)||inst->getOpnd(0)->isPlacedIn(OpndKind_Imm))){
 #else
                         if (!calculatingRegUsage && inst->getOpnd(0)->isPlacedIn(OpndKind_Mem)){
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32DCE.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32DCE.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32DCE.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32DCE.cpp
index 1a01bab..1680d6c 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32DCE.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32DCE.cpp
@@ -19,7 +19,7 @@
  */
 
 #include "Ia32IRManager.h"
-#include "Ia32CodeGenerator.h"
+#include "CodeGenerator_arch.h"
 
 namespace Jitrino
 {
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32EarlyPropagation.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32EarlyPropagation.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32EarlyPropagation.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32EarlyPropagation.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Encoder.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Encoder.cpp
index dd63a57..c2f82ac 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Encoder.cpp
@@ -28,7 +28,7 @@
 namespace Jitrino {
 namespace Ia32 {
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     //FIXME64: for adapter needs
     static bool is_ptr_type(const Type* typ) {
         switch(typ->tag) {
@@ -51,7 +51,7 @@
         }
         return false;
     }
-#endif  // _EM64T_
+#endif  // HYX86_64
 
 static InstPrefix getInstPrefixFromSReg(RegName reg) {
     if (reg == RegName_Null) {
@@ -246,7 +246,7 @@
                 }
                 RegName baseReg = pbase == NULL ? RegName_Null : pbase->getRegName();
                 RegName indexReg = pindex == NULL ? RegName_Null : pindex->getRegName();
-#ifdef _EM64T_
+#ifdef HYX86_64
                 // FIXME64 adapter: all PTR types go as 64 bits
                 // this is a porting quick workaround, should be fixed
                 assert(pdisp == NULL || fit32(disp));
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Encoder.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Encoder.h
index b7c8f7e..917ad2b 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Encoder.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Encoder.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_ENCODER_H_
-#define _IA32_ENCODER_H_
+#ifndef HYX86ENCODER_H_
+#define HYX86ENCODER_H_
 
 #include "open/types.h"
 #include "Stl.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32FastArrayFilling.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32FastArrayFilling.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32FastArrayFilling.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32FastArrayFilling.cpp
index 9526fa0..4dfe969 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32FastArrayFilling.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32FastArrayFilling.cpp
@@ -119,7 +119,7 @@
         //insert filling instructions 
         Opnd * memOp1 = irManager->newMemOpndAutoKind(value->getType(), index);
         loopNode->appendInst(irManager->newCopyPseudoInst(Mnemonic_MOV, memOp1, value));
-#ifndef _EM64T_
+#ifndef HYX86_64
         Opnd * memOp2 = irManager->newMemOpndAutoKind(value->getType(), index,irManager->newImmOpnd(int32Type,4));
         loopNode->appendInst(irManager->newCopyPseudoInst(Mnemonic_MOV, memOp2, value));
 #endif
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCMap.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCMap.cpp
index f56b88b..95e1340 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCMap.cpp
@@ -20,7 +20,7 @@
 
 #include "Ia32GCMap.h"
 #include "Ia32Inst.h"
-#include "Ia32RuntimeInterface.h"
+#include "RuntimeInterface_arch.h"
 #include "Ia32StackInfo.h"
 #include "Ia32GCSafePoints.h"
 #include "XTimer.h"
@@ -131,7 +131,7 @@
                 bool res = isUnmanagedFieldPtr(managedOpnd);
                 if (!res) {
                     Log::out()<<"GCMap::checkManaged2UnmanagedConv failure, managedOpnd="<<managedOpnd->getFirstId()<<std::endl;
-#ifdef _IA32_
+#ifdef HYX86
                     // FIXME em64t
 // TODO: Fails with genIdentityHashCode=true
 //                    assert(0);
@@ -188,13 +188,13 @@
         MPtrPair* pair = GCSafePointsInfo::findPairByMPtrOpnd(pairs, opnd);
         I_32 offset = pair == NULL ? 0 : pair->getOffset();
         bool isObject = offset == 0;
-#ifdef _EM64T_
+#ifdef HYX86_64
         bool isCompressed = (opnd->getType()->tag <= Type::CompressedVTablePtr && opnd->getType()->tag >= Type::CompressedSystemObject);
 #endif
         GCSafePointOpnd* gcOpnd;
         RegName reg = opnd->getRegName();
         if (reg != RegName_Null) {
-#ifdef _EM64T_
+#ifdef HYX86_64
             gcOpnd = new (mm) GCSafePointOpnd(isObject, TRUE, U_32(reg), offset, isCompressed);
 #else
             gcOpnd = new (mm) GCSafePointOpnd(isObject, TRUE, U_32(reg), offset);
@@ -460,7 +460,7 @@
 #ifdef ENABLE_GC_RT_CHECKS
             GCMap::checkObject(tm, *(void**)valPtrAddr);
 #endif
-#ifdef _EM64T_
+#ifdef HYX86_64
             if(gcOpnd->isCompressed())
                 gcInterface->enumerateCompressedRootReference((U_32*)valPtrAddr);
             else
@@ -487,7 +487,7 @@
         addr = (POINTER_SIZE_INT)stackPtr;
     } else { 
         assert(gcOpnd->isOnStack());
-#ifdef _EM64T_
+#ifdef HYX86_64
         addr = ctx->rsp + (POINTER_SIZE_INT)gcOpnd->getDistFromInstESP();
 #else
         addr = ctx->esp + gcOpnd->getDistFromInstESP();
@@ -527,7 +527,7 @@
     U_32 stackInfoSize = (U_32)StackInfo::getByteSize(methodDesc);
     U_8* infoBlock = methodDesc->getInfoBlock();
     U_8* gcBlock = infoBlock + stackInfoSize;
-#ifdef _EM64T_
+#ifdef HYX86_64
     const POINTER_SIZE_INT* gcPointImage = GCMap::findGCSafePointStart((POINTER_SIZE_INT*)gcBlock, *context->p_rip);
 #else
     const POINTER_SIZE_INT* gcPointImage = GCMap::findGCSafePointStart((POINTER_SIZE_INT*)gcBlock, *context->p_eip);
@@ -539,7 +539,7 @@
             //this is a performance filter for empty points 
             // and debug filter for hardware exception point that have no stack info assigned.
             StackInfo stackInfo(mm);
-#ifdef _EM64T_
+#ifdef HYX86_64
             stackInfo.read(methodDesc, *context->p_rip, false);
 #else
             stackInfo.read(methodDesc, *context->p_eip, false);
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCMap.h
similarity index 97%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCMap.h
index a7a4c52..2fe9d72 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCMap.h
@@ -18,8 +18,8 @@
  * @author Intel, Mikhail Y. Fursov
  */
 
-#ifndef _IA32_GC_MAP_H_
-#define _IA32_GC_MAP_H_
+#ifndef HYX86GC_MAP_H_
+#define HYX86GC_MAP_H_
 
 #include "Stl.h"
 #include "MemoryManager.h"
@@ -105,7 +105,7 @@
         friend class GCSafePoint;
         static const U_32 OBJ_MASK  = 0x1;
         static const U_32 REG_MASK  = 0x2;
-#ifdef _EM64T_
+#ifdef HYX86_64
         static const U_32 COMPRESSED_MASK  = 0x4;
 #endif
 
@@ -119,7 +119,7 @@
 
     public:
         
-#ifdef _EM64T_
+#ifdef HYX86_64
         GCSafePointOpnd(bool isObject, bool isOnRegister, I_32 _val, I_32 _mptrOffset, bool isCompressed=false) : val(_val), mptrOffset(_mptrOffset) {
             flags = flags | (isCompressed ? COMPRESSED_MASK: 0);
 #else
@@ -138,7 +138,7 @@
         bool isOnRegister() const { return (flags & REG_MASK)!=0;}
         bool isOnStack() const {return !isOnRegister();}
         
-#ifdef _EM64T_
+#ifdef HYX86_64
         bool isCompressed() const { return (flags & COMPRESSED_MASK)!=0;}
 #endif      
         RegName getRegName() const { assert(isOnRegister()); return RegName(val);}
@@ -178,4 +178,4 @@
 
 }} //namespace
 
-#endif /* _IA32_GC_MAP_H_ */
+#endif /* HYX86GC_MAP_H_ */
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCSafePoints.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCSafePoints.cpp
index bbf7082..a6bf7ad 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCSafePoints.cpp
@@ -328,7 +328,7 @@
 
 static bool isHeapBase(Opnd* immOpnd) {
     assert(immOpnd->isPlacedIn(OpndKind_Imm));
-#ifndef _EM64T_
+#ifndef HYX86_64
     return false;
 #else 
     int64 heapBase = (int64)VMInterface::getHeapBase();
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCSafePoints.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCSafePoints.h
index faf9df9..6905154 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GCSafePoints.h
@@ -19,8 +19,8 @@
  */
 
 
-#ifndef _IA32_GC_SAFE_POINTS_H_
-#define _IA32_GC_SAFE_POINTS_H_
+#ifndef HYX86GC_SAFE_POINTS_H_
+#define HYX86GC_SAFE_POINTS_H_
 
 #include "Ia32IRManager.h"
 namespace Jitrino
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GlobalPropagation.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GlobalPropagation.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32GlobalPropagation.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32GlobalPropagation.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32I8Lowerer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32I8Lowerer.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32I8Lowerer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32I8Lowerer.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRConstants.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRConstants.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRConstants.h
similarity index 97%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRConstants.h
index d5ff95c..05a700e 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRConstants.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRConstants.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_IR_CONSTANTS_H_
-#define _IA32_IR_CONSTANTS_H_
+#ifndef HYX86IR_CONSTANTS_H_
+#define HYX86IR_CONSTANTS_H_
 
 #include "open/types.h"
 #include "Stl.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRManager.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRManager.cpp
index 65684ac..d1fdaa1 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRManager.cpp
@@ -24,7 +24,7 @@
 #include "Log.h"
 #include "EMInterface.h"
 #include "Ia32Printer.h"
-#include "Ia32CodeGenerator.h"
+#include "CodeGenerator_arch.h"
 #include "Dominator.h"
 #include <math.h>
 
@@ -167,7 +167,7 @@
 {
     ConstantAreaItem * item=newConstantAreaItem(f);
     Opnd * addr=newImmOpnd(typeManager.getUnmanagedPtrType(typeManager.getSingleType()), Opnd::RuntimeInfo::Kind_ConstantAreaItem, item);
-#ifdef _EM64T_
+#ifdef HYX86_64
     bb->appendInst(newCopyPseudoInst(Mnemonic_MOV, baseOpnd, addr));
     return newMemOpndAutoKind(typeManager.getSingleType(), MemOpndKind_ConstantArea, baseOpnd);
 #else
@@ -180,7 +180,7 @@
 {
     ConstantAreaItem * item=newConstantAreaItem(d);
     Opnd * addr=newImmOpnd(typeManager.getUnmanagedPtrType(typeManager.getDoubleType()), Opnd::RuntimeInfo::Kind_ConstantAreaItem, item);
-#ifdef _EM64T_
+#ifdef HYX86_64
     bb->appendInst(newCopyPseudoInst(Mnemonic_MOV, baseOpnd, addr));
     return newMemOpndAutoKind(typeManager.getDoubleType(), MemOpndKind_ConstantArea, baseOpnd);
 #else
@@ -213,7 +213,7 @@
     // so it allows to replace an Opnd (used in SpillGen) and keep the table 
     // itself intact.
     Opnd * tableAddr=newImmOpnd(typeManager.getIntPtrType(), Opnd::RuntimeInfo::Kind_ConstantAreaItem, item);
-#ifndef _EM64T_
+#ifndef HYX86_64
     Opnd * targetOpnd = newMemOpnd(typeManager.getIntPtrType(), 
         MemOpndKind_ConstantArea, 0, index, newImmOpnd(typeManager.getInt32Type(), sizeof(POINTER_SIZE_INT)), tableAddr);
 #else
@@ -983,7 +983,7 @@
     RegName tmpRegName=RegName_Null, unusedTmpRegName=RegName_Null;
     bool registerSetNotLocked = !isRegisterSetLocked(OpndKind_GPReg);
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     for (U_32 reg = RegName_RAX; reg<=RegName_R15/*(U_32)(targetOpnd->getSize()<OpndSize_64?RegName_RBX:RegName_RDI)*/; reg++) {
 #else
     for (U_32 reg = RegName_EAX; reg<=(U_32)(targetOpnd->getSize()<OpndSize_32?RegName_EBX:RegName_EDI); reg++) {
@@ -1053,7 +1053,7 @@
     OpndKind targetKind=(OpndKind)targetConstraint.getKind();
     OpndKind sourceKind=(OpndKind)sourceConstraint.getKind();
 
-#if defined(_DEBUG) || !defined(_EM64T_)
+#if defined(_DEBUG) || !defined(HYX86_64)
     OpndSize targetSize=targetConstraint.getSize();
     assert(targetSize<=sourceSize); // only same size or truncating conversions are allowed
 #endif
@@ -1064,7 +1064,7 @@
             return newInst(Mnemonic_XOR,targetOpnd, targetOpnd);
         }
         else if (targetKind==OpndKind_XMMReg && sourceOpnd->getMemOpndKind()==MemOpndKind_ConstantArea) {
-#ifdef _EM64T_
+#ifdef HYX86_64
             Opnd * addr = NULL;
             Opnd * base = sourceOpnd->getMemOpndSubOpnd(MemOpndSubOpndKind_Base);
             if(base) {
@@ -1109,7 +1109,7 @@
     ){
         if (sourceKind==OpndKind_Mem && targetKind==OpndKind_Mem){
             Inst * instList=NULL;
-#ifndef _EM64T_
+#ifndef HYX86_64
             U_32 targetByteSize=getByteSize(targetSize);
             if (sourceByteSize<=4){
                 instList=newMemMovSequence(targetOpnd, sourceOpnd, regUsageMask);
@@ -1134,7 +1134,7 @@
             assert(instList!=NULL);
             return instList;
         }else{
-#ifdef _EM64T_
+#ifdef HYX86_64
             if((targetOpnd->getMemOpndKind() == MemOpndKind_StackAutoLayout) && (sourceKind==OpndKind_Imm) && (sourceOpnd->getSize() == OpndSize_64)) 
                 return newMemMovSequence(targetOpnd, sourceOpnd, regUsageMask, false);
             else 
@@ -1205,7 +1205,7 @@
 
     Inst * instList=NULL;
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     if ( ((kind==OpndKind_GPReg ||kind==OpndKind_Mem)&& size!=OpndSize_32)||(kind==OpndKind_Imm && size<OpndSize_32)){
             return newInst(mn, opnd);
 #else
@@ -1233,7 +1233,7 @@
     }
     Opnd * espOpnd=getRegOpnd(STACK_REG);
     Opnd * tmp=newMemOpnd(opnd->getType(), MemOpndKind_StackManualLayout, espOpnd, 0); 
-#ifdef _EM64T_
+#ifdef HYX86_64
     Opnd * sizeOpnd=newImmOpnd(typeManager.getInt32Type(), sizeof(POINTER_SIZE_INT));
     if(kind==OpndKind_Imm) {
         assert(mn==Mnemonic_PUSH);
@@ -1309,7 +1309,7 @@
     assert(getRegSize(regName)==Constraint::getDefaultSize(getRegKind(regName))); // are we going to change this?
     U_32 idx=( (getRegKind(regName) & 0x1f) << 4 ) | ( getRegIndex(regName)&0xf );
     if (!regOpnds[idx]){
-#ifdef _EM64T_
+#ifdef HYX86_64
         Type * t = (getRegSize(regName) == OpndSize_64 ? typeManager.getUInt64Type() : typeManager.getUInt32Type());
         regOpnds[idx]=newRegOpnd(t, regName);
 #else
@@ -1326,7 +1326,7 @@
         if (opnd->isPlacedIn(regKind)) {
             RegName reg = opnd->getRegName();
             unsigned mask = getRegMask(reg);
-#if !defined(_EM64T_)
+#if !defined(HYX86_64)
             if ((reg == RegName_AH) || (reg == RegName_CH) || (reg == RegName_DH) || (reg == RegName_BH))
                 mask >>= 4;
 #endif
@@ -1392,7 +1392,7 @@
         case Type::Char:
             size = OpndSize_16;
             break;
-#ifndef _EM64T_
+#ifndef HYX86_64
         case Type::IntPtr:   
         case Type::UIntPtr:   
 #endif
@@ -1400,7 +1400,7 @@
         case Type::UInt32:
             size = OpndSize_32;
             break;
-#ifdef _EM64T_
+#ifdef HYX86_64
         case Type::IntPtr:   
         case Type::UIntPtr:   
 #endif
@@ -1418,7 +1418,7 @@
             size = OpndSize_80;
             break;
         default:
-#ifdef _EM64T_
+#ifdef HYX86_64
             size = (tag>=Type::CompressedSystemObject && tag<=Type::CompressedVTablePtr)?OpndSize_32:OpndSize_64;
 #else
             size = OpndSize_32;
@@ -1559,7 +1559,7 @@
                 {
                     BitSet * exitLs  = node->getLiveAtEntry();
                     EntryPointPseudoInst * entryPointInst = getEntryPointInst();
-#ifdef _EM64T_
+#ifdef HYX86_64
                     Opnd * thisOpnd  = entryPointInst->thisOpnd;
                     //on EM64T 'this' opnd is spilled to stack only after finalizeCallSites call (copy expansion pass)
                     //TODO: do it after code selector and tune early propagation and regalloc to skip this opnd from optimizations.
@@ -1708,7 +1708,7 @@
 
 void IRManager::finalizeCallSites()
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     MethodDesc& md = getMethodDesc();
     if (!md.isStatic() 
             && (md.isSynchronized() || md.isParentClassIsLikelyExceptionType())) {
@@ -1911,7 +1911,7 @@
                     assert(dispatchEdge!=NULL);
                     Node* dispatchNode= dispatchEdge->getTargetNode();
                     if ((dispatchNode!=fg->getUnwindNode()) ||(checkOpnds[opnd] == (POINTER_SIZE_INT)-1
-#ifdef _EM64T_
+#ifdef HYX86_64
                             ||!Type::isCompressedReference(opnd->getType()->tag)
 #endif
                             )){
@@ -1966,7 +1966,7 @@
 
     assert(excType);
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     bool lazy = false;
 #else
     bool lazy = true;
@@ -2302,7 +2302,7 @@
                 if (subOpnd!=NULL){
                     Type * type=subOpnd->getType();
                     if (type->isManagedPtr() || type->isObject() || type->isMethodPtr() || type->isVTablePtr() || type->isUnmanagedPtr()
-#ifdef _EM64T_
+#ifdef HYX86_64
                         || subOpnd->getRegName() == RegName_RSP/*SOE handler*/
 #else
                         || subOpnd->getRegName() == RegName_ESP/*SOE handler*/
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRManager.h
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRManager.h
index 1636ebb..1edf4ce 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32IRManager.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_IRMANAGER_H_
-#define _IA32_IRMANAGER_H_
+#ifndef HYX86IRMANAGER_H_
+#define HYX86IRMANAGER_H_
 
 #include "open/types.h"
 #include "Stl.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Inst.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Inst.cpp
index 997ef19..2123a1b 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Inst.cpp
@@ -905,7 +905,7 @@
 //   class EntryPointPseudoInst
 //=========================================================================================================
 EntryPointPseudoInst::EntryPointPseudoInst(IRManager * irm, int id, const CallingConvention * cc)
-#ifdef _EM64T_
+#ifdef HYX86_64
     : Inst(Mnemonic_NULL, id, Inst::Form_Extended), thisOpnd(0), callingConventionClient(irm->getMemoryManager(), cc)
 #else
     : Inst(Mnemonic_NULL, id, Inst::Form_Extended), callingConventionClient(irm->getMemoryManager(), cc)
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Inst.h
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Inst.h
index cc03739..f051bb2 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Inst.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Inst.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_INST_H_
-#define _IA32_INST_H_
+#ifndef HYX86INST_H_
+#define HYX86INST_H_
 
 #include "open/types.h"
 #include "Stl.h"
@@ -1306,7 +1306,7 @@
 
     virtual bool hasSideEffect()const { return true; }
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     Opnd * thisOpnd;
 #endif
     //--------------------------------------------------------------------
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InstCodeSelector.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InstCodeSelector.cpp
index aa32e21..6dc54e2 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InstCodeSelector.cpp
@@ -20,7 +20,7 @@
 
 #include "Log.h"
 #include "Ia32InstCodeSelector.h"
-#include "Ia32CodeGenerator.h"
+#include "CodeGenerator_arch.h"
 #include "Ia32Printer.h"
 #include "EMInterface.h"
 #include "VMInterface.h"
@@ -302,7 +302,7 @@
 void InstCodeSelector::copyOpndTrivialOrTruncatingConversion(Opnd *dst, Opnd *src) 
 { 
     assert(dst->getSize()<=src->getSize());
-#ifndef _EM64T_
+#ifndef HYX86_64
     if (src->getType()->isInteger()&&src->getSize()==OpndSize_64)
         appendInsts(irManager.newI8PseudoInst(Mnemonic_MOV, 1, dst, src));
     else
@@ -353,7 +353,7 @@
     }else{
         if (dstOpnd==NULL)
             dstOpnd=irManager.newOpnd(dstType);
-#ifdef _EM64T_
+#ifdef HYX86_64
             appendInsts(irManager.newInstEx(srcType->isSignedInteger() & !isZeroExtend ? Mnemonic_MOVSX:Mnemonic_MOVZX, 1, dstOpnd, srcOpnd));
 #else
         if (dstSize<OpndSize_64){
@@ -389,7 +389,7 @@
             appendInsts(convInst);
         } else { 
             //use FPU to convert long to float/double on IA32 platform
-#ifdef _EM64T_
+#ifdef HYX86_64
             Opnd* int64Opnd = srcOpnd;
 #else  //32 bit mode - use memory aliasing for 64bit opnd
             //copy i8 to stack first
@@ -491,7 +491,7 @@
         if (srcSize == dstSize) {
             appendInsts(irManager.newCopyPseudoInst(Mnemonic_MOV, dstOpnd, srcOpnd));
         } else {
-#ifdef _EM64T_
+#ifdef HYX86_64
             if (srcType->isInteger()) {
                 appendInsts(irManager.newInstEx(isZeroExtend?Mnemonic_MOVZX:Mnemonic_MOVSX, 1, dstOpnd, srcOpnd)); 
             }       
@@ -527,7 +527,7 @@
             copyOpndTrivialOrTruncatingConversion(dstOpnd, srcOpnd);
         } else {
             assert(dstSize==OpndSize_64);
-#ifdef _EM64T_
+#ifdef HYX86_64
             appendInsts(irManager.newInstEx(srcType->isSignedInteger()?Mnemonic_MOVSX:Mnemonic_MOVZX, 1, dstOpnd, srcOpnd));
 #else
             appendInsts(irManager.newI8PseudoInst(srcType->isSignedInteger()?Mnemonic_MOVSX:Mnemonic_MOVZX, 1, dstOpnd, srcOpnd));
@@ -602,14 +602,14 @@
             sizeType=isSigned?typeManager.getInt16Type():typeManager.getUInt16Type();
             break;
 
-#ifdef _IA32_
+#ifdef HYX86
         case ConvertToIntOp::I:
 #endif
         case ConvertToIntOp::I4:
             sizeType=isSigned?typeManager.getInt32Type():typeManager.getUInt32Type();
             break;
 
-#ifdef _EM64T_
+#ifdef HYX86_64
         case ConvertToIntOp::I:
 #endif
         case ConvertToIntOp::I8:
@@ -670,7 +670,7 @@
         case Mnemonic_OR:
         case Mnemonic_XOR:
         case Mnemonic_NOT:
-#ifndef _EM64T_
+#ifndef HYX86_64
             appendInsts(irManager.newI8PseudoInst(mn, 1, dst, src1, src2));
 #else
             appendInsts(irManager.newInstEx(mn, 1, dst, src1, src2));
@@ -816,7 +816,7 @@
             srcOpnd1=(Opnd*)convert(src1, dstType);
             srcOpnd2=(Opnd*)convert(src2, dstType);
             swapIfLastIs(srcOpnd1, srcOpnd2);
-#ifndef _EM64T_
+#ifndef HYX86_64
             appendInsts(irManager.newI8PseudoInst(Mnemonic_IMUL,1,dst,srcOpnd1,srcOpnd2));
 #else
             appendInsts(irManager.newInstEx(Mnemonic_IMUL,1,dst,srcOpnd1,srcOpnd2));
@@ -872,7 +872,7 @@
             srcOpnd1=(Opnd*)convert(src1, dstType);
             srcOpnd2=(Opnd*)convert(src2, dstType);
 
-#ifndef _EM64T_
+#ifndef HYX86_64
             //
             // NOTE: as we don't have IREM mnemonic, then generate I8Inst 
             // with IDIV mnemonic. The 4th fake non-zero argument means 
@@ -971,7 +971,7 @@
             Type * dstType=irManager.getTypeFromTag(Type::Int64);
             Opnd * dstMOV = irManager.newOpnd(dstType);
             Opnd * src_null = irManager.newImmOpnd(dstType, 0);
-#ifndef _EM64T_
+#ifndef HYX86_64
             appendInsts(irManager.newI8PseudoInst(Mnemonic_MOV,1,dstMOV,src_null));
 #else
             appendInsts(irManager.newInstEx(Mnemonic_MOV,1,dstMOV,src_null));
@@ -1187,7 +1187,7 @@
         case IntegerOp::I8:
             dstType=irManager.getTypeFromTag(Type::Int64);
             dst=irManager.newOpnd(dstType);
-#ifndef _EM64T_
+#ifndef HYX86_64
             appendInsts(irManager.newI8PseudoInst(mn,1,dst,(Opnd*)convert(value, dstType),(Opnd*)convert(shiftAmount, typeManager.getInt32Type())));
 #else
             appendInsts(irManager.newInstEx(mn,1,dst,(Opnd*)convert(value, dstType),(Opnd*)convert(shiftAmount, typeManager.getInt32Type())));
@@ -1336,7 +1336,7 @@
     bool swapped=false;
     switch(opType){
         case CompareOp::I4:
-#ifndef _EM64T_
+#ifndef HYX86_64
         case CompareOp::I:
         case CompareOp::Ref:
 #endif
@@ -1352,7 +1352,7 @@
             }
             break;
         }
-#ifdef _EM64T_
+#ifdef HYX86_64
         case CompareOp::I:
         case CompareOp::Ref:
 #endif
@@ -1366,7 +1366,7 @@
                 srcOpnd2=(Opnd*)convert(src2, srcType);
             }
             swapped=swapIfLastIs(srcOpnd1, srcOpnd2);
-#ifndef _EM64T_
+#ifndef HYX86_64
             Opnd * dst = irManager.getRegOpnd(RegName_EFLAGS);
             appendInsts(irManager.newI8PseudoInst(Mnemonic_CMP,1,dst,srcOpnd1,srcOpnd2));
 #else
@@ -1380,7 +1380,7 @@
         {
             Type * srcType=irManager.getTypeFromTag(Type::Double);
             Opnd * srcOpnd1=(Opnd*)convert(src1, srcType);
-#ifdef _EM64T_
+#ifdef HYX86_64
             Opnd * baseOpnd = irManager.newOpnd(typeManager.getUnmanagedPtrType(srcType));
             Opnd * srcOpnd2=src2?(Opnd*)convert(src2, srcType):irManager.newFPConstantMemOpnd((double)0.0, baseOpnd, (BasicBlock*)currentBasicBlock);
 #else
@@ -1393,7 +1393,7 @@
         {
             Type * srcType=irManager.getTypeFromTag(Type::Single);
             Opnd * srcOpnd1=(Opnd*)convert(src1, srcType);
-#ifdef _EM64T_
+#ifdef HYX86_64
             Opnd * baseOpnd = irManager.newOpnd(typeManager.getUnmanagedPtrType(srcType));
             Opnd * srcOpnd2=src2?(Opnd*)convert(src2, srcType):irManager.newFPConstantMemOpnd((float)0.0, baseOpnd, (BasicBlock*)currentBasicBlock);
 #else
@@ -1442,7 +1442,7 @@
 
 Opnd*
 InstCodeSelector::heapBaseOpnd(Type* type, POINTER_SIZE_INT heapBase) {
-#ifndef _EM64T_
+#ifndef HYX86_64
     assert(0); // not supposed to be used on ia32
 #endif
     Opnd* heapBaseOpnd = NULL;
@@ -1495,7 +1495,7 @@
 
 void InstCodeSelector::genSwitchDispatch(U_32 numTargets, Opnd *switchSrc)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     Opnd * opnd = irManager.newOpnd(typeManager.getUInt64Type());
     copyOpnd(opnd, switchSrc);
     appendInsts(irManager.newSwitchInst(numTargets, opnd));
@@ -1524,7 +1524,7 @@
 
 void InstCodeSelector::throwSystemException(CompilationInterface::SystemExceptionId id) 
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     bool lazy = false;
 #else
     bool lazy = true;
@@ -1612,7 +1612,7 @@
 
 CG_OpndHandle*    InstCodeSelector::ldc_i8(int64 val) 
 { 
-#ifndef _EM64T_ 
+#ifndef HYX86_64 
     return irManager.newImmOpnd(typeManager.getInt64Type(), val);
 #else
     Opnd * tmp = irManager.newOpnd(typeManager.getInt64Type());
@@ -1626,7 +1626,7 @@
 
 CG_OpndHandle* InstCodeSelector::getVTableAddr(Type *       dstType, ObjectType * base) 
 {
-#ifndef _EM64T_
+#ifndef HYX86_64
     return irManager.newImmOpnd(dstType, Opnd::RuntimeInfo::Kind_VTableConstantAddr, base);
 #else
     Opnd * acc = irManager.newOpnd(dstType);
@@ -1653,7 +1653,7 @@
 
 CG_OpndHandle* InstCodeSelector::ldc_s(float val) 
 {
-#ifndef _EM64T_
+#ifndef HYX86_64
     return irManager.newFPConstantMemOpnd(val);
 #else
     Opnd * baseOpnd = irManager.newOpnd(typeManager.getUnmanagedPtrType(typeManager.getSingleType()));
@@ -1668,7 +1668,7 @@
 
 CG_OpndHandle*    InstCodeSelector::ldc_d(double val) 
 {
-#ifndef _EM64T_
+#ifndef HYX86_64
     return irManager.newFPConstantMemOpnd(val);
 #else
     Opnd * baseOpnd = irManager.newOpnd(typeManager.getUnmanagedPtrType(typeManager.getDoubleType()));
@@ -1929,7 +1929,7 @@
     assert(offsetOpnd->getType()->isInteger());
     assert(fieldRefType->isManagedPtr());
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     return simpleOp_I8(Mnemonic_ADD, fieldRefType, (Opnd*)base, offsetOpnd);
 #else
     return simpleOp_I4(Mnemonic_ADD, fieldRefType, (Opnd*)base, offsetOpnd);
@@ -1953,7 +1953,7 @@
                                                 FieldDesc *    fieldDesc) 
 {
     Opnd * offsetOpnd=(Opnd*)ldFieldOffset(fieldDesc);
-#ifdef _EM64T_
+#ifdef HYX86_64
     return simpleOp_I8(Mnemonic_ADD, fieldRefType, (Opnd*)base, offsetOpnd);
 #else
     return simpleOp_I4(Mnemonic_ADD, fieldRefType, (Opnd*)base, offsetOpnd);
@@ -1965,7 +1965,7 @@
 
 CG_OpndHandle*    InstCodeSelector::ldStaticAddr(Type* fieldRefType, FieldDesc *fieldDesc) 
 {
-#ifndef _EM64T_
+#ifndef HYX86_64
     Opnd * addr=irManager.newImmOpnd(fieldRefType, Opnd::RuntimeInfo::Kind_StaticFieldAddress, fieldDesc);
 #else
     Opnd* immOp = irManager.newImmOpnd(fieldRefType, Opnd::RuntimeInfo::Kind_StaticFieldAddress, fieldDesc);
@@ -1982,7 +1982,7 @@
 {
     ArrayType * arrayType=((Opnd*)array)->getType()->asArrayType();
     Type * elemType=arrayType->getElementType();
-#ifdef _EM64T_
+#ifdef HYX86_64
     if (elemType->isReference()
         && Type::isCompressedReference(elemType->tag, compilationInterface) 
         && !elemType->isCompressedReference()) {
@@ -2011,7 +2011,7 @@
     Type * elemType=arrayType->getElementType();
     Type * dstType=irManager.getManagedPtrType(elemType);
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     Type * indexType = typeManager.getInt64Type();
     Type * offType = typeManager.getInt64Type();
 #else
@@ -2068,7 +2068,7 @@
     U_32 elemSize=getByteSize(irManager.getTypeSize(elemType));
 
     Type * indexType = 
-#ifdef _EM64T_
+#ifdef HYX86_64
         typeManager.getInt64Type();
 #else
         typeManager.getInt32Type();
@@ -2116,7 +2116,7 @@
                                                 Opnd * baseTau,
                                                 Opnd * offsetTau) 
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     if(irManager.refsAreCompressed() && memType > Type::Float && memType!=Type::UnmanagedPtr) {
         Opnd * opnd = irManager.newMemOpndAutoKind(typeManager.getInt32Type(), addr);
         Opnd * dst = irManager.newOpnd(typeManager.getInt64Type());
@@ -2148,7 +2148,7 @@
                                       Opnd * baseTau,
                                       Opnd * offsetAndTypeTau) 
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     // unmanaged pointers are never being compressed
     // Actually, there is only one possible case caused by magics:
     // unmanaged pointer to Int8
@@ -2397,7 +2397,7 @@
     if (codeSelector.getFlags().slowLdString || dstType->isSystemClass() ||
         *((POINTER_SIZE_INT *) compilationInterface.getStringInternAddr(enclosingMethod, refToken)) == 0) {
         NamedType * parentType=enclosingMethod->getParentType();
-    #ifdef _EM64T_
+    #ifdef HYX86_64
         Opnd * tp = irManager.getRegOpnd(RegName_RDI);
         appendInsts(irManager.newCopyPseudoInst(Mnemonic_MOV, tp,irManager.newImmOpnd(getRuntimeIdType(), Opnd::RuntimeInfo::Kind_TypeRuntimeId, parentType)));
         Opnd * st = irManager.getRegOpnd(RegName_RSI);
@@ -2440,7 +2440,7 @@
                                                  ptr, NULL, NULL, NULL); 
             retOpnd = simpleOp_I8(Mnemonic_ADD, memOpnd->getType(), memOpnd, base);
         } else {
-#ifdef _EM64T_ // in uncompressed mode the ptr can be greater than MAX_INT32 so it can not be an immediate
+#ifdef HYX86_64 // in uncompressed mode the ptr can be greater than MAX_INT32 so it can not be an immediate
             Opnd * tmp = irManager.newImmOpnd(irManager.getTypeFromTag(Type::UInt64),
                                               Opnd::RuntimeInfo::Kind_StringAddress,
                                               enclosingMethod, (void*)(POINTER_SIZE_INT)refToken);
@@ -2558,7 +2558,7 @@
                                                   MethodDesc*      methodDesc,
                                                   CG_OpndHandle *  tauVtableHasDesc) 
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     Opnd * offsetOpnd=irManager.newImmOpnd(typeManager.getIntPtrType(), Opnd::RuntimeInfo::Kind_MethodVtableSlotOffset, methodDesc);
     Opnd * acc = irManager.newOpnd(dstType);
     copyOpnd(acc, (Opnd*)vtableAddr);
@@ -2576,7 +2576,7 @@
                                                      CG_OpndHandle* base,
                                                      CG_OpndHandle *tauBaseNonNull) 
 {
-#ifndef _EM64T_
+#ifndef HYX86_64
     Opnd * vtableAddr=irManager.newOpnd(dstType);
     Opnd * sourceVTableAddr=irManager.newMemOpnd(dstType, (Opnd*)base, 0, 0, 
             irManager.newImmOpnd(typeManager.getInt32Type(), Opnd::RuntimeInfo::Kind_VTableAddrOffset)
@@ -2812,7 +2812,7 @@
         Opnd** opnds = (Opnd**)args;
 
         //deal with constraints       
-#ifdef _EM64T_
+#ifdef HYX86_64
         Type* opnd1Type = opnds[1]->getType();
         assert(irManager.getTypeSize(opnd1Type)==OpndSize_32 || irManager.getTypeSize(opnd1Type)==OpndSize_64);
         assert(irManager.getTypeSize(opnds[1]->getType())==irManager.getTypeSize(opnds[2]->getType()));
@@ -3215,7 +3215,7 @@
                                                  CG_OpndHandle* obj,
                                                  CG_OpndHandle* tauCheckedNull) 
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     Opnd * dst=irManager.newOpnd(typeManager.getInt64Type());
 #else
     Opnd * dst=irManager.newOpnd(typeManager.getInt32Type());
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InstCodeSelector.h
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InstCodeSelector.h
index e1196ee..fca3ead 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InstCodeSelector.h
@@ -18,8 +18,8 @@
  * @author Intel, Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_INST_SELECTOR_H
-#define _IA32_INST_SELECTOR_H
+#ifndef HYX86INST_SELECTOR_H
+#define HYX86INST_SELECTOR_H
 
 #include "CodeGenIntfc.h"
 #include "Ia32CodeSelector.h"
@@ -454,4 +454,4 @@
 
 }}; // namespace Ia32
 
-#endif // _IA32_INST_SELECTOR_h
+#endif // HYX86INST_SELECTOR_h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalProfiler.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalProfiler.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalProfiler.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalProfiler.cpp
index dce0647..8ed007a 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalProfiler.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalProfiler.cpp
@@ -651,7 +651,7 @@
             ms->bbStats[node->getId()].bbExecCount= new(mm) int64[1];
             *(ms->bbStats[node->getId()].bbExecCount)   = 0;
             node->prependInst(irManager->newInst(Mnemonic_POPFD));
-#ifndef _EM64T_
+#ifndef HYX86_64
             node->prependInst(irManager->newInst(Mnemonic_ADC, irManager->newMemOpnd(irManager->getTypeFromTag(Type::Int32), MemOpndKind_Heap, NULL, int((U_8*)(ms->bbStats[node->getId()].bbExecCount) + 4)), irManager->newImmOpnd(irManager->getTypeFromTag(Type::Int32),0)));
 
             node->prependInst(irManager->newInst(Mnemonic_ADD, irManager->newMemOpnd(irManager->getTypeFromTag(Type::Int32), MemOpndKind_Heap, NULL, int(ms->bbStats[node->getId()].bbExecCount)), irManager->newImmOpnd(irManager->getTypeFromTag(Type::Int32),1)));
@@ -659,7 +659,7 @@
             node->prependInst(irManager->newInst(Mnemonic_PUSHFD));
         }
     }
-#ifndef _EM64T_
+#ifndef HYX86_64
     ((BasicBlock *)irManager->getFlowGraph()->getEntryNode())->prependInst(irManager->newInst(Mnemonic_ADD, irManager->newMemOpnd(irManager->getTypeFromTag(Type::Int32), MemOpndKind_Heap, NULL, int(ms->bbStats[-1].bbExecCount)), irManager->newImmOpnd(irManager->getTypeFromTag(Type::Int32),1)));
 #endif
 
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalTrace.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalTrace.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalTrace.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalTrace.cpp
index abb252b..79de644 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalTrace.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalTrace.cpp
@@ -52,7 +52,7 @@
 {
 
     JitFrameContext context;
-#ifdef _EM64T_
+#ifdef HYX86_64
     context.rsp=(POINTER_SIZE_INT)(&methodName+sizeof(POINTER_SIZE_INT)); // must point to the beginning of incoming stack args
 #else
     context.esp=(POINTER_SIZE_INT)(&methodName+sizeof(POINTER_SIZE_INT)); // must point to the beginning of incoming stack args
@@ -72,7 +72,7 @@
         U_8 arg[4*sizeof(U_32)]; 
         for (U_32 j=0; j<info.slotCount; j++){
             if (!info.isReg){
-#ifdef _EM64T_
+#ifdef HYX86_64
                 *(POINTER_SIZE_INT*)(arg+cb)=((POINTER_SIZE_INT*)context.rsp)[info.slots[j]];
 #else
                 *(U_32*)(arg+cb)=((U_32*)context.esp)[info.slots[j]];
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalTrace.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalTrace.h
similarity index 95%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalTrace.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalTrace.h
index c412b40..8730600 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32InternalTrace.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32InternalTrace.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_INTERNAL_TRACE_H_
-#define _IA32_INTERNAL_TRACE_H_
+#ifndef HYX86INTERNAL_TRACE_H_
+#define HYX86INTERNAL_TRACE_H_
 
 #include "Ia32IRManager.h"
 namespace Jitrino
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32LightJNI.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32LightJNI.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32LightJNI.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32LightJNI.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32PeepHole.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32PeepHole.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32PeepHole.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32PeepHole.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Printer.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Printer.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Printer.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Printer.cpp
index d01af35..acfaac0 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Printer.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Printer.cpp
@@ -1413,7 +1413,7 @@
         U_8 arg[4*sizeof(U_32)]; 
         for (U_32 j=0; j<info.slotCount; j++){
             if (!info.isReg){
-#ifdef _EM64T_
+#ifdef HYX86_64
                 *(POINTER_SIZE_INT*)(arg+cb)=((POINTER_SIZE_INT*)context->rsp)[info.slots[j]];
 #else
                 *(U_32*)(arg+cb)=((U_32*)context->esp)[info.slots[j]];
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Printer.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Printer.h
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Printer.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Printer.h
index 5f4597f..e1d301f 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Printer.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Printer.h
@@ -18,8 +18,8 @@
  * @author Vyacheslav P. Shakin
  */
 
-#ifndef _IA32_PRINTER_H_
-#define _IA32_PRINTER_H_
+#ifndef HYX86PRINTER_H_
+#define HYX86PRINTER_H_
 
 #include "open/types.h"
 #include "Stl.h"
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ProfileUtils.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ProfileUtils.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32ProfileUtils.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32ProfileUtils.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RCE.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RCE.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc0.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc0.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc0.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc0.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc2.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc2.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc2.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc2.cpp
index 487c32c..79ad5a7 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc2.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc2.cpp
@@ -337,7 +337,7 @@
     assert(parameters);
     if (strcmp(parameters, "ALL_GP") == 0)
 
-#ifdef _EM64T_
+#ifdef HYX86_64
         constrs = Constraint(RegName_R8)
                  |Constraint(RegName_RAX)
                  |Constraint(RegName_RDX)
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc3.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc3.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc3.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc3.cpp
index a68a0ef..2a17449 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAlloc3.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAlloc3.cpp
@@ -375,7 +375,7 @@
 {
     if (params == 0 || strcmp(params, "ALL") == 0)
     {
-#ifdef _EM64T_
+#ifdef HYX86_64
         push_back(Constraint(RegName_RAX)
                  |Constraint(RegName_RCX)
                  |Constraint(RegName_RDX)
@@ -1234,7 +1234,7 @@
 }
 
 RegAlloc3::RegMask RegAlloc3::occupiedReg (OpndSize tgtSize, OpndSize adjSize, RegAlloc3::RegMask adjMask) {
-#if !defined(_EM64T_)    
+#if !defined(HYX86_64)    
     if (!((tgtSize != adjSize) && ((tgtSize == OpndSize_8) || (adjSize == OpndSize_8))))
 #endif
         return adjMask;
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAllocCheck.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAllocCheck.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAllocCheck.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAllocCheck.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAllocCheck.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAllocCheck.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RegAllocCheck.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32RegAllocCheck.h
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32SpillGen.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32SpillGen.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32SpillGen.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32SpillGen.cpp
index 65da3f6..5f88b7e 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32SpillGen.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32SpillGen.cpp
@@ -358,7 +358,7 @@
     if (params == 0 || strcmp(params, "ALL") == 0)
     {
 
-#ifdef _EM64T_
+#ifdef HYX86_64
         push_back(Constraint(RegName_R8)
                  |Constraint(RegName_RAX)
                  |Constraint(RegName_RCX)
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackInfo.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackInfo.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackInfo.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackInfo.cpp
index 8869ce4..46ed3b9 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackInfo.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackInfo.cpp
@@ -21,7 +21,7 @@
 #include "Ia32IRManager.h"
 #include "Stl.h"
 #include "Ia32StackInfo.h"
-#include "Ia32RuntimeInterface.h"
+#include "RuntimeInterface_arch.h"
 #include "Ia32InternalTrace.h"
 #include <math.h>
 
@@ -208,7 +208,7 @@
    
 
     POINTER_SIZE_INT offset_step = sizeof(POINTER_SIZE_INT);
-#ifdef _EM64T_
+#ifdef HYX86_64
     if (itraceMethodExitString!=NULL){
         Log::cat_rt()->out()<<"__UNWIND__:"
             <<(itraceMethodExitString!=(const char*)1?itraceMethodExitString:"")
@@ -301,7 +301,7 @@
         //return register offset for previous stack frame. 
         //MUST be called before unwind()
         switch(reg) {
-#ifdef _EM64T_
+#ifdef HYX86_64
             case RegName_R15:
                 return context->p_r15;
             case RegName_R14:
@@ -343,7 +343,7 @@
 
 void StackInfo::fixHandlerContext(JitFrameContext* context)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     if (itraceMethodExitString!=NULL){
         Log::cat_rt()->out()<<"__CATCH_HANDLER__:"
             <<(itraceMethodExitString!=(const char*)1?itraceMethodExitString:"")
@@ -366,7 +366,7 @@
 {
     MethodDesc& md = irm.getMethodDesc();
     if (!md.isStatic()) {
-#ifdef _EM64T_
+#ifdef HYX86_64
         if ((md.isSynchronized() || md.isParentClassIsLikelyExceptionType())) {
             EntryPointPseudoInst * entryPointInst = irm.getEntryPointInst();
             offsetOfThis = (U_32)entryPointInst->thisOpnd->getMemOpndSubOpnd(MemOpndSubOpndKind_Displacement)->getImmValue();
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackInfo.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackInfo.h
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackInfo.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackInfo.h
index 677b30e..1c490a4 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackInfo.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackInfo.h
@@ -18,8 +18,8 @@
  * @author Intel, Nikolay A. Sidelnikov
  */
 
-#ifndef _IA32_STACK_INFO_H_
-#define _IA32_STACK_INFO_H_
+#ifndef HYX86STACK_INFO_H_
+#define HYX86STACK_INFO_H_
 
 #include "CodeGenIntfc.h"
 #include "MemoryManager.h"
@@ -214,4 +214,4 @@
 };
 
 }}//namespace
-#endif /* _IA32_STACK_INFO_H_ */
+#endif /* HYX86STACK_INFO_H_ */
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackLayout.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackLayout.cpp
similarity index 99%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackLayout.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackLayout.cpp
index e11ca0b..628ca0f 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32StackLayout.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32StackLayout.cpp
@@ -209,7 +209,7 @@
 #define MAX_STACK_FOR_SOE_HANDLERS 0x2000
 
 static void insertSOECheck(IRManager& irm, U_32 maxStackUsedByMethod) {
-#ifdef _EM64T_
+#ifdef HYX86_64
     //SOE checking is not finished on EM64T
     //TODO: work on stack alignment & SOE checkers
     if (true) return; 
@@ -327,7 +327,7 @@
     Inst * lastPush = NULL;
     
     // Push callee-save registers onto stack.
-#ifdef _EM64T_
+#ifdef HYX86_64
     for (U_32 reg = RegName_R15; reg >= RegName_RAX; reg--) {
 #else
     for (U_32 reg = RegName_EDI; reg >= RegName_EAX; reg--) {
@@ -421,7 +421,7 @@
                 Inst* newIns = irManager->newInst(Mnemonic_ADD, irManager->getRegOpnd(STACK_REG), irManager->newImmOpnd(irManager->getTypeManager().getInt32Type(), localEnd - localBase));
                 newIns->insertBefore(retInst);
             }
-#ifdef _EM64T_
+#ifdef HYX86_64
             for (U_32 reg = RegName_R15; reg >= RegName_RAX ; reg--) {//pop callee-save registers
 #else
             for (U_32 reg = RegName_EDI; reg >= RegName_EAX ; reg--) {//pop callee-save registers
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Tls.cpp
similarity index 98%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Tls.cpp
index 9933e80..1e31528 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Tls.cpp
@@ -48,7 +48,7 @@
 Opnd* createTlsBaseLoadSequence(IRManager& irManager, Node* ctrlNode, Type* tlsBaseType)
 {
     Opnd* tlsBase;
-#if defined(_WIN32) && defined(_EM64T_)
+#if defined(_WIN32) && defined(HYX86_64)
     // Currently do it in a looong way - via the helper, but need to change
     // it to FS:[0x14] - TODO
     tlsBase = createTlsBaseLoadGeneric(irManager, ctrlNode, tlsBaseType);
@@ -104,7 +104,7 @@
 
     int threadOffset = VMInterface::getTLSBaseOffset();
     Opnd* pTib;
-#if defined(_EM64T_)
+#if defined(HYX86_64)
     pTib = irManager.newMemOpnd(tlsBaseType, MemOpndKind_Any, NULL, 0, RegName_FS);
 #else
     pTib = irManager.newMemOpnd(tlsBaseType, MemOpndKind_Any, NULL, 0, RegName_GS);
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Tls.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Tls.h
similarity index 95%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Tls.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Tls.h
index c2e43ad..b129175 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32Tls.h
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32Tls.h
@@ -24,8 +24,8 @@
   */
 
 
-#ifndef _IA32_TLS_H_
-#define _IA32_TLS_H_
+#ifndef HYX86TLS_H_
+#define HYX86TLS_H_
 
 #include "Ia32IRManager.h"
 
@@ -54,5 +54,5 @@
 
 }}; // ~Jitrino::Ia32
 
-#endif  // ifdef _IA32_TLS_H_
+#endif  // ifdef HYX86TLS_H_
 
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32WebMaker.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32WebMaker.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32WebMaker.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32WebMaker.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32i586InstsExpansion.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32i586InstsExpansion.cpp
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32i586InstsExpansion.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/Ia32i586InstsExpansion.cpp
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RuntimeInterface.cpp b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/RuntimeInterface_arch.cpp
similarity index 97%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RuntimeInterface.cpp
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/RuntimeInterface_arch.cpp
index e6e10bb..84823d6 100644
--- a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RuntimeInterface.cpp
+++ b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/RuntimeInterface_arch.cpp
@@ -19,7 +19,7 @@
  */
 
 #include "Ia32IRManager.h"
-#include "Ia32RuntimeInterface.h"
+#include "RuntimeInterface_arch.h"
 #include "Ia32StackInfo.h"
 #include "Ia32GCMap.h"
 #include "Ia32BCMap.h"
@@ -30,7 +30,7 @@
 
 void RuntimeInterface::unwindStack(MethodDesc* methodDesc, JitFrameContext* context, bool isFirst) {
     StackInfo stackInfo;
-#ifdef _EM64T_
+#ifdef HYX86_64
     stackInfo.read(methodDesc, *context->p_rip, isFirst);
 #else
     stackInfo.read(methodDesc, *context->p_eip, isFirst);
@@ -39,7 +39,7 @@
 }
 
 bool RuntimeInterface::isSOEArea(MethodDesc* methodDesc, const ::JitFrameContext* context, bool isFirst) {
-#ifdef _EM64T_
+#ifdef HYX86_64
     POINTER_SIZE_INT eip = *context->p_rip;
 #else
     POINTER_SIZE_INT eip = *context->p_eip;
@@ -60,7 +60,7 @@
     }
     assert(context);
     StackInfo stackInfo;
-#ifdef _EM64T_
+#ifdef HYX86_64
     stackInfo.read(methodDesc, *context->p_rip, isFirst);
     assert(isFirst || (POINTER_SIZE_INT)context->p_rip+8 == context->rsp);
     return (void *)(context->rsp + stackInfo.getStackDepth() + (int)stackInfo.getOffsetOfThis());
@@ -75,7 +75,7 @@
 void  RuntimeInterface::fixHandlerContext(MethodDesc* methodDesc, JitFrameContext* context, bool isFirst)
 {
     StackInfo stackInfo;
-#ifdef _EM64T_
+#ifdef HYX86_64
     stackInfo.read(methodDesc, *context->p_rip, isFirst);
 #else
     stackInfo.read(methodDesc, *context->p_eip, isFirst);
diff --git a/drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RuntimeInterface.h b/drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/RuntimeInterface_arch.h
similarity index 100%
rename from drlvm/vm/jitrino/src/codegenerator/ia32/Ia32RuntimeInterface.h
rename to drlvm/modules/vm/src/main/native/jitrino/shared/x86/codegenerator/RuntimeInterface_arch.h
diff --git a/drlvm/modules/vm/src/main/native/jitrino/unix/exports.txt b/drlvm/modules/vm/src/main/native/jitrino/unix/exports.txt
new file mode 100644
index 0000000..d137814
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/jitrino/unix/exports.txt
@@ -0,0 +1,37 @@
+JIT_call_returns_a_reference
+JIT_can_enumerate
+JIT_compile_method
+JIT_compile_method_with_params
+JIT_deinit
+JIT_enable_profiling
+JIT_extended_class_callback
+JIT_fix_handler_context
+JIT_gc_end
+JIT_gc_object_died
+JIT_gc_start
+JIT_gen_method_info
+JIT_get_address_of_this
+JIT_get_address_of_var
+JIT_get_break_point_offset
+JIT_get_breakpoints
+JIT_get_exe_capabilities
+JIT_get_inline_depth
+JIT_get_inlined_bc
+JIT_get_inlined_method
+JIT_get_root_set_for_thread_dump
+JIT_get_root_set_from_stack_frame
+JIT_init
+JIT_init_with_data
+JIT_is_soe_area
+JIT_next_command_line_argument
+JIT_num_breakpoints
+JIT_overridden_method_callback
+JIT_profile_notification_callback
+JIT_recompiled_method_callback
+JIT_set_profile_access_interface
+JIT_supports_compressed_references
+JIT_unwind_stack_frame
+get_bc_location_for_native
+get_local_var
+get_native_location_for_bc
+set_local_var
diff --git a/drlvm/modules/vm/src/main/native/jitrino/unix/makefile b/drlvm/modules/vm/src/main/native/jitrino/unix/makefile
new file mode 100644
index 0000000..a3ba242
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/jitrino/unix/makefile
@@ -0,0 +1,121 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'jitrino'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/vm/native/jitrino/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE \
+  -DPROJECT_JITRINO
+
+ifeq ($(HY_CFG),debug)
+DEFINES += -DJIT_LOGS -DJIT_STATS
+endif
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated -fmessage-length=0 -Wall -Werror -Wno-uninitialized
+
+INCLUDES := -I$(VM_HOME)include -I$(VM_HOME)vmcore/include \
+  -I$(VM_HOME)port/include \
+  -I$(SHAREDSUB)main -I$(SHAREDSUB)shared -I$(SHAREDSUB)vm \
+  -I$(SHAREDSUB)codegenerator -I$(SHAREDSUB)$(HY_ARCH_FAMILY)/codegenerator \
+  -I$(SHAREDSUB)optimizer -I$(SHAREDSUB)dynopt \
+  -I$(SHAREDSUB)translator -I$(SHAREDSUB)translator/java \
+  $(INCLUDES)
+
+BUILDFILES := \
+  codegenerator/RuntimeInterface.o \
+  codegenerator/Ia32APIMagics.o codegenerator/Ia32BBPolling.o \
+  codegenerator/Ia32BranchTrans.o codegenerator/Ia32CFG.o \
+  codegenerator/Ia32CallingConvention.o codegenerator/Ia32CgUtils.o \
+  codegenerator/Ia32CodeEmitter.o codegenerator/CodeGenerator_arch.o \
+  codegenerator/Ia32CodeLayout.o codegenerator/Ia32CodeLayoutBottomUp.o \
+  codegenerator/Ia32CodeLayoutTopDown.o codegenerator/Ia32CodeSelector.o \
+  codegenerator/Ia32ComplexAddrFormLoader.o codegenerator/Ia32Constraint.o \
+  codegenerator/Ia32ConstraintsResolver.o codegenerator/Ia32CopyExpansion.o \
+  codegenerator/Ia32DCE.o codegenerator/Ia32EarlyPropagation.o \
+  codegenerator/Ia32Encoder.o codegenerator/Ia32FastArrayFilling.o \
+  codegenerator/Ia32GCMap.o codegenerator/Ia32GCSafePoints.o \
+  codegenerator/Ia32GlobalPropagation.o codegenerator/Ia32I8Lowerer.o \
+  codegenerator/Ia32IRConstants.o codegenerator/Ia32IRManager.o \
+  codegenerator/Ia32Inst.o codegenerator/Ia32InstCodeSelector.o \
+  codegenerator/Ia32InternalProfiler.o codegenerator/Ia32InternalTrace.o \
+  codegenerator/Ia32LightJNI.o codegenerator/Ia32PeepHole.o \
+  codegenerator/Ia32Printer.o codegenerator/Ia32ProfileUtils.o \
+  codegenerator/Ia32RCE.o codegenerator/Ia32RegAlloc0.o \
+  codegenerator/Ia32RegAlloc2.o codegenerator/Ia32RegAlloc3.o \
+  codegenerator/Ia32RegAllocCheck.o codegenerator/RuntimeInterface_arch.o \
+  codegenerator/Ia32SpillGen.o codegenerator/Ia32StackInfo.o \
+  codegenerator/Ia32StackLayout.o codegenerator/Ia32Tls.o \
+  codegenerator/Ia32WebMaker.o codegenerator/Ia32i586InstsExpansion.o \
+  dynopt/EdgeProfiler.o dynopt/StaticProfiler.o dynopt/ValueProfiler.o \
+  main/CompilationContext.o main/JITInstanceContext.o main/Jitrino.o \
+  main/Log.o main/PMF.o \
+  optimizer/CSEHash.o optimizer/CodeGenerator.o optimizer/CodeSelectors.o \
+  optimizer/FastArrayFilling.o optimizer/FlowGraph.o optimizer/HLOAPIMagics.o \
+  optimizer/IRBuilder.o optimizer/Inst.o optimizer/Loop.o \
+  optimizer/LoopUtils.o optimizer/Opcode.o optimizer/Opnd.o \
+  optimizer/abcd/abcdbounds.o optimizer/abcd/classic_abcd.o \
+  optimizer/abcd/classic_abcd_solver.o optimizer/abcd/insertpi.o \
+  optimizer/aliasanalyzer.o optimizer/codelowerer.o \
+  optimizer/constantfolder.o optimizer/dabce.o \
+  optimizer/deadcodeeliminator.o optimizer/devirtualizer.o \
+  optimizer/escanalyzer.o optimizer/escapeanalyzer.o \
+  optimizer/gcmanagedpointeranalyzer.o optimizer/globalcodemotion.o \
+  optimizer/globalopndanalyzer.o optimizer/hashvaluenumberer.o \
+  optimizer/helper_inliner.o optimizer/inliner.o \
+  optimizer/lazyexceptionopt.o optimizer/loop_unroll.o optimizer/memoryopt.o \
+  optimizer/multiplybyconstant.o optimizer/optimizer.o optimizer/optpass.o \
+  optimizer/osr.o optimizer/pidgenerator.o optimizer/reassociate.o \
+  optimizer/simplifier.o optimizer/simplifytaus.o optimizer/ssa/SSA.o \
+  optimizer/syncopt.o optimizer/tailduplicator.o optimizer/throwopt.o \
+  optimizer/walkers.o \
+  shared/Algorithms.o shared/Arena.o shared/BitSet.o shared/ControlFlowGraph.o \
+  shared/CountWriters.o shared/Dominator.o shared/FixFileName.o \
+  shared/Interval.o shared/LoopTree.o shared/MemoryAttribute.o \
+  shared/MemoryManager.o shared/PrintDotFile.o shared/Type.o shared/VMMagic.o \
+  shared/XTimer.o shared/methodtable.o shared/mkernel.o \
+  translator/TranslatorIntfc.o translator/java/JavaByteCodeParser.o \
+  translator/java/JavaByteCodeTranslator.o \
+  translator/java/JavaFlowGraphBuilder.o \
+  translator/java/JavaLabelPrepass.o translator/java/JavaTranslator.o \
+  vm/EMInterface.o vm/JITInterface.o vm/VMInterface.o
+
+ifneq ($(HY_ARCH),ia64)
+BUILDFILES += \
+  jet/arith_rt.o jet/bcproc.o jet/cg.o jet/cg_arith.o jet/cg_br.o \
+  jet/cg_dbg.o jet/cg_fld_arr.o jet/cg_ia32.o jet/cg_instr.o jet/cg_meth.o \
+  jet/cg_obj.o jet/cg_regs.o jet/cg_stk.o jet/compiler.o jet/csig.o \
+  jet/enc.o jet/enc_ia32.o jet/jdefs.o jet/jet.o jet/jframe.o jet/magics.o \
+  jet/mib.o jet/rt.o jet/rt_ia32.o jet/sconsts.o jet/stats.o jet/trace.o
+endif
+
+DLLNAME = $(DLLPATH)default/libjitrino$(HY_SHLIB_SUFFIX)
+EXPNAME = JITRINO_0.1
+
+#OSLIBS += -lm
+MDLLIBFILES += $(LIBPATH)libapr-1.a $(LIBPATH)libport.a
+
+include $(HY_HDK)/build/make/rules.mk
+
+$(HY_BIN)%.o: $(SHAREDSUB)$(HY_ARCH_FAMILY)/%.cpp
+	@mkdir -p $(@D)
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ $<
diff --git a/drlvm/vm/port/src/file_io/filepath_generic.c b/drlvm/modules/vm/src/main/native/port/shared/file_io/filepath_generic.c
similarity index 100%
rename from drlvm/vm/port/src/file_io/filepath_generic.c
rename to drlvm/modules/vm/src/main/native/port/shared/file_io/filepath_generic.c
diff --git a/drlvm/vm/port/src/logger/logger.cpp b/drlvm/modules/vm/src/main/native/port/shared/logger/logger.cpp
similarity index 100%
rename from drlvm/vm/port/src/logger/logger.cpp
rename to drlvm/modules/vm/src/main/native/port/shared/logger/logger.cpp
diff --git a/drlvm/vm/port/src/logger/logparams.cpp b/drlvm/modules/vm/src/main/native/port/shared/logger/logparams.cpp
similarity index 100%
rename from drlvm/vm/port/src/logger/logparams.cpp
rename to drlvm/modules/vm/src/main/native/port/shared/logger/logparams.cpp
diff --git a/drlvm/vm/port/src/malloc/port_malloc.cpp b/drlvm/modules/vm/src/main/native/port/shared/malloc/port_malloc.cpp
similarity index 100%
rename from drlvm/vm/port/src/malloc/port_malloc.cpp
rename to drlvm/modules/vm/src/main/native/port/shared/malloc/port_malloc.cpp
diff --git a/drlvm/vm/port/src/malloc/port_malloc_registrar.cpp b/drlvm/modules/vm/src/main/native/port/shared/malloc/port_malloc_registrar.cpp
similarity index 100%
rename from drlvm/vm/port/src/malloc/port_malloc_registrar.cpp
rename to drlvm/modules/vm/src/main/native/port/shared/malloc/port_malloc_registrar.cpp
diff --git a/drlvm/vm/port/src/malloc/port_malloc_registrar.h b/drlvm/modules/vm/src/main/native/port/shared/malloc/port_malloc_registrar.h
similarity index 100%
rename from drlvm/vm/port/src/malloc/port_malloc_registrar.h
rename to drlvm/modules/vm/src/main/native/port/shared/malloc/port_malloc_registrar.h
diff --git a/drlvm/vm/port/src/time/misc_platform_natives.cpp b/drlvm/modules/vm/src/main/native/port/shared/time/misc_platform_natives.cpp
similarity index 100%
rename from drlvm/vm/port/src/time/misc_platform_natives.cpp
rename to drlvm/modules/vm/src/main/native/port/shared/time/misc_platform_natives.cpp
diff --git a/drlvm/vm/port/src/tl/memory_pool.cpp b/drlvm/modules/vm/src/main/native/port/shared/tl/memory_pool.cpp
similarity index 100%
rename from drlvm/vm/port/src/tl/memory_pool.cpp
rename to drlvm/modules/vm/src/main/native/port/shared/tl/memory_pool.cpp
diff --git a/drlvm/vm/port/src/atomic/linux/port_atomic.c b/drlvm/modules/vm/src/main/native/port/unix/atomic/port_atomic.c
similarity index 100%
rename from drlvm/vm/port/src/atomic/linux/port_atomic.c
rename to drlvm/modules/vm/src/main/native/port/unix/atomic/port_atomic.c
diff --git a/drlvm/vm/port/src/disasm/linux/disasm.c b/drlvm/modules/vm/src/main/native/port/unix/disasm/disasm.c
similarity index 97%
rename from drlvm/vm/port/src/disasm/linux/disasm.c
rename to drlvm/modules/vm/src/main/native/port/unix/disasm/disasm.c
index 1f99650..afd566e 100644
--- a/drlvm/vm/port/src/disasm/linux/disasm.c
+++ b/drlvm/modules/vm/src/main/native/port/unix/disasm/disasm.c
@@ -30,7 +30,7 @@
 #include "port_disasm.h"
 
 // this is mostly imperical data 
-#if defined(_IA32_)
+#if defined(HYX86)
     #define ADDR_SIZE       16
     #define MNEMONIC_SIZE   15
     #define BYTES_PER_LINE  2
@@ -60,7 +60,7 @@
     apr_size_t num_bytes_used;
 };
 
-#if defined(_IA32_)
+#if defined(HYX86)
 
 /*    General printing routines    */
 
@@ -148,12 +148,12 @@
 #endif
     }
 }
-#endif // defined(_IA32_)
+#endif // defined(HYX86)
 
 /*    Public Interface    */
 
 APR_DECLARE(apr_status_t) port_disasm_initialize() {
-#if defined(_IA32_)
+#if defined(HYX86)
     return APR_SUCCESS;
 #else
     return APR_ENOTIMPL;
@@ -162,7 +162,7 @@
 
 APR_DECLARE(apr_status_t) port_disassembler_create(port_disassembler_t ** disassembler,
                                                    apr_pool_t * pool) {
-#if defined(_IA32_)
+#if defined(HYX86)
     apr_status_t status;
     port_disasm_info_t info = {1, 0, 1};
     
@@ -193,7 +193,7 @@
 APR_DECLARE(apr_status_t) port_disasm_set_info(port_disassembler_t * disassembler,
                                                const port_disasm_info_t new_info,
                                                port_disasm_info_t * old_info) {
-#if defined(_IA32_)
+#if defined(HYX86)
     if (old_info != NULL) {
         *old_info = disassembler->port_info;
     }
@@ -218,7 +218,7 @@
                                       const char * code, 
                                       unsigned int len,
                                       char ** disasm_code) {
-#if defined(_IA32_)    
+#if defined(HYX86)    
     // check if nothing should be printed
     if (disassembler->line_size == 0) {
         *disasm_code = NULL;
@@ -255,7 +255,7 @@
                                               const char * code,
                                               unsigned int len,
                                               apr_file_t * thefile) {
-#if defined(_IA32_)
+#if defined(HYX86)
     // check if nothing should be printed
     if (disassembler->line_size == 0) {
         return APR_SUCCESS;
diff --git a/drlvm/vm/port/src/file_io/linux/canonical.c b/drlvm/modules/vm/src/main/native/port/unix/file_io/canonical.c
similarity index 100%
rename from drlvm/vm/port/src/file_io/linux/canonical.c
rename to drlvm/modules/vm/src/main/native/port/unix/file_io/canonical.c
diff --git a/drlvm/vm/port/src/file_io/linux/filepath.c b/drlvm/modules/vm/src/main/native/port/unix/file_io/filepath.c
similarity index 100%
rename from drlvm/vm/port/src/file_io/linux/filepath.c
rename to drlvm/modules/vm/src/main/native/port/unix/file_io/filepath.c
diff --git a/drlvm/modules/vm/src/main/native/port/unix/makefile b/drlvm/modules/vm/src/main/native/port/unix/makefile
new file mode 100644
index 0000000..fe9e303
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/port/unix/makefile
@@ -0,0 +1,48 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'port'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/port/native/port/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE \
+  -DAPR_DECLARE_EXPORT -DBUILDING_VM
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+
+INCLUDES := -I$(VM_HOME)include -I$(VM_HOME)port/include \
+            -I$(VM_HOME)port/src/thread/include $(INCLUDES)
+
+BUILDFILES := \
+  thread/thread_os.o thread.o thread/port_thread_tls_find.o \
+  misc/timer.o misc/sysencoding.o misc/timezone.o misc/execname.o \
+  misc/user.o misc/dso.o misc/sysinfo.o \
+  file_io/filepath.o file_io/canonical.o \
+  atomic/port_atomic.o disasm/disasm.o vmem/port_vmem.o tl/memory_pool.o \
+  malloc/port_malloc_registrar.o malloc/port_malloc.o \
+  time/misc_platform_natives.o \
+  file_io/filepath_generic.o \
+  logger/logparams.o logger/logger.o
+
+LIBNAME = $(LIBPATH)libport.a
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/port/src/misc/linux/dso.c b/drlvm/modules/vm/src/main/native/port/unix/misc/dso.c
similarity index 100%
rename from drlvm/vm/port/src/misc/linux/dso.c
rename to drlvm/modules/vm/src/main/native/port/unix/misc/dso.c
diff --git a/drlvm/vm/port/src/misc/linux/execname.c b/drlvm/modules/vm/src/main/native/port/unix/misc/execname.c
similarity index 100%
rename from drlvm/vm/port/src/misc/linux/execname.c
rename to drlvm/modules/vm/src/main/native/port/unix/misc/execname.c
diff --git a/drlvm/vm/port/src/misc/linux/sysencoding.c b/drlvm/modules/vm/src/main/native/port/unix/misc/sysencoding.c
similarity index 100%
rename from drlvm/vm/port/src/misc/linux/sysencoding.c
rename to drlvm/modules/vm/src/main/native/port/unix/misc/sysencoding.c
diff --git a/drlvm/vm/port/src/misc/linux/sysinfo.c b/drlvm/modules/vm/src/main/native/port/unix/misc/sysinfo.c
similarity index 98%
rename from drlvm/vm/port/src/misc/linux/sysinfo.c
rename to drlvm/modules/vm/src/main/native/port/unix/misc/sysinfo.c
index 0f58956..272e626 100644
--- a/drlvm/vm/port/src/misc/linux/sysinfo.c
+++ b/drlvm/modules/vm/src/main/native/port/unix/misc/sysinfo.c
@@ -50,7 +50,7 @@
 APR_DECLARE(const char *) port_CPU_architecture(void){
 #if defined(_IPF_)
 	return "ia64";
-#elif defined (_EM64T_)
+#elif defined (HYX86_64)
     return "x86_64";
 #else
     return "x86";
diff --git a/drlvm/vm/port/src/misc/linux/timer.c b/drlvm/modules/vm/src/main/native/port/unix/misc/timer.c
similarity index 100%
rename from drlvm/vm/port/src/misc/linux/timer.c
rename to drlvm/modules/vm/src/main/native/port/unix/misc/timer.c
diff --git a/drlvm/vm/port/src/misc/linux/timezone.c b/drlvm/modules/vm/src/main/native/port/unix/misc/timezone.c
similarity index 100%
rename from drlvm/vm/port/src/misc/linux/timezone.c
rename to drlvm/modules/vm/src/main/native/port/unix/misc/timezone.c
diff --git a/drlvm/vm/port/src/misc/linux/user.c b/drlvm/modules/vm/src/main/native/port/unix/misc/user.c
similarity index 100%
rename from drlvm/vm/port/src/misc/linux/user.c
rename to drlvm/modules/vm/src/main/native/port/unix/misc/user.c
diff --git a/drlvm/vm/port/src/thread/linux/port_thread_tls_find.c b/drlvm/modules/vm/src/main/native/port/unix/thread/port_thread_tls_find.c
similarity index 100%
rename from drlvm/vm/port/src/thread/linux/port_thread_tls_find.c
rename to drlvm/modules/vm/src/main/native/port/unix/thread/port_thread_tls_find.c
diff --git a/drlvm/vm/port/src/thread/linux/thread_os.c b/drlvm/modules/vm/src/main/native/port/unix/thread/thread_os.c
similarity index 100%
rename from drlvm/vm/port/src/thread/linux/thread_os.c
rename to drlvm/modules/vm/src/main/native/port/unix/thread/thread_os.c
diff --git a/drlvm/vm/port/src/vmem/linux/port_vmem.c b/drlvm/modules/vm/src/main/native/port/unix/vmem/port_vmem.c
similarity index 100%
rename from drlvm/vm/port/src/vmem/linux/port_vmem.c
rename to drlvm/modules/vm/src/main/native/port/unix/vmem/port_vmem.c
diff --git a/drlvm/vm/port/src/thread/linux/thread_ia32.c b/drlvm/modules/vm/src/main/native/port/unix/x86/thread.c
similarity index 100%
rename from drlvm/vm/port/src/thread/linux/thread_ia32.c
rename to drlvm/modules/vm/src/main/native/port/unix/x86/thread.c
diff --git a/drlvm/vm/port/src/thread/linux/thread_em64t.c b/drlvm/modules/vm/src/main/native/port/unix/x86_64/thread.c
similarity index 100%
rename from drlvm/vm/port/src/thread/linux/thread_em64t.c
rename to drlvm/modules/vm/src/main/native/port/unix/x86_64/thread.c
diff --git a/drlvm/vm/port/src/crash_handler/native_unwind.cpp b/drlvm/modules/vm/src/main/native/port_ch/shared/crash_handler/native_unwind.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/native_unwind.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/shared/crash_handler/native_unwind.cpp
diff --git a/drlvm/vm/port/src/crash_handler/port_crash_handler.cpp b/drlvm/modules/vm/src/main/native/port_ch/shared/crash_handler/port_crash_handler.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/port_crash_handler.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/shared/crash_handler/port_crash_handler.cpp
diff --git a/drlvm/vm/port/src/crash_handler/stack_dump.cpp b/drlvm/modules/vm/src/main/native/port_ch/shared/crash_handler/stack_dump.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/stack_dump.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/shared/crash_handler/stack_dump.cpp
diff --git a/drlvm/vm/port/src/modules/native_modules.c b/drlvm/modules/vm/src/main/native/port_ch/shared/modules/native_modules.c
similarity index 100%
rename from drlvm/vm/port/src/modules/native_modules.c
rename to drlvm/modules/vm/src/main/native/port_ch/shared/modules/native_modules.c
diff --git a/drlvm/vm/port/src/crash_handler/include/native_unwind.h b/drlvm/modules/vm/src/main/native/port_ch/shared/native_unwind.h
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/include/native_unwind.h
rename to drlvm/modules/vm/src/main/native/port_ch/shared/native_unwind.h
diff --git a/drlvm/vm/port/src/signals/port_signals.cpp b/drlvm/modules/vm/src/main/native/port_ch/shared/signals/port_signals.cpp
similarity index 100%
rename from drlvm/vm/port/src/signals/port_signals.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/shared/signals/port_signals.cpp
diff --git a/drlvm/vm/port/src/signals/include/signals_internal.h b/drlvm/modules/vm/src/main/native/port_ch/shared/signals_internal.h
similarity index 100%
rename from drlvm/vm/port/src/signals/include/signals_internal.h
rename to drlvm/modules/vm/src/main/native/port_ch/shared/signals_internal.h
diff --git a/drlvm/vm/port/src/crash_handler/include/stack_dump.h b/drlvm/modules/vm/src/main/native/port_ch/shared/stack_dump.h
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/include/stack_dump.h
rename to drlvm/modules/vm/src/main/native/port_ch/shared/stack_dump.h
diff --git a/drlvm/vm/port/src/crash_handler/linux/gdb_crash_handler.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/crash_handler/gdb_crash_handler.cpp
similarity index 97%
rename from drlvm/vm/port/src/crash_handler/linux/gdb_crash_handler.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/crash_handler/gdb_crash_handler.cpp
index 352ba0b..75c72e4 100644
--- a/drlvm/vm/port/src/crash_handler/linux/gdb_crash_handler.cpp
+++ b/drlvm/modules/vm/src/main/native/port_ch/unix/crash_handler/gdb_crash_handler.cpp
@@ -28,7 +28,7 @@
 #include "port_thread.h"
 #include "port_malloc.h"
 
-#include "../linux/include/gdb_crash_handler.h"
+#include "gdb_crash_handler.h"
 
 static char* g_executable = NULL;// Executable file name
 static sem_t g_sem_started;     // Prevent forking debugger more than once
diff --git a/drlvm/vm/port/src/crash_handler/linux/native_unwind_os.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/crash_handler/native_unwind_os.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/linux/native_unwind_os.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/crash_handler/native_unwind_os.cpp
diff --git a/drlvm/vm/port/src/crash_handler/linux/stack_dump_os.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/crash_handler/stack_dump_os.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/linux/stack_dump_os.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/crash_handler/stack_dump_os.cpp
diff --git a/drlvm/modules/vm/src/main/native/port_ch/unix/exports.txt b/drlvm/modules/vm/src/main/native/port_ch/unix/exports.txt
new file mode 100644
index 0000000..23bcdf2
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/port_ch/unix/exports.txt
@@ -0,0 +1,16 @@
+port_init_crash_handler
+port_shutdown_crash_handler
+port_crash_handler_*
+port_set_breakpoint
+port_clear_breakpoint
+port_is_breakpoint_set
+port_read_memory
+port_write_memory
+port_get_all_modules
+port_dump_modules
+port_clear_modules
+port_find_module
+port_init_unwind_context
+port_clean_unwind_context
+port_unwind_frame
+port_init_shared_data
diff --git a/drlvm/vm/port/src/modules/unix/freebsd/native_modules_procmap.c b/drlvm/modules/vm/src/main/native/port_ch/unix/freebsd/modules/native_modules_procmap.c
similarity index 100%
rename from drlvm/vm/port/src/modules/unix/freebsd/native_modules_procmap.c
rename to drlvm/modules/vm/src/main/native/port_ch/unix/freebsd/modules/native_modules_procmap.c
diff --git a/drlvm/vm/port/src/crash_handler/linux/include/gdb_crash_handler.h b/drlvm/modules/vm/src/main/native/port_ch/unix/gdb_crash_handler.h
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/linux/include/gdb_crash_handler.h
rename to drlvm/modules/vm/src/main/native/port_ch/unix/gdb_crash_handler.h
diff --git a/drlvm/vm/port/src/modules/unix/linux/native_modules_procmap.c b/drlvm/modules/vm/src/main/native/port_ch/unix/linux/modules/native_modules_procmap.c
similarity index 100%
rename from drlvm/vm/port/src/modules/unix/linux/native_modules_procmap.c
rename to drlvm/modules/vm/src/main/native/port_ch/unix/linux/modules/native_modules_procmap.c
diff --git a/drlvm/modules/vm/src/main/native/port_ch/unix/makefile b/drlvm/modules/vm/src/main/native/port_ch/unix/makefile
new file mode 100644
index 0000000..cb117ce
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/port_ch/unix/makefile
@@ -0,0 +1,59 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'port_ch'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/port/native/port_ch/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE \
+  -DAPR_DECLARE_EXPORT -DBUILDING_VM
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+
+INCLUDES := -I$(VM_HOME)include -I$(VM_HOME)port/include \
+            -I$(VM_HOME)port/src/thread/include $(INCLUDES)
+
+BUILDFILES := \
+  crash_handler/gdb_crash_handler.o crash_handler/native_unwind_arch.o \
+  crash_handler/native_unwind.o crash_handler/native_unwind_os.o \
+  crash_handler/port_crash_handler.o crash_handler/reg_state.o \
+  crash_handler/stack_dump.o crash_handler/stack_dump_os.o \
+  memaccess.o memaccess_asm.o \
+  modules/native_modules_procmap.o modules/native_modules.o \
+  modules/native_modules_os.o \
+  signals/port_signals.o signals/signals_common.o signals/signals.o \
+  signals/signals_asm.o \
+  thread/port_thread_tls_os.o
+
+MDLLIBFILES += $(LIBPATH)libport.a $(LIBPATH)libencoder.a
+
+ifeq ($(HY_OS),linux)
+OSLIBS += -lrt
+endif
+
+DLLNAME = $(DLLPATH)default/libch$(HY_SHLIB_SUFFIX)
+EXPNAME = PORT_0.1
+
+AS := $(CXX)
+ASFLAGS := -Wa,--fatal-warnings -c -x assembler-with-cpp -g
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/port/src/memaccess/linux/memaccess.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/memaccess.cpp
similarity index 100%
rename from drlvm/vm/port/src/memaccess/linux/memaccess.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/memaccess.cpp
diff --git a/drlvm/vm/port/src/modules/unix/native_modules_os.c b/drlvm/modules/vm/src/main/native/port_ch/unix/modules/native_modules_os.c
similarity index 100%
rename from drlvm/vm/port/src/modules/unix/native_modules_os.c
rename to drlvm/modules/vm/src/main/native/port_ch/unix/modules/native_modules_os.c
diff --git a/drlvm/vm/port/src/modules/unix/include/port_modules_unix.h b/drlvm/modules/vm/src/main/native/port_ch/unix/port_modules_unix.h
similarity index 100%
rename from drlvm/vm/port/src/modules/unix/include/port_modules_unix.h
rename to drlvm/modules/vm/src/main/native/port_ch/unix/port_modules_unix.h
diff --git a/drlvm/vm/port/src/signals/linux/signals_common.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/signals/signals_common.cpp
similarity index 99%
rename from drlvm/vm/port/src/signals/linux/signals_common.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/signals/signals_common.cpp
index f78ea8b..41b9a9d 100644
--- a/drlvm/vm/port/src/signals/linux/signals_common.cpp
+++ b/drlvm/modules/vm/src/main/native/port_ch/unix/signals/signals_common.cpp
@@ -25,7 +25,7 @@
 #include "port_crash_handler.h"
 #include "port_malloc.h"
 #include "stack_dump.h"
-#include "../linux/include/gdb_crash_handler.h"
+#include "gdb_crash_handler.h"
 #include "signals_internal.h"
 #include "port_thread_internal.h"
 
diff --git a/drlvm/vm/port/src/thread/linux/port_thread_tls_os.c b/drlvm/modules/vm/src/main/native/port_ch/unix/thread/port_thread_tls_os.c
similarity index 98%
rename from drlvm/vm/port/src/thread/linux/port_thread_tls_os.c
rename to drlvm/modules/vm/src/main/native/port_ch/unix/thread/port_thread_tls_os.c
index e980c37..9c7dc06 100644
--- a/drlvm/vm/port/src/thread/linux/port_thread_tls_os.c
+++ b/drlvm/modules/vm/src/main/native/port_ch/unix/thread/port_thread_tls_os.c
@@ -34,11 +34,11 @@
 static port_shared_data_t* g_port_shared_data = NULL;
 static port_shared_data_t g_port_shared_data_struct;
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 #define MEM_PROTECT_SIZE 0x400
 #elif defined (_IPF_)
 #define MEM_PROTECT_SIZE 0
-#else /* _IA32_ */
+#else /* HYX86 */
 #define MEM_PROTECT_SIZE 0x100
 #endif
 
diff --git a/drlvm/vm/port/src/crash_handler/ia32/native_unwind_arch.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/x86/crash_handler/native_unwind_arch.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/ia32/native_unwind_arch.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86/crash_handler/native_unwind_arch.cpp
diff --git a/drlvm/vm/port/src/crash_handler/ia32/reg_state.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/x86/crash_handler/reg_state.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/ia32/reg_state.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86/crash_handler/reg_state.cpp
diff --git a/drlvm/vm/port/src/memaccess/linux/memaccess_ia32.s b/drlvm/modules/vm/src/main/native/port_ch/unix/x86/memaccess_asm.s
similarity index 100%
rename from drlvm/vm/port/src/memaccess/linux/memaccess_ia32.s
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86/memaccess_asm.s
diff --git a/drlvm/vm/port/src/signals/linux/signals_ia32.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/x86/signals/signals.cpp
similarity index 100%
rename from drlvm/vm/port/src/signals/linux/signals_ia32.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86/signals/signals.cpp
diff --git a/drlvm/vm/port/src/signals/linux/signals_asm_ia32.s b/drlvm/modules/vm/src/main/native/port_ch/unix/x86/signals/signals_asm.s
similarity index 100%
rename from drlvm/vm/port/src/signals/linux/signals_asm_ia32.s
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86/signals/signals_asm.s
diff --git a/drlvm/vm/port/src/crash_handler/em64t/native_unwind_arch.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/crash_handler/native_unwind_arch.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/em64t/native_unwind_arch.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/crash_handler/native_unwind_arch.cpp
diff --git a/drlvm/vm/port/src/crash_handler/em64t/reg_state.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/crash_handler/reg_state.cpp
similarity index 100%
rename from drlvm/vm/port/src/crash_handler/em64t/reg_state.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/crash_handler/reg_state.cpp
diff --git a/drlvm/vm/port/src/memaccess/linux/memaccess_em64t.s b/drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/memaccess_asm.s
similarity index 100%
rename from drlvm/vm/port/src/memaccess/linux/memaccess_em64t.s
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/memaccess_asm.s
diff --git a/drlvm/vm/port/src/signals/linux/signals_em64t.cpp b/drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/signals/signals.cpp
similarity index 100%
rename from drlvm/vm/port/src/signals/linux/signals_em64t.cpp
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/signals/signals.cpp
diff --git a/drlvm/vm/port/src/signals/linux/signals_asm_em64t.s b/drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/signals/signals_asm.s
similarity index 100%
rename from drlvm/vm/port/src/signals/linux/signals_asm_em64t.s
rename to drlvm/modules/vm/src/main/native/port_ch/unix/x86_64/signals/signals_asm.s
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/context_base.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/base/context_base.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/context_base.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/context_base.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/context_base.h b/drlvm/modules/vm/src/main/native/verifier/shared/base/context_base.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/context_base.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/context_base.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/context_x.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/base/context_x.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/context_x.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/context_x.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/context_x.h b/drlvm/modules/vm/src/main/native/verifier/shared/base/context_x.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/context_x.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/context_x.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/instr_props.h b/drlvm/modules/vm/src/main/native/verifier/shared/base/instr_props.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/instr_props.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/instr_props.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/stackmap.h b/drlvm/modules/vm/src/main/native/verifier/shared/base/stackmap.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/stackmap.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/stackmap.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/stackmap_x.h b/drlvm/modules/vm/src/main/native/verifier/shared/base/stackmap_x.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/stackmap_x.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/stackmap_x.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/tpool.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/base/tpool.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/tpool.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/tpool.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/tpool.h b/drlvm/modules/vm/src/main/native/verifier/shared/base/tpool.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/tpool.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/tpool.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/ver.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/base/ver.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/ver.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/ver.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/ver_utils.h b/drlvm/modules/vm/src/main/native/verifier/shared/base/ver_utils.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/ver_utils.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/ver_utils.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/base/vf_resolve.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/base/vf_resolve.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/base/vf_resolve.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/base/vf_resolve.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/java5/context_5.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/java5/context_5.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/java5/context_5.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/java5/context_5.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/java5/context_5.h b/drlvm/modules/vm/src/main/native/verifier/shared/java5/context_5.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/java5/context_5.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/java5/context_5.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/java5/instr_props_5.h b/drlvm/modules/vm/src/main/native/verifier/shared/java5/instr_props_5.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/java5/instr_props_5.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/java5/instr_props_5.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/java5/stackmap_5.h b/drlvm/modules/vm/src/main/native/verifier/shared/java5/stackmap_5.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/java5/stackmap_5.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/java5/stackmap_5.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/java6/context_6.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/java6/context_6.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/java6/context_6.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/java6/context_6.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/java6/context_6.h b/drlvm/modules/vm/src/main/native/verifier/shared/java6/context_6.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/java6/context_6.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/java6/context_6.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/java6/stackmap_6.h b/drlvm/modules/vm/src/main/native/verifier/shared/java6/stackmap_6.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/java6/stackmap_6.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/java6/stackmap_6.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/x_verifier/recompute.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/recompute.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/x_verifier/recompute.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/recompute.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/x_verifier/recompute.h b/drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/recompute.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/x_verifier/recompute.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/recompute.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/x_verifier/write_attr.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/write_attr.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/x_verifier/write_attr.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/write_attr.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/x_verifier/x_class_interface.h b/drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/x_class_interface.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/x_verifier/x_class_interface.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/x_class_interface.h
diff --git a/drlvm/vm/vmcore/src/verifier-3363/x_verifier/x_verifier.cpp b/drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/x_verifier.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/x_verifier/x_verifier.cpp
rename to drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/x_verifier.cpp
diff --git a/drlvm/vm/vmcore/src/verifier-3363/x_verifier/x_verifier.h b/drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/x_verifier.h
similarity index 100%
rename from drlvm/vm/vmcore/src/verifier-3363/x_verifier/x_verifier.h
rename to drlvm/modules/vm/src/main/native/verifier/shared/x_verifier/x_verifier.h
diff --git a/drlvm/modules/vm/src/main/native/verifier/unix/makefile b/drlvm/modules/vm/src/main/native/verifier/unix/makefile
new file mode 100644
index 0000000..51420c1
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/verifier/unix/makefile
@@ -0,0 +1,47 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'verifier'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/port/native/verifier/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE \
+  -DBUILDING_VM
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+
+INCLUDES := -I$(VM_HOME)vmcore/include -I$(VM_HOME)include $(INCLUDES)
+
+BUILDFILES := \
+  base/context_base.o base/context_x.o base/tpool.o \
+  base/ver.o base/vf_resolve.o \
+  java5/context_5.o \
+  java6/context_6.o
+
+ifeq ($(HY_CFG),debug)
+BUILDFILES += \
+  x_verifier/recompute.o x_verifier/write_attr.o x_verifier/x_verifier.o
+endif
+
+LIBNAME = $(LIBPATH)libverifier.a
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/vmcore/src/class_support/Assertion_Registry.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Assertion_Registry.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/Assertion_Registry.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Assertion_Registry.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/C_Interface.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/C_Interface.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/C_Interface.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/C_Interface.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/Class.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Class.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/Class.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Class.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/Class_File_Loader.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Class_File_Loader.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/Class_File_Loader.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Class_File_Loader.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/Environment.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Environment.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/class_support/Environment.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Environment.cpp
index 365ec18..4a36217 100644
--- a/drlvm/vm/vmcore/src/class_support/Environment.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Environment.cpp
@@ -57,7 +57,7 @@
 
     hythread_lib_create(&hythread_lib);
 
-#if defined _IPF_ || defined _EM64T_
+#if defined _IPF_ || defined HYX86_64
     compact_fields = true;
     sort_fields = true;
 #else // !_IPF_
diff --git a/drlvm/vm/vmcore/src/class_support/Initialize.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Initialize.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/Initialize.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Initialize.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/Prepare.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Prepare.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/Prepare.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Prepare.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/Resolve.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Resolve.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/Resolve.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Resolve.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/String_Pool.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/String_Pool.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/String_Pool.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/String_Pool.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/Verifier_stub.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Verifier_stub.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/Verifier_stub.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/Verifier_stub.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/class_impl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/class_impl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/class_impl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/class_impl.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/classloader.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/classloader.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/classloader.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/classloader.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/inline_info.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/inline_info.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/inline_info.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/inline_info.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/java_type.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/java_type.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/java_type.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/java_type.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/manifest.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/manifest.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/manifest.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/manifest.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/method.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/method.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/method.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/method.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/type.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/type.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/type.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/type.cpp
diff --git a/drlvm/vm/vmcore/src/class_support/type_access.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/class_support/type_access.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/class_support/type_access.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/class_support/type_access.cpp
diff --git a/drlvm/vm/vmstart/src/compmgr/component_manager_impl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/compmgr/component_manager_impl.cpp
similarity index 100%
rename from drlvm/vm/vmstart/src/compmgr/component_manager_impl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/compmgr/component_manager_impl.cpp
diff --git a/drlvm/vm/vmstart/src/compmgr/component_manager_impl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/compmgr/component_manager_impl.h
similarity index 100%
rename from drlvm/vm/vmstart/src/compmgr/component_manager_impl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/compmgr/component_manager_impl.h
diff --git a/drlvm/vm/vmcore/src/exception/exceptions.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/exception/exceptions.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions.cpp
diff --git a/drlvm/vm/vmcore/src/exception/exceptions_impl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions_impl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/exception/exceptions_impl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions_impl.cpp
diff --git a/drlvm/vm/vmcore/src/exception/exceptions_int.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions_int.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/exception/exceptions_int.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions_int.cpp
diff --git a/drlvm/vm/vmcore/src/exception/exceptions_jit.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions_jit.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/exception/exceptions_jit.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions_jit.cpp
index c6f0b4f..bde3196 100644
--- a/drlvm/vm/vmcore/src/exception/exceptions_jit.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/exception/exceptions_jit.cpp
@@ -45,14 +45,7 @@
 #include "cci.h"
 #include "port_threadunsafe.h"
 
-
-#ifdef _IPF_
-#include "../m2n_ipf_internal.h"
-#elif defined _EM64T_
-#include "../m2n_em64t_internal.h"
-#else
-#include "../m2n_ia32_internal.h"
-#endif
+#include "m2n_internal.h"
 
 
 ////////////////////////////////////////////////////////////////////////////
@@ -783,7 +776,7 @@
 
 static void rth_throw_lazy(Method * exn_constr)
 {
-#if defined(_IPF_) || defined(_EM64T_)
+#if defined(_IPF_) || defined(HYX86_64)
     LDIE(61, "Lazy exceptions are not supported on this platform");
 #else
     U_8 *args = (U_8 *) (m2n_get_args(m2n_get_last_frame()) + 1);   // +1 to skip constructor
diff --git a/drlvm/vm/vmcore/src/gc/dll_gc.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/gc/dll_gc.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/gc/dll_gc.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/gc/dll_gc.cpp
diff --git a/drlvm/vm/vmcore/src/gc/root_set_enum_common.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/gc/root_set_enum_common.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/gc/root_set_enum_common.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/gc/root_set_enum_common.cpp
diff --git a/drlvm/vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/gc/stop_the_world_root_set_enum.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/gc/stop_the_world_root_set_enum.cpp
diff --git a/drlvm/vm/vmcore/src/lil/ipf/include/lil_code_generator_ipf.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/include/lil_code_generator_arch.h
similarity index 100%
rename from drlvm/vm/vmcore/src/lil/ipf/include/lil_code_generator_ipf.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/include/lil_code_generator_arch.h
diff --git a/drlvm/vm/vmcore/src/lil/ipf/lil_code_generator_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/lil_code_generator_arch.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/lil/ipf/lil_code_generator_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/lil_code_generator_arch.cpp
index 933ccdd..562f09a 100644
--- a/drlvm/vm/vmcore/src/lil/ipf/lil_code_generator_ipf.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/lil_code_generator_arch.cpp
@@ -27,10 +27,10 @@
 
 #include "lil.h"
 #include "lil_code_generator.h"
-#include "lil_code_generator_ipf.h"
+#include "lil_code_generator_arch.h"
 #include "lil_code_generator_utils.h"
 #include "m2n.h"
-#include "m2n_ipf_internal.h"
+#include "m2n_internal.h"
 #include "tl/memory_pool.h"
 #include "vm_ipf.h"
 #include "vm_threads.h"
diff --git a/drlvm/vm/vmcore/src/lil/ipf/m2n_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/m2n.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/lil/ipf/m2n_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/m2n.cpp
diff --git a/drlvm/vm/vmcore/src/lil/ipf/m2n_ipf_internal.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/m2n_internal.h
similarity index 99%
rename from drlvm/vm/vmcore/src/lil/ipf/m2n_ipf_internal.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/m2n_internal.h
index 409f0ba..95eae0b 100644
--- a/drlvm/vm/vmcore/src/lil/ipf/m2n_ipf_internal.h
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/m2n_internal.h
@@ -153,7 +153,7 @@
 
 #define M2N_EXTRA_SAVES_SPACE 400
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 #error Should not be included!
 #endif
 
diff --git a/drlvm/vm/vmcore/src/lil/ipf/stack_iterator_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/stack_iterator.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/lil/ipf/stack_iterator_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/lil/stack_iterator.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_step_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/ncai/ncai_step_arch.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_step_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/ncai/ncai_step_arch.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_utils_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/ncai/ncai_utils.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_utils_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/ncai/ncai_utils.cpp
diff --git a/drlvm/vm/vmcore/src/thread/helpers/thread_helpers_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/thread/thread_helpers.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/helpers/thread_helpers_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/thread/thread_helpers.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/code_emit/Code_Emitter.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/code_emit/Code_Emitter.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/code_emit/Code_Emitter.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/code_emit/Code_Emitter.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/code_emit/merced.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/code_emit/merced.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/code_emit/merced.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/code_emit/merced.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/code_emit/sched_enums.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/code_emit/sched_enums.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/code_emit/sched_enums.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/code_emit/sched_enums.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/compile_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/compile.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/compile_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/compile.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/defines.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/defines.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/defines.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/defines.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/exceptions_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/exceptions.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/exceptions_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/exceptions.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/include/Code_Emitter.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/Code_Emitter.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/include/Code_Emitter.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/Code_Emitter.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/include/Emitter_IR.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/Emitter_IR.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/include/Emitter_IR.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/Emitter_IR.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/include/merced.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/merced.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/include/merced.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/merced.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/include/stub_code_utils.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/stub_code_utils.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/include/stub_code_utils.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/stub_code_utils.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/include/vm_ipf.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/vm.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/include/vm_ipf.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/include/vm.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/ini_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/ini.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/ini_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/ini.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/ini_ipf_low_level.asm b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/ini_low_level.asm
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/ini_ipf_low_level.asm
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/ini_low_level.asm
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/invoke_native_stub_ipf.asm b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/invoke_native_stub.asm
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/invoke_native_stub_ipf.asm
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/invoke_native_stub.asm
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/jit_runtime_support_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/jit_runtime_support.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/jit_runtime_support_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/jit_runtime_support.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/base_natives/java_lang_thread_ipf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/natives/java_lang_thread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base_natives/java_lang_thread_ipf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/natives/java_lang_thread.cpp
diff --git a/drlvm/vm/vmcore/src/util/ipf/base_natives/java_lang_thread_ipf.h b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/natives/java_lang_thread.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base_natives/java_lang_thread_ipf.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/natives/java_lang_thread.h
diff --git a/drlvm/vm/vmcore/src/util/ipf/base/stub_code_utils.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/stub_code_utils.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ipf/base/stub_code_utils.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ia64/util/stub_code_utils.cpp
diff --git a/drlvm/vm/vmcore/src/init/bootclasspath.properties b/drlvm/modules/vm/src/main/native/vmcore/shared/init/bootclasspath.properties
similarity index 100%
rename from drlvm/vm/vmcore/src/init/bootclasspath.properties
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/bootclasspath.properties
diff --git a/drlvm/vm/vmcore/src/init/finalize.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/finalize.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/finalize.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/finalize.cpp
diff --git a/drlvm/vm/vmcore/src/init/finalizer_thread.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/finalizer_thread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/finalizer_thread.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/finalizer_thread.cpp
diff --git a/drlvm/vm/vmcore/src/init/harmony.properties b/drlvm/modules/vm/src/main/native/vmcore/shared/init/harmony.properties
similarity index 100%
rename from drlvm/vm/vmcore/src/init/harmony.properties
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/harmony.properties
diff --git a/drlvm/vm/vmcore/src/init/parse_arguments.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/parse_arguments.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/parse_arguments.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/parse_arguments.cpp
diff --git a/drlvm/vm/vmcore/src/init/properties.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/properties.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/properties.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/properties.cpp
diff --git a/drlvm/vm/vmcore/src/init/ref_enqueue_thread.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/ref_enqueue_thread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/ref_enqueue_thread.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/ref_enqueue_thread.cpp
diff --git a/drlvm/vm/vmcore/src/init/vm.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/vm.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/vm.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/vm.cpp
diff --git a/drlvm/vm/vmcore/src/init/vm_init.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_init.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/init/vm_init.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_init.cpp
index 33daf7b..7105f6c 100644
--- a/drlvm/vm/vmcore/src/init/vm_init.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_init.cpp
@@ -370,7 +370,7 @@
     }
     
     apr_dso_handle_sym_t gdba, gdbc, ndb;
-#if defined WIN32 && !defined _EM64T_
+#if defined WIN32 && !defined HYX86_64
 #define GET_DIRECT_BUFFER_ADDRESS "_GetDirectBufferAddress@8"
 #define GET_DIRECT_BUFFER_CAPACITY "_GetDirectBufferCapacity@8"
 #define NEW_DIRECT_BYTE_BUFFER "_NewDirectByteBuffer@16"
diff --git a/drlvm/vm/vmcore/src/init/vm_properties.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_properties.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/vm_properties.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_properties.cpp
diff --git a/drlvm/vm/vmcore/src/init/vm_shutdown.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_shutdown.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/init/vm_shutdown.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/init/vm_shutdown.cpp
diff --git a/drlvm/vm/vmcore/src/interpreter/interp_exports.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/interpreter/interp_exports.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/interpreter/interp_exports.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/interpreter/interp_exports.cpp
diff --git a/drlvm/vm/vmcore/src/interpreter/interp_imports.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/interpreter/interp_imports.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/interpreter/interp_imports.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/interpreter/interp_imports.cpp
diff --git a/drlvm/vm/vmcore/src/jit/bit_vector.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/bit_vector.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jit/bit_vector.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/bit_vector.cpp
diff --git a/drlvm/vm/vmcore/src/jit/compile.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/compile.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jit/compile.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/compile.cpp
diff --git a/drlvm/vm/vmcore/src/jit/dll_jit.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/dll_jit.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jit/dll_jit.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/dll_jit.cpp
diff --git a/drlvm/vm/vmcore/src/jit/dump.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/dump.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jit/dump.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/dump.cpp
diff --git a/drlvm/vm/vmcore/src/jit/ini.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/ini.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jit/ini.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/ini.cpp
diff --git a/drlvm/vm/vmcore/src/jit/jit_runtime_support.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/jit_runtime_support.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/jit/jit_runtime_support.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/jit_runtime_support.cpp
index ee14b9e..69bf155 100644
--- a/drlvm/vm/vmcore/src/jit/jit_runtime_support.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/jit_runtime_support.cpp
@@ -1642,9 +1642,9 @@
 
 //end of lazy resolution helpers
 //////////////////////////////////////////////////////////////////////////
-#if (defined PLATFORM_POSIX) && (defined _IA32_)
+#if (defined PLATFORM_POSIX) && (defined HYX86)
 ManagedObject* __attribute__ ((__stdcall__)) rth_struct_Class_to_java_lang_Class(Class *clss) {
-#elif defined _IA32_
+#elif defined HYX86
 ManagedObject* __stdcall rth_struct_Class_to_java_lang_Class(Class *clss) {
 #else
 ManagedObject* rth_struct_Class_to_java_lang_Class(Class *clss) {
diff --git a/drlvm/vm/vmcore/src/jit/native_overrides.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/native_overrides.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/jit/native_overrides.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/native_overrides.cpp
index 4490ce5..1c1efe7 100644
--- a/drlvm/vm/vmcore/src/jit/native_overrides.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/native_overrides.cpp
@@ -191,7 +191,7 @@
 
 // The following override is only for IA32
 
-#ifdef _IA32_
+#ifdef HYX86
 
 #include "encoder.h"
 
@@ -391,7 +391,7 @@
 // Local NSO table for filling up env-local lookup table
 NSOLocalItem local_NSO_table[] = 
 {
-#ifdef _IA32_
+#ifdef HYX86
     {nso_char_array_copy,
 #else
     {nso_array_copy,
diff --git a/drlvm/vm/vmcore/src/jit/primitives_support.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/primitives_support.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jit/primitives_support.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/primitives_support.cpp
diff --git a/drlvm/vm/vmcore/src/jit/rt_helper_info.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jit/rt_helper_info.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jit/rt_helper_info.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jit/rt_helper_info.cpp
diff --git a/drlvm/vm/vmcore/src/jni/jni.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jni/jni.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni.cpp
diff --git a/drlvm/vm/vmcore/src/jni/jni_array.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_array.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jni/jni_array.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_array.cpp
diff --git a/drlvm/vm/vmcore/src/jni/jni_field.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_field.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jni/jni_field.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_field.cpp
diff --git a/drlvm/vm/vmcore/src/jni/jni_method.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_method.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jni/jni_method.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_method.cpp
diff --git a/drlvm/vm/vmcore/src/jni/jni_utils.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_utils.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jni/jni_utils.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jni/jni_utils.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_break.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_break.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_break.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_break.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_break_intf.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_break_intf.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_break_intf.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_break_intf.cpp
index c93b236..c2d632e 100644
--- a/drlvm/vm/vmcore/src/jvmti/jvmti_break_intf.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_break_intf.cpp
@@ -40,7 +40,7 @@
 #include "port_crash_handler.h"
 #include "open/vm_class_info.h"
 
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
 
 #include "encoder.h"
 // Forward declarations
@@ -549,9 +549,9 @@
 
 static char *gen_push(char *code_addr, POINTER_SIZE_INT value)
 {
-#ifdef _IA32_
+#ifdef HYX86
     return push(code_addr, Imm_Opnd(size_32, value));
-#elif defined _EM64T_
+#elif defined HYX86_64
     I_32 high = (I_32)((U_32)(value >> 32));
     I_32 low = (I_32)((U_32)value);
     code_addr = alu(code_addr, sub_opc, rsp_opnd, Imm_Opnd(size_8, 8));
@@ -565,9 +565,9 @@
 
 static char *gen_jump(char *code_addr, char *target_addr)
 {
-#ifdef _IA32_
+#ifdef HYX86
     return jump(code_addr, target_addr);
-#elif defined _EM64T_
+#elif defined HYX86_64
     code_addr = gen_push(code_addr, (POINTER_SIZE_INT)target_addr);
     return ret(code_addr);
 #else
@@ -594,7 +594,7 @@
 void
 VMBreakPoints::process_native_breakpoint(Registers* regs)
 {
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
     // When we get here we know already that breakpoint occurred in JITted code,
     // JVMTI handles it, and registers context is saved for us in TLS
     VM_thread *vm_thread = p_TLS_vmthread;
@@ -1221,7 +1221,7 @@
 //////////////////////////////////////////////////////////////////////////////
 // Helper functions
 
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
 static inline ConditionCode
 get_condition_code(InstructionDisassembler::CondJumpType jump_type)
 {
@@ -1270,7 +1270,7 @@
 
 static bool set_native_breakpoint(VMBreakPoint* bp)
 {
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
     assert(bp);
     assert(bp->addr);
 
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_capability.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_capability.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_capability.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_capability.cpp
index 2622201..edea5de 100644
--- a/drlvm/vm/vmcore/src/jvmti/jvmti_capability.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_capability.cpp
@@ -67,7 +67,7 @@
     1  // can_generate_object_free_events
 };
 
-#if (defined _EM64T_) || (defined _IPF_)
+#if (defined HYX86_64) || (defined _IPF_)
 
 static const jvmtiCapabilities jvmti_supported_jit_capabilities =
 {
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_class.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_class.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_class.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_class.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_dasm.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_dasm.cpp
similarity index 97%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_dasm.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_dasm.cpp
index d042416..14d152f 100644
--- a/drlvm/vm/vmcore/src/jvmti/jvmti_dasm.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_dasm.cpp
@@ -24,7 +24,7 @@
 
 // FIXME: Highly platform specific, should be renamed to jvmti_dasm_x86.cpp
 //        or go to arch specific directory.
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
 
 #include "jvmti_dasm.h"
 #include "dec_base.h"
@@ -32,7 +32,7 @@
 static InstructionDisassembler::Register convertRegName2Register(RegName reg)
 {
     switch(reg) {
-#ifdef _IA32_
+#ifdef HYX86
     case RegName_Null:  return InstructionDisassembler::DISASM_REG_NONE;
     case RegName_EAX:   return InstructionDisassembler::DISASM_REG_EAX;
     case RegName_EBX:   return InstructionDisassembler::DISASM_REG_EBX;
@@ -42,7 +42,7 @@
     case RegName_EDI:   return InstructionDisassembler::DISASM_REG_EDI;
     case RegName_EBP:   return InstructionDisassembler::DISASM_REG_EBP;
     case RegName_ESP:   return InstructionDisassembler::DISASM_REG_ESP;
-#elif defined(_EM64T_)
+#elif defined(HYX86_64)
     case RegName_Null:  return InstructionDisassembler::DISASM_REG_NONE;
     case RegName_RAX:   return InstructionDisassembler::DISASM_REG_RAX;
     case RegName_RBX:   return InstructionDisassembler::DISASM_REG_RBX;
@@ -100,7 +100,7 @@
     return NULL;
 }
 
-#elif defined _EM64T_
+#elif defined HYX86_64
 
 const char* InstructionDisassembler::get_reg_value(
     Register reg,
@@ -129,7 +129,7 @@
     return NULL;
 }
 
-#else // _IA32_
+#else // HYX86
 
 const char* InstructionDisassembler::get_reg_value(
     Register reg,
@@ -150,7 +150,7 @@
     return NULL;
 }
 
-#endif // _IA32_
+#endif // HYX86
 
 void InstructionDisassembler::disasm(const NativeCodePtr addr, 
                                      InstructionDisassembler * pidi)
@@ -235,14 +235,14 @@
         // can't happen for INDIRECT_xxx.
         assert(false);
         return NULL;
-#ifdef _IA32_
+#ifdef HYX86
     case RET:
         {
         const char* sp_value = get_reg_value(DISASM_REG_ESP, pcontext);
         const char* retAddr = *(char**)sp_value;
         return (NativeCodePtr)retAddr;
         }
-#endif // _IA32_
+#endif // HYX86
     default:
         // This method should not be called for non-branch instructions.
         assert(false);
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_enumerate.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_enumerate.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_enumerate.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_enumerate.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_event.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_event.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_event.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_event.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_extension.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_extension.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_extension.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_extension.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_field.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_field.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_field.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_field.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_general.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_general.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_general.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_general.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_heap.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_heap.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_heap.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_heap.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_heap.h b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_heap.h
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_heap.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_heap.h
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_internal.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_internal.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_internal.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_internal.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_jni.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_jni.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_jni.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_jni.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_locals.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_locals.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_locals.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_locals.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_mem.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_mem.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_mem.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_mem.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_method.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_method.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_method.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_method.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_object.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_object.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_object.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_object.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_pop_frame.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_pop_frame.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_pop_frame.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_pop_frame.cpp
index 2bc1087..2b6dc0a 100644
--- a/drlvm/vm/vmcore/src/jvmti/jvmti_pop_frame.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_pop_frame.cpp
@@ -141,7 +141,7 @@
     assert(0);
 }
 
-#else // _IA32_ & _EM64T_
+#else // HYX86 & HYX86_64
 
 // requires stack iterator and buffer to save intermediate information
 static void jvmti_jit_prepare_pop_frame(StackIterator* si, U_32* buf) {
@@ -319,7 +319,7 @@
     CTRACE(("PopFrame transfer control to: %p",  (void*)si_get_ip(si) ));
     si_transfer_control(si);
 }
-#endif // _IA32_
+#endif // HYX86
 
 void jvmti_safe_point()
 {
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_property.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_property.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_property.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_property.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_rawmon.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_rawmon.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_rawmon.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_rawmon.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_roots.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_roots.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_roots.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_roots.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_roots.h b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_roots.h
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_roots.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_roots.h
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_stack.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_stack.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_stack.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_stack.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_step.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_step.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_step.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_step.cpp
index c73088a..7e9bfd9 100644
--- a/drlvm/vm/vmcore/src/jvmti/jvmti_step.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_step.cpp
@@ -59,7 +59,7 @@
 NativeCodePtr static get_ip_for_invoke_call_ip(VM_thread* thread,
     unsigned location, unsigned next_location)
 {
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
     ASSERT_NO_INTERPRETER;
 
     // create stack iterator from native
@@ -497,7 +497,7 @@
 static void jvmti_start_single_step_in_virtual_method(DebugUtilsTI *ti, const VMBreakPoint* bp,
     const POINTER_SIZE_INT data, const unsigned char bytecode)
 {
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
     VM_thread *vm_thread = p_TLS_vmthread;
     assert(vm_thread);
     jvmti_thread_t jvmti_thread = &vm_thread->jvmti_thread;
@@ -795,7 +795,7 @@
     unsigned *count,
     bool invoked_frame)
 {
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
     ASSERT_NO_INTERPRETER;
     VMBreakPoints *vm_brpt = VM_Global_State::loader_env->TI->vm_brpt;
 
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_tags.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_tags.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_tags.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_tags.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_tags.h b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_tags.h
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_tags.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_tags.h
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_thread.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_thread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_thread.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_thread.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_thread_group.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_thread_group.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_thread_group.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_thread_group.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_timer.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_timer.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_timer.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_timer.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_trace.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_trace.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_trace.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_trace.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_trace.h b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_trace.h
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_trace.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_trace.h
diff --git a/drlvm/vm/vmcore/src/jvmti/jvmti_watch.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_watch.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/jvmti_watch.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/jvmti_watch.cpp
diff --git a/drlvm/vm/vmcore/src/jvmti/ulist.h b/drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/ulist.h
similarity index 100%
rename from drlvm/vm/vmcore/src/jvmti/ulist.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/jvmti/ulist.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_ClassLoader.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_ClassLoader.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_ClassLoader.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_ClassLoader.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_EMThreadSupport.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_EMThreadSupport.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_EMThreadSupport.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_EMThreadSupport.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_EMThreadSupport.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_EMThreadSupport.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_EMThreadSupport.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_EMThreadSupport.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_FinalizerThread.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_FinalizerThread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_FinalizerThread.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_FinalizerThread.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_FinalizerThread.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_FinalizerThread.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_FinalizerThread.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_FinalizerThread.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_Runtime_SubProcess.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_Runtime_SubProcess.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_Runtime_SubProcess.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_Runtime_SubProcess.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_Runtime_SubProcess_SubInputStream.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_Runtime_SubProcess_SubInputStream.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_Runtime_SubProcess_SubInputStream.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_Runtime_SubProcess_SubInputStream.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_Runtime_SubProcess_SubOutputStream.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_Runtime_SubProcess_SubOutputStream.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_Runtime_SubProcess_SubOutputStream.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_Runtime_SubProcess_SubOutputStream.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_System.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_System.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_System.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_System.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_System.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_System.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_System.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_System.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMClassRegistry.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMClassRegistry.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMClassRegistry.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMClassRegistry.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMExecutionEngine.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMExecutionEngine.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMExecutionEngine.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMExecutionEngine.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMExecutionEngine.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMExecutionEngine.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMExecutionEngine.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMExecutionEngine.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMMemoryManager.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMMemoryManager.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMMemoryManager.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMMemoryManager.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMMemoryManager.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMMemoryManager.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMMemoryManager.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMMemoryManager.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMThreadManager.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMThreadManager.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMThreadManager.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMThreadManager.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMThreadManager.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMThreadManager.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_VMThreadManager.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_VMThreadManager.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMField.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMField.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMField.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMField.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMField.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMField.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMField.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMField.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMReflection.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMReflection.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMReflection.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMReflection.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMReflection.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMReflection.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_lang_reflect_VMReflection.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_lang_reflect_VMReflection.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_security_AccessController.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_security_AccessController.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_security_AccessController.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_security_AccessController.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_util_concurrent_locks_LockSupport.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_util_concurrent_locks_LockSupport.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_util_concurrent_locks_LockSupport.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_util_concurrent_locks_LockSupport.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/java_util_concurrent_locks_LockSupport.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_util_concurrent_locks_LockSupport.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/java_util_concurrent_locks_LockSupport.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/java_util_concurrent_locks_LockSupport.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelper.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelper.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelper.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelper.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelperFastPath.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelperFastPath.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelperFastPath.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelperFastPath.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelperFastPath.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelperFastPath.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelperFastPath.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_drlvm_VMHelperFastPath.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_kernel_vm_VM.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_kernel_vm_VM.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_kernel_vm_VM.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_kernel_vm_VM.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_kernel_vm_VM.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_kernel_vm_VM.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_kernel_vm_VM.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_kernel_vm_VM.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_CompilationMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_CompilationMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_CompilationMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_CompilationMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_CompilationMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_CompilationMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_CompilationMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_CompilationMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThread.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThread.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThread.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThread.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThread.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThread.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThread.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_RuntimeMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_RuntimeMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_RuntimeMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_RuntimeMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_RuntimeMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_RuntimeMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_RuntimeMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_RuntimeMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ThreadMXBeanImpl.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ThreadMXBeanImpl.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ThreadMXBeanImpl.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ThreadMXBeanImpl.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ThreadMXBeanImpl.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ThreadMXBeanImpl.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_lang_management_ThreadMXBeanImpl.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_lang_management_ThreadMXBeanImpl.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_util_concurrent_Atomics.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_util_concurrent_Atomics.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_util_concurrent_Atomics.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_util_concurrent_Atomics.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_util_concurrent_Atomics.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_util_concurrent_Atomics.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_util_concurrent_Atomics.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_util_concurrent_Atomics.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMDebug.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMDebug.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMDebug.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMDebug.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMDebug.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMDebug.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMDebug.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMDebug.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMGenericsAndAnnotations.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMGenericsAndAnnotations.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMGenericsAndAnnotations.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMGenericsAndAnnotations.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMGenericsAndAnnotations.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMGenericsAndAnnotations.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMGenericsAndAnnotations.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMGenericsAndAnnotations.h
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMStack.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMStack.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMStack.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMStack.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMStack.h b/drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMStack.h
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/org_apache_harmony_vm_VMStack.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/kernel_classes/org_apache_harmony_vm_VMStack.h
diff --git a/drlvm/vm/vmcore/src/lil/lil.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/lil/lil.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/lil/lil.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/lil/lil.cpp
diff --git a/drlvm/vm/vmcore/src/lil/lil_code_generator.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/lil/lil_code_generator.cpp
similarity index 91%
rename from drlvm/vm/vmcore/src/lil/lil_code_generator.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/lil/lil_code_generator.cpp
index 38cfc23..e0fc8b2 100644
--- a/drlvm/vm/vmcore/src/lil/lil_code_generator.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/lil/lil_code_generator.cpp
@@ -21,21 +21,14 @@
 
 #include "lil.h"
 #include "lil_code_generator.h"
-
-#ifdef _IA32_
-#include "lil_code_generator_ia32.h"
-#elif _EM64T_
-#include "lil_code_generator_em64t.h"
-#elif _IPF_
-#include "lil_code_generator_ipf.h"
-#endif
+#include "lil_code_generator_arch.h"
 
 
 LilCodeGenerator* LilCodeGenerator::get_platform()
 {
-#ifdef _IA32_
+#ifdef HYX86
     static LilCodeGeneratorIa32 cg;
-#elif _EM64T_
+#elif HYX86_64
     static LilCodeGeneratorEM64T cg;
 #elif _IPF_
     static LilCodeGeneratorIpf cg;
diff --git a/drlvm/vm/vmcore/src/lil/lil_code_generator_utils.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/lil/lil_code_generator_utils.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/lil/lil_code_generator_utils.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/lil/lil_code_generator_utils.cpp
diff --git a/drlvm/vm/vmcore/src/lil/stack_iterator/m2n.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/lil/stack_iterator/m2n.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/lil/stack_iterator/m2n.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/lil/stack_iterator/m2n.cpp
diff --git a/drlvm/vm/vmcore/src/lil/stack_iterator/stack_iterator.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/lil/stack_iterator/stack_iterator.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/lil/stack_iterator/stack_iterator.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/lil/stack_iterator/stack_iterator.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/NCAI.html b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/NCAI.html
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/NCAI.html
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/NCAI.html
diff --git a/drlvm/vm/vmcore/src/ncai/README b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/README
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/README
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/README
diff --git a/drlvm/vm/vmcore/src/ncai/ncai.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_break.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_break.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_break.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_break.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_event.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_event.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_event.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_event.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_memory.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_memory.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_memory.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_memory.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_methods.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_methods.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_methods.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_methods.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_modules.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_modules.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_modules.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_modules.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_registers.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_registers.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_registers.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_registers.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_signals.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_signals.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_signals.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_signals.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_stack.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_stack.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_stack.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_stack.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_step.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_step.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_step.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_step.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/ncai_thread.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_thread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/ncai_thread.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/ncai/ncai_thread.cpp
diff --git a/drlvm/vm/vmcore/src/object/object_handles.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/object/object_handles.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/object/object_handles.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/object/object_handles.cpp
diff --git a/drlvm/vm/vmcore/src/object/vm_arrays.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/object/vm_arrays.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/object/vm_arrays.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/object/vm_arrays.cpp
diff --git a/drlvm/vm/vmcore/src/reflection/annotations.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/reflection/annotations.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/reflection/annotations.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/reflection/annotations.cpp
diff --git a/drlvm/vm/vmcore/src/reflection/reflection.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/reflection/reflection.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/reflection/reflection.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/reflection/reflection.cpp
diff --git a/drlvm/vm/vmcore/src/stack/native_stack.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/stack/native_stack.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/stack/native_stack.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/stack/native_stack.cpp
index 620d34f..55c729f 100644
--- a/drlvm/vm/vmcore/src/stack/native_stack.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/stack/native_stack.cpp
@@ -94,7 +94,7 @@
 
 #if defined(_IPF_)
     // Nothing
-#elif defined(_EM64T_)
+#elif defined(HYX86_64)
     frame->ip = (void*)regs->rip;
     frame->frame = (void*)regs->rbp;
     frame->stack = (void*)regs->rsp;
@@ -109,7 +109,7 @@
 {
 #if defined(_IPF_)
     // Nothing
-#elif defined(_EM64T_)
+#elif defined(HYX86_64)
     regs->rsp = jfc->rsp;
     regs->rip = *jfc->p_rip;
     regs->rbp = (jfc->p_rbp) ? *jfc->p_rbp : regs->rbp;
diff --git a/drlvm/vm/vmcore/src/stack/stack_trace.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/stack/stack_trace.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/stack/stack_trace.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/stack/stack_trace.cpp
diff --git a/drlvm/vm/vmcore/src/thread/atomics_common.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/atomics_common.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/atomics_common.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/atomics_common.cpp
diff --git a/drlvm/vm/vmcore/src/thread/lock_manager.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/lock_manager.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/lock_manager.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/lock_manager.cpp
diff --git a/drlvm/vm/vmcore/src/thread/mon_enter_exit.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/mon_enter_exit.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/mon_enter_exit.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/mon_enter_exit.cpp
diff --git a/drlvm/vm/vmcore/src/thread/object_generic.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/object_generic.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/object_generic.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/object_generic.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_dump.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_dump.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_dump.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_dump.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_generic.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_generic.cpp
similarity index 96%
rename from drlvm/vm/vmcore/src/thread/thread_generic.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_generic.cpp
index acddc88..686e1d6 100644
--- a/drlvm/vm/vmcore/src/thread/thread_generic.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_generic.cpp
@@ -63,16 +63,8 @@
 #include "jni_direct.h"
 #include "port_malloc.h"
 
-#ifdef _IPF_
-#include "java_lang_thread_ipf.h"
-#include "../m2n_ipf_internal.h"
-#elif defined _EM64T_
-#include "java_lang_thread_em64t.h"
-#include "../m2n_em64t_internal.h"
-#else
-#include "java_lang_thread_ia32.h"
-#include "../m2n_ia32_internal.h"
-#endif
+#include "java_lang_thread.h"
+#include "m2n_internal.h"
 
 #define IS_FAT_LOCK(lockword) (lockword >> 31)
 
diff --git a/drlvm/vm/vmcore/src/thread/thread_java_attrs.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_attrs.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_java_attrs.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_attrs.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_java_basic.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_basic.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_java_basic.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_basic.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_java_interrupt.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_interrupt.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_java_interrupt.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_interrupt.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_java_iterator.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_iterator.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_java_iterator.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_iterator.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_java_monitors.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_monitors.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_java_monitors.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_monitors.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_java_park.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_park.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_java_park.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_park.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_java_suspend.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_suspend.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_java_suspend.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_java_suspend.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_manager.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_manager.cpp
similarity index 97%
rename from drlvm/vm/vmcore/src/thread/thread_manager.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_manager.cpp
index e98e0d8..053bb2a 100644
--- a/drlvm/vm/vmcore/src/thread/thread_manager.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_manager.cpp
@@ -47,15 +47,7 @@
 #include "interpreter.h"
 #include "exceptions_int.h"
 
-#ifdef _IPF_
-#include "java_lang_thread_ipf.h"
-#elif defined _EM64T_
-//#include "java_lang_thread_em64t.h"
-#else
-#include "java_lang_thread_ia32.h"
-#endif
-
-
+#include "java_lang_thread.h"
 
 jint jthread_allocate_vm_thread_pool(JavaVM *java_vm,
                                      vm_thread_t vm_thread)
diff --git a/drlvm/vm/vmcore/src/thread/thread_ti_instr.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_instr.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_ti_instr.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_instr.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_ti_monitors.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_monitors.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_ti_monitors.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_monitors.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_ti_others.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_others.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_ti_others.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_others.cpp
diff --git a/drlvm/vm/vmcore/src/thread/thread_ti_timing.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_timing.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/thread_ti_timing.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/thread_ti_timing.cpp
diff --git a/drlvm/vm/vmcore/src/thread/verify_stack_enumeration.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/thread/verify_stack_enumeration.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/verify_stack_enumeration.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/thread/verify_stack_enumeration.cpp
diff --git a/drlvm/vm/vmcore/src/util/bytereader.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/bytereader.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/bytereader.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/bytereader.cpp
diff --git a/drlvm/vm/vmcore/src/util/crash_dump.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/crash_dump.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/crash_dump.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/crash_dump.cpp
diff --git a/drlvm/vm/vmcore/src/util/jarfile_support.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/jarfile_support.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/jarfile_support.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/jarfile_support.cpp
diff --git a/drlvm/vm/vmcore/src/util/mem_alloc.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/mem_alloc.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/mem_alloc.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/mem_alloc.cpp
diff --git a/drlvm/vm/vmcore/src/util/natives_support.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/natives_support.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/natives_support.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/natives_support.cpp
diff --git a/drlvm/vm/vmcore/src/util/signals.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/signals.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/util/signals.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/signals.cpp
index 56033d0..4307287 100644
--- a/drlvm/vm/vmcore/src/util/signals.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/util/signals.cpp
@@ -29,9 +29,9 @@
 
 #ifdef PLATFORM_POSIX
 
-#if defined(_EM64T_)
+#if defined(HYX86_64)
 #define RESTORE_STACK_SIZE 0x0400
-#elif defined (_IA32_)
+#elif defined (HYX86)
 #define RESTORE_STACK_SIZE 0x0100
 #else // IPF
 #define RESTORE_STACK_SIZE 0x0200
diff --git a/drlvm/vm/vmcore/src/util/vm_stats.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/vm_stats.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/vm_stats.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/vm_stats.cpp
diff --git a/drlvm/vm/vmcore/src/util/vm_strings.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/util/vm_strings.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/vm_strings.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/util/vm_strings.cpp
diff --git a/drlvm/vm/vmcore/src/lil/ia32/include/lil_code_generator_ia32.h b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/include/lil_code_generator_arch.h
similarity index 90%
rename from drlvm/vm/vmcore/src/lil/ia32/include/lil_code_generator_ia32.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/include/lil_code_generator_arch.h
index 54c7347..96fcce3 100644
--- a/drlvm/vm/vmcore/src/lil/ia32/include/lil_code_generator_ia32.h
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/include/lil_code_generator_arch.h
@@ -19,8 +19,8 @@
  */  
 
 
-#ifndef _LIL_CODE_GENERATOR_IA32_
-#define _LIL_CODE_GENERATOR_IA32_
+#ifndef _LIL_CODE_GENERATORHYX86
+#define _LIL_CODE_GENERATORHYX86
 
 #include "lil.h"
 #include "lil_code_generator.h"
@@ -34,4 +34,4 @@
     NativeCodePtr compile_main(LilCodeStub* , size_t*, PoolManager*);
 };
 
-#endif // _LIL_CODE_GENERATOR_IA32_
+#endif // _LIL_CODE_GENERATORHYX86
diff --git a/drlvm/vm/vmcore/src/lil/ia32/lil_code_generator_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/lil_code_generator_arch.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/lil/ia32/lil_code_generator_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/lil_code_generator_arch.cpp
index 0398724..5437de1 100644
--- a/drlvm/vm/vmcore/src/lil/ia32/lil_code_generator_ia32.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/lil_code_generator_arch.cpp
@@ -19,10 +19,10 @@
 
 #include "lil.h"
 #include "lil_code_generator.h"
-#include "lil_code_generator_ia32.h"
+#include "lil_code_generator_arch.h"
 #include "lil_code_generator_utils.h"
 #include "m2n.h"
-#include "m2n_ia32_internal.h"
+#include "m2n_internal.h"
 #include "vm_threads.h"
 #include "encoder.h"
 #include "jit_runtime_support_common.h"
diff --git a/drlvm/vm/vmcore/src/lil/ia32/m2n_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/m2n.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/lil/ia32/m2n_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/m2n.cpp
index 6983b77..ca2ee95 100644
--- a/drlvm/vm/vmcore/src/lil/ia32/m2n_ia32.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/m2n.cpp
@@ -19,7 +19,7 @@
 #include "thread_helpers.h"
 
 #include "m2n.h"
-#include "m2n_ia32_internal.h"
+#include "m2n_internal.h"
 #include "port_malloc.h"
 #include "object_handles.h"
 #include "vm_threads.h"
diff --git a/drlvm/vm/vmcore/src/lil/ia32/m2n_ia32_internal.h b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/m2n_internal.h
similarity index 97%
rename from drlvm/vm/vmcore/src/lil/ia32/m2n_ia32_internal.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/m2n_internal.h
index 6b79586..e1ebdf8 100644
--- a/drlvm/vm/vmcore/src/lil/ia32/m2n_ia32_internal.h
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/m2n_internal.h
@@ -19,8 +19,8 @@
  */  
 
 
-#ifndef _M2N_IA32_INTERNAL_H_
-#define _M2N_IA32_INTERNAL_H_
+#ifndef _M2NHYX86INTERNAL_H_
+#define _M2NHYX86INTERNAL_H_
 
 // This file describes the internal IPF interface of m2n frames.
 // It can be used by stubs to generate code to push and pop m2n frames, to update object handles fields, and 
@@ -85,7 +85,7 @@
 //   p_lm2nf==1
 //   regs is present
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 #error Wrong header file.
 #endif
 
@@ -104,4 +104,4 @@
     Registers*           regs; // This is only for M2nFrames for suspended managed code (as against ones that call stubs and prepare jvmtiPopFrame)
 };
 
-#endif //!_M2N_IA32_INTERNAL_H_
+#endif //!_M2NHYX86INTERNAL_H_
diff --git a/drlvm/vm/vmcore/src/lil/ia32/stack_iterator_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/stack_iterator.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/lil/ia32/stack_iterator_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/stack_iterator.cpp
index a380525..70dae61 100644
--- a/drlvm/vm/vmcore/src/lil/ia32/stack_iterator_ia32.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/lil/stack_iterator.cpp
@@ -23,7 +23,7 @@
 #include "environment.h"
 #include "jit_intf_cpp.h"
 #include "m2n.h"
-#include "m2n_ia32_internal.h"
+#include "m2n_internal.h"
 #include "nogc.h"
 #include "stack_iterator.h"
 #include "vm_stats.h"
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_step_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/ncai/ncai_step_arch.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_step_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/ncai/ncai_step_arch.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_utils_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/ncai/ncai_utils.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_utils_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/ncai/ncai_utils.cpp
diff --git a/drlvm/vm/vmcore/src/thread/helpers/thread_helpers_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/thread/thread_helpers.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/helpers/thread_helpers_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/thread/thread_helpers.cpp
diff --git a/drlvm/vm/vmcore/src/util/ia32/base/compile_IA32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/compile.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/util/ia32/base/compile_IA32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/compile.cpp
index e50c973..708f4e5 100644
--- a/drlvm/vm/vmcore/src/util/ia32/base/compile_IA32.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/compile.cpp
@@ -28,7 +28,7 @@
 #include "environment.h"
 #include "stack_iterator.h"
 #include "m2n.h"
-#include "../m2n_ia32_internal.h"
+#include "m2n_internal.h"
 #include "exceptions.h"
 #include "exceptions_jit.h"
 #include "jit_intf.h"
diff --git a/drlvm/vm/vmcore/src/util/ia32/base/ini_iA32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/ini.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ia32/base/ini_iA32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/ini.cpp
diff --git a/drlvm/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/jit_lock_rt_support.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/jit_lock_rt_support.cpp
index c1e8177..af79ce8 100644
--- a/drlvm/vm/vmcore/src/util/ia32/base/jit_lock_rt_support_ia32.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/jit_lock_rt_support.cpp
@@ -30,7 +30,7 @@
 #include "exceptions_jit.h"
 #include "lil.h"
 #include "lil_code_generator.h"
-#include "../m2n_ia32_internal.h"
+#include "m2n_internal.h"
 #include "object_handles.h"
 #include "Class.h"
 #include "jit_runtime_support.h"
diff --git a/drlvm/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/jit_runtime_support.cpp
similarity index 99%
rename from drlvm/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/jit_runtime_support.cpp
index 5b5f122..34d1248 100644
--- a/drlvm/vm/vmcore/src/util/ia32/base/jit_runtime_support_ia32.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/jit_runtime_support.cpp
@@ -48,7 +48,7 @@
 #include "jit_runtime_support.h"
 #include "internal_jit_intf.h"
 #include "m2n.h"
-#include "../m2n_ia32_internal.h"
+#include "m2n_internal.h"
 
 #include "dump.h"
 #include "vm_stats.h"
diff --git a/drlvm/vm/vmcore/src/util/ia32/base_natives/java_lang_thread_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/natives/java_lang_thread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ia32/base_natives/java_lang_thread_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/natives/java_lang_thread.cpp
diff --git a/drlvm/vm/vmcore/src/util/ia32/base_natives/java_lang_thread_ia32.h b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/natives/java_lang_thread.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ia32/base_natives/java_lang_thread_ia32.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/natives/java_lang_thread.h
diff --git a/drlvm/vm/vmcore/src/util/ia32/base/optimize_ia32.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/optimize.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/ia32/base/optimize_ia32.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86/util/optimize.cpp
diff --git a/drlvm/vm/vmcore/src/lil/em64t/include/lil_code_generator_em64t.h b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/include/lil_code_generator_arch.h
similarity index 98%
rename from drlvm/vm/vmcore/src/lil/em64t/include/lil_code_generator_em64t.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/include/lil_code_generator_arch.h
index 5ab18fe..0b6db20 100644
--- a/drlvm/vm/vmcore/src/lil/em64t/include/lil_code_generator_em64t.h
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/include/lil_code_generator_arch.h
@@ -48,8 +48,8 @@
  *    r10-r11 are used for lil standard places (sp0-sp1)
  */
 
-#ifndef _LIL_CODE_GENERATOR_EM64T_
-#define _LIL_CODE_GENERATOR_EM64T_
+#ifndef _LIL_CODE_GENERATORHYX86_64
+#define _LIL_CODE_GENERATORHYX86_64
 
 #include "lil.h"
 #include "lil_code_generator.h"
@@ -738,4 +738,4 @@
     NativeCodePtr compile_main(LilCodeStub* , size_t*, PoolManager*);
 };
 
-#endif // _LIL_CODE_GENERATOR_EM64T_
+#endif // _LIL_CODE_GENERATORHYX86_64
diff --git a/drlvm/vm/vmcore/src/lil/em64t/lil_code_generator_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/lil_code_generator_arch.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/lil/em64t/lil_code_generator_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/lil_code_generator_arch.cpp
index 6e4ed35..b866165 100644
--- a/drlvm/vm/vmcore/src/lil/em64t/lil_code_generator_em64t.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/lil_code_generator_arch.cpp
@@ -33,10 +33,10 @@
 
 #include "lil.h"
 #include "lil_code_generator.h"
-#include "lil_code_generator_em64t.h"
+#include "lil_code_generator_arch.h"
 #include "lil_code_generator_utils.h"
 #include "m2n.h"
-#include "m2n_em64t_internal.h"
+#include "m2n_internal.h"
 
 #ifndef NDEBUG
 #include "dump.h"
diff --git a/drlvm/vm/vmcore/src/lil/em64t/m2n_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/m2n.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/lil/em64t/m2n_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/m2n.cpp
index 5e525fd..1f24409 100644
--- a/drlvm/vm/vmcore/src/lil/em64t/m2n_em64t.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/m2n.cpp
@@ -30,8 +30,8 @@
 
 #include "m2n.h"
 #include "encoder.h"
-#include "m2n_em64t_internal.h"
-#include "lil_code_generator_em64t.h"
+#include "m2n_internal.h"
+#include "lil_code_generator_arch.h"
 
 /*    Generic Interface    */
 
diff --git a/drlvm/vm/vmcore/src/lil/em64t/m2n_em64t_internal.h b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/m2n_internal.h
similarity index 97%
rename from drlvm/vm/vmcore/src/lil/em64t/m2n_em64t_internal.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/m2n_internal.h
index 6010a79..4300530 100644
--- a/drlvm/vm/vmcore/src/lil/em64t/m2n_em64t_internal.h
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/m2n_internal.h
@@ -19,8 +19,8 @@
  * @author Evgueni Brevnov
  */  
 
-#ifndef _M2N_EM64T_INTERNAL_H_
-#define _M2N_EM64T_INTERNAL_H_
+#ifndef _M2NHYX86_64INTERNAL_H_
+#define _M2NHYX86_64INTERNAL_H_
 
 // This file describes the internal EM64T interface of m2n frames.
 // It can be used by stubs to generate code to push and pop m2n frames, to update object handles fields, and 
@@ -129,4 +129,4 @@
 // returns top of the specified frame on the stack (it should point to return ip)
 void * m2n_get_frame_base(M2nFrame *);
 
-#endif // _M2N_EM64T_INTERNAL_H_
+#endif // _M2NHYX86_64INTERNAL_H_
diff --git a/drlvm/vm/vmcore/src/lil/em64t/stack_iterator_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/stack_iterator.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/lil/em64t/stack_iterator_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/stack_iterator.cpp
index 4cbdc49..322cf52 100644
--- a/drlvm/vm/vmcore/src/lil/em64t/stack_iterator_em64t.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/lil/stack_iterator.cpp
@@ -27,7 +27,7 @@
 #include "jit_intf_cpp.h"
 #include "encoder.h"
 #include "m2n.h"
-#include "m2n_em64t_internal.h"
+#include "m2n_internal.h"
 #include "nogc.h"
 #include "interpreter.h" // for ASSERT_NO_INTERPRETER
 #include "cci.h"
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_step_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/ncai/ncai_step_arch.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_step_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/ncai/ncai_step_arch.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_utils_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/ncai/ncai_utils.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_utils_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/ncai/ncai_utils.cpp
diff --git a/drlvm/vm/vmcore/src/thread/helpers/thread_helpers_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/thread/thread_helpers.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/thread/helpers/thread_helpers_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/thread/thread_helpers.cpp
diff --git a/drlvm/vm/vmcore/src/util/em64t/base/compile_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/compile.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/util/em64t/base/compile_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/compile.cpp
index 2152fbf..4e0556a 100644
--- a/drlvm/vm/vmcore/src/util/em64t/base/compile_em64t.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/compile.cpp
@@ -33,7 +33,7 @@
 
 #include "nogc.h"
 #include "m2n.h"
-#include "../m2n_em64t_internal.h"
+#include "m2n_internal.h"
 #include "exceptions.h"
 #include "exceptions_jit.h"
 
diff --git a/drlvm/vm/vmcore/src/util/em64t/base/ini_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/ini.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/em64t/base/ini_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/ini.cpp
diff --git a/drlvm/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/jit_lock_rt_support.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/jit_lock_rt_support.cpp
index dc1544b..b567696 100644
--- a/drlvm/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/jit_lock_rt_support.cpp
@@ -34,7 +34,7 @@
 #include "exceptions_jit.h"
 #include "lil.h"
 #include "lil_code_generator.h"
-#include "../m2n_em64t_internal.h"
+#include "m2n_internal.h"
 #include "object_handles.h"
 #include "Class.h"
 #include "jit_runtime_support.h"
diff --git a/drlvm/vm/vmcore/src/util/em64t/base/jit_runtime_support_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/jit_runtime_support.cpp
similarity index 98%
rename from drlvm/vm/vmcore/src/util/em64t/base/jit_runtime_support_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/jit_runtime_support.cpp
index 7210ca0..6317f92 100644
--- a/drlvm/vm/vmcore/src/util/em64t/base/jit_runtime_support_em64t.cpp
+++ b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/jit_runtime_support.cpp
@@ -33,7 +33,7 @@
 #include "lil_code_generator.h"
 #include "jit_runtime_support.h"
 #include "m2n.h"
-#include "../m2n_em64t_internal.h"
+#include "m2n_internal.h"
 
 #include "vm_stats.h"
 #include "dump.h"
diff --git a/drlvm/vm/vmcore/src/util/em64t/base_natives/java_lang_thread_em64t.cpp b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/natives/java_lang_thread.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/em64t/base_natives/java_lang_thread_em64t.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/natives/java_lang_thread.cpp
diff --git a/drlvm/vm/vmcore/src/util/em64t/base_natives/java_lang_thread_em64t.h b/drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/natives/java_lang_thread.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/em64t/base_natives/java_lang_thread_em64t.h
rename to drlvm/modules/vm/src/main/native/vmcore/shared/x86_64/util/natives/java_lang_thread.h
diff --git a/drlvm/modules/vm/src/main/native/vmcore/unix/exports.txt b/drlvm/modules/vm/src/main/native/vmcore/unix/exports.txt
new file mode 100644
index 0000000..bd34f9c
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/vmcore/unix/exports.txt
@@ -0,0 +1,684 @@
+advance_arg_iterator
+allocation_handle_get_class
+array_copy_jni
+array_first_element_offset_unboxed
+class_alloc_via_classloader
+class_element_size
+class_find_class_from_loader
+class_get_alignment
+class_get_alignment_unboxed
+class_get_allocation_handle
+class_get_array_element_class
+class_get_array_element_size
+class_get_array_of_class
+class_get_object_size
+class_get_class_loader
+class_get_class_of_primitive_type
+class_initialize
+class_cp_get_const_addr
+class_cp_get_const_string
+class_get_const_string_intern_addr
+class_cp_get_const_type
+class_cp_get_entry_signature
+class_cp_get_field_type
+class_get_declaring_class
+class_get_depth
+class_get_element_type_info
+class_is_support_fast_instanceof
+class_get_field
+class_get_field_by_name
+class_get_flags
+class_get_implements
+class_get_inner_class
+class_get_instance_field
+class_get_instance_field_recursive
+class_get_method
+class_get_method_by_name
+class_get_name
+class_cp_get_num_array_dimensions
+class_get_number_methods
+class_get_package_name
+class_get_primitive_type_of_class
+class_get_referent_offset
+class_get_source_file_name
+class_get_super_class
+class_get_super_offset
+class_get_vtable
+class_is_throwable
+class_is_array
+class_cp_is_entry_resolved
+class_is_enum
+class_is_finalizable
+class_is_initialized
+class_is_inner_class_public
+class_is_instanceof
+class_is_non_ref_array
+class_is_primitive
+class_is_reference
+class_is_valuetype
+class_load_class_by_descriptor
+vm_load_class_with_bootstrap
+vm_lookup_class_with_bootstrap
+class_lookup_method_recursively
+class_number_fields
+class_number_implements
+class_number_inner_classes
+class_num_instance_fields
+class_num_instance_fields_recursive
+class_is_abstract
+class_is_final
+class_is_interface
+vm_compiled_method_load
+compress_reference
+class_cp_get_class_name
+class_cp_get_entry_name
+class_cp_get_entry_descriptor
+class_cp_get_entry_class_name
+curr_arg
+vm_properties_destroy_keys
+vm_properties_destroy_value
+field_get_address
+field_get_class
+field_get_class_of_field_type
+field_get_descriptor
+field_get_flags
+field_get_name
+field_get_offset
+field_get_track_access_flag
+field_get_track_modification_flag
+field_get_type
+field_get_type_info
+field_is_final
+field_is_injected
+field_is_literal
+field_is_magic
+field_is_private
+field_is_public
+field_is_reference
+field_is_static
+field_is_unmanaged_static
+field_is_volatile
+gc_force_gc
+gc_free_memory
+gc_heap_base_address
+gc_heap_ceiling_address
+gc_max_memory
+gc_time_since_last_gc
+gc_total_memory
+vm_property_get_boolean
+get_curr_arg_class
+get_file_and_line
+vm_property_get_integer
+get_jvalue_arg_array
+get_method_entry_flag_address
+get_method_exit_flag_address
+vm_properties_get_keys
+vm_properties_get_keys_starting_with
+vm_properties_get_value
+vm_property_get_size
+vm_get_system_class_class
+vm_get_system_object_class
+vm_get_system_string_class
+class_loader_lookup_class
+class_loader_load_class
+class_loader_set_verifier_data_ptr
+class_loader_get_verifier_data_ptr
+class_loader_lock
+class_loader_unlock
+get_thread_ptr
+vm_get_interface
+initialize_arg_list_iterator
+log_exit
+log_abort
+log_printf
+log_header
+log_is_warn_enabled
+log_is_info_enabled
+log_is_trace_enabled
+log_cache
+is_it_finalize_thread
+vm_property_is_set
+Java_java_lang_ClassLoader_defineClass0
+Java_java_lang_ClassLoader_findLoadedClass
+Java_java_lang_ClassLoader_registerInitiatedClass
+Java_java_lang_EMThreadSupport_getTimeout
+Java_java_lang_EMThreadSupport_needProfilerThreadSupport
+Java_java_lang_EMThreadSupport_onTimeout
+Java_java_lang_FinalizerThread_doFinalization
+Java_java_lang_FinalizerThread_fillFinalizationQueueOnExit
+Java_java_lang_FinalizerThread_finalizerShutDown
+Java_java_lang_FinalizerThread_getFinalizersQuantity
+Java_java_lang_FinalizerThread_getNativeFinalizerThreadFlagFromVM
+Java_java_lang_FinalizerThread_getProcessorsQuantity
+Java_java_lang_FinalizerThread_isNativePartEnabled
+Java_java_lang_FinalizerThread_runFinalizationInNativeFinalizerThreads
+Java_java_lang_reflect_VMField_getBoolean
+Java_java_lang_reflect_VMField_getByte
+Java_java_lang_reflect_VMField_getChar
+Java_java_lang_reflect_VMField_getDouble
+Java_java_lang_reflect_VMField_getFloat
+Java_java_lang_reflect_VMField_getInt
+Java_java_lang_reflect_VMField_getLong
+Java_java_lang_reflect_VMField_getObject
+Java_java_lang_reflect_VMField_getShort
+Java_java_lang_reflect_VMField_setBoolean
+Java_java_lang_reflect_VMField_setByte
+Java_java_lang_reflect_VMField_setChar
+Java_java_lang_reflect_VMField_setDouble
+Java_java_lang_reflect_VMField_setFloat
+Java_java_lang_reflect_VMField_setInt
+Java_java_lang_reflect_VMField_setLong
+Java_java_lang_reflect_VMField_setObject
+Java_java_lang_reflect_VMField_setShort
+Java_java_lang_reflect_VMReflection_getExceptionTypes
+Java_java_lang_reflect_VMReflection_getFieldType
+Java_java_lang_reflect_VMReflection_getMethodReturnType
+Java_java_lang_reflect_VMReflection_getParameterTypes
+Java_java_lang_reflect_VMReflection_invokeMethod
+Java_java_lang_reflect_VMReflection_newArrayInstance
+Java_java_lang_reflect_VMReflection_newClassInstance
+Java_java_lang_Runtime_00024SubProcess_00024SubInputStream_available0
+Java_java_lang_Runtime_00024SubProcess_00024SubInputStream_close0
+Java_java_lang_Runtime_00024SubProcess_00024SubInputStream_readInputByte0
+Java_java_lang_Runtime_00024SubProcess_00024SubOutputStream_close0
+Java_java_lang_Runtime_00024SubProcess_00024SubOutputStream_flush0
+Java_java_lang_Runtime_00024SubProcess_00024SubOutputStream_writeOutputByte0
+Java_java_lang_Runtime_00024SubProcess_00024SubOutputStream_writeOutputBytes0
+Java_java_lang_Runtime_00024SubProcess_close0
+Java_java_lang_Runtime_00024SubProcess_createProcess0
+Java_java_lang_Runtime_00024SubProcess_destroy0
+Java_java_lang_Runtime_00024SubProcess_getState0
+Java_java_lang_System_rethrow
+Java_java_lang_System_setErrUnsecure
+Java_java_lang_System_setInUnsecure
+Java_java_lang_System_setOutUnsecure
+Java_java_lang_VMClassRegistry_getClassNative
+Java_java_lang_VMClassRegistry_getClassLoader0
+Java_java_lang_VMClassRegistry_getComponentType
+Java_java_lang_VMClassRegistry_getDeclaredClasses
+Java_java_lang_VMClassRegistry_getDeclaredConstructors
+Java_java_lang_VMClassRegistry_getDeclaredFields
+Java_java_lang_VMClassRegistry_getDeclaredMethods
+Java_java_lang_VMClassRegistry_getDeclaringClass
+Java_java_lang_VMClassRegistry_getEnclosingClass
+Java_java_lang_VMClassRegistry_getEnclosingMember
+Java_java_lang_VMClassRegistry_getInterfaces
+Java_java_lang_VMClassRegistry_getModifiers
+Java_java_lang_VMClassRegistry_getName
+Java_java_lang_VMClassRegistry_getSimpleName
+Java_java_lang_VMClassRegistry_getSuperclass
+Java_java_lang_VMClassRegistry_getSystemPackages
+Java_java_lang_VMClassRegistry_initializeClass
+Java_java_lang_VMClassRegistry_isArray
+Java_java_lang_VMClassRegistry_isAssignableFrom
+Java_java_lang_VMClassRegistry_isInstance
+Java_java_lang_VMClassRegistry_isPrimitive
+Java_java_lang_VMClassRegistry_linkClass
+Java_java_lang_VMClassRegistry_loadArray
+Java_java_lang_VMClassRegistry_loadBootstrapClass
+Java_java_lang_VMClassRegistry_loadLibrary
+Java_java_lang_VMExecutionEngine_currentTimeMillis
+Java_java_lang_VMExecutionEngine_exit
+Java_java_lang_VMExecutionEngine_getAssertionStatus
+Java_java_lang_VMExecutionEngine_getAvailableProcessors
+Java_java_lang_VMExecutionEngine_getProperties
+Java_java_lang_VMExecutionEngine_mapLibraryName
+Java_java_lang_VMExecutionEngine_nanoTime
+Java_java_lang_VMExecutionEngine_traceInstructions
+Java_java_lang_VMExecutionEngine_traceMethodCalls
+Java_java_lang_VMMemoryManager_arrayCopy
+Java_java_lang_VMMemoryManager_clone
+Java_java_lang_VMMemoryManager_getFreeMemory
+Java_java_lang_VMMemoryManager_getIdentityHashCode
+Java_java_lang_VMMemoryManager_getMaxMemory
+Java_java_lang_VMMemoryManager_getTotalMemory
+Java_java_lang_VMMemoryManager_runGC
+Java_java_lang_VMThreadManager_currentThreadNative
+Java_java_lang_VMThreadManager_getState
+Java_java_lang_VMThreadManager_holdsLock
+Java_java_lang_VMThreadManager_init
+Java_java_lang_VMThreadManager_interrupt
+Java_java_lang_VMThreadManager_isAlive
+Java_java_lang_VMThreadManager_isInterrupted__
+Java_java_lang_VMThreadManager_isInterrupted__Ljava_lang_Thread_2
+Java_java_lang_VMThreadManager_join
+Java_java_lang_VMThreadManager_notify
+Java_java_lang_VMThreadManager_notifyAll
+Java_java_lang_VMThreadManager_resume
+Java_java_lang_VMThreadManager_setPriority
+Java_java_lang_VMThreadManager_sleep
+Java_java_lang_VMThreadManager_start
+Java_java_lang_VMThreadManager_stop
+Java_java_lang_VMThreadManager_suspend
+Java_java_lang_VMThreadManager_wait
+Java_java_lang_VMThreadManager_yield
+Java_java_security_AccessController_getStackDomains
+Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8
+Java_java_util_concurrent_locks_LockSupport_park
+Java_java_util_concurrent_locks_LockSupport_parkNanos
+Java_java_util_concurrent_locks_LockSupport_parkUntil
+Java_java_util_concurrent_locks_LockSupport_unpark
+Java_org_apache_harmony_drlvm_thread_ThreadHelper_getThreadIdOffset
+Java_org_apache_harmony_drlvm_thread_ThreadHelper_getLockWordOffset
+Java_org_apache_harmony_drlvm_thread_ThreadHelper_getThreadJavaObjectOffset
+Java_org_apache_harmony_drlvm_VMHelperFastPath_getVtableIntfTableOffset
+Java_org_apache_harmony_drlvm_VMHelperFastPath_getVtableIntfTypeOffset
+Java_org_apache_harmony_drlvm_VMHelperFastPath_getVtableSuperclassesOffset
+Java_org_apache_harmony_drlvm_VMHelper_getCompressedModeObjectBaseOffset
+Java_org_apache_harmony_drlvm_VMHelper_getCompressedModeVTableBaseOffset
+Java_org_apache_harmony_drlvm_VMHelper_getPointerTypeSize
+Java_org_apache_harmony_drlvm_VMHelper_isCompressedRefsMode
+Java_org_apache_harmony_drlvm_VMHelper_isCompressedVTableMode
+Java_org_apache_harmony_drlvm_VMHelper_getObjectVtableOffset
+Java_org_apache_harmony_drlvm_VMHelper_getVtableClassOffset
+Java_org_apache_harmony_drlvm_VMHelper_getClassJLCHanldeOffset
+Java_org_apache_harmony_kernel_vm_VM_getClassLoader
+Java_org_apache_harmony_lang_management_ClassLoadingMXBeanImpl_getLoadedClassCountImpl
+Java_org_apache_harmony_lang_management_ClassLoadingMXBeanImpl_getTotalLoadedClassCountImpl
+Java_org_apache_harmony_lang_management_ClassLoadingMXBeanImpl_getUnloadedClassCountImpl
+Java_org_apache_harmony_lang_management_ClassLoadingMXBeanImpl_isVerboseImpl
+Java_org_apache_harmony_lang_management_ClassLoadingMXBeanImpl_setVerboseImpl
+Java_org_apache_harmony_lang_management_CompilationMXBeanImpl_getTotalCompilationTimeImpl
+Java_org_apache_harmony_lang_management_CompilationMXBeanImpl_isCompilationTimeMonitoringSupportedImpl
+Java_org_apache_harmony_lang_management_CompilationMXBeanImpl_isJITEnabled
+Java_org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl_getCollectionCountImpl
+Java_org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl_getCollectionTimeImpl
+Java_org_apache_harmony_lang_management_MemoryManagerMXBeanImpl_createMemoryPools
+Java_org_apache_harmony_lang_management_MemoryManagerMXBeanImpl_isValidImpl
+Java_org_apache_harmony_lang_management_MemoryMXBeanImpl_createMemoryManagers
+Java_org_apache_harmony_lang_management_MemoryMXBeanImpl_getHeapMemoryUsageImpl
+Java_org_apache_harmony_lang_management_MemoryMXBeanImpl_getNonHeapMemoryUsageImpl
+Java_org_apache_harmony_lang_management_MemoryMXBeanImpl_getObjectPendingFinalizationCountImpl
+Java_org_apache_harmony_lang_management_MemoryMXBeanImpl_isVerboseImpl
+Java_org_apache_harmony_lang_management_MemoryMXBeanImpl_setVerboseImpl
+Java_org_apache_harmony_lang_management_MemoryNotificationThread_processNotificationLoop
+Java_org_apache_harmony_lang_management_MemoryNotificationThreadShutdown_sendShutdownNotification
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_getCollectionUsageImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_getCollectionUsageThresholdCountImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_getCollectionUsageThresholdImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_getPeakUsageImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_getUsageImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_getUsageThresholdCountImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_getUsageThresholdImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_isCollectionUsageThresholdExceededImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_isCollectionUsageThresholdSupportedImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_isUsageThresholdExceededImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_isUsageThresholdSupportedImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_isValidImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_resetPeakUsageImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_setCollectionUsageThresholdImpl
+Java_org_apache_harmony_lang_management_MemoryPoolMXBeanImpl_setUsageThresholdImpl
+Java_org_apache_harmony_lang_management_RuntimeMXBeanImpl_getNameImpl
+Java_org_apache_harmony_lang_management_RuntimeMXBeanImpl_getStartTimeImpl
+Java_org_apache_harmony_lang_management_RuntimeMXBeanImpl_getUptimeImpl
+Java_org_apache_harmony_lang_management_RuntimeMXBeanImpl_isBootClassPathSupportedImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_createThreadInfoImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_findMonitorDeadlockedThreadsImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getAllThreadIdsImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getDaemonThreadCountImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getObjectThreadIsBlockedOnImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getPeakThreadCountImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadBlockedCountImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadBlockedTimeImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadByIdImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadCountImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadCpuTimeImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadOwningObjectImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadUserTimeImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadWaitedCountImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getThreadWaitedTimeImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_getTotalStartedThreadCountImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_isCurrentThreadCpuTimeSupportedImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_isSuspendedImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_isThreadContentionMonitoringEnabledImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_isThreadContentionMonitoringSupportedImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_isThreadCpuTimeEnabledImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_isThreadCpuTimeSupportedImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_resetPeakThreadCountImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_setThreadContentionMonitoringEnabledImpl
+Java_org_apache_harmony_lang_management_ThreadMXBeanImpl_setThreadCpuTimeEnabledImpl
+Java_org_apache_harmony_util_concurrent_Atomics_arrayBaseOffset
+Java_org_apache_harmony_util_concurrent_Atomics_arrayIndexScale
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetBoolean___3ZIZZ
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetBoolean__Ljava_lang_Object_2JZZ
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetInt___3IIII
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetInt__Ljava_lang_Object_2JII
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetLong___3JIJJ
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetLong__Ljava_lang_Object_2JJJ
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetObject___3Ljava_lang_Object_2ILjava_lang_Object_2Ljava_lang_Object_2
+Java_org_apache_harmony_util_concurrent_Atomics_compareAndSetObject__Ljava_lang_Object_2JLjava_lang_Object_2Ljava_lang_Object_2
+Java_org_apache_harmony_util_concurrent_Atomics_getFieldOffset
+Java_org_apache_harmony_util_concurrent_Atomics_getIntVolatile__Ljava_lang_Object_2J
+Java_org_apache_harmony_util_concurrent_Atomics_getLongVolatile__Ljava_lang_Object_2J
+Java_org_apache_harmony_util_concurrent_Atomics_getObjectVolatile__Ljava_lang_Object_2J
+Java_org_apache_harmony_util_concurrent_Atomics_setIntVolatile__Ljava_lang_Object_2JI
+Java_org_apache_harmony_util_concurrent_Atomics_setLongVolatile__Ljava_lang_Object_2JJ
+Java_org_apache_harmony_util_concurrent_Atomics_setObjectVolatile__Ljava_lang_Object_2JLjava_lang_Object_2
+Java_org_apache_harmony_vm_VMDebug_print
+Java_org_apache_harmony_vm_VMGenericsAndAnnotations_getDeclaredAnnotations__J
+Java_org_apache_harmony_vm_VMGenericsAndAnnotations_getDeclaredAnnotations__Ljava_lang_Class_2
+Java_org_apache_harmony_vm_VMGenericsAndAnnotations_getDefaultValue
+Java_org_apache_harmony_vm_VMGenericsAndAnnotations_getParameterAnnotations
+Java_org_apache_harmony_vm_VMGenericsAndAnnotations_getSignature__J
+Java_org_apache_harmony_vm_VMGenericsAndAnnotations_getSignature__Ljava_lang_Class_2
+Java_org_apache_harmony_vm_VMStack_getCallerClass
+Java_org_apache_harmony_vm_VMStack_getClasses
+Java_org_apache_harmony_vm_VMStack_getStackClasses
+Java_org_apache_harmony_vm_VMStack_getStackState
+Java_org_apache_harmony_vm_VMStack_getStackTrace
+Java_org_apache_harmony_vm_VMStack_getThreadStackTrace
+JIT_execute_method_default
+jit_get_comp_handle
+jit_may_inline_object_synchronization
+jni_class_from_handle
+jni_class_loader_from_handle
+JNI_CreateJavaVM
+jni_get_class_handle
+JNI_GetCreatedJavaVMs
+JNI_GetDefaultJavaVMInitArgs
+jthread_attach
+jthread_cancel_all
+jthread_clear_interrupted
+jthread_create
+jthread_create_with_function
+jthread_detach
+jthread_exception_stop
+jthread_get_all_threads
+jthread_get_blocked_count
+jthread_get_contended_monitor
+jthread_get_deadlocked_threads
+jthread_get_id
+jthread_get_java_thread
+jthread_get_JNI_env
+jthread_get_jvmti_local_storage
+jthread_get_jvmti_state
+jthread_get_lock_owner
+jthread_get_lock_recursion
+jthread_get_native_thread
+jthread_get_owned_monitors
+jthread_get_peak_thread_count
+jthread_get_priority
+jthread_get_thread
+jthread_get_thread_blocked_time
+jthread_get_thread_blocked_times_count
+jthread_get_thread_count
+jthread_get_thread_cpu_time
+jthread_get_thread_cpu_timer_info
+jthread_get_thread_user_cpu_time
+jthread_get_thread_waited_time
+jthread_get_thread_waited_times_count
+jthread_get_tm_data
+jthread_get_total_started_thread_count
+jthread_get_vm_thread_ptr_safe
+jthread_get_waited_count
+jthread_get_wait_monitor
+jthread_holds_lock
+jthread_interrupt
+jthread_is_current_thread_cpu_time_supported
+jthread_is_interrupted
+jthread_is_thread_contention_monitoring_enabled
+jthread_is_thread_contention_monitoring_supported
+jthread_is_thread_cpu_time_enabled
+jthread_is_thread_cpu_time_supported
+jthread_iterator_create
+jthread_iterator_next
+jthread_iterator_release
+jthread_iterator_reset
+jthread_iterator_size
+jthread_java_detach
+jthread_monitor_enter
+jthread_monitor_exit
+jthread_monitor_init
+jthread_monitor_notify
+jthread_monitor_notify_all
+jthread_monitor_timed_wait
+jthread_monitor_try_enter
+jthread_monitor_wait
+jthread_park
+jthread_park_until
+jthread_raw_monitor_create
+jthread_raw_monitor_destroy
+jthread_raw_monitor_enter
+jthread_raw_monitor_exit
+jthread_raw_monitor_notify
+jthread_raw_monitor_notify_all
+jthread_raw_monitor_try_enter
+jthread_raw_monitor_wait
+jthread_reset_peak_thread_count
+jthread_resume
+jthread_resume_all
+jthread_self
+jthread_set_priority
+jthread_set_thread_contention_monitoring_enabled
+jthread_set_thread_cpu_time_enabled
+jthread_set_tm_data
+jthread_sleep
+jthread_stop
+jthread_suspend
+jthread_suspend_all
+jthread_thread_init
+jthread_timed_park
+jthread_unpark
+jthread_vm_detach
+jthread_wait_for_all_nondaemon_threads
+jthread_yield
+jvmti_process_native_method_bind_event
+jvmti_send_contended_enter_or_entered_monitor_event
+jvmti_send_thread_start_end_event
+jvmti_send_waited_monitor_event
+jvmti_send_wait_monitor_event
+method_allocate_code_block
+method_allocate_data_block
+method_allocate_info_block
+method_allocate_jit_data_block
+method_args_get_number
+method_args_get_type_info
+method_get_overriding_method
+method_get_argument_list
+method_get_bytecode
+method_get_bytecode_length
+method_get_class
+method_get_code_block_jit
+method_get_code_block_size_jit
+method_get_code_block_addr_jit_new
+method_get_code_block_size_jit_new
+method_get_descriptor
+method_get_exc_handler_info
+method_get_indirect_address
+method_get_info_block_jit
+method_get_info_block_size_jit
+method_get_JIT_id
+method_get_max_locals
+method_get_max_stack
+method_get_name
+method_get_native_func_addr
+method_get_exc_handler_number
+method_get_vtable_offset
+method_get_return_type
+method_get_side_effects
+method_get_signature
+method_has_annotation
+method_is_abstract
+method_is_final
+method_is_java
+method_is_native
+method_is_no_inlining
+method_is_overridden
+method_is_private
+method_is_require_security_object
+method_is_static
+method_is_strict
+method_is_synchronized
+method_lock
+method_ret_type_get_type_info
+method_set_inline_assumption
+method_set_num_target_handlers
+method_set_side_effects
+method_set_target_handler_info
+method_unlock
+method_uses_fastcall
+object_get_vtable_offset
+port_atomic_cas64
+port_vmem_page_sizes
+port_CPUs_number
+resolve_class
+resolve_class_new
+resolve_field
+resolve_interface_method
+class_resolve_method
+resolve_nonstatic_field
+resolve_special_method
+resolve_static_field
+resolve_static_method
+resolve_virtual_method
+set_native_finalizer_thread_flag
+set_native_ref_enqueue_thread_flag
+vm_properties_set_value
+st_alloc_frames
+type_info_create_from_java_descriptor
+type_info_get_class
+type_info_get_class_no_exn
+type_info_get_method_sig
+type_info_get_num_array_dimensions
+type_info_get_type
+type_info_get_type_info
+type_info_get_type_name
+type_info_is_general_array
+type_info_is_method_pointer
+type_info_is_primitive
+type_info_is_reference
+type_info_is_resolved
+type_info_is_unboxed
+type_info_is_unmanaged_pointer
+type_info_is_vector
+type_info_is_void
+uncompress_compressed_reference
+vector_first_element_offset
+vector_first_element_offset_class_handle
+vector_first_element_offset_unboxed
+vector_first_element_offset_vtable_handle
+vector_get_element_address_ref
+vector_get_length
+vector_length_offset
+verify_object_header
+vm_attach
+vm_check_if_monitor
+vm_compile_method
+vm_create_helper_for_function
+vm_detach
+vm_enqueue_reference
+vm_enumerate_compressed_root_reference
+vm_enumerate_root_interior_pointer
+vm_enumerate_root_reference
+vm_enumerate_root_set_all_threads
+vm_enumerate_weak_root_reference
+vm_finalize_object
+vm_gc_lock_enum
+vm_gc_lock_init
+vm_gc_unlock_enum
+vm_get_gc_thread_local
+vm_helper_get_addr
+vm_helper_get_addr_optimized
+vm_get_vtable_base_address
+vm_get_vtable_ptr_size
+vm_get_heap_base_address
+vm_get_heap_ceiling_address
+vm_heavy_finalizer_block_mutator
+vm_helper_get_by_name
+vm_helper_get_calling_convention
+vm_helper_get_interruptibility_kind
+vm_helper_get_magic_helper
+vm_helper_get_name
+vm_helper_get_numargs
+vm_helper_register_magic_helper
+vm_hint_finalize
+vm_instanceof_class
+vm_iterate_object
+vm_load_jit
+vm_managed_calling_convention
+vm_max_fast_instanceof_depth
+vm_notify_obj_alive
+vm_number_of_gc_bytes_in_thread_local
+vm_number_of_gc_bytes_in_vtable
+vm_objects_are_equal
+vm_patch_code_block
+vm_reclaim_native_objs
+vm_recompile_method
+vm_is_heap_compressed
+vm_register_jit_extended_class_callback
+vm_register_jit_overridden_method_callback
+vm_register_jit_recompiled_method_callback
+vm_resolve_class
+vm_resolve_class_new
+vm_resume_threads_after
+vm_vector_size
+vm_is_vtable_compressed
+vtable_get_class
+vtable_get_super_array_offset
+# Workaround for LogParams::release C++ function used by EM
+*LogParams*
+# Workaround for EncoderBase used by JIT
+*EncoderBase*
+# Workaround for encoder API used by JIT
+*getOpndKindString*
+*getOpndSize*
+*getRegName*
+*getOpndKind*
+# Workaround for VM_Global_State used by GC_GEN
+*VM_Global_State*
+# Workaround for apr API used by GC_GEN
+apr_atomic_dec32
+apr_atomic_inc32
+apr_atomic_cas32
+apr_atomic_add32
+apr_atomic_set32
+apr_sleep
+apr_time_now
+apr_atomic_casptr
+port_rw_barrier
+# Workaround for API used by GC_CC
+apr_atomic_xchg32
+*MemoryPool*
+# Workaround for ManagedObject::_tag_pointer used in interpreter
+*ManagedObject*
+# Workaround for C++ functions unspecified in interface used by interpreter
+*class_alloc_new_object*
+*oh_allocate_local_handle*
+*vm_instantiate_cp_string_resolved*
+*vm_new_vector_primitive*
+*vm_new_vector*
+*m2n_get_last_frame*
+*get_current_thread_exception*
+*class_name_get_java_name*
+*exn_create*
+*exn_raised*
+*vm_instanceof*
+*vm_new_vector*
+*exn_raise_object*
+*m2n_set_last_frame*
+*get_jni_native_intf*
+*oh_enumerate_handles*
+*m2n_get_local_handles*
+*m2n_set_local_handles*
+*m2n_get_previous_frame*
+*classloader_find_native*
+*class_name_get_java_name*
+*get_available_stack_size*
+*free_local_object_handles*
+*vm_ti_enumerate_stack_root*
+*class_lookup_method_recursive*
+*jvmti_process_frame_pop_event*
+*check_current_thread_exception*
+*clear_current_thread_exception*
+*jvmti_process_method_exit_event*
+*jvmti_process_single_step_event*
+*jvmti_process_method_entry_event*
+*jvmti_process_field_modification_event*
+*class_throw_linking_error_for_interpreter*
+*jvmti_process_interpreter_breakpoint_event*
+*jvmti_interpreter_exception_event_callback_call*
+*vm_enumerate_root_set_single_thread_not_on_stack*
+*jvmti_interpreter_exception_catch_event_callback_call*
+*NativeObjectHandles*
+*interpreter_table*
+_tag_pointer
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/Runtime_lnx.cpp b/drlvm/modules/vm/src/main/native/vmcore/unix/kernel_classes/Runtime.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/Runtime_lnx.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/unix/kernel_classes/Runtime.cpp
diff --git a/drlvm/modules/vm/src/main/native/vmcore/unix/makefile b/drlvm/modules/vm/src/main/native/vmcore/unix/makefile
new file mode 100644
index 0000000..fc02c22
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/vmcore/unix/makefile
@@ -0,0 +1,165 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'vmcore'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/vm/native/vmcore/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE \
+  -DAPR_DECLARE_EXPORT -DBUILDING_VM
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+WARNFLAGS := # TOFIX
+
+HDKINCLUDES := \
+  $(HY_HDK)/include/platform_lowlevel.h \
+  $(HY_HDK)/include/m2n_internal.h
+
+INCLUDES := \
+  -Iutil/include \
+  -I$(SHAREDSUB)$(HY_ARCH)/lil/include \
+  -I$(SHAREDSUB)$(HY_ARCH)/lil \
+  -I$(SHAREDSUB)$(HY_ARCH)/util/natives \
+  -I$(SHAREDSUB)kernel_classes \
+  -I$(VM_HOME)include -I$(VM_HOME)port/include \
+  -I$(VM_HOME)vmcore/include $(INCLUDES)
+
+BUILDFILES := \
+  class_support/Assertion_Registry.o class_support/C_Interface.o \
+  class_support/Class_File_Loader.o class_support/class_impl.o \
+  class_support/classloader.o class_support/Class.o \
+  class_support/Environment.o class_support/Initialize.o \
+  class_support/inline_info.o class_support/java_type.o \
+  class_support/manifest.o class_support/method.o \
+  class_support/Prepare.o class_support/Resolve.o \
+  class_support/String_Pool.o class_support/type_access.o \
+  class_support/type.o class_support/Verifier_stub.o \
+  compmgr/component_manager_impl.o \
+  exception/exceptions_impl.o exception/exceptions_int.o \
+  exception/exceptions_jit.o exception/exceptions.o \
+  gc/dll_gc.o gc/root_set_enum_common.o gc/stop_the_world_root_set_enum.o \
+  init/finalize.o init/finalizer_thread.o init/parse_arguments.o \
+  init/properties.o init/ref_enqueue_thread.o init/vm_init.o init/vm.o \
+  init/vm_properties.o init/vm_shutdown.o \
+  interpreter/interp_exports.o interpreter/interp_imports.o \
+  jit/bit_vector.o jit/compile.o jit/dll_jit.o jit/dump.o jit/ini.o \
+  jit/jit_runtime_support.o jit/native_overrides.o jit/primitives_support.o \
+  jit/rt_helper_info.o \
+  jni/jni_array.o jni/jni_field.o jni/jni_method.o jni/jni.o jni/jni_utils.o \
+  jvmti/jvmti_break_intf.o jvmti/jvmti_break.o jvmti/jvmti_capability.o \
+  jvmti/jvmti_class.o jvmti/jvmti_dasm.o jvmti/jvmti_enumerate.o \
+  jvmti/jvmti_event.o jvmti/jvmti_extension.o jvmti/jvmti_field.o \
+  jvmti/jvmti_general.o jvmti/jvmti_heap.o jvmti/jvmti_internal.o \
+  jvmti/jvmti_jni.o jvmti/jvmti_locals.o jvmti/jvmti_mem.o \
+  jvmti/jvmti_method.o jvmti/jvmti.o jvmti/jvmti_object.o \
+  jvmti/jvmti_pop_frame.o jvmti/jvmti_property.o jvmti/jvmti_rawmon.o \
+  jvmti/jvmti_roots.o jvmti/jvmti_stack.o jvmti/jvmti_step.o \
+  jvmti/jvmti_tags.o jvmti/jvmti_thread_group.o jvmti/jvmti_thread.o \
+  jvmti/jvmti_timer.o jvmti/jvmti_trace.o jvmti/jvmti_watch.o \
+  kernel_classes/java_lang_EMThreadSupport.o \
+  kernel_classes/java_lang_FinalizerThread.o \
+  kernel_classes/java_lang_reflect_VMField.o \
+  kernel_classes/java_lang_reflect_VMReflection.o \
+  kernel_classes/java_lang_System.o \
+  kernel_classes/java_lang_VMClassRegistry.o \
+  kernel_classes/java_lang_VMExecutionEngine.o \
+  kernel_classes/java_lang_VMMemoryManager.o \
+  kernel_classes/java_lang_VMThreadManager.o \
+  kernel_classes/java_util_concurrent_locks_LockSupport.o \
+  kernel_classes/org_apache_harmony_drlvm_VMHelperFastPath.o \
+  kernel_classes/org_apache_harmony_drlvm_VMHelper.o \
+  kernel_classes/org_apache_harmony_kernel_vm_VM.o \
+  kernel_classes/org_apache_harmony_lang_management_ClassLoadingMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_lang_management_CompilationMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_lang_management_GarbageCollectorMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_lang_management_MemoryManagerMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_lang_management_MemoryMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThread.o \
+  kernel_classes/org_apache_harmony_lang_management_MemoryNotificationThreadShutdown.o \
+  kernel_classes/org_apache_harmony_lang_management_MemoryPoolMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_lang_management_RuntimeMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_lang_management_ThreadMXBeanImpl.o \
+  kernel_classes/org_apache_harmony_util_concurrent_Atomics.o \
+  kernel_classes/org_apache_harmony_vm_VMDebug.o \
+  kernel_classes/org_apache_harmony_vm_VMGenericsAndAnnotations.o \
+  kernel_classes/org_apache_harmony_vm_VMStack.o \
+  kernel_classes/Runtime.o \
+  lil/lil_code_generator.o lil/lil_code_generator_arch.o \
+  lil/lil_code_generator_utils.o lil/lil.o \
+  lil/m2n.o lil/stack_iterator/m2n.o lil/stack_iterator.o \
+  lil/stack_iterator/stack_iterator.o ncai/ncai_break.o ncai/ncai_event.o \
+  ncai/ncai_memory.o ncai/ncai_methods.o ncai/ncai_modules.o \
+  ncai/ncai_modules_os.o ncai/ncai.o ncai/ncai_registers.o \
+  ncai/ncai_signals.o ncai/ncai_stack.o ncai/ncai_step_arch.o \
+  ncai/ncai_step.o ncai/ncai_thread.o ncai/ncai_utils.o \
+  ncai/ncai_utils_os.o \
+  object/object_handles.o object/vm_arrays.o \
+  reflection/annotations.o reflection/reflection.o \
+  stack/native_stack.o stack/stack_trace.o \
+  thread/atomics_common.o thread/lock_manager.o thread/mon_enter_exit.o \
+  thread/object_generic.o thread/thread_dump.o thread/thread_generic.o \
+  thread/thread_helpers.o thread/thread_java_attrs.o \
+  thread/thread_java_basic.o thread/thread_java_interrupt.o \
+  thread/thread_java_iterator.o thread/thread_java_monitors.o \
+  thread/thread_java_park.o thread/thread_java_suspend.o \
+  thread/thread_manager.o thread/thread_ti_instr.o \
+  thread/thread_ti_monitors.o thread/thread_ti_others.o \
+  thread/thread_ti_timing.o thread/verify_stack_enumeration.o \
+  util/bytereader.o util/compile.o util/crash_dump.o \
+  util/crash_dump_os.o util/ini.o util/jarfile_support.o \
+  util/jit_lock_rt_support.o util/jit_runtime_support.o \
+  util/mem_alloc.o util/natives/java_lang_thread.o util/natives_support.o \
+  util/os_wrapper.o util/signals.o util/vm_stats.o \
+  util/vm_strings.o
+
+ifeq ($(HY_ARCH),x86)
+BUILDFILES += util/optimize.o
+endif
+
+MDLLIBFILES += $(LIBPATH)libport.a $(LIBPATH)libencoder.a \
+  $(LIBPATH)libapr-1.a $(LIBPATH)libverifier.a \
+  $(DLLPATH)default/libch$(HY_LINKLIB_SUFFIX) \
+  $(DLLPATH)default/libicuuc$(HY_LINKLIB_SUFFIX)
+
+OSLIBS += $(STDCLIBS)
+
+ifeq ($(HY_LOCAL_ZLIB),true)
+OSLIBS += -lz
+else
+MDLLIBFILES +=   $(DLLPATH)libhyzlib$(HY_LINKLIB_SUFFIX)
+endif
+
+DLLNAME = $(DLLPATH)default/libharmonyvm$(HY_SHLIB_SUFFIX)
+EXPNAME = VMCORE_0.1
+
+AS := $(CXX)
+ASFLAGS := -Wa,--fatal-warnings -c -x assembler-with-cpp -g
+
+include $(HY_HDK)/build/make/rules.mk
+
+$(HY_HDK)/include/%.h: util/include/%.h
+	mkdir -p $(HY_HDK)/include
+	cp -p $< $@
+
+$(HY_HDK)/include/%.h: $(SHAREDSUB)$(HY_ARCH)/lil/%.h
+	mkdir -p $(HY_HDK)/include
+	cp -p $< $@
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_modules_linux.cpp b/drlvm/modules/vm/src/main/native/vmcore/unix/ncai/ncai_modules_os.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_modules_linux.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/unix/ncai/ncai_modules_os.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_utils_linux.cpp b/drlvm/modules/vm/src/main/native/vmcore/unix/ncai/ncai_utils_os.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_utils_linux.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/unix/ncai/ncai_utils_os.cpp
diff --git a/drlvm/vm/vmcore/src/util/linux/crash_dump_os.cpp b/drlvm/modules/vm/src/main/native/vmcore/unix/util/crash_dump_os.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/linux/crash_dump_os.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/unix/util/crash_dump_os.cpp
diff --git a/drlvm/vm/vmcore/src/util/linux/include/platform_lowlevel.h b/drlvm/modules/vm/src/main/native/vmcore/unix/util/include/platform_lowlevel.h
similarity index 96%
rename from drlvm/vm/vmcore/src/util/linux/include/platform_lowlevel.h
rename to drlvm/modules/vm/src/main/native/vmcore/unix/util/include/platform_lowlevel.h
index 9aa1ff9..65a1f5e 100644
--- a/drlvm/vm/vmcore/src/util/linux/include/platform_lowlevel.h
+++ b/drlvm/modules/vm/src/main/native/vmcore/unix/util/include/platform_lowlevel.h
@@ -29,7 +29,7 @@
 #endif
 
 #define __fastcall
-#if defined(_IPF_) || defined(_EM64T_)
+#if defined(_IPF_) || defined(HYX86_64)
 #define __stdcall
 #else
 #define __stdcall  __attribute__ ((__stdcall__))
diff --git a/drlvm/vm/vmcore/src/util/linux/include/vm_process.h b/drlvm/modules/vm/src/main/native/vmcore/unix/util/include/vm_process.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/linux/include/vm_process.h
rename to drlvm/modules/vm/src/main/native/vmcore/unix/util/include/vm_process.h
diff --git a/drlvm/vm/vmcore/src/util/linux/os_wrapper.cpp b/drlvm/modules/vm/src/main/native/vmcore/unix/util/os_wrapper.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/linux/os_wrapper.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/unix/util/os_wrapper.cpp
diff --git a/drlvm/vm/vmcore/src/kernel_classes/native/Runtime_win.cpp b/drlvm/modules/vm/src/main/native/vmcore/windows/kernel_classes/Runtime.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/kernel_classes/native/Runtime_win.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/windows/kernel_classes/Runtime.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_modules_win.cpp b/drlvm/modules/vm/src/main/native/vmcore/windows/ncai/ncai_modules_os.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_modules_win.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/windows/ncai/ncai_modules_os.cpp
diff --git a/drlvm/vm/vmcore/src/ncai/utils/ncai_utils_win.cpp b/drlvm/modules/vm/src/main/native/vmcore/windows/ncai/ncai_utils_os.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/ncai/utils/ncai_utils_win.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/windows/ncai/ncai_utils_os.cpp
diff --git a/drlvm/vm/vmcore/src/util/win/crash_dump_os.cpp b/drlvm/modules/vm/src/main/native/vmcore/windows/util/crash_dump_os.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/win/crash_dump_os.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/windows/util/crash_dump_os.cpp
diff --git a/drlvm/vm/vmcore/src/util/win/include/platform_lowlevel.h b/drlvm/modules/vm/src/main/native/vmcore/windows/util/include/platform_lowlevel.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/win/include/platform_lowlevel.h
rename to drlvm/modules/vm/src/main/native/vmcore/windows/util/include/platform_lowlevel.h
diff --git a/drlvm/vm/vmcore/src/util/win/include/vm_process.h b/drlvm/modules/vm/src/main/native/vmcore/windows/util/include/vm_process.h
similarity index 100%
rename from drlvm/vm/vmcore/src/util/win/include/vm_process.h
rename to drlvm/modules/vm/src/main/native/vmcore/windows/util/include/vm_process.h
diff --git a/drlvm/vm/vmcore/src/util/win/ipf/nt_exception_filter.cpp b/drlvm/modules/vm/src/main/native/vmcore/windows/util/ipf/nt_exception_filter.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/win/ipf/nt_exception_filter.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/windows/util/ipf/nt_exception_filter.cpp
diff --git a/drlvm/vm/vmcore/src/util/win/nt_platform_utils.cpp b/drlvm/modules/vm/src/main/native/vmcore/windows/util/nt_platform_utils.cpp
similarity index 100%
rename from drlvm/vm/vmcore/src/util/win/nt_platform_utils.cpp
rename to drlvm/modules/vm/src/main/native/vmcore/windows/util/nt_platform_utils.cpp
diff --git a/drlvm/vm/vmi/src/j9vmls.cpp b/drlvm/modules/vm/src/main/native/vmi/shared/j9vmls.cpp
similarity index 100%
rename from drlvm/vm/vmi/src/j9vmls.cpp
rename to drlvm/modules/vm/src/main/native/vmi/shared/j9vmls.cpp
diff --git a/drlvm/vm/vmi/src/vmi.cpp b/drlvm/modules/vm/src/main/native/vmi/shared/vmi.cpp
similarity index 100%
rename from drlvm/vm/vmi/src/vmi.cpp
rename to drlvm/modules/vm/src/main/native/vmi/shared/vmi.cpp
diff --git a/drlvm/modules/vm/src/main/native/vmi/unix/exports.txt b/drlvm/modules/vm/src/main/native/vmi/unix/exports.txt
new file mode 100644
index 0000000..375950d
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/vmi/unix/exports.txt
@@ -0,0 +1,2 @@
+VMI_GetVMIFromJavaVM
+VMI_GetVMIFromJNIEnv
diff --git a/drlvm/modules/vm/src/main/native/vmi/unix/makefile b/drlvm/modules/vm/src/main/native/vmi/unix/makefile
new file mode 100644
index 0000000..e87a7b4
--- /dev/null
+++ b/drlvm/modules/vm/src/main/native/vmi/unix/makefile
@@ -0,0 +1,38 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+#
+# Makefile for module 'vmi'
+#
+
+HY_BIN=$(HY_TARGET)/build/drlvm/vm/native/vmi/
+include $(HY_TARGET)/hdk/build/make/defines.mk
+VM_HOME=../../../../../../../vm/
+
+DEFINES += \
+  -DREFS_USE_UNCOMPRESSED -DPLATFORM_POSIX \
+  -D__SMP__ -DLINUX_TLS_OPT -D_LARGEFILE64_SOURCE
+
+OPT += -fexceptions
+CXXFLAGS += -Wno-deprecated
+
+INCLUDES := -I$(VM_HOME)include -I$(VM_HOME)port/include \
+            -I$(VM_HOME)vmcore/include $(INCLUDES)
+
+BUILDFILES := j9vmls.o vmi.o
+DLLNAME = $(DLLPATH)default/libvmi$(HY_SHLIB_SUFFIX)
+EXPNAME = VMI_0.1
+
+include $(HY_HDK)/build/make/rules.mk
diff --git a/drlvm/vm/include/open/hycomp.h b/drlvm/vm/include/open/hycomp.h
index 3487e07..efd5981 100644
--- a/drlvm/vm/include/open/hycomp.h
+++ b/drlvm/vm/include/open/hycomp.h
@@ -78,7 +78,7 @@
  * </ul>
  */
 #if defined(LINUX) || defined(FREEBSD)
-#if defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86_64) || defined(_IPF_)
 typedef long int I_64;
 typedef unsigned long int U_64;
 #else
diff --git a/drlvm/vm/include/open/hythread.h b/drlvm/vm/include/open/hythread.h
index 9f25b6d..e0a306f 100644
--- a/drlvm/vm/include/open/hythread.h
+++ b/drlvm/vm/include/open/hythread.h
@@ -479,7 +479,7 @@
 
 #if defined (_WIN32)
 #   define HYTHREAD_FAST_TLS_ATTRIBUTE
-#   if defined(_IA32_)
+#   if defined(HYX86)
 #       define HYTHREAD_FAST_TLS (1)
         // FIXME suggested to drop FS14_TLS_USE in favor of common HYTHREAD_FAST_TLS
 #       define FS14_TLS_USE
@@ -489,7 +489,7 @@
 #elif defined(__linux__)
     // some kind of nix - the threads internals are known for IA32/Intel64
     // kernels, will use slow way on other HWs (TODO: add IPF support)
-#   if defined(_IA32_) || defined(_EM64T_)
+#   if defined(HYX86) || defined(HYX86_64)
 #       define HYTHREAD_FAST_TLS (1)
 #       define HYTHREAD_FAST_TLS_ATTRIBUTE __attribute__((tls_model("initial-exec")))
 #   endif
diff --git a/drlvm/vm/include/open/platform_types.h b/drlvm/vm/include/open/platform_types.h
index c603b75..88959ea 100644
--- a/drlvm/vm/include/open/platform_types.h
+++ b/drlvm/vm/include/open/platform_types.h
@@ -164,7 +164,7 @@
 
 #else  // !_IPF_
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 
 struct Registers {
     uint64 rsp;
@@ -198,7 +198,7 @@
 #endif
 }; //Registers
 
-#else // ! _EM64T_
+#else // ! HYX86_64
 
 struct Registers {
     U_32 eax;
@@ -221,7 +221,7 @@
 #endif
 }; //Registers
 
-#endif // _EM64T_
+#endif // HYX86_64
 
 #endif //!_IPF_
 
diff --git a/drlvm/vm/include/open/rt_types.h b/drlvm/vm/include/open/rt_types.h
index a57670f..c008762 100644
--- a/drlvm/vm/include/open/rt_types.h
+++ b/drlvm/vm/include/open/rt_types.h
@@ -172,7 +172,7 @@
         uint64 ar_lc;
     } JitFrameContext; //JitFrameContext
 
-#elif defined _EM64T_
+#elif defined HYX86_64
 
     typedef
     struct JitFrameContext {
@@ -204,7 +204,7 @@
         Boolean is_ip_past;
     } JitFrameContext;
 
-#else // "_IA32_"
+#else // "HYX86"
 
     typedef
     struct JitFrameContext {
@@ -228,7 +228,7 @@
         Boolean is_ip_past;
     } JitFrameContext;
 
-#endif // "_IA32_"
+#endif // "HYX86"
 
     // end Frame Contexts for JITs
     ///////////////////////////////////////////////////////
diff --git a/drlvm/vm/port/include/port_atomic.h b/drlvm/vm/port/include/port_atomic.h
index e82eaad..e528d18 100644
--- a/drlvm/vm/port/include/port_atomic.h
+++ b/drlvm/vm/port/include/port_atomic.h
@@ -146,7 +146,7 @@
     return InterlockedCompareExchangePointer((volatile PVOID *) data, value, (PVOID) comp);
 }
 
-#elif defined(_EM64T_) && defined (_WIN64)
+#elif defined(HYX86_64) && defined (_WIN64)
 
 #pragma intrinsic(_InterlockedCompareExchange16)
 #pragma intrinsic(_InterlockedCompareExchange64)
@@ -173,7 +173,7 @@
 #elif defined (PLATFORM_POSIX)  
 
 PORT_INLINE U_8 port_atomic_cas8(volatile U_8 * data , U_8 value, U_8 comp) {
-#if defined(_IA32_) || defined(_EM64T_)
+#if defined(HYX86) || defined(HYX86_64)
     __asm__ __volatile__(
         "lock cmpxchgb %1, (%2)"
         :"=a"(comp)
@@ -187,7 +187,7 @@
 
 PORT_INLINE uint16 port_atomic_cas16(volatile uint16 * data , uint16 value, uint16 comp) {
     uint16 ret;
-#if defined(_IA32_) || defined(_EM64T_)
+#if defined(HYX86) || defined(HYX86_64)
     __asm__ __volatile__(
         "lock cmpxchgw %w1, %2"
         :"=a"(ret)
@@ -201,7 +201,7 @@
 }
 
 PORT_INLINE uint64 port_atomic_cas64(volatile uint64 * data , uint64 value, uint64 comp) {
-#if defined(_IA32_)
+#if defined(HYX86)
     __asm__ __volatile__(
         "push %%ebx;\n\t"
         "lea %0, %%esi;\n\t"
@@ -221,7 +221,7 @@
         :"%eax", "%ecx", "%edx", "%esi", "memory" /* clobbers */
     );
     return comp;
-#elif defined(_EM64T_) // defined(_IA32_)
+#elif defined(HYX86_64) // defined(HYX86)
     __asm__ __volatile__(
         "lock cmpxchgq %1, (%2)"
         :"=a"(comp) /* outputs */
@@ -234,7 +234,7 @@
 }
 
 PORT_INLINE void * port_atomic_casptr(volatile void ** data, void * value, const void * comp) {
-#if defined(_IA32_)
+#if defined(HYX86)
     U_32 Exchange = (U_32)value;
     U_32 Comperand = (U_32)comp;
     __asm__ __volatile__(
@@ -244,7 +244,7 @@
         );
     return (void*)Comperand;
 
-#elif defined(_EM64T_) // defined(_IA32_)
+#elif defined(HYX86_64) // defined(HYX86)
     uint64 Exchange = (uint64)value;
     uint64 Comperand = (uint64)comp;
     __asm__(
@@ -254,7 +254,7 @@
         );
     return (void *)Comperand;
 
-#else // defined(_EM64T_)
+#else // defined(HYX86_64)
     ABORT("Not supported");
 #endif
 }
diff --git a/drlvm/vm/port/include/port_barriers.h b/drlvm/vm/port/include/port_barriers.h
index 3da5201..fcb4d2e 100644
--- a/drlvm/vm/port/include/port_barriers.h
+++ b/drlvm/vm/port/include/port_barriers.h
@@ -59,7 +59,7 @@
 #if !defined(_IPF_)
 PORT_INLINE void port_rw_barrier(void)
 {
-#if defined(_EM64T_)
+#if defined(HYX86_64)
     asm volatile ("mfence" : : : "memory");
 #else /* General x86 case */
     /*
@@ -113,7 +113,7 @@
 
 PORT_INLINE void port_rw_barrier(void)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     /* if x86_64/x64/EM64T, then use an mfence to flush memory caches */
     _mm_mfence();
 #else
diff --git a/drlvm/vm/port/include/port_general.h b/drlvm/vm/port/include/port_general.h
index 1fbac3c..da8d6bb 100644
--- a/drlvm/vm/port/include/port_general.h
+++ b/drlvm/vm/port/include/port_general.h
@@ -57,15 +57,15 @@
 
 #endif /* __cplusplus */
 
-#ifdef _IA32_
+#ifdef HYX86
 #ifdef WIN32
 #define PORT_CDECL __cdecl
 #else /* !WIN32 */
 #define PORT_CDECL __attribute__ ((cdecl))
 #endif /* WIN32 */
-#else /* _IA32_ */
+#else /* HYX86 */
 #define PORT_CDECL
-#endif /* _IA32_ */
+#endif /* HYX86 */
 
 
 #endif /* _PORT_GENERAL_H_ */
diff --git a/drlvm/vm/port/src/disasm/linux/disasm.c_notused b/drlvm/vm/port/src/disasm/linux/disasm.c_notused
index 5724f5c..b63f832 100644
--- a/drlvm/vm/port/src/disasm/linux/disasm.c_notused
+++ b/drlvm/vm/port/src/disasm/linux/disasm.c_notused
@@ -31,14 +31,14 @@
 #include <apr_portable.h>
 
 // this is mostly imperical data 
-#if defined(_IA32_)
+#if defined(HYX86)
     #define ADDR_SIZE       16
     #define MNEMONIC_SIZE   15
     #define BYTES_PER_LINE  2
     #define BYTES_TOTAL     100
     //BYTES_SIZE = BYTES_PER_LINE * 3
     #define BYTES_SIZE      6
-#elif defined(_EM64T_)
+#elif defined(HYX86_64)
     #define ADDR_SIZE       24
     #define MNEMONIC_SIZE   20
     #define BYTES_PER_LINE  2
@@ -82,7 +82,7 @@
 static init_disassemble_info_t bfd_init_info = NULL;
 static disassemble_init_for_target_t bfd_init_target = NULL;
 
-#if defined(_IA32_) || defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86) || defined(HYX86_64) || defined(_IPF_)
 
 /*    Memory reading routines    */
 
@@ -90,9 +90,9 @@
                               bfd_byte * buffer,
                               unsigned int n,
                               struct disassemble_info * info) {
-#if defined(_IA32_)
+#if defined(HYX86)
     memcpy(buffer, (void *)(apr_uint32_t)src, n);
-#elif defined(_EM64T_) || defined(_IPF_)
+#elif defined(HYX86_64) || defined(_IPF_)
     memcpy(buffer, (void *)src, n);
 #endif
     return 0;
@@ -101,9 +101,9 @@
 /*    Address printing routines    */
 
 static void disasm_print_adress_default(bfd_vma memaddr, struct disassemble_info * info) {
-#if defined(_IA32_)
+#if defined(HYX86)
     info->fprintf_func(info->stream, "0x%08X", (apr_int32_t)memaddr);
-#elif defined(_EM64T_) || defined(_IPF_)
+#elif defined(HYX86_64) || defined(_IPF_)
     apr_uint64_t addr = (apr_uint64_t)memaddr;
     apr_uint32_t hi = (apr_uint32_t)((addr >> 32) & UINT_MAX);
     apr_uint32_t lo = (apr_uint32_t)(addr & UINT_MAX);
@@ -171,7 +171,7 @@
     // iterate over the code buffer
     while (len > 0) {
         int bytes_read = 1;
-#if defined(_IA32_)
+#if defined(HYX86)
         // print instruction address
         if (disassembler->port_info.print_addr) {
             disassembler->bfd_info.print_address_func((bfd_vma)(apr_uint32_t)code,
@@ -182,7 +182,7 @@
         if (disassembler->port_info.print_mnemonic) {
             bytes_read = bfd_decoder((bfd_vma)(apr_uint32_t)code, &disassembler->bfd_info);
         }
-#elif defined(_EM64T_) || defined(_IPF_)
+#elif defined(HYX86_64) || defined(_IPF_)
         // print instruction address
         if (disassembler->port_info.print_addr) {
             disassembler->bfd_info.print_address_func((bfd_vma)code,
@@ -215,18 +215,18 @@
     }
 }
 
-#endif // defined(_IA32_) || defined(_EM64T_) || defined(_IPF_)
+#endif // defined(HYX86) || defined(HYX86_64) || defined(_IPF_)
 
 /*    Public Interface    */
 
 APR_DECLARE(apr_status_t) port_disasm_initialize() {
-#if defined(_IA32_) || defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86) || defined(HYX86_64) || defined(_IPF_)
     static apr_status_t stat = APR_EINIT;
     const char * BFD_LIB_NAME = "libbfd.so";
     const char * OPCODES_LIB_NAME = "libopcodes.so";
     const char * BFD_INIT_INFO_NAME = "init_disassemble_info";
     const char * BFD_INIT_TARGET_NAME = "disassemble_init_for_target";
-#if defined (_IA32_) || defined(_EM64T_)
+#if defined (HYX86) || defined(HYX86_64)
     const char * BFD_PRINT_INSN_NAME = "print_insn_i386_intel";
 #elif defined(_IPF_)
     const char * BFD_PRINT_INSN_NAME = "print_insn_ia64";
@@ -306,7 +306,7 @@
 
 APR_DECLARE(apr_status_t) port_disassembler_create(port_disassembler_t ** disassembler,
                                                    apr_pool_t * pool) {
-#if defined(_IA32_) || defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86) || defined(HYX86_64) || defined(_IPF_)
     apr_status_t status;
     
     if ((status = port_disasm_initialize()) != APR_SUCCESS) {
@@ -326,10 +326,10 @@
     (*disassembler)->bfd_info.read_memory_func = disasm_read_memory;
     (*disassembler)->bfd_info.print_address_func = disasm_print_adress_default;
 
-#if defined(_IA32_)
+#if defined(HYX86)
     (*disassembler)->bfd_info.arch = bfd_arch_i386;
     (*disassembler)->bfd_info.mach = bfd_mach_i386_i386_intel_syntax;
-#elif defined(_EM64T_)
+#elif defined(HYX86_64)
     (*disassembler)->bfd_info.arch = bfd_arch_i386;
     (*disassembler)->bfd_info.mach = bfd_mach_x86_64_intel_syntax;
 #elif defined(_IPF_)
@@ -357,7 +357,7 @@
 APR_DECLARE(apr_status_t) port_disasm_set_info(port_disassembler_t * disassembler,
                                                const port_disasm_info_t new_info,
                                                port_disasm_info_t * old_info) {
-#if defined(_IA32_) || defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86) || defined(HYX86_64) || defined(_IPF_)
     if (old_info != NULL) {
         *old_info = disassembler->port_info;
     }
@@ -382,7 +382,7 @@
                                       const char * code, 
                                       unsigned int len,
                                       char ** disasm_code) {
-#if defined(_IA32_) || defined(_EM64T_) || defined(_IPF_)    
+#if defined(HYX86) || defined(HYX86_64) || defined(_IPF_)    
     // check if nothing should be printed
     if (disassembler->line_size == 0) {
         *disasm_code = NULL;
@@ -419,7 +419,7 @@
                                               const char * code,
                                               unsigned int len,
                                               apr_file_t * thefile) {
-#if defined(_IA32_) || defined(_EM64T_) || defined(_IPF_)
+#if defined(HYX86) || defined(HYX86_64) || defined(_IPF_)
     // check if nothing should be printed
     if (disassembler->line_size == 0) {
         return APR_SUCCESS;
diff --git a/drlvm/vm/port/src/disasm/win/disasm.c b/drlvm/vm/port/src/disasm/win/disasm.c
index 1f99650..afd566e 100644
--- a/drlvm/vm/port/src/disasm/win/disasm.c
+++ b/drlvm/vm/port/src/disasm/win/disasm.c
@@ -30,7 +30,7 @@
 #include "port_disasm.h"
 
 // this is mostly imperical data 
-#if defined(_IA32_)
+#if defined(HYX86)
     #define ADDR_SIZE       16
     #define MNEMONIC_SIZE   15
     #define BYTES_PER_LINE  2
@@ -60,7 +60,7 @@
     apr_size_t num_bytes_used;
 };
 
-#if defined(_IA32_)
+#if defined(HYX86)
 
 /*    General printing routines    */
 
@@ -148,12 +148,12 @@
 #endif
     }
 }
-#endif // defined(_IA32_)
+#endif // defined(HYX86)
 
 /*    Public Interface    */
 
 APR_DECLARE(apr_status_t) port_disasm_initialize() {
-#if defined(_IA32_)
+#if defined(HYX86)
     return APR_SUCCESS;
 #else
     return APR_ENOTIMPL;
@@ -162,7 +162,7 @@
 
 APR_DECLARE(apr_status_t) port_disassembler_create(port_disassembler_t ** disassembler,
                                                    apr_pool_t * pool) {
-#if defined(_IA32_)
+#if defined(HYX86)
     apr_status_t status;
     port_disasm_info_t info = {1, 0, 1};
     
@@ -193,7 +193,7 @@
 APR_DECLARE(apr_status_t) port_disasm_set_info(port_disassembler_t * disassembler,
                                                const port_disasm_info_t new_info,
                                                port_disasm_info_t * old_info) {
-#if defined(_IA32_)
+#if defined(HYX86)
     if (old_info != NULL) {
         *old_info = disassembler->port_info;
     }
@@ -218,7 +218,7 @@
                                       const char * code, 
                                       unsigned int len,
                                       char ** disasm_code) {
-#if defined(_IA32_)    
+#if defined(HYX86)    
     // check if nothing should be printed
     if (disassembler->line_size == 0) {
         *disasm_code = NULL;
@@ -255,7 +255,7 @@
                                               const char * code,
                                               unsigned int len,
                                               apr_file_t * thefile) {
-#if defined(_IA32_)
+#if defined(HYX86)
     // check if nothing should be printed
     if (disassembler->line_size == 0) {
         return APR_SUCCESS;
diff --git a/drlvm/vm/port/src/misc/win/sysinfo.c b/drlvm/vm/port/src/misc/win/sysinfo.c
index 7d2fdc3..9afcbba 100644
--- a/drlvm/vm/port/src/misc/win/sysinfo.c
+++ b/drlvm/vm/port/src/misc/win/sysinfo.c
@@ -99,7 +99,7 @@
 APR_DECLARE(const char *) port_CPU_architecture(void){
 #if defined(_IPF_)
 	return "ia64";
-#elif defined (_EM64T_)
+#elif defined (HYX86_64)
     return "x86_64";
 #else
     return "x86";
diff --git a/drlvm/vm/port/src/thread/win/port_thread_tls_os.c b/drlvm/vm/port/src/thread/win/port_thread_tls_os.c
index 2cb7f0a..5f889ed 100644
--- a/drlvm/vm/port/src/thread/win/port_thread_tls_os.c
+++ b/drlvm/vm/port/src/thread/win/port_thread_tls_os.c
@@ -30,7 +30,7 @@
 
 #define MEM_PROTECT_SIZE 0x100
 
-#ifdef _EM64T_
+#ifdef HYX86_64
 #define GUARD_STACK_SIZE (64*1024)
 #else /* IA-32 */
 #define GUARD_STACK_SIZE (find_guard_page_size())
diff --git a/drlvm/vm/port/src/thread/win/thread_os.c b/drlvm/vm/port/src/thread/win/thread_os.c
index 0129204..e332fc6 100644
--- a/drlvm/vm/port/src/thread/win/thread_os.c
+++ b/drlvm/vm/port/src/thread/win/thread_os.c
@@ -145,7 +145,7 @@
         (!set && !tlsdata->guard_page_set))
         return 0; // Already in needed state
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     /* Windows x86_64 protects both guard page and guard stack area
        specified by SetThreadStackGuarantee() with PAGE_GUARD flag */
     guard_addr = tlsdata->guard_stack_addr;
@@ -230,14 +230,14 @@
 
 static int setup_stack(port_tls_data_t* tlsdata)
 {
-#ifdef _EM64T_
+#ifdef HYX86_64
     ULONG guard_stack_size_param;
 #endif
 
     if (!port_shared_data)
         return -1;
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     /* this code in future should be used on both platforms x86-32 and x86-64 */
     guard_stack_size_param = (ULONG)PSD->guard_stack_size;
 
diff --git a/drlvm/vm/vmcore/include/jit_runtime_support_common.h b/drlvm/vm/vmcore/include/jit_runtime_support_common.h
index a01dd4a..8e7180f 100644
--- a/drlvm/vm/vmcore/include/jit_runtime_support_common.h
+++ b/drlvm/vm/vmcore/include/jit_runtime_support_common.h
@@ -45,7 +45,7 @@
 #define STACK_ALIGN16         (0x00000010)
 
 
-#ifdef _EM64T_
+#ifdef HYX86_64
     #define MANAGED_STACK_ALIGNMENT STACK_ALIGN_HALF16
 #else
     // Use 16-byte stack pointer alignment to avoid perf penalty on SSE usage in JITted code. 
diff --git a/drlvm/vm/vmcore/include/jvmti_dasm.h b/drlvm/vm/vmcore/include/jvmti_dasm.h
index a7f6f5a..636afdf 100644
--- a/drlvm/vm/vmcore/include/jvmti_dasm.h
+++ b/drlvm/vm/vmcore/include/jvmti_dasm.h
@@ -50,10 +50,10 @@
      */
     enum Register {
         DISASM_REG_NONE,
-#ifdef _IA32_
+#ifdef HYX86
         DISASM_REG_EAX, DISASM_REG_EBX, DISASM_REG_ECX, DISASM_REG_EDX,
         DISASM_REG_ESI, DISASM_REG_EDI, DISASM_REG_EBP, DISASM_REG_ESP
-#elif defined _EM64T_
+#elif defined HYX86_64
         DISASM_REG_RAX, DISASM_REG_RBX, DISASM_REG_RCX, DISASM_REG_RDX,
         DISASM_REG_RSI, DISASM_REG_RDI, DISASM_REG_RSP, DISASM_REG_RBP,
         DISASM_REG_R8 , DISASM_REG_R9 , DISASM_REG_R10, DISASM_REG_R11,
diff --git a/drlvm/vm/vmcore/include/thread_helpers.h b/drlvm/vm/vmcore/include/thread_helpers.h
index 61e6144..42ac0c0 100644
--- a/drlvm/vm/vmcore/include/thread_helpers.h
+++ b/drlvm/vm/vmcore/include/thread_helpers.h
@@ -36,7 +36,7 @@
 #endif /* __cplusplus */
 fast_tls_func* get_tls_helper(hythread_tls_key_t key);
 
-#if (defined _IA32_) || (defined _EM64T_)
+#if (defined HYX86) || (defined HYX86_64)
 
 #include "encoder.h"
 
@@ -53,6 +53,6 @@
 }
 #endif
 
-#endif /* (defined _IA32_) || (defined _EM64T_) */
+#endif /* (defined HYX86) || (defined HYX86_64) */
 
 #endif  /* OPEN_THREAD_NATIVE_H */
diff --git a/drlvm/vm/vmcore/include/version.h b/drlvm/vm/vmcore/include/version.h
index 819f601..f994aff 100644
--- a/drlvm/vm/vmcore/include/version.h
+++ b/drlvm/vm/vmcore/include/version.h
@@ -49,7 +49,7 @@
 
 #if defined(_IPF_)
 #define VERSION_ARCH "ipf"
-#elif defined(_EM64T_)
+#elif defined(HYX86_64)
 #define VERSION_ARCH "em64t"
 #else
 #define VERSION_ARCH "ia32"
