dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] pnet ./ChangeLog ./configure.in engine/Makefile...


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ./ChangeLog ./configure.in engine/Makefile...
Date: Mon, 19 Dec 2005 18:00:35 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Branch:         
Changes by:     Klaus Treichel <address@hidden> 05/12/19 18:00:35

Modified files:
        .              : ChangeLog configure.in 
        engine         : Makefile.am engine.c engine.h layout.c 
Added files:
        engine         : jitc.c jitc.h jitc_arith.c jitc_branch.c 
                         jitc_call.c jitc_const.c jitc_conv.c 
                         jitc_except.c jitc_obj.c jitc_ptr.c 
                         jitc_setup.c jitc_stack.c jitc_var.c 

Log message:
        Add files for the  jit coder and first changes in the engine.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/ChangeLog.diff?tr1=1.3251&tr2=1.3252&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/configure.in.diff?tr1=1.210&tr2=1.211&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/Makefile.am.diff?tr1=1.80&tr2=1.81&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/engine.c.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/engine.h.diff?tr1=1.107&tr2=1.108&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/layout.c.diff?tr1=1.39&tr2=1.40&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc.h?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_arith.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_branch.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_call.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_const.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_conv.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_except.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_obj.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_ptr.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_setup.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_stack.c?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_var.c?rev=1.1

Patches:
Index: pnet/ChangeLog
diff -u pnet/ChangeLog:1.3251 pnet/ChangeLog:1.3252
--- pnet/ChangeLog:1.3251       Mon Dec 19 07:07:56 2005
+++ pnet/ChangeLog      Mon Dec 19 18:00:35 2005
@@ -1,5 +1,20 @@
 2005-12-19  Klaus Treichel  <address@hidden>
 
+       * configure.in: add switch --enable-jit for enabling the jit coder.
+
+       * engine/Makefile.am: add the new jit coder sources to build.
+
+       * engine/engine.c, engine/engine.h, engine/layout.c: add first changes 
for
+       the jit coder (mainly classlayout).
+
+       * engine/jitc.c, engine/jitc.h, engine/jitc_arith.c, 
engine/jitc_branch.c,
+       engine/jitc_call.c, engine/jitc_const.c, engine/jitc_conv.c,
+       engine/jitc_except.c, engine/jitc_obj.c, engine/jitc_ptr.c,
+       engine/jitc_setup.c, engine/jitc_stack.c, engine/jitc_var.c: Stub the 
first
+       files for the jit coder (thanks radekp).
+
+2005-12-19  Klaus Treichel  <address@hidden>
+
        * libffi/ChangeLog, libffi/src/powerpc/linux64.S, 
libffi/src/powerpc/ffi.c:
        update to current libffi.
 
Index: pnet/configure.in
diff -u pnet/configure.in:1.210 pnet/configure.in:1.211
--- pnet/configure.in:1.210     Mon Nov 21 06:19:19 2005
+++ pnet/configure.in   Mon Dec 19 18:00:35 2005
@@ -104,6 +104,33 @@
        withgc=yes
 ])
 
+def_jit=false
+AC_SUBST(JIT_LIBS)
+AC_SUBST(JIT_INCLUDE)
+AC_ARG_ENABLE(jit,
+[  --enable-jit            Enable the just in time compiler],
+[case "${enableval}" in
+  yes) jit=true ;;
+  no)  jit=false ;;
+  *) AC_MSG_ERROR(bad value ${enableval} for --enable-jit) ;;
+esac],[jit=$def_jit])
+if test x$jit = xtrue ; then
+  AC_DEFINE(IL_USE_JIT, 1, [Use the just in time compiler])
+  if test -f "../libjit/jit/.libs/libjit.so" ; then
+    JIT_LIBS='$(top_builddir)/../libjit/jit/.libs/libjit.so'
+  else
+    if test -f "../libjit/jit/.libs/libjit.a" ; then
+      JIT_LIBS='$(top_builddir)/../libjit/jit/.libs/libjit.a'
+    else
+         AC_MSG_ERROR(libjit library not found in ../libjit/jit/.libs)
+    fi
+  fi
+  JIT_INCLUDE='-I$(top_srcdir)/../libjit/include'
+else
+  JIT_LIBS=""
+  JIT_INCLUDE=""
+fi
+
 dnl The --with-profile=NAME option is used to change the build profile.
 AC_SUBST(PROFILE_NAME)
 AC_ARG_WITH(profile,
Index: pnet/engine/Makefile.am
diff -u pnet/engine/Makefile.am:1.80 pnet/engine/Makefile.am:1.81
--- pnet/engine/Makefile.am:1.80        Tue Oct  4 05:34:57 2005
+++ pnet/engine/Makefile.am     Mon Dec 19 18:00:35 2005
@@ -13,6 +13,19 @@
                                
 INTERNAL_INCLUDES = int_table.c
 
+JITC_INCLUDES = jitc.h \
+                               jitc_arith.c \
+                               jitc_branch.c \
+                               jitc_call.c \
+                               jitc_const.c \
+                               jitc_conv.c \
+                               jitc_except.c \
+                               jitc_obj.c \
+                               jitc_ptr.c \
+                               jitc_setup.c \
+                               jitc_stack.c \
+                               jitc_var.c
+
 MD_ARM_INCLUDES = md_arm.h arm_codegen.h
 
 MD_IA64_INCLUDES = md_ia64.h md_ia64_macros.h
@@ -54,6 +67,7 @@
                                                          $(CVMC_INCLUDES) \
                                                          gen_marshal.tc \
                                                          $(INTERNAL_INCLUDES) \
+                                                         $(JITC_INCLUDES) \
                                                          $(MD_AMD64_INCLUDES) \
                                                          $(MD_ARM_INCLUDES) \
                                                          $(MD_IA64_INCLUDES) \
@@ -81,6 +95,7 @@
                                                heap.c \
                                                int_proto.h \
                                                internal.c \
+                                               jitc.c \
                                                layout.c \
                                                lib_array.c \
                                                lib_charinfo.c \
@@ -141,12 +156,12 @@
 ilrun_SOURCES = ilrun.c
 ilrun_LDADD = libILEngine.a ../dumpasm/libILDumpAsm.a \
                          ../image/libILImage.a ../support/libILSupport.a \
-                         $(PACKAGE_LIBS) $(TERMCAPLIBS)
+                         $(PACKAGE_LIBS) $(TERMCAPLIBS) $(JIT_LIBS)
 
 ilverify_SOURCES = ilverify.c
 ilverify_LDADD = libILEngine.a ../dumpasm/libILDumpAsm.a \
                             ../image/libILImage.a ../support/libILSupport.a \
-                                $(PACKAGE_LIBS) $(TERMCAPLIBS)
+                                $(PACKAGE_LIBS) $(TERMCAPLIBS) $(JIT_LIBS)
 
 ## We need "-fno-gcse" to stop gcc being overeager when it compiles
 ## the interpreter core in direct threading mode.
@@ -155,6 +170,7 @@
 AM_CFLAGS = -I$(top_srcdir)/libffi/include $(NO_GCSE) $(NO_INLINE_FUNCTIONS) \
                        $(NO_UNIT_AT_A_TIME) -I$(top_srcdir)/support \
                        -I$(top_srcdir)/libgc/include -I$(top_srcdir)/include \
+                       $(JIT_INCLUDE) \
                        -I../libffi/include -I. 
-DBUILD_PROFILE_NAME="\"$(PROFILE_NAME)\""
 
 else
@@ -162,12 +178,12 @@
 ilrun_SOURCES = ilrun.c
 ilrun_LDADD = libILEngine.a \
                          ../image/libILImage.a ../support/libILSupport.a \
-                         $(PACKAGE_LIBS) $(TERMCAPLIBS)
+                         $(PACKAGE_LIBS) $(TERMCAPLIBS) $(JIT_LIBS)
 
 ilverify_SOURCES = ilverify.c
 ilverify_LDADD = libILEngine.a \
                             ../image/libILImage.a ../support/libILSupport.a \
-                                $(PACKAGE_LIBS) $(TERMCAPLIBS)
+                                $(PACKAGE_LIBS) $(TERMCAPLIBS) $(JIT_LIBS)
 
 ## We need "-fno-gcse" to stop gcc being overeager when it compiles
 ## the interpreter core in direct threading mode.
@@ -176,6 +192,7 @@
 AM_CFLAGS = -I$(top_srcdir)/libgc/include -I$(top_srcdir)/libffi/include \
                        $(NO_GCSE) $(NO_INLINE_FUNCTIONS) $(NO_UNIT_AT_A_TIME) \
                        -I$(top_srcdir)/include -I../libffi/include 
-I../support/ -I. \
+                       $(JIT_INCLUDE) \
                        -DIL_WITHOUT_TOOLS -Os
 
 endif
@@ -186,6 +203,8 @@
 
 internal.$(OBJEXT): internal.c $(INTERNAL_INCLUDES)
 
+jitc.$(OBJEXT): jitc.c $(JITC_INCLUDES)
+
 md_x86.$(OBJEXT): md_x86.c $(MD_X86_INCLUDES) cvm_config.h
 
 md_arm.$(OBJEXT): md_arm.c $(MD_ARM_INCLUDES) cvm_config.h
Index: pnet/engine/engine.c
diff -u pnet/engine/engine.c:1.1 pnet/engine/engine.c:1.2
--- pnet/engine/engine.c:1.1    Thu May  5 10:16:16 2005
+++ pnet/engine/engine.c        Mon Dec 19 18:00:35 2005
@@ -51,6 +51,12 @@
                return IL_EXEC_INIT_OUTOFMEMORY;
        }
 #endif
+#ifdef IL_USE_JIT
+       if(!ILJitInit())
+       {
+               return IL_EXEC_INIT_OUTOFMEMORY;
+       }
+#endif
 
        /* Initialize the thread routines */    
        ILThreadInit();
Index: pnet/engine/engine.h
diff -u pnet/engine/engine.h:1.107 pnet/engine/engine.h:1.108
--- pnet/engine/engine.h:1.107  Mon Nov 21 14:31:16 2005
+++ pnet/engine/engine.h        Mon Dec 19 18:00:35 2005
@@ -196,6 +196,10 @@
 /* class private data */
 typedef struct _tagILClassPrivate ILClassPrivate;
  
+#ifdef IL_USE_JIT
+#include "jitc.h"
+#endif
+
 /*
  * Execution control context for a process.
  */
@@ -477,6 +481,9 @@
        ILNativeInt             gcTypeDescriptor;       /* Describes the layout 
of the type for the GC */
        ILClassPrivate *nextClassPrivate;       /* linked list of 
ILClassPrivate objects */
        ILExecProcess  *process;                        /* Back-pointer to the 
process this class belongs to */
+#ifdef IL_USE_JIT
+       ILJitTypes              jitTypes;                       /* jit types 
for this CLR type */
+#endif
 #ifdef IL_USE_IMTS
        ILUInt32                imtBase;                        /* Base for IMT 
identifiers */
        ILMethod           *imt[IL_IMT_SIZE];   /* Interface method table */
@@ -572,6 +579,13 @@
 }
 #endif
 
+#ifdef IL_USE_JIT
+/*
+ * Class information for the JIT coder.
+ */
+extern ILCoderClass const _ILJITCoderClass;
+#endif
+
 /*
  * Class information for the CVM coder.
  */
Index: pnet/engine/layout.c
diff -u pnet/engine/layout.c:1.39 pnet/engine/layout.c:1.40
--- pnet/engine/layout.c:1.39   Fri Nov 25 13:17:19 2005
+++ pnet/engine/layout.c        Mon Dec 19 18:00:35 2005
@@ -45,7 +45,9 @@
        int                     hasFinalizer;
        int                     managedInstance;
        int                     managedStatic;
-
+#ifdef IL_USE_JIT
+       ILJitTypes *jitTypes;
+#endif 
 } LayoutInfo;
 
 /*
@@ -64,6 +66,14 @@
        {
                /* Lay out a primitive type */
                layout->managedInstance = 0;
+       #ifdef IL_USE_JIT
+               if(!(layout->jitTypes = 
ILJitPrimitiveClrTypeToJitTypes(ILType_ToElement(type))))
+               {
+                       return 0;
+               }
+               layout->size = ILJitTypeGetSize(layout->jitTypes->jitTypeBase);
+               layout->alignment = 
ILJitTypeGetAlignment(layout->jitTypes->jitTypeBase);
+       #else
                switch(ILType_ToElement(type))
                {
                        case IL_META_ELEMTYPE_BOOLEAN:
@@ -169,6 +179,7 @@
 
                        default: return 0;
                }
+       #endif /* IL_USE_JIT */
                layout->nativeSize = layout->size;
                layout->nativeAlignment = layout->alignment;
                layout->vtableSize = 0;
@@ -196,6 +207,14 @@
        else
        {
                /* Everything else is laid out as a pointer */
+       #ifdef IL_USE_JIT
+               if(!(layout->jitTypes = 
ILJitPrimitiveClrTypeToJitTypes(IL_META_ELEMTYPE_TYPEDBYREF)))
+               {
+                       return 0;
+               }
+               layout->size = ILJitTypeGetSize(layout->jitTypes->jitTypeBase);
+               layout->alignment = 
ILJitTypeGetAlignment(layout->jitTypes->jitTypeBase);
+       #else
        #if defined(HAVE_LIBFFI)
                layout->size = ffi_type_pointer.size;
                layout->alignment = ffi_type_pointer.alignment;
@@ -203,6 +222,7 @@
                layout->size = sizeof(void *);
                layout->alignment = _IL_ALIGN_FOR_TYPE(void_p);
        #endif
+       #endif /* IL_USE_JIT */
                layout->nativeSize = layout->size;
                layout->nativeAlignment = layout->alignment;
                layout->vtableSize = 0;
@@ -613,6 +633,9 @@
                        layout->hasFinalizer = classPrivate->hasFinalizer;
                        layout->managedInstance = classPrivate->managedInstance;
                        layout->managedStatic = classPrivate->managedStatic;
+               #ifdef IL_USE_JIT
+                       layout->jitTypes = &(classPrivate->jitTypes);
+               #endif
                        return 1;
                }
        }
@@ -662,6 +685,9 @@
 
        /* Zero the static size, which must be recomputed for each class */
        layout->staticSize = 0;
+#ifdef IL_USE_JIT
+       _ILJitTypesInit(&(classPrivate->jitTypes));
+#endif
 
        /* Lay out the interfaces that this class implements */
        implements = info->implements;
@@ -997,6 +1023,13 @@
                        implements = implements->nextInterface;
                }
        }
+#ifdef IL_USE_JIT
+       if(!ILJitTypeCreate(classPrivate))
+       {
+               info->userData = 0;
+               return 0;
+       }
+#endif
 
        /* Record the rest of the layout information for this class */
        classPrivate->staticSize = layout->staticSize;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]