[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ChangeLog jit/jit-interp.h jit/jit-inter...
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog jit/jit-interp.h jit/jit-inter... |
Date: |
Mon, 16 Oct 2006 02:27:25 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Changes by: Aleksey Demakov <avd> 06/10/16 02:27:24
Modified files:
. : ChangeLog
jit : jit-interp.h jit-interp.c jit-rules-interp.c
jit-opcode.c
Log message:
fix interpreter's struct handling;
fix segmentation fault in interpreter's fixup code;
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.273&r2=1.274
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-interp.h?cvsroot=dotgnu-pnet&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-interp.c?cvsroot=dotgnu-pnet&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-interp.c?cvsroot=dotgnu-pnet&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-opcode.c?cvsroot=dotgnu-pnet&r1=1.19&r2=1.20
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.273
retrieving revision 1.274
diff -u -b -r1.273 -r1.274
--- ChangeLog 14 Oct 2006 04:24:31 -0000 1.273
+++ ChangeLog 16 Oct 2006 02:27:24 -0000 1.274
@@ -1,3 +1,16 @@
+2006-10-16 Aleksey Demakov <address@hidden>
+
+ * jit/jit-interp.h, jit/jit-interp.c (_jit_run_function):
+ * jit/jit-opcode.c, jit/jit-rules-interp.c (_jit_gen_insn): Repair
+ struct handling broken since the last interpreter reorganization,
+ remove unused interpreter opcodes.
+
+ * jit/jit-rules-interp.c (_jit_gen_start_block): check if the fixup
+ position is before the cache end. This prevents segmentation fault
+ when the end of cache block is reached and jit_function_compile()
+ attempts to generate more code (it checks for the cache end way too
+ late).
+
2006-10-14 Aleksey Demakov <address@hidden>
* jit/jit-rules-interp.c (_jit_create_call_return_insns): fix return
Index: jit/jit-interp.h
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-interp.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- jit/jit-interp.h 30 Aug 2006 13:31:58 -0000 1.8
+++ jit/jit-interp.h 16 Oct 2006 02:27:24 -0000 1.9
@@ -99,130 +99,121 @@
#define JIT_OP_LDA_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0006)
#define JIT_OP_LDA_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0007)
#define JIT_OP_LDA_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0008)
-#define JIT_OP_LDA_0_STRUCT (JIT_OP_NUM_OPCODES +
0x0009)
-#define JIT_OP_LDAA_0 (JIT_OP_NUM_OPCODES +
0x000a)
-#define JIT_OP_LDA_1_SBYTE (JIT_OP_NUM_OPCODES +
0x000b)
-#define JIT_OP_LDA_1_UBYTE (JIT_OP_NUM_OPCODES +
0x000c)
-#define JIT_OP_LDA_1_SHORT (JIT_OP_NUM_OPCODES +
0x000d)
-#define JIT_OP_LDA_1_USHORT (JIT_OP_NUM_OPCODES +
0x000e)
-#define JIT_OP_LDA_1_INT (JIT_OP_NUM_OPCODES +
0x000f)
-#define JIT_OP_LDA_1_LONG (JIT_OP_NUM_OPCODES +
0x0010)
-#define JIT_OP_LDA_1_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0011)
-#define JIT_OP_LDA_1_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0012)
-#define JIT_OP_LDA_1_NFLOAT (JIT_OP_NUM_OPCODES +
0x0013)
-#define JIT_OP_LDA_1_STRUCT (JIT_OP_NUM_OPCODES +
0x0014)
-#define JIT_OP_LDAA_1 (JIT_OP_NUM_OPCODES +
0x0015)
-#define JIT_OP_LDA_2_SBYTE (JIT_OP_NUM_OPCODES +
0x0016)
-#define JIT_OP_LDA_2_UBYTE (JIT_OP_NUM_OPCODES +
0x0017)
-#define JIT_OP_LDA_2_SHORT (JIT_OP_NUM_OPCODES +
0x0018)
-#define JIT_OP_LDA_2_USHORT (JIT_OP_NUM_OPCODES +
0x0019)
-#define JIT_OP_LDA_2_INT (JIT_OP_NUM_OPCODES +
0x001a)
-#define JIT_OP_LDA_2_LONG (JIT_OP_NUM_OPCODES +
0x001b)
-#define JIT_OP_LDA_2_FLOAT32 (JIT_OP_NUM_OPCODES +
0x001c)
-#define JIT_OP_LDA_2_FLOAT64 (JIT_OP_NUM_OPCODES +
0x001d)
-#define JIT_OP_LDA_2_NFLOAT (JIT_OP_NUM_OPCODES +
0x001e)
-#define JIT_OP_LDA_2_STRUCT (JIT_OP_NUM_OPCODES +
0x001f)
-#define JIT_OP_LDAA_2 (JIT_OP_NUM_OPCODES +
0x0020)
-#define JIT_OP_STA_0_BYTE (JIT_OP_NUM_OPCODES +
0x0021)
-#define JIT_OP_STA_0_SHORT (JIT_OP_NUM_OPCODES +
0x0022)
-#define JIT_OP_STA_0_INT (JIT_OP_NUM_OPCODES +
0x0023)
-#define JIT_OP_STA_0_LONG (JIT_OP_NUM_OPCODES +
0x0024)
-#define JIT_OP_STA_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0025)
-#define JIT_OP_STA_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0026)
-#define JIT_OP_STA_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0027)
-#define JIT_OP_STA_0_STRUCT (JIT_OP_NUM_OPCODES +
0x0028)
+#define JIT_OP_LDAA_0 (JIT_OP_NUM_OPCODES +
0x0009)
+#define JIT_OP_LDA_1_SBYTE (JIT_OP_NUM_OPCODES +
0x000a)
+#define JIT_OP_LDA_1_UBYTE (JIT_OP_NUM_OPCODES +
0x000b)
+#define JIT_OP_LDA_1_SHORT (JIT_OP_NUM_OPCODES +
0x000c)
+#define JIT_OP_LDA_1_USHORT (JIT_OP_NUM_OPCODES +
0x000d)
+#define JIT_OP_LDA_1_INT (JIT_OP_NUM_OPCODES +
0x000e)
+#define JIT_OP_LDA_1_LONG (JIT_OP_NUM_OPCODES +
0x000f)
+#define JIT_OP_LDA_1_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0010)
+#define JIT_OP_LDA_1_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0011)
+#define JIT_OP_LDA_1_NFLOAT (JIT_OP_NUM_OPCODES +
0x0012)
+#define JIT_OP_LDAA_1 (JIT_OP_NUM_OPCODES +
0x0013)
+#define JIT_OP_LDA_2_SBYTE (JIT_OP_NUM_OPCODES +
0x0014)
+#define JIT_OP_LDA_2_UBYTE (JIT_OP_NUM_OPCODES +
0x0015)
+#define JIT_OP_LDA_2_SHORT (JIT_OP_NUM_OPCODES +
0x0016)
+#define JIT_OP_LDA_2_USHORT (JIT_OP_NUM_OPCODES +
0x0017)
+#define JIT_OP_LDA_2_INT (JIT_OP_NUM_OPCODES +
0x0018)
+#define JIT_OP_LDA_2_LONG (JIT_OP_NUM_OPCODES +
0x0019)
+#define JIT_OP_LDA_2_FLOAT32 (JIT_OP_NUM_OPCODES +
0x001a)
+#define JIT_OP_LDA_2_FLOAT64 (JIT_OP_NUM_OPCODES +
0x001b)
+#define JIT_OP_LDA_2_NFLOAT (JIT_OP_NUM_OPCODES +
0x001c)
+#define JIT_OP_LDAA_2 (JIT_OP_NUM_OPCODES +
0x001d)
+#define JIT_OP_STA_0_BYTE (JIT_OP_NUM_OPCODES +
0x001e)
+#define JIT_OP_STA_0_SHORT (JIT_OP_NUM_OPCODES +
0x001f)
+#define JIT_OP_STA_0_INT (JIT_OP_NUM_OPCODES +
0x0020)
+#define JIT_OP_STA_0_LONG (JIT_OP_NUM_OPCODES +
0x0021)
+#define JIT_OP_STA_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0022)
+#define JIT_OP_STA_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0023)
+#define JIT_OP_STA_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0024)
/*
* Local variable frame access opcodes.
*/
-#define JIT_OP_LDL_0_SBYTE (JIT_OP_NUM_OPCODES +
0x0029)
-#define JIT_OP_LDL_0_UBYTE (JIT_OP_NUM_OPCODES +
0x002a)
-#define JIT_OP_LDL_0_SHORT (JIT_OP_NUM_OPCODES +
0x002b)
-#define JIT_OP_LDL_0_USHORT (JIT_OP_NUM_OPCODES +
0x002c)
-#define JIT_OP_LDL_0_INT (JIT_OP_NUM_OPCODES +
0x002d)
-#define JIT_OP_LDL_0_LONG (JIT_OP_NUM_OPCODES +
0x002e)
-#define JIT_OP_LDL_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x002f)
-#define JIT_OP_LDL_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0030)
-#define JIT_OP_LDL_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0031)
-#define JIT_OP_LDL_0_STRUCT (JIT_OP_NUM_OPCODES +
0x0032)
-#define JIT_OP_LDLA_0 (JIT_OP_NUM_OPCODES +
0x0033)
-#define JIT_OP_LDL_1_SBYTE (JIT_OP_NUM_OPCODES +
0x0034)
-#define JIT_OP_LDL_1_UBYTE (JIT_OP_NUM_OPCODES +
0x0035)
-#define JIT_OP_LDL_1_SHORT (JIT_OP_NUM_OPCODES +
0x0036)
-#define JIT_OP_LDL_1_USHORT (JIT_OP_NUM_OPCODES +
0x0037)
-#define JIT_OP_LDL_1_INT (JIT_OP_NUM_OPCODES +
0x0038)
-#define JIT_OP_LDL_1_LONG (JIT_OP_NUM_OPCODES +
0x0039)
-#define JIT_OP_LDL_1_FLOAT32 (JIT_OP_NUM_OPCODES +
0x003a)
-#define JIT_OP_LDL_1_FLOAT64 (JIT_OP_NUM_OPCODES +
0x003b)
-#define JIT_OP_LDL_1_NFLOAT (JIT_OP_NUM_OPCODES +
0x003c)
-#define JIT_OP_LDL_1_STRUCT (JIT_OP_NUM_OPCODES +
0x003d)
-#define JIT_OP_LDLA_1 (JIT_OP_NUM_OPCODES +
0x003e)
-#define JIT_OP_LDL_2_SBYTE (JIT_OP_NUM_OPCODES +
0x003f)
-#define JIT_OP_LDL_2_UBYTE (JIT_OP_NUM_OPCODES +
0x0040)
-#define JIT_OP_LDL_2_SHORT (JIT_OP_NUM_OPCODES +
0x0041)
-#define JIT_OP_LDL_2_USHORT (JIT_OP_NUM_OPCODES +
0x0042)
-#define JIT_OP_LDL_2_INT (JIT_OP_NUM_OPCODES +
0x0043)
-#define JIT_OP_LDL_2_LONG (JIT_OP_NUM_OPCODES +
0x0044)
-#define JIT_OP_LDL_2_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0045)
-#define JIT_OP_LDL_2_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0046)
-#define JIT_OP_LDL_2_NFLOAT (JIT_OP_NUM_OPCODES +
0x0047)
-#define JIT_OP_LDL_2_STRUCT (JIT_OP_NUM_OPCODES +
0x0048)
-#define JIT_OP_LDLA_2 (JIT_OP_NUM_OPCODES +
0x0049)
-#define JIT_OP_STL_0_BYTE (JIT_OP_NUM_OPCODES +
0x004a)
-#define JIT_OP_STL_0_SHORT (JIT_OP_NUM_OPCODES +
0x004b)
-#define JIT_OP_STL_0_INT (JIT_OP_NUM_OPCODES +
0x004c)
-#define JIT_OP_STL_0_LONG (JIT_OP_NUM_OPCODES +
0x004d)
-#define JIT_OP_STL_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x004e)
-#define JIT_OP_STL_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x004f)
-#define JIT_OP_STL_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0050)
-#define JIT_OP_STL_0_STRUCT (JIT_OP_NUM_OPCODES +
0x0051)
+#define JIT_OP_LDL_0_SBYTE (JIT_OP_NUM_OPCODES +
0x0025)
+#define JIT_OP_LDL_0_UBYTE (JIT_OP_NUM_OPCODES +
0x0026)
+#define JIT_OP_LDL_0_SHORT (JIT_OP_NUM_OPCODES +
0x0027)
+#define JIT_OP_LDL_0_USHORT (JIT_OP_NUM_OPCODES +
0x0028)
+#define JIT_OP_LDL_0_INT (JIT_OP_NUM_OPCODES +
0x0029)
+#define JIT_OP_LDL_0_LONG (JIT_OP_NUM_OPCODES +
0x002a)
+#define JIT_OP_LDL_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x002b)
+#define JIT_OP_LDL_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x002c)
+#define JIT_OP_LDL_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x002d)
+#define JIT_OP_LDLA_0 (JIT_OP_NUM_OPCODES +
0x002e)
+#define JIT_OP_LDL_1_SBYTE (JIT_OP_NUM_OPCODES +
0x002f)
+#define JIT_OP_LDL_1_UBYTE (JIT_OP_NUM_OPCODES +
0x0030)
+#define JIT_OP_LDL_1_SHORT (JIT_OP_NUM_OPCODES +
0x0031)
+#define JIT_OP_LDL_1_USHORT (JIT_OP_NUM_OPCODES +
0x0032)
+#define JIT_OP_LDL_1_INT (JIT_OP_NUM_OPCODES +
0x0033)
+#define JIT_OP_LDL_1_LONG (JIT_OP_NUM_OPCODES +
0x0034)
+#define JIT_OP_LDL_1_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0035)
+#define JIT_OP_LDL_1_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0036)
+#define JIT_OP_LDL_1_NFLOAT (JIT_OP_NUM_OPCODES +
0x0037)
+#define JIT_OP_LDLA_1 (JIT_OP_NUM_OPCODES +
0x0038)
+#define JIT_OP_LDL_2_SBYTE (JIT_OP_NUM_OPCODES +
0x0039)
+#define JIT_OP_LDL_2_UBYTE (JIT_OP_NUM_OPCODES +
0x003a)
+#define JIT_OP_LDL_2_SHORT (JIT_OP_NUM_OPCODES +
0x003b)
+#define JIT_OP_LDL_2_USHORT (JIT_OP_NUM_OPCODES +
0x003c)
+#define JIT_OP_LDL_2_INT (JIT_OP_NUM_OPCODES +
0x003d)
+#define JIT_OP_LDL_2_LONG (JIT_OP_NUM_OPCODES +
0x003e)
+#define JIT_OP_LDL_2_FLOAT32 (JIT_OP_NUM_OPCODES +
0x003f)
+#define JIT_OP_LDL_2_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0040)
+#define JIT_OP_LDL_2_NFLOAT (JIT_OP_NUM_OPCODES +
0x0041)
+#define JIT_OP_LDLA_2 (JIT_OP_NUM_OPCODES +
0x0042)
+#define JIT_OP_STL_0_BYTE (JIT_OP_NUM_OPCODES +
0x0043)
+#define JIT_OP_STL_0_SHORT (JIT_OP_NUM_OPCODES +
0x0044)
+#define JIT_OP_STL_0_INT (JIT_OP_NUM_OPCODES +
0x0045)
+#define JIT_OP_STL_0_LONG (JIT_OP_NUM_OPCODES +
0x0046)
+#define JIT_OP_STL_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0047)
+#define JIT_OP_STL_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0048)
+#define JIT_OP_STL_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0049)
/*
* Load constant values.
*/
-#define JIT_OP_LDC_0_INT (JIT_OP_NUM_OPCODES +
0x0052)
-#define JIT_OP_LDC_1_INT (JIT_OP_NUM_OPCODES +
0x0053)
-#define JIT_OP_LDC_2_INT (JIT_OP_NUM_OPCODES +
0x0054)
-#define JIT_OP_LDC_0_LONG (JIT_OP_NUM_OPCODES +
0x0055)
-#define JIT_OP_LDC_1_LONG (JIT_OP_NUM_OPCODES +
0x0056)
-#define JIT_OP_LDC_2_LONG (JIT_OP_NUM_OPCODES +
0x0057)
-#define JIT_OP_LDC_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0058)
-#define JIT_OP_LDC_1_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0059)
-#define JIT_OP_LDC_2_FLOAT32 (JIT_OP_NUM_OPCODES +
0x005a)
-#define JIT_OP_LDC_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x005b)
-#define JIT_OP_LDC_1_FLOAT64 (JIT_OP_NUM_OPCODES +
0x005c)
-#define JIT_OP_LDC_2_FLOAT64 (JIT_OP_NUM_OPCODES +
0x005d)
-#define JIT_OP_LDC_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x005e)
-#define JIT_OP_LDC_1_NFLOAT (JIT_OP_NUM_OPCODES +
0x005f)
-#define JIT_OP_LDC_2_NFLOAT (JIT_OP_NUM_OPCODES +
0x0060)
+#define JIT_OP_LDC_0_INT (JIT_OP_NUM_OPCODES +
0x004a)
+#define JIT_OP_LDC_1_INT (JIT_OP_NUM_OPCODES +
0x004b)
+#define JIT_OP_LDC_2_INT (JIT_OP_NUM_OPCODES +
0x004c)
+#define JIT_OP_LDC_0_LONG (JIT_OP_NUM_OPCODES +
0x004d)
+#define JIT_OP_LDC_1_LONG (JIT_OP_NUM_OPCODES +
0x004e)
+#define JIT_OP_LDC_2_LONG (JIT_OP_NUM_OPCODES +
0x004f)
+#define JIT_OP_LDC_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0050)
+#define JIT_OP_LDC_1_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0051)
+#define JIT_OP_LDC_2_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0052)
+#define JIT_OP_LDC_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0053)
+#define JIT_OP_LDC_1_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0054)
+#define JIT_OP_LDC_2_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0055)
+#define JIT_OP_LDC_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0056)
+#define JIT_OP_LDC_1_NFLOAT (JIT_OP_NUM_OPCODES +
0x0057)
+#define JIT_OP_LDC_2_NFLOAT (JIT_OP_NUM_OPCODES +
0x0058)
/*
* Load return value.
*/
-#define JIT_OP_LDR_0_INT (JIT_OP_NUM_OPCODES +
0x0061)
-#define JIT_OP_LDR_0_LONG (JIT_OP_NUM_OPCODES +
0x0062)
-#define JIT_OP_LDR_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x0063)
-#define JIT_OP_LDR_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x0064)
-#define JIT_OP_LDR_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x0065)
-#define JIT_OP_LDR_0_SMALL_STRUCT (JIT_OP_NUM_OPCODES +
0x0066)
+#define JIT_OP_LDR_0_INT (JIT_OP_NUM_OPCODES +
0x0059)
+#define JIT_OP_LDR_0_LONG (JIT_OP_NUM_OPCODES +
0x005a)
+#define JIT_OP_LDR_0_FLOAT32 (JIT_OP_NUM_OPCODES +
0x005b)
+#define JIT_OP_LDR_0_FLOAT64 (JIT_OP_NUM_OPCODES +
0x005c)
+#define JIT_OP_LDR_0_NFLOAT (JIT_OP_NUM_OPCODES +
0x005d)
/*
* Stack management.
*/
-#define JIT_OP_POP (JIT_OP_NUM_OPCODES +
0x0067)
-#define JIT_OP_POP_2 (JIT_OP_NUM_OPCODES +
0x0068)
-#define JIT_OP_POP_3 (JIT_OP_NUM_OPCODES +
0x0069)
+#define JIT_OP_POP (JIT_OP_NUM_OPCODES +
0x005e)
+#define JIT_OP_POP_2 (JIT_OP_NUM_OPCODES +
0x005f)
+#define JIT_OP_POP_3 (JIT_OP_NUM_OPCODES +
0x0060)
/*
* Nested function call handling.
*/
-#define JIT_OP_IMPORT_LOCAL (JIT_OP_NUM_OPCODES +
0x006a)
-#define JIT_OP_IMPORT_ARG (JIT_OP_NUM_OPCODES +
0x006b)
+#define JIT_OP_IMPORT_LOCAL (JIT_OP_NUM_OPCODES +
0x0061)
+#define JIT_OP_IMPORT_ARG (JIT_OP_NUM_OPCODES +
0x0062)
/*
* Marker opcode for the end of the interpreter-specific opcodes.
*/
-#define JIT_OP_END_MARKER (JIT_OP_NUM_OPCODES +
0x006c)
+#define JIT_OP_END_MARKER (JIT_OP_NUM_OPCODES +
0x0063)
/*
* Number of interpreter-specific opcodes.
Index: jit/jit-interp.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-interp.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- jit/jit-interp.c 2 Sep 2006 13:46:28 -0000 1.16
+++ jit/jit-interp.c 16 Oct 2006 02:27:24 -0000 1.17
@@ -3592,12 +3592,21 @@
{
/* Push a structure value onto the stack, given a
pointer to it */
temparg = VM_NINT_ARG;
- stacktop -= (JIT_NUM_ITEMS_IN_STRUCT(temparg) - 1);
+ stacktop -= JIT_NUM_ITEMS_IN_STRUCT(temparg);
jit_memcpy(stacktop, VM_R1_PTR, (unsigned int)temparg);
VM_MODIFY_PC(2);
}
VMBREAK;
+ VMCASE(JIT_OP_FLUSH_SMALL_STRUCT):
+ {
+#if JIT_APPLY_MAX_STRUCT_IN_REG != 0
+ jit_memcpy(VM_R0_PTR, return_area->struct_value,
VM_NINT_ARG);
+#endif
+ VM_MODIFY_PC(2);
+ }
+ VMBREAK;
+
/******************************************************************
* Exception handling.
******************************************************************/
@@ -3698,6 +3707,18 @@
VMBREAK;
/******************************************************************
+ * Data manipulation.
+
******************************************************************/
+
+ VMCASE(JIT_OP_COPY_STRUCT):
+ {
+ /* Copy a structure from one address to another */
+ jit_memcpy(VM_R0_PTR, VM_R1_PTR, VM_NINT_ARG);
+ VM_MODIFY_PC(2);
+ }
+ VMBREAK;
+
+
/******************************************************************
* Pointer-relative loads and stores.
******************************************************************/
@@ -3776,7 +3797,7 @@
VMCASE(JIT_OP_LOAD_RELATIVE_STRUCT):
{
/* Load a structure from a relative pointer */
- jit_memcpy(&r0, VM_REL(void, VM_R1_PTR), VM_NINT_ARG2);
+ jit_memcpy(VM_R0_PTR, VM_REL(void, VM_R1_PTR),
VM_NINT_ARG2);
VM_MODIFY_PC(3);
}
VMBREAK;
@@ -3840,7 +3861,7 @@
VMCASE(JIT_OP_STORE_RELATIVE_STRUCT):
{
/* Store a structure value to a relative pointer */
- jit_memcpy(VM_REL(void, VM_R0_PTR), &r1, VM_NINT_ARG2);
+ jit_memcpy(VM_REL(void, VM_R0_PTR), VM_R1_PTR,
VM_NINT_ARG2);
VM_MODIFY_PC(3);
}
VMBREAK;
@@ -4114,15 +4135,6 @@
}
VMBREAK;
- VMCASE(JIT_OP_LDA_0_STRUCT):
- {
- /* Load a structure argument into the register 0 */
- temparg = VM_NINT_ARG2;
- jit_memcpy(&r0, VM_ARG(void), temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
VMCASE(JIT_OP_LDAA_0):
{
/* Load the address of an argument into the register 0
*/
@@ -4203,15 +4215,6 @@
}
VMBREAK;
- VMCASE(JIT_OP_LDA_1_STRUCT):
- {
- /* Load a structure argument into the register 1 */
- temparg = VM_NINT_ARG2;
- jit_memcpy(&r1, VM_ARG(void), temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
VMCASE(JIT_OP_LDAA_1):
{
/* Load the address of an argument into the register 1
*/
@@ -4292,15 +4295,6 @@
}
VMBREAK;
- VMCASE(JIT_OP_LDA_2_STRUCT):
- {
- /* Load a structure argument into the register 2 */
- temparg = VM_NINT_ARG2;
- jit_memcpy(&r2, VM_ARG(void), temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
VMCASE(JIT_OP_LDAA_2):
{
/* Load the address of an argument into the register 2
*/
@@ -4365,15 +4359,6 @@
}
VMBREAK;
- VMCASE(JIT_OP_STA_0_STRUCT):
- {
- /* Store a structure value into an argument */
- temparg = VM_NINT_ARG2;
- jit_memcpy(VM_ARG(void), &r0, temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
/******************************************************************
* Local variable frame access opcodes.
******************************************************************/
@@ -4450,18 +4435,9 @@
}
VMBREAK;
- VMCASE(JIT_OP_LDL_0_STRUCT):
- {
- /* Load a structure local onto the register 0 */
- temparg = VM_NINT_ARG2;
- jit_memcpy(&r0, VM_LOC(void), temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
VMCASE(JIT_OP_LDLA_0):
{
- /* Load the address of an local into the register 0 */
+ /* Load the address of a local into the register 0 */
VM_R0_PTR = VM_LOC(void);
VM_MODIFY_PC(2);
}
@@ -4539,19 +4515,10 @@
}
VMBREAK;
- VMCASE(JIT_OP_LDL_1_STRUCT):
- {
- /* Load a structure local onto the register 1 */
- temparg = VM_NINT_ARG2;
- jit_memcpy(&r1, VM_LOC(void), temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
VMCASE(JIT_OP_LDLA_1):
{
- /* Load a native float local into the register 1 */
- VM_R1_NFLOAT = *VM_LOC(jit_nfloat);
+ /* Load the address of a local into the register 1 */
+ VM_R1_PTR = VM_LOC(void);
VM_MODIFY_PC(2);
}
VMBREAK;
@@ -4628,19 +4595,10 @@
}
VMBREAK;
- VMCASE(JIT_OP_LDL_2_STRUCT):
- {
- /* Load a structure local onto the register 2 */
- temparg = VM_NINT_ARG2;
- jit_memcpy(&r2, VM_LOC(void), temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
VMCASE(JIT_OP_LDLA_2):
{
- /* Load a native float local into the register 2 */
- VM_R2_NFLOAT = *VM_LOC(jit_nfloat);
+ /* Load the address of a local into the register 2 */
+ VM_R2_PTR = VM_LOC(void);
VM_MODIFY_PC(2);
}
VMBREAK;
@@ -4701,15 +4659,6 @@
}
VMBREAK;
- VMCASE(JIT_OP_STL_0_STRUCT):
- {
- /* Store a structure value into a local */
- temparg = VM_NINT_ARG2;
- jit_memcpy(VM_LOC(void), &r0, temparg);
- VM_MODIFY_PC(3);
- }
- VMBREAK;
-
/******************************************************************
* Load constant values.
******************************************************************/
@@ -4896,18 +4845,6 @@
}
VMBREAK;
- VMCASE(JIT_OP_LDR_0_SMALL_STRUCT):
- {
- /* Load a small structure return value into the
register 0 */
- temparg = VM_NINT_ARG;
- stacktop -= JIT_NUM_ITEMS_IN_STRUCT(temparg);
-#if JIT_APPLY_MAX_STRUCT_IN_REG != 0
- jit_memcpy(&r0, return_area->struct_value, temparg);
-#endif
- VM_MODIFY_PC(2);
- }
- VMBREAK;
-
/******************************************************************
* Stack management.
******************************************************************/
@@ -4981,7 +4918,6 @@
VMCASE(JIT_OP_COPY_FLOAT32):
VMCASE(JIT_OP_COPY_FLOAT64):
VMCASE(JIT_OP_COPY_NFLOAT):
- VMCASE(JIT_OP_COPY_STRUCT):
VMCASE(JIT_OP_COPY_STORE_BYTE):
VMCASE(JIT_OP_COPY_STORE_SHORT):
VMCASE(JIT_OP_ADDRESS_OF):
@@ -4990,7 +4926,6 @@
VMCASE(JIT_OP_OUTGOING_REG):
VMCASE(JIT_OP_OUTGOING_FRAME_POSN):
VMCASE(JIT_OP_RETURN_REG):
- VMCASE(JIT_OP_FLUSH_SMALL_STRUCT):
VMCASE(JIT_OP_SET_PARAM_INT):
VMCASE(JIT_OP_SET_PARAM_LONG):
VMCASE(JIT_OP_SET_PARAM_FLOAT32):
Index: jit/jit-rules-interp.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-interp.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- jit/jit-rules-interp.c 14 Oct 2006 04:24:31 -0000 1.29
+++ jit/jit-rules-interp.c 16 Oct 2006 02:27:24 -0000 1.30
@@ -993,7 +993,7 @@
}
static void
-store_value(jit_gencode_t gen, jit_value_t value, int size)
+store_value(jit_gencode_t gen, jit_value_t value)
{
int opcode;
jit_nint offset;
@@ -1014,10 +1014,6 @@
}
jit_cache_opcode(&(gen->posn), opcode);
jit_cache_native(&(gen->posn), offset);
- if(size)
- {
- jit_cache_native(&(gen->posn), size);
- }
}
/*@
@@ -1031,7 +1027,6 @@
void _jit_gen_insn(jit_gencode_t gen, jit_function_t func,
jit_block_t block, jit_insn_t insn)
{
- int reg;
jit_label_t label;
void **pc;
jit_nint offset;
@@ -1195,7 +1190,7 @@
jit_cache_native(&(gen->posn), block->fixup_list);
block->fixup_list = (void *)pc;
}
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
break;
case JIT_OP_CALL:
@@ -1285,7 +1280,7 @@
jit_cache_native(&(gen->posn),
-(insn->value1->frame_offset + 1));
jit_cache_native(&(gen->posn),
jit_value_get_nint_constant(insn->value2));
}
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
break;
case JIT_OP_THROW:
@@ -1298,12 +1293,12 @@
case JIT_OP_LOAD_EXCEPTION_PC:
/* Load the current program counter onto the stack */
jit_cache_opcode(&(gen->posn), insn->opcode);
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
break;
case JIT_OP_CALL_FILTER_RETURN:
/* The r0 register currently contains "dest" */
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
break;
case JIT_OP_ENTER_FINALLY:
@@ -1320,7 +1315,7 @@
/* The top of the stack contains the return address,
the r0 register contains the "dest" (filter parameter). */
++(gen->extra_working_space);
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
break;
case JIT_OP_LEAVE_FILTER:
@@ -1340,28 +1335,28 @@
case JIT_TYPE_INT:
case JIT_TYPE_UINT:
jit_cache_opcode(&(gen->posn), JIT_OP_LDR_0_INT);
- store_value(gen, insn->value1, 0);
+ store_value(gen, insn->value1);
break;
case JIT_TYPE_LONG:
case JIT_TYPE_ULONG:
jit_cache_opcode(&(gen->posn), JIT_OP_LDR_0_LONG);
- store_value(gen, insn->value1, 0);
+ store_value(gen, insn->value1);
break;
case JIT_TYPE_FLOAT32:
jit_cache_opcode(&(gen->posn), JIT_OP_LDR_0_FLOAT32);
- store_value(gen, insn->value1, 0);
+ store_value(gen, insn->value1);
break;
case JIT_TYPE_FLOAT64:
jit_cache_opcode(&(gen->posn), JIT_OP_LDR_0_FLOAT64);
- store_value(gen, insn->value1, 0);
+ store_value(gen, insn->value1);
break;
case JIT_TYPE_NFLOAT:
jit_cache_opcode(&(gen->posn), JIT_OP_LDR_0_NFLOAT);
- store_value(gen, insn->value1, 0);
+ store_value(gen, insn->value1);
break;
}
break;
@@ -1375,12 +1370,20 @@
case JIT_OP_COPY_FLOAT32:
case JIT_OP_COPY_FLOAT64:
case JIT_OP_COPY_NFLOAT:
- case JIT_OP_COPY_STRUCT:
case JIT_OP_COPY_STORE_BYTE:
case JIT_OP_COPY_STORE_SHORT:
/* Copy a value from one temporary variable to another */
load_value(gen, insn->value1, 0);
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
+ break;
+
+ case JIT_OP_COPY_STRUCT:
+ /* Copy a struct from one address to another */
+ load_value(gen, insn->dest, 0);
+ load_value(gen, insn->value1, 1);
+ size =
(jit_nint)jit_type_get_size(jit_value_get_type(insn->dest));
+ jit_cache_opcode(&(gen->posn), insn->opcode);
+ jit_cache_native(&(gen->posn), size);
break;
case JIT_OP_ADDRESS_OF:
@@ -1396,7 +1399,7 @@
jit_cache_opcode(&(gen->posn), JIT_OP_LDAA_0);
jit_cache_native(&(gen->posn),
-(insn->value1->frame_offset + 1));
}
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
break;
case JIT_OP_PUSH_INT:
@@ -1449,33 +1452,11 @@
break;
case JIT_OP_FLUSH_SMALL_STRUCT:
- {
- /* TODO!!! */
-#if 0
/* Flush a small structure return value back into the
frame */
- _jit_gen_fix_value(insn->value1);
- if(insn->value1->frame_offset >= 0)
- {
- jit_cache_opcode(&(gen->posn), JIT_OP_LDLOCA);
- jit_cache_native(&(gen->posn),
insn->value1->frame_offset);
- }
- else
- {
- jit_cache_opcode(&(gen->posn), JIT_OP_LDARGA);
- jit_cache_native
- (&(gen->posn),
-(insn->value1->frame_offset + 1));
- }
- jit_cache_opcode(&(gen->posn),
JIT_OP_PUSH_RETURN_SMALL_STRUCT);
- jit_cache_native
- (&(gen->posn),
jit_type_get_size(insn->value1->type));
- adjust_working(gen, 2);
- jit_cache_opcode(&(gen->posn),
JIT_OP_STORE_RELATIVE_STRUCT);
- jit_cache_native(&(gen->posn), 0);
- jit_cache_native
- (&(gen->posn),
jit_type_get_size(insn->value1->type));
- adjust_working(gen, -2);
-#endif
- }
+ load_value(gen, insn->value1, 0);
+ size =
(jit_nint)jit_type_get_size(jit_value_get_type(insn->value1));
+ jit_cache_opcode(&(gen->posn), insn->opcode);
+ jit_cache_native(&(gen->posn), size);
break;
case JIT_OP_LOAD_RELATIVE_SBYTE:
@@ -1487,27 +1468,23 @@
case JIT_OP_LOAD_RELATIVE_FLOAT32:
case JIT_OP_LOAD_RELATIVE_FLOAT64:
case JIT_OP_LOAD_RELATIVE_NFLOAT:
- {
/* Load a value from a relative pointer */
load_value(gen, insn->value1, 1);
offset = jit_value_get_nint_constant(insn->value2);
jit_cache_opcode(&(gen->posn), insn->opcode);
jit_cache_native(&(gen->posn), offset);
- store_value(gen, insn->dest, 0);
- }
+ store_value(gen, insn->dest);
break;
case JIT_OP_LOAD_RELATIVE_STRUCT:
- {
/* Load a structured value from a relative pointer */
+ load_value(gen, insn->dest, 0);
load_value(gen, insn->value1, 1);
offset = jit_value_get_nint_constant(insn->value2);
size =
(jit_nint)jit_type_get_size(jit_value_get_type(insn->dest));
jit_cache_opcode(&(gen->posn), insn->opcode);
jit_cache_native(&(gen->posn), offset);
jit_cache_native(&(gen->posn), size);
- store_value(gen, insn->dest, size);
- }
break;
case JIT_OP_STORE_RELATIVE_BYTE:
@@ -1517,18 +1494,15 @@
case JIT_OP_STORE_RELATIVE_FLOAT32:
case JIT_OP_STORE_RELATIVE_FLOAT64:
case JIT_OP_STORE_RELATIVE_NFLOAT:
- {
/* Store a value to a relative pointer */
load_value(gen, insn->dest, 0);
load_value(gen, insn->value1, 1);
offset = jit_value_get_nint_constant(insn->value2);
jit_cache_opcode(&(gen->posn), insn->opcode);
jit_cache_native(&(gen->posn), offset);
- }
break;
case JIT_OP_STORE_RELATIVE_STRUCT:
- {
/* Store a structured value to a relative pointer */
load_value(gen, insn->dest, 0);
load_value(gen, insn->value1, 1);
@@ -1537,11 +1511,9 @@
jit_cache_opcode(&(gen->posn), insn->opcode);
jit_cache_native(&(gen->posn), offset);
jit_cache_native(&(gen->posn), size);
- }
break;
case JIT_OP_ADD_RELATIVE:
- {
/* Add a relative offset to a pointer */
offset = jit_value_get_nint_constant(insn->value2);
if(offset != 0)
@@ -1549,27 +1521,23 @@
load_value(gen, insn->value1, 1);
jit_cache_opcode(&(gen->posn), insn->opcode);
jit_cache_native(&(gen->posn), offset);
- store_value(gen, insn->dest, 0);
+ store_value(gen, insn->dest);
}
else
{
load_value(gen, insn->value1, 0);
- store_value(gen, insn->dest, 0);
- }
+ store_value(gen, insn->dest);
}
break;
case JIT_OP_MARK_BREAKPOINT:
- {
/* Mark the current location as a potential breakpoint
*/
jit_cache_opcode(&(gen->posn), insn->opcode);
jit_cache_native(&(gen->posn), insn->value1->address);
jit_cache_native(&(gen->posn), insn->value2->address);
- }
break;
default:
- {
if(insn->dest && (insn->flags & JIT_INSN_DEST_IS_VALUE)
!= 0)
{
load_value(gen, insn->dest, 0);
@@ -1585,8 +1553,7 @@
jit_cache_opcode(&(gen->posn), insn->opcode);
if(insn->dest && (insn->flags & JIT_INSN_DEST_IS_VALUE)
== 0)
{
- store_value(gen, insn->dest, 0);
- }
+ store_value(gen, insn->dest);
}
break;
}
@@ -1608,7 +1575,7 @@
/* If this block has pending fixups, then apply them now */
fixup = (void **)(block->fixup_list);
- while(fixup != 0)
+ while(fixup != 0 && ((unsigned char *)fixup[2] - 1) < gen->posn.limit)
{
next = (void **)(fixup[1]);
fixup[1] = (void *)(jit_nint)(((void **)(block->address)) -
fixup);
Index: jit/jit-opcode.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-opcode.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- jit/jit-opcode.c 30 Aug 2006 13:31:58 -0000 1.19
+++ jit/jit-opcode.c 16 Oct 2006 02:27:24 -0000 1.20
@@ -558,7 +558,6 @@
{"lda_0_float32", JIT_OPCODE_NINT_ARG},
{"lda_0_float64", JIT_OPCODE_NINT_ARG},
{"lda_0_nfloat", JIT_OPCODE_NINT_ARG},
- {"lda_0_struct", JIT_OPCODE_NINT_ARG_TWO},
{"ldaa_0", JIT_OPCODE_NINT_ARG},
{"lda_1_sbyte", JIT_OPCODE_NINT_ARG},
{"lda_1_ubyte", JIT_OPCODE_NINT_ARG},
@@ -569,7 +568,6 @@
{"lda_1_float32", JIT_OPCODE_NINT_ARG},
{"lda_1_float64", JIT_OPCODE_NINT_ARG},
{"lda_1_nfloat", JIT_OPCODE_NINT_ARG},
- {"lda_1_struct", JIT_OPCODE_NINT_ARG_TWO},
{"ldaa_1", JIT_OPCODE_NINT_ARG},
{"lda_2_sbyte", JIT_OPCODE_NINT_ARG},
{"lda_2_ubyte", JIT_OPCODE_NINT_ARG},
@@ -580,7 +578,6 @@
{"lda_2_float32", JIT_OPCODE_NINT_ARG},
{"lda_2_float64", JIT_OPCODE_NINT_ARG},
{"lda_2_nfloat", JIT_OPCODE_NINT_ARG},
- {"lda_2_struct", JIT_OPCODE_NINT_ARG_TWO},
{"ldaa_2", JIT_OPCODE_NINT_ARG},
{"sta_0_byte", JIT_OPCODE_NINT_ARG},
{"sta_0_short", JIT_OPCODE_NINT_ARG},
@@ -589,7 +586,6 @@
{"sta_0_float32", JIT_OPCODE_NINT_ARG},
{"sta_0_float64", JIT_OPCODE_NINT_ARG},
{"sta_0_nfloat", JIT_OPCODE_NINT_ARG},
- {"sta_0_struct", JIT_OPCODE_NINT_ARG_TWO},
/*
* Local variable frame access opcodes.
@@ -603,7 +599,6 @@
{"ldl_0_float32", JIT_OPCODE_NINT_ARG},
{"ldl_0_float64", JIT_OPCODE_NINT_ARG},
{"ldl_0_nfloat", JIT_OPCODE_NINT_ARG},
- {"ldl_0_struct", JIT_OPCODE_NINT_ARG_TWO},
{"ldla_0", JIT_OPCODE_NINT_ARG},
{"ldl_1_sbyte", JIT_OPCODE_NINT_ARG},
{"ldl_1_ubyte", JIT_OPCODE_NINT_ARG},
@@ -614,7 +609,6 @@
{"ldl_1_float32", JIT_OPCODE_NINT_ARG},
{"ldl_1_float64", JIT_OPCODE_NINT_ARG},
{"ldl_1_nfloat", JIT_OPCODE_NINT_ARG},
- {"ldl_1_struct", JIT_OPCODE_NINT_ARG_TWO},
{"ldla_1", JIT_OPCODE_NINT_ARG},
{"ldl_2_sbyte", JIT_OPCODE_NINT_ARG},
{"ldl_2_ubyte", JIT_OPCODE_NINT_ARG},
@@ -625,7 +619,6 @@
{"ldl_2_float32", JIT_OPCODE_NINT_ARG},
{"ldl_2_float64", JIT_OPCODE_NINT_ARG},
{"ldl_2_nfloat", JIT_OPCODE_NINT_ARG},
- {"ldl_2_struct", JIT_OPCODE_NINT_ARG_TWO},
{"ldla_2", JIT_OPCODE_NINT_ARG},
{"stl_0_byte", JIT_OPCODE_NINT_ARG},
{"stl_0_short", JIT_OPCODE_NINT_ARG},
@@ -634,7 +627,6 @@
{"stl_0_float32", JIT_OPCODE_NINT_ARG},
{"stl_0_float64", JIT_OPCODE_NINT_ARG},
{"stl_0_nfloat", JIT_OPCODE_NINT_ARG},
- {"stl_0_struct", JIT_OPCODE_NINT_ARG_TWO},
/*
* Load constant values.
@@ -663,7 +655,6 @@
{"ldr_0_float32", 0},
{"ldr_0_float64", 0},
{"ldr_0_nfloat", 0},
- {"ldr_0_small_struct", JIT_OPCODE_NINT_ARG},
/*
* Stack management.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog jit/jit-interp.h jit/jit-inter...,
Aleksey Demakov <=