* src/vm/jit/jit.c: Moved to .cpp.
[cacao.git] / src / vm / builtintable.inc
index 8e0f886f6f2ff2e65fb57f5382f93185cf802500..3280f023522877f413d8ca5af066965e98830743 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/builtintable.inc - tables of builtin functions
 
-   Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
-   R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
-   C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
-   Institut f. Computersprachen - TU Wien
+   Copyright (C) 1996-2005, 2006, 2007, 2008
+   CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.
-
-   Contact: cacao@complang.tuwien.ac.at
-
-   Authors: Christian Thalinger
-
-   Changes:
-
-   $Id: builtintable.inc 4130 2006-01-10 21:58:12Z twisti $
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
 
 */
 
 
 #include "config.h"
+
 #include "arch.h"
+
+#include "threads/lock-common.h"
+
 #include "vm/builtin.h"
-#include "vm/jit/jit.h"
+
+#include "vm/jit/jit.hpp"
 
 
 /* internal and not automatically replaced functions **************************/
@@ -46,30 +41,54 @@ static builtintable_entry builtintable_internal[] = {
 #if defined(__ALPHA__) || defined(DISABLE_GC)
        {
                ICMD_F2L,
+               0,
                BUILTIN_f2l,
-               "(F)J",
+               NULL,
+               NULL,
                "f2l",
+               "(F)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_D2L,
+               0,
                BUILTIN_d2l,
-               "(D)J",
+               NULL,
+               NULL,
                "d2l",
+               "(D)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_F2I,
+               0,
                BUILTIN_f2i,
-               "(F)I",
+               NULL,
+               NULL,
                "f2i",
+               "(F)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_D2I,
+               0,
                BUILTIN_d2i,
-               "(D)I",
+               NULL,
+               NULL,
                "d2i",
+               "(D)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -77,16 +96,28 @@ static builtintable_entry builtintable_internal[] = {
 #if !SUPPORT_DIVISION || defined(DISABLE_GC)
        {
                ICMD_IDIV,
+               0,
                BUILTIN_idiv,
-               "(II)I",
+               NULL,
+               NULL,
                "idiv",
+               "(II)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_IREM,
+               0,
                BUILTIN_irem,
-               "(II)I",
+               NULL,
+               NULL,
                "irem",
+               "(II)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -94,32 +125,56 @@ static builtintable_entry builtintable_internal[] = {
 #if !(SUPPORT_DIVISION && SUPPORT_LONG && SUPPORT_LONG_DIV) || defined(DISABLE_GC)
        {
                ICMD_LDIV,
+               0,
                BUILTIN_ldiv,
-               "(JJ)J",
+               NULL,
+               NULL,
                "ldiv",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_LREM,
+               0,
                BUILTIN_lrem,
-               "(JJ)J",
+               NULL,
+               NULL,
                "lrem",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
 
        {
                ICMD_FREM,
+               0,
                BUILTIN_frem,
-               "(FF)F",
+               NULL,
+               NULL,
                "frem",
+               "(FF)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_DREM,
+               0,
                BUILTIN_drem,
-               "(DD)D",
+               NULL,
+               NULL,
                "drem",
+               "(DD)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 
@@ -128,121 +183,277 @@ static builtintable_entry builtintable_internal[] = {
 
        {
                ICMD_NEW,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_new,
-               "(Ljava/lang/Class;)Ljava/lang/Object;",
+               NULL,
+               NULL,
                "new",
+               "(Ljava/lang/Class;)Ljava/lang/Object;",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+
+#if defined(ENABLE_TLH)
+       {
+               ICMD_NEW,
+               BUILTINTABLE_FLAG_STUB,
+               BUILTIN_tlh_new,
+               NULL,
+               NULL,
+               "tlh_new",
+               "(Ljava/lang/Class;)Ljava/lang/Object;",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+#endif
+
+#if defined(ENABLE_ESCAPE_REASON)
+       {
+               ICMD_NEW,
+               BUILTINTABLE_FLAG_STUB,
+               BUILTIN_escape_reason_new,
+               NULL,
+               NULL,
+               "escape_reason_new",
+               "(Ljava/lang/Class;)Ljava/lang/Object;",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+#endif
+
+       {
+               ICMD_NEW,
+               0,
+               BUILTIN_FAST_new,
+               NULL,
+               NULL,
+               "fast-new",
+               "(Ljava/lang/Class;)Ljava/lang/Object;",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_ANEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray,
-        "(ILjava/lang/Class;)[Ljava/lang/Object;",
+               NULL,
+               NULL,
                "newarray",
+               "(ILjava/lang/Class;)[Ljava/lang/Object;",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_boolean,
-               "(I)[Z",
+               NULL,
+               NULL,
                "newarray_boolean",
+               "(I)[Z",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_byte,
-               "(I)[B",
+               NULL,
+               NULL,
                "newarray_byte",
+               "(I)[B",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_char,
-               "(I)[C",
+               NULL,
+               NULL,
                "newarray_char",
+               "(I)[C",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_short,
-               "(I)[S",
+               NULL,
+               NULL,
                "newarray_short",
+               "(I)[S",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_int,
-               "(I)[I",
+               NULL,
+               NULL,
                "newarray_int",
+               "(I)[I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_long,
-               "(I)[J",
+               NULL,
+               NULL,
                "newarray_long",
+               "(I)[J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_float,
-               "(I)[F",
+               NULL,
+               NULL,
                "newarray_float",
+               "(I)[F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_NEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
                BUILTIN_newarray_double,
-               "(I)[D",
+               NULL,
+               NULL,
                "newarray_double",
+               "(I)[D",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+       {
+               ICMD_MULTIANEWARRAY,
+               BUILTINTABLE_FLAG_STUB,
+               BUILTIN_multianewarray,
+               NULL,
+               NULL,
+               "multianewarray",
+               /* XXX it should be: "(ILjava/lang/Class;[I)[Ljava/lang/Object;", */
+               "(ILjava/lang/Class;I)[Ljava/lang/Object;",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_CHECKCAST,
+               0,
                BUILTIN_arraycheckcast,
-               "([Ljava/lang/Object;[Ljava/lang/Object;)[Ljava/lang/Object;",
+               NULL,
+               NULL,
                "arraycheckcast",
+               "([Ljava/lang/Object;[Ljava/lang/Object;)[Ljava/lang/Object;",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_INSTANCEOF,
+               0,
                BUILTIN_arrayinstanceof,
-               "([Ljava/lang/Object;[Ljava/lang/Object;)I",
+               NULL,
+               NULL,
                "arrayinstanceof",
+               "([Ljava/lang/Object;[Ljava/lang/Object;)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_AASTORE,
-               BUILTIN_canstore,
+               0,
+               BUILTIN_FAST_canstore,
+               NULL,
+               NULL,
+               "fast-canstore",
                "([Ljava/lang/Object;Ljava/lang/Object;)I",
-               "canstore",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 
-#if defined(USE_THREADS)
+#if defined(ENABLE_THREADS)
        {
                ICMD_MONITORENTER,
-               BUILTIN_monitorenter,
-               "(Ljava/lang/Object;)V",
+               BUILTINTABLE_FLAG_STUB,
+               LOCK_monitor_enter,
+               NULL,
+               NULL,
                "monitorenter",
+               "(Ljava/lang/Object;)V",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_MONITOREXIT,
-               BUILTIN_monitorexit,
-               "(Ljava/lang/Object;)V",
+               BUILTINTABLE_FLAG_STUB,
+               LOCK_monitor_exit,
+               NULL,
+               NULL,
                "monitorexit",
+               "(Ljava/lang/Object;)V",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
 
 
-       /* assembler code patching functions **************************************/
+       /* stop entry */
 
        {
-               ICMD_CHECKCAST,
-               PATCHER_builtin_arraycheckcast,
-               "([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Object;",
-               "arraycheckcast (NOT RESOLVED)",
+               255,
+               0,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 };
@@ -255,9 +466,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_LONG && SUPPORT_LONG_CMP)
        {
                ICMD_LCMP,
+               0,
                BUILTIN_lcmp,
-               "(JJ)I",
+               NULL,
+               NULL,
                "lcmp",
+               "(JJ)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -265,23 +482,41 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_LONG && SUPPORT_LONG_LOGICAL)
        {
                ICMD_LAND,
+               0,
                BUILTIN_land,
-               "(JJ)J",
+               NULL,
+               NULL,
                "land",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_LOR,
+               0,
                BUILTIN_lor,
-               "(JJ)J",
+               NULL,
+               NULL,
                "lor",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_LXOR,
+               0,
                BUILTIN_lxor,
-               "(JJ)J",
+               NULL,
+               NULL,
                "lxor",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif /* !(SUPPORT_LONG && SUPPORT_LONG_LOGICAL) */
@@ -289,23 +524,41 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_LONG && SUPPORT_LONG_SHIFT)
        {
                ICMD_LSHL,
+               0,
                BUILTIN_lshl,
-               "(JI)J",
+               NULL,
+               NULL,
                "lshl",
+               "(JI)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_LSHR,
+               0,
                BUILTIN_lshr,
-               "(JI)J",
+               NULL,
+               NULL,
                "lshr",
+               "(JI)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_LUSHR,
+               0,
                BUILTIN_lushr,
-               "(JI)J",
+               NULL,
+               NULL,
                "lushr",
+               "(JI)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif /* !(SUPPORT_LONG && SUPPORT_LONG_SHIFT) */
@@ -313,23 +566,41 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_LONG && SUPPORT_LONG_ADD)
        {
                ICMD_LADD,
+               0,
                BUILTIN_ladd,
-               "(JJ)J",
+               NULL,
+               NULL,
                "ladd",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_LSUB,
+               0,
                BUILTIN_lsub,
-               "(JJ)J",
+               NULL,
+               NULL,
                "lsub",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_LNEG,
+               0,
                BUILTIN_lneg,
-               "(J)J",
+               NULL,
+               NULL,
                "lneg",
+               "(J)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif /* !(SUPPORT_LONG && SUPPORT_LONG_ADD) */
@@ -337,9 +608,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_LONG && SUPPORT_LONG_MUL)
        {
                ICMD_LMUL,
+               0,
                BUILTIN_lmul,
-               "(JJ)J",
+               NULL,
+               NULL,
                "lmul",
+               "(JJ)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -347,9 +624,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_FLOAT && SUPPORT_I2F)
        {
                ICMD_I2F,
+               0,
                BUILTIN_i2f,
-               "(I)F",
+               NULL,
+               NULL,
                "i2f",
+               "(I)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -357,9 +640,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_DOUBLE && SUPPORT_I2D)
        {
                ICMD_I2D,
+               0,
                BUILTIN_i2d,
-               "(I)D",
+               NULL,
+               NULL,
                "i2d",
+               "(I)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -367,9 +656,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_LONG && SUPPORT_FLOAT && SUPPORT_L2F)
        {
                ICMD_L2F,
+               0,
                BUILTIN_l2f,
-               "(J)F",
+               NULL,
+               NULL,
                "l2f",
+               "(J)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -377,9 +672,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_LONG && SUPPORT_DOUBLE && SUPPORT_L2D)
        {
                ICMD_L2D,
+               0,
                BUILTIN_l2d,
-               "(J)D",
+               NULL,
+               NULL,
                "l2d",
+               "(J)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -387,9 +688,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_FLOAT && SUPPORT_F2I)
        {
                ICMD_F2I,
+               0,
                BUILTIN_f2i,
-               "(F)I",
+               NULL,
+               NULL,
                "f2i",
+               "(F)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -397,9 +704,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_FLOAT && SUPPORT_LONG && SUPPORT_F2L)
        {
                ICMD_F2L,
+               0,
                BUILTIN_f2l,
-               "(F)J",
+               NULL,
+               NULL,
                "f2l",
+               "(F)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -407,9 +720,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_DOUBLE && SUPPORT_D2I)
        {
                ICMD_D2I,
+               0,
                BUILTIN_d2i,
-               "(D)I",
+               NULL,
+               NULL,
                "d2i",
+               "(D)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -417,9 +736,15 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_DOUBLE && SUPPORT_LONG && SUPPORT_D2L)
        {
                ICMD_D2L,
+               0,
                BUILTIN_d2l,
-               "(D)J",
+               NULL,
+               NULL,
                "d2l",
+               "(D)J",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif
@@ -430,54 +755,99 @@ static builtintable_entry builtintable_automatic[] = {
 #if !SUPPORT_FLOAT
        {
                ICMD_FADD,
+               0,
                BUILTIN_fadd,
-               "(FF)F",
+               NULL,
+               NULL,
                "fadd",
+               "(FF)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_FSUB,
+               0,
                BUILTIN_fsub,
-               "(FF)F",
+               NULL,
+               NULL,
                "fsub",
+               "(FF)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_FMUL,
+               0,
                BUILTIN_fmul,
-               "(FF)F",
+               NULL,
+               NULL,
                "fmul",
+               "(FF)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_FDIV,
+               0,
                BUILTIN_fdiv,
-               "(FF)F",
+               NULL,
+               NULL,
                "fdiv",
+               "(FF)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_FNEG,
+               0,
                BUILTIN_fneg,
-               "(F)F",
+               NULL,
+               NULL,
                "fneg",
+               "(F)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
+#endif /* !SUPPORT_FLOAT */
+
+#if !SUPPORT_FLOAT || !SUPPORT_FLOAT_CMP
        {
                ICMD_FCMPL,
+               0,
                BUILTIN_fcmpl,
-               "(FF)I",
+               NULL,
+               NULL,
                "fcmpl",
+               "(FF)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_FCMPG,
+               0,
                BUILTIN_fcmpg,
-               "(FF)I",
+               NULL,
+               NULL,
                "fcmpg",
+               "(FF)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
-#endif /* !SUPPORT_FLOAT */
+#endif /* !SUPPORT_FLOAT || !SUPPORT_FLOAT_CMP */
 
 
        /* double functions *******************************************************/
@@ -485,54 +855,99 @@ static builtintable_entry builtintable_automatic[] = {
 #if !SUPPORT_DOUBLE
        {
                ICMD_DADD,
+               0,
                BUILTIN_dadd,
-               "(DD)D",
+               NULL,
+               NULL,
                "dadd",
+               "(DD)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_DSUB,
+               0,
                BUILTIN_dsub,
-               "(DD)D",
+               NULL,
+               NULL,
                "dsub",
+               "(DD)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_DMUL,
+               0,
                BUILTIN_dmul,
-               "(DD)D",
+               NULL,
+               NULL,
                "dmul",
+               "(DD)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_DDIV,
+               0,
                BUILTIN_ddiv,
-               "(DD)D",
+               NULL,
+               NULL,
                "ddiv",
+               "(DD)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_DNEG,
+               0,
                BUILTIN_dneg,
-               "(D)D",
+               NULL,
+               NULL,
                "dneg",
+               "(D)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
+#endif /* !SUPPORT_DOUBLE */
+
+#if !SUPPORT_DOUBLE || !SUPPORT_DOUBLE_CMP
        {
                ICMD_DCMPL,
+               0,
                BUILTIN_dcmpl,
-               "(DD)I",
+               NULL,
+               NULL,
                "dcmpl",
+               "(DD)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_DCMPG,
+               0,
                BUILTIN_dcmpg,
-               "(DD)I",
+               NULL,
+               NULL,
                "dcmpg",
+               "(DD)I",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
-#endif /* !SUPPORT_DOUBLE */
+#endif /* !SUPPORT_DOUBLE || !SUPPORT_DOUBLE_CMP */
 
 
        /* float/double functions *************************************************/
@@ -540,16 +955,28 @@ static builtintable_entry builtintable_automatic[] = {
 #if !(SUPPORT_FLOAT && SUPPORT_DOUBLE)
        {
                ICMD_F2D,
+               0,
                BUILTIN_f2d,
-               "(F)D",
+               NULL,
+               NULL,
                "f2d",
+               "(F)D",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
        {
                ICMD_D2F,
+               0,
                BUILTIN_d2f,
-               "(D)F",
+               NULL,
+               NULL,
                "d2f",
+               "(D)F",
+               NULL,
+               NULL,
+               NULL,
                NULL
        },
 #endif /* !(SUPPORT_FLOAT && SUPPORT_DOUBLE) */
@@ -559,6 +986,106 @@ static builtintable_entry builtintable_automatic[] = {
 
        {
                255,
+               0,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+};
+
+
+/* automatically replaced functions *******************************************/
+
+static builtintable_entry builtintable_function[] = {
+#if defined(ENABLE_JIT)
+
+       /* java.lang.VMSystem.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V STATIC NATIVE */
+
+       {
+               ICMD_BUILTIN,
+               BUILTINTABLE_FLAG_STUB | BUILTINTABLE_FLAG_EXCEPTION,
+               BUILTIN_arraycopy,
+               NULL,
+               "java/lang/VMSystem",
+               "arraycopy",
+               "(Ljava/lang/Object;ILjava/lang/Object;II)V",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+
+       /* java.lang.System.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V PUBLIC STATIC */
+
+#if 0
+       /* We disable this one until we have a fix for the stacktrace
+          issue. */
+
+       {
+               ICMD_BUILTIN,
+               BUILTINTABLE_FLAG_STUB | BUILTINTABLE_FLAG_EXCEPTION,
+               BUILTIN_arraycopy,
+               NULL,
+               "java/lang/System",
+               "arraycopy",
+               "(Ljava/lang/Object;ILjava/lang/Object;II)V",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+#endif
+
+       /* java.lang.VMSystem.currentTimeMillis()J PUBLIC STATIC */
+
+       {
+               ICMD_BUILTIN,
+               0,
+               BUILTIN_currenttimemillis,
+               NULL,
+               "java/lang/VMSystem",
+               "currentTimeMillis",
+               "()J",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+
+       /* java.lang.System.currentTimeMillis()J PUBLIC STATIC */
+
+       {
+               ICMD_BUILTIN,
+               0,
+               BUILTIN_currenttimemillis,
+               NULL,
+               "java/lang/System",
+               "currentTimeMillis",
+               "()J",
+               NULL,
+               NULL,
+               NULL,
+               NULL
+       },
+
+#endif /* defined(ENABLE_JIT) */
+
+       /* stop entry */
+
+       {
+               255,
+               0,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
+               NULL,
                NULL,
                NULL,
                NULL,
@@ -578,4 +1105,5 @@ static builtintable_entry builtintable_automatic[] = {
  * c-basic-offset: 4
  * tab-width: 4
  * End:
+ * vim:noexpandtab:sw=4:ts=4:
  */