[Mono-bugs] [Bug 70864][Blo] Changed - problems returning small structs from delegates on windows
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Sun, 20 Feb 2005 01:30:08 -0500 (EST)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by ddmk@r66.ru.
http://bugzilla.ximian.com/show_bug.cgi?id=70864
--- shadow/70864 2005-02-19 15:53:36.000000000 -0500
+++ shadow/70864.tmp.17847 2005-02-20 01:30:08.000000000 -0500
@@ -310,6 +310,359 @@
has several of them.
------- Additional Comments From vargaz@gmail.com 2005-02-19 15:53 -------
Sorry, I meant the Set_Basic_Functions method, not the struct_test_body
method. Could you include the log for that ?
+
+------- Additional Comments From ddmk@r66.ru 2005-02-20 01:30 -------
+There end of log:
+method to IR System.String:memcpy4 (byte*,byte*,int)
+converting (in B2: stack: 0) IL_0000: br IL_0051
+converting (in B4: stack: 0) IL_0005: ldarg.0
+converting (in B4: stack: 1) IL_0006: conv.i
+converting (in B4: stack: 1) IL_0007: ldc.i4.0
+converting (in B4: stack: 2) IL_0008: ldc.i4.4
+converting (in B4: stack: 3) IL_0009: mul
+converting (in B4: stack: 2) IL_000a: add
+converting (in B4: stack: 1) IL_000b: ldarg.1
+converting (in B4: stack: 2) IL_000c: conv.i
+converting (in B4: stack: 2) IL_000d: ldc.i4.0
+converting (in B4: stack: 3) IL_000e: ldc.i4.4
+converting (in B4: stack: 4) IL_000f: mul
+converting (in B4: stack: 3) IL_0010: add
+converting (in B4: stack: 2) IL_0011: ldind.i4
+converting (in B4: stack: 2) IL_0012: stind.i4
+converting (in B4: stack: 0) IL_0013: ldarg.0
+converting (in B4: stack: 1) IL_0014: conv.i
+converting (in B4: stack: 1) IL_0015: ldc.i4.1
+converting (in B4: stack: 2) IL_0016: ldc.i4.4
+converting (in B4: stack: 3) IL_0017: mul
+converting (in B4: stack: 2) IL_0018: add
+converting (in B4: stack: 1) IL_0019: ldarg.1
+converting (in B4: stack: 2) IL_001a: conv.i
+converting (in B4: stack: 2) IL_001b: ldc.i4.1
+converting (in B4: stack: 3) IL_001c: ldc.i4.4
+converting (in B4: stack: 4) IL_001d: mul
+converting (in B4: stack: 3) IL_001e: add
+converting (in B4: stack: 2) IL_001f: ldind.i4
+converting (in B4: stack: 2) IL_0020: stind.i4
+converting (in B4: stack: 0) IL_0021: ldarg.0
+converting (in B4: stack: 1) IL_0022: conv.i
+converting (in B4: stack: 1) IL_0023: ldc.i4.2
+converting (in B4: stack: 2) IL_0024: ldc.i4.4
+converting (in B4: stack: 3) IL_0025: mul
+converting (in B4: stack: 2) IL_0026: add
+converting (in B4: stack: 1) IL_0027: ldarg.1
+converting (in B4: stack: 2) IL_0028: conv.i
+converting (in B4: stack: 2) IL_0029: ldc.i4.2
+converting (in B4: stack: 3) IL_002a: ldc.i4.4
+converting (in B4: stack: 4) IL_002b: mul
+converting (in B4: stack: 3) IL_002c: add
+converting (in B4: stack: 2) IL_002d: ldind.i4
+converting (in B4: stack: 2) IL_002e: stind.i4
+converting (in B4: stack: 0) IL_002f: ldarg.0
+converting (in B4: stack: 1) IL_0030: conv.i
+converting (in B4: stack: 1) IL_0031: ldc.i4.3
+converting (in B4: stack: 2) IL_0032: ldc.i4.4
+converting (in B4: stack: 3) IL_0033: mul
+converting (in B4: stack: 2) IL_0034: add
+converting (in B4: stack: 1) IL_0035: ldarg.1
+converting (in B4: stack: 2) IL_0036: conv.i
+converting (in B4: stack: 2) IL_0037: ldc.i4.3
+converting (in B4: stack: 3) IL_0038: ldc.i4.4
+converting (in B4: stack: 4) IL_0039: mul
+converting (in B4: stack: 3) IL_003a: add
+converting (in B4: stack: 2) IL_003b: ldind.i4
+converting (in B4: stack: 2) IL_003c: stind.i4
+converting (in B4: stack: 0) IL_003d: ldarg.0
+converting (in B4: stack: 1) IL_003e: conv.i
+converting (in B4: stack: 1) IL_003f: ldc.i4.s 16
+converting (in B4: stack: 2) IL_0041: add
+converting (in B4: stack: 1) IL_0042: starg.s 0
+converting (in B4: stack: 0) IL_0044: ldarg.1
+converting (in B4: stack: 1) IL_0045: conv.i
+converting (in B4: stack: 1) IL_0046: ldc.i4.s 16
+converting (in B4: stack: 2) IL_0048: add
+converting (in B4: stack: 1) IL_0049: starg.s 1
+converting (in B4: stack: 0) IL_004b: ldarg.2
+converting (in B4: stack: 1) IL_004c: ldc.i4.s 16
+converting (in B4: stack: 2) IL_004e: sub
+converting (in B4: stack: 1) IL_004f: starg.s 2
+converting (in B3: stack: 0) IL_0051: ldarg.2
+converting (in B3: stack: 1) IL_0052: ldc.i4.s 16
+converting (in B3: stack: 2) IL_0054: bge IL_0005
+converting (in B9: stack: 0) IL_0059: br IL_007d
+converting (in B6: stack: 0) IL_005e: ldarg.0
+converting (in B6: stack: 1) IL_005f: conv.i
+converting (in B6: stack: 1) IL_0060: ldc.i4.0
+converting (in B6: stack: 2) IL_0061: ldc.i4.4
+converting (in B6: stack: 3) IL_0062: mul
+converting (in B6: stack: 2) IL_0063: add
+converting (in B6: stack: 1) IL_0064: ldarg.1
+converting (in B6: stack: 2) IL_0065: conv.i
+converting (in B6: stack: 2) IL_0066: ldc.i4.0
+converting (in B6: stack: 3) IL_0067: ldc.i4.4
+converting (in B6: stack: 4) IL_0068: mul
+converting (in B6: stack: 3) IL_0069: add
+converting (in B6: stack: 2) IL_006a: ldind.i4
+converting (in B6: stack: 2) IL_006b: stind.i4
+converting (in B6: stack: 0) IL_006c: ldarg.0
+converting (in B6: stack: 1) IL_006d: conv.i
+converting (in B6: stack: 1) IL_006e: ldc.i4.4
+converting (in B6: stack: 2) IL_006f: add
+converting (in B6: stack: 1) IL_0070: starg.s 0
+converting (in B6: stack: 0) IL_0072: ldarg.1
+converting (in B6: stack: 1) IL_0073: conv.i
+converting (in B6: stack: 1) IL_0074: ldc.i4.4
+converting (in B6: stack: 2) IL_0075: add
+converting (in B6: stack: 1) IL_0076: starg.s 1
+converting (in B6: stack: 0) IL_0078: ldarg.2
+converting (in B6: stack: 1) IL_0079: ldc.i4.4
+converting (in B6: stack: 2) IL_007a: sub
+converting (in B6: stack: 1) IL_007b: starg.s 2
+converting (in B5: stack: 0) IL_007d: ldarg.2
+converting (in B5: stack: 1) IL_007e: ldc.i4.4
+converting (in B5: stack: 2) IL_007f: bge IL_005e
+converting (in B10: stack: 0) IL_0084: br IL_00a4
+converting (in B8: stack: 0) IL_0089: ldarg.0
+converting (in B8: stack: 1) IL_008a: conv.i
+converting (in B8: stack: 1) IL_008b: ldc.i4.0
+converting (in B8: stack: 2) IL_008c: add
+converting (in B8: stack: 1) IL_008d: ldarg.1
+converting (in B8: stack: 2) IL_008e: conv.i
+converting (in B8: stack: 2) IL_008f: ldc.i4.0
+converting (in B8: stack: 3) IL_0090: add
+converting (in B8: stack: 2) IL_0091: ldind.u1
+converting (in B8: stack: 2) IL_0092: stind.i1
+converting (in B8: stack: 0) IL_0093: ldarg.0
+converting (in B8: stack: 1) IL_0094: conv.i
+converting (in B8: stack: 1) IL_0095: ldc.i4.1
+converting (in B8: stack: 2) IL_0096: add
+converting (in B8: stack: 1) IL_0097: starg.s 0
+converting (in B8: stack: 0) IL_0099: ldarg.1
+converting (in B8: stack: 1) IL_009a: conv.i
+converting (in B8: stack: 1) IL_009b: ldc.i4.1
+converting (in B8: stack: 2) IL_009c: add
+converting (in B8: stack: 1) IL_009d: starg.s 1
+converting (in B8: stack: 0) IL_009f: ldarg.2
+converting (in B8: stack: 1) IL_00a0: ldc.i4.1
+converting (in B8: stack: 2) IL_00a1: sub
+converting (in B8: stack: 1) IL_00a2: starg.s 2
+converting (in B7: stack: 0) IL_00a4: ldarg.2
+converting (in B7: stack: 1) IL_00a5: ldc.i4.0
+converting (in B7: stack: 2) IL_00a6: bgt IL_0089
+converting (in B11: stack: 0) IL_00ab: ret
+REGION BB0 IL_0000 ID_FFFFFFFF
+REGION BB2 IL_0000 ID_FFFFFFFF
+REGION BB4 IL_004f ID_FFFFFFFF
+REGION BB3 IL_0054 ID_FFFFFFFF
+REGION BB9 IL_0059 ID_FFFFFFFF
+REGION BB6 IL_007b ID_FFFFFFFF
+REGION BB5 IL_007f ID_FFFFFFFF
+REGION BB10 IL_0084 ID_FFFFFFFF
+REGION BB8 IL_00a2 ID_FFFFFFFF
+REGION BB7 IL_00a6 ID_FFFFFFFF
+REGION BB11 IL_00ab ID_FFFFFFFF
+REGION BB1 IL_0000 ID_FFFFFFFF
+remove_block_if_useless System.String:memcpy4 (byte*,byte*,int),
+removed BB9
+remove_block_if_useless System.String:memcpy4 (byte*,byte*,int),
+removed BB10
+remove_block_if_useless System.String:memcpy4 (byte*,byte*,int),
+removed BB11
+REGVAR 2 C27 R7
+REGVAR 1 C36 R6
+REGVAR 0 C36 R3
+DUMP BLOCK 0:
+DUMP BLOCK 2:
+ br[B3]
+DUMP BLOCK 4:
+ (stind.i4 (ldind.i regvar[%ebx]) (ldind.i4 (ldind.i regvar[%esi])))
+ (stind.i4 (add (ldind.i regvar[%ebx]) iconst[4]) (ldind.i4 (add
+(ldind.i regvar[%esi]) iconst[4])))
+ (stind.i4 (add (ldind.i regvar[%ebx]) iconst[8]) (ldind.i4 (add
+(ldind.i regvar[%esi]) iconst[8])))
+ (stind.i4 (add (ldind.i regvar[%ebx]) iconst[12]) (ldind.i4 (add
+(ldind.i regvar[%esi]) iconst[12])))
+ (stind.i regvar[%ebx] (add (ldind.i regvar[%ebx]) iconst[16]))
+ (stind.i regvar[%esi] (add (ldind.i regvar[%esi]) iconst[16]))
+ (stind.i4 regvar[%edi] (sub (ldind.i4 regvar[%edi]) iconst[16]))
+DUMP BLOCK 3:
+ (bge[B4B5] (compare (ldind.i4 regvar[%edi]) iconst[16]))
+ br[B5]
+DUMP BLOCK 6:
+ (stind.i4 (ldind.i regvar[%ebx]) (ldind.i4 (ldind.i regvar[%esi])))
+ (stind.i regvar[%ebx] (add (ldind.i regvar[%ebx]) iconst[4]))
+ (stind.i regvar[%esi] (add (ldind.i regvar[%esi]) iconst[4]))
+ (stind.i4 regvar[%edi] (sub (ldind.i4 regvar[%edi]) iconst[4]))
+DUMP BLOCK 5:
+ (bge[B6B7] (compare (ldind.i4 regvar[%edi]) iconst[4]))
+ br[B7]
+DUMP BLOCK 8:
+ (stind.i1 (ldind.i regvar[%ebx]) (ldind.u1 (ldind.i regvar[%esi])))
+ (stind.i regvar[%ebx] (add (ldind.i regvar[%ebx]) iconst[1]))
+ (stind.i regvar[%esi] (add (ldind.i regvar[%esi]) iconst[1]))
+ (stind.i4 regvar[%edi] (sub (ldind.i4 regvar[%edi]) iconst[1]))
+DUMP BLOCK 7:
+ (bgt[B8B1] (compare (ldind.i4 regvar[%edi]) iconst[0]))
+DUMP BLOCK 1:
+LABEL BLOCK 2:
+ br[B3]
+LABEL BLOCK 4:
+ (stind.i4 (ldind.i regvar[%ebx]) (ldind.i4 (ldind.i regvar[%esi])))
+ (stind.i4 (add (ldind.i regvar[%ebx]) iconst[4]) (ldind.i4 (add
+(ldind.i regvar[%esi]) iconst[4])))
+ (stind.i4 (add (ldind.i regvar[%ebx]) iconst[8]) (ldind.i4 (add
+(ldind.i regvar[%esi]) iconst[8])))
+ (stind.i4 (add (ldind.i regvar[%ebx]) iconst[12]) (ldind.i4 (add
+(ldind.i regvar[%esi]) iconst[12])))
+ (stind.i regvar[%ebx] (add (ldind.i regvar[%ebx]) iconst[16]))
+ (stind.i regvar[%esi] (add (ldind.i regvar[%esi]) iconst[16]))
+ (stind.i4 regvar[%edi] (sub (ldind.i4 regvar[%edi]) iconst[16]))
+LABEL BLOCK 3:
+ (bge[B4B5] (compare (ldind.i4 regvar[%edi]) iconst[16]))
+ br[B5]
+LABEL BLOCK 6:
+ (stind.i4 (ldind.i regvar[%ebx]) (ldind.i4 (ldind.i regvar[%esi])))
+ (stind.i regvar[%ebx] (add (ldind.i regvar[%ebx]) iconst[4]))
+ (stind.i regvar[%esi] (add (ldind.i regvar[%esi]) iconst[4]))
+ (stind.i4 regvar[%edi] (sub (ldind.i4 regvar[%edi]) iconst[4]))
+LABEL BLOCK 5:
+ (bge[B6B7] (compare (ldind.i4 regvar[%edi]) iconst[4]))
+ br[B7]
+LABEL BLOCK 8:
+ (stind.i1 (ldind.i regvar[%ebx]) (ldind.u1 (ldind.i regvar[%esi])))
+ (stind.i regvar[%ebx] (add (ldind.i regvar[%ebx]) iconst[1]))
+ (stind.i regvar[%esi] (add (ldind.i regvar[%esi]) iconst[1]))
+ (stind.i4 regvar[%edi] (sub (ldind.i4 regvar[%edi]) iconst[1]))
+LABEL BLOCK 7:
+ (bgt[B8B1] (compare (ldind.i4 regvar[%edi]) iconst[0]))
+LOCAL regalloc: basic block: 2
+ 1 br
+processing: 1 br
+LOCAL regalloc: basic block: 4
+ 1 loadi4_membase R8 <- %esi
+ 2 storei4_membase_reg %ebx <- R8
+ 3 loadi4_membase R9 <- %esi
+ 4 storei4_membase_reg %ebx <- R9
+ 5 loadi4_membase R10 <- %esi
+ 6 storei4_membase_reg %ebx <- R10
+ 7 loadi4_membase R11 <- %esi
+ 8 storei4_membase_reg %ebx <- R11
+ 9 add_imm %ebx <- %ebx clobbers: 1
+ 10 add_imm %esi <- %esi clobbers: 1
+ 11 sub_imm %edi <- %edi clobbers: 1
+liveness: %ebx [2 - 9]
+liveness: %esi [10 - 10]
+liveness: %edi [11 - 11]
+liveness: R8 [1 - 2]
+liveness: R9 [3 - 4]
+liveness: R10 [5 - 6]
+liveness: R11 [7 - 8]
+processing: 11 sub_imm %edi <- %edi clobbers: 1
+processing: 10 add_imm %esi <- %esi clobbers: 1
+processing: 9 add_imm %ebx <- %ebx clobbers: 1
+processing: 8 storei4_membase_reg %ebx <- R11
+ assigned sreg1 %eax to R11
+processing: 7 loadi4_membase R11 <- %esi
+ assigned dreg %eax to dest R11
+ freeable %eax (R11) (born in 7)
+processing: 6 storei4_membase_reg %ebx <- R10
+ assigned sreg1 %eax to R10
+processing: 5 loadi4_membase R10 <- %esi
+ assigned dreg %eax to dest R10
+ freeable %eax (R10) (born in 5)
+processing: 4 storei4_membase_reg %ebx <- R9
+ assigned sreg1 %eax to R9
+processing: 3 loadi4_membase R9 <- %esi
+ assigned dreg %eax to dest R9
+ freeable %eax (R9) (born in 3)
+processing: 2 storei4_membase_reg %ebx <- R8
+ assigned sreg1 %eax to R8
+processing: 1 loadi4_membase R8 <- %esi
+ assigned dreg %eax to dest R8
+ freeable %eax (R8) (born in 1)
+LOCAL regalloc: basic block: 3
+ 1 compare_imm %edi
+ 2 bge
+ 3 br
+processing: 3 br
+processing: 2 bge
+processing: 1 compare_imm %edi
+LOCAL regalloc: basic block: 6
+ 1 loadi4_membase R8 <- %esi
+ 2 storei4_membase_reg %ebx <- R8
+ 3 add_imm %ebx <- %ebx clobbers: 1
+ 4 add_imm %esi <- %esi clobbers: 1
+ 5 sub_imm %edi <- %edi clobbers: 1
+liveness: %ebx [2 - 3]
+liveness: %esi [4 - 4]
+liveness: %edi [5 - 5]
+liveness: R8 [1 - 2]
+processing: 5 sub_imm %edi <- %edi clobbers: 1
+processing: 4 add_imm %esi <- %esi clobbers: 1
+processing: 3 add_imm %ebx <- %ebx clobbers: 1
+processing: 2 storei4_membase_reg %ebx <- R8
+ assigned sreg1 %eax to R8
+processing: 1 loadi4_membase R8 <- %esi
+ assigned dreg %eax to dest R8
+ freeable %eax (R8) (born in 1)
+LOCAL regalloc: basic block: 5
+ 1 compare_imm %edi
+ 2 bge
+ 3 br
+processing: 3 br
+processing: 2 bge
+processing: 1 compare_imm %edi
+LOCAL regalloc: basic block: 8
+ 1 loadu1_membase R8 <- %esi
+ 2 storei1_membase_reg %ebx <- R8
+ 3 x86_inc_reg %ebx <- %ebx clobbers: 1
+ 4 x86_inc_reg %esi <- %esi clobbers: 1
+ 5 x86_dec_reg %edi <- %edi clobbers: 1
+liveness: %ebx [2 - 3]
+liveness: %esi [4 - 4]
+liveness: %edi [5 - 5]
+liveness: R8 [1 - 2]
+processing: 5 x86_dec_reg %edi <- %edi clobbers: 1
+processing: 4 x86_inc_reg %esi <- %esi clobbers: 1
+processing: 3 x86_inc_reg %ebx <- %ebx clobbers: 1
+processing: 2 storei1_membase_reg %ebx <- R8
+ assigned sreg1 %eax to R8
+processing: 1 loadu1_membase R8 <- %esi
+ assigned dreg %eax to dest R8
+ freeable %eax (R8) (born in 1)
+LOCAL regalloc: basic block: 7
+ 1 compare_imm %edi
+ 2 bgt
+processing: 2 bgt
+processing: 1 compare_imm %edi
+Argument 0 assigned to register %ebx
+Argument 1 assigned to register %esi
+Argument 2 assigned to register %edi
+Basic block 0 starting at offset 0xf
+Basic block 2 starting at offset 0xf
+Basic block 4 starting at offset 0x18
+Basic block 3 starting at offset 0x37
+Basic block 6 starting at offset 0x40
+Basic block 5 starting at offset 0x4d
+Basic block 8 starting at offset 0x58
+Basic block 7 starting at offset 0x60
+Basic block 1 starting at offset 0x64
+Method System.String:memcpy4 (byte*,byte*,int) emitted at 01654BC8
+to 01654C36 [cs_start.exe]
+converting method (wrapper managed-to-native)
+Splinex.PluginSystem.PluginLoader:Set_Basic_Functions
+(int,Splinex.PluginSystem.PluginLoader/NetF,Splinex.PluginSystem.Seri
+alizationWrappers,Splinex.PluginSystem.StreamWrappers,int)
+creating vars
+creating locals
+locals done
+method to IR (wrapper managed-to-native)
+Splinex.PluginSystem.PluginLoader:Set_Basic_Functions
+(int,Splinex.PluginSystem.PluginLoader/NetF,Splinex.PluginSystem.Seri
+alizationWrappers,Splinex.PluginSystem.StreamWrappers,int)
+
+here mono crashes with message box at
+IL_0466:bge.un IL_900046b
+