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

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

[dotgnu-pnet-commits] pnet ./ChangeLog engine/jitc_var.c


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ./ChangeLog engine/jitc_var.c
Date: Fri, 30 Dec 2005 20:06:58 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Branch:         
Changes by:     Klaus Treichel <address@hidden> 05/12/30 20:06:58

Modified files:
        .              : ChangeLog 
        engine         : jitc_var.c 

Log message:
        Start with load/store locals and parameters in the jit coder.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/ChangeLog.diff?tr1=1.3261&tr2=1.3262&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_var.c.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: pnet/ChangeLog
diff -u pnet/ChangeLog:1.3261 pnet/ChangeLog:1.3262
--- pnet/ChangeLog:1.3261       Fri Dec 30 17:42:19 2005
+++ pnet/ChangeLog      Fri Dec 30 20:06:58 2005
@@ -1,3 +1,7 @@
+2005-12-30  Kirill Kononenko  <address@hidden>
+
+       * engine/jitc_var.c: Start with load/store params and locals.
+
 2005-12-30  Klaus Treichel  <address@hidden>
 
        * engine/jitc.c, engine/jitc.h, engine/jitc_branch.c: Add compare and
Index: pnet/engine/jitc_var.c
diff -u pnet/engine/jitc_var.c:1.1 pnet/engine/jitc_var.c:1.2
--- pnet/engine/jitc_var.c:1.1  Mon Dec 19 18:00:35 2005
+++ pnet/engine/jitc_var.c      Fri Dec 30 20:06:58 2005
@@ -21,10 +21,37 @@
 #ifdef IL_JITC_CODE
 
 /*
+ * Convert a local/arg to the type needed on the stack.
+ * Returns the converted value when conversion is needed or value as it is.
+ */
+static ILJitValue ConvertToStack(ILJITCoder *coder, ILJitValue value)
+{
+       ILJitType type = jit_value_get_type(value);
+       ILJitType newType = jit_type_promote_int(type);
+
+       if(type != newType)
+       {
+               return jit_insn_convert(coder->jitFunction, value, newType, 0);
+       }
+       if((type == _IL_JIT_TYPE_SINGLE) || (type == _IL_JIT_TYPE_DOUBLE))
+       {
+               return jit_insn_convert(coder->jitFunction, value, 
_IL_JIT_TYPE_NFLOAT, 0);
+       }
+       return value;
+}
+
+/*
  * Handle a load from an argument.
  */
 static void JITCoder_LoadArg(ILCoder *coder, ILUInt32 argNum, ILType *type)
 {
+       ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
+       /* We need argNum + 1 because the ILExecThread is added as param 0 */
+       ILJitValue param = jit_value_get_param(jitCoder->jitFunction, argNum + 
1);
+       ILJitValue newParam = ConvertToStack(jitCoder, param);
+
+       jitCoder->jitStack[jitCoder->stackTop] = newParam;
+       JITC_ADJUST(jitCoder, 1);
 }
 
 /*
@@ -32,6 +59,12 @@
  */
 static void JITCoder_LoadLocal(ILCoder *coder, ILUInt32 localNum, ILType *type)
 {
+       ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
+       ILJitValue localValue = jitCoder->jitLocals[localNum];
+
+       jitCoder->jitStack[jitCoder->stackTop] = 
+                                       ConvertToStack(jitCoder, localValue);
+       JITC_ADJUST(jitCoder, 1);
 }
 
 /*
@@ -40,6 +73,14 @@
 static void JITCoder_StoreArg(ILCoder *coder, ILUInt32 argNum,
                                                          ILEngineType 
engineType, ILType *type)
 {
+       ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
+       /* We need argNum + 1 because the ILExecThread is added as param 0 */
+       ILJitValue argValue = jit_value_get_param(jitCoder->jitFunction, argNum 
+ 1);
+
+       jit_insn_store(jitCoder->jitFunction, argValue,
+                                       jitCoder->jitStack[jitCoder->stackTop - 
1]);
+
+       JITC_ADJUST(jitCoder, -1);
 }
 
 /*
@@ -48,6 +89,12 @@
 static void JITCoder_StoreLocal(ILCoder *coder, ILUInt32 localNum,
                                                                ILEngineType 
engineType, ILType *type)
 {
+       ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
+
+       jit_insn_store(jitCoder->jitFunction, jitCoder->jitLocals[localNum],
+                                       jitCoder->jitStack[jitCoder->stackTop - 
1]);
+
+       JITC_ADJUST(jitCoder, -1);
 }
 
 /*
@@ -55,6 +102,10 @@
  */
 static void JITCoder_AddrOfArg(ILCoder *coder, ILUInt32 argNum)
 {
+       ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
+
+
+
 }
 
 /*
@@ -62,6 +113,8 @@
  */
 static void JITCoder_AddrOfLocal(ILCoder *coder, ILUInt32 localNum)
 {
+       ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
+
 }
 
 /*
@@ -69,6 +122,8 @@
  */
 static void JITCoder_LocalAlloc(ILCoder *coder, ILEngineType sizeType)
 {
+       ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
+
 }
 
 #endif /* IL_JITC_CODE */




reply via email to

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