Merge changes from trunk@1027413.

git-svn-id: https://svn.apache.org/repos/asf/harmony/enhanced/java/branches/mrh@1027522 13f79535-47bb-0310-9956-ffa450edef68
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"