[Top][All Lists]
[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 */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnet ./ChangeLog engine/jitc_var.c,
Klaus Treichel <=