[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
+