Skip to content

Instantly share code, notes, and snippets.

@benpye
Created August 5, 2015 22:44
Show Gist options
  • Save benpye/a4fcc0154c6d69efe875 to your computer and use it in GitHub Desktop.
Save benpye/a4fcc0154c6d69efe875 to your computer and use it in GitHub Desktop.
Compiling 0 System.AppDomain::SetupDomain, IL size = 58, hsh=0x7a83b94f
; Assembly listing for method System.AppDomain:SetupDomain(bool,ref,ref,ref,ref):this
; Emitting BLENDED_CODE for generic ARM CPU
; optimized code
; r11 based frame
; fully interruptible
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 6 ) ref -> [sp+0x00] do-not-enreg[H] this
;* V01 arg1 [V01 ] ( 0, 0 ) bool -> zero ref
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero ref
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero ref
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero ref
;* V05 arg5 [V05 ] ( 0, 0 ) ref -> zero ref
;* V06 loc0 [V06,T03] ( 0, 0 ) ref -> zero ref do-not-enreg[H]
; V07 loc1 [V07 ] ( 5, 5 ) bool -> [sp+0x04] do-not-enreg[XF] must-init addr-exposed
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero ref
; V09 tmp0 [V09,T01] ( 4, 8 ) ref -> r12
; V10 tmp1 [V10,T02] ( 2, 4 ) bool -> r0
;# V11 OutArgs [V11 ] ( 1, 1 ) lclBlk ( 0) [sp+0x00]
; V12 PSPSym [V12 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed
;
; Lcl frame size = 16
G_M18101_IG01:
000000 E92D 4800 push {r11,lr}
000004 B084 sub sp, 16
000006 F10D 0B10 add r11, sp, 16
00000A F04F 0C00 mov r12, 0
00000E F8CD C004 str r12, [sp+0x04] // [V07 loc1]
000012 F10D 0C18 add r12, sp, 24
000016 F8CD C00C str r12, [sp+0x0c] // [V12 PSPSym]
00001A 9000 str r0, [sp] // [V00 this]
G_M18101_IG02:
00001C 2300 movs r3, 0
00001E 9301 str r3, [sp+0x04] // [V07 loc1]
G_M18101_IG03:
000020 F89D 3004 ldrb r3, [sp+0x04] // [V07 loc1]
000024 2200 movs r2, 0
000026 4293 cmp r3, r2
000028 D004 beq SHORT G_M18101_IG04
00002A F249 7C91 movw r12, 0x9791
00002E F2CB 3CA0 movt r12, 0xb3a0
000032 47E0 blx r12 // System.Threading.Monitor:ThrowLockTakenException()
G_M18101_IG04:
000034 A901 add r1, sp, 4 // [V07 loc1]
000036 9800 ldr r0, [sp] // [V00 this]
000038 F24C 5CF5 movw r12, 0xc5f5
00003C F2CB 5CD5 movt r12, 0xb5d5
000040 47E0 blx r12 // System.Threading.Monitor:ReliableEnter(ref,byref)
000042 F89D 0004 ldrb r0, [sp+0x04] // [V07 loc1]
000046 2100 movs r1, 0
000048 4288 cmp r0, r1
00004A D108 bne SHORT G_M18101_IG05
00004C 2004 movs r0, 4
00004E 2100 movs r1, 0
000050 2200 movs r2, 0
000052 2300 movs r3, 0
000054 F64E 1C05 movw r12, 0xe905
000058 F2CB 3CA0 movt r12, 0xb3a0
00005C 47E0 blx r12 // System.Diagnostics.Contracts.Contract:ReportFailure(int,ref,ref,ref)
G_M18101_IG05:
00005E 9800 ldr r0, [sp] // [V00 this]
000060 68C0 ldr r0, [r0+12]
000062 2300 movs r3, 0
000064 4298 cmp r0, r3
000066 D120 bne SHORT G_M18101_IG06
000068 F645 30F4 movw r0, 0x5bf4
00006C F2CB 100B movt r0, 0xb10b
000070 F247 4CDD movw r12, 0x74dd
000074 F2CB 5CD5 movt r12, 0xb5d5
000078 47E0 blx r12 // CORINFO_HELP_NEWSFAST
00007A 4684 mov r12, r0
00007C 2100 movs r1, 0
00007E F8CC 102C str r1, [r12+44]
000082 F241 013C movw r1, 0x103c
000086 F2CB 2190 movt r1, 0xb290
00008A 6809 ldr r1, [r1]
00008C F10C 0014 add r0, r12, 20
000090 F24C 2C81 movw r12, 0xc281
000094 F2CB 5CDE movt r12, 0xb5de
000098 47E0 blx r12 // CORINFO_HELP_ASSIGN_REF
00009A 9800 ldr r0, [sp] // [V00 this]
00009C 4661 mov r1, r12
00009E 2200 movs r2, 0
0000A0 F649 2C21 movw r12, 0x9a21
0000A4 F2CB 3CA0 movt r12, 0xb3a0
0000A8 47E0 blx r12 // System.AppDomain:SetupFusionStore(ref,ref):this
G_M18101_IG06:
0000AA F64E 2E5B movw lr, LOW ADDRESS G_M18101_IG08
0000AE F2CB 3EA0 movt lr, HIGH ADDRESS G_M18101_IG08
0000B2 E004 b SHORT G_M18101_IG09
G_M18101_IG07:
0000B4 BF00 nop
G_M18101_IG08:
0000B6 B004 add sp, 16
0000B8 E8BD 4800 pop {r11,lr}
0000BC 4770 bx lr
G_M18101_IG09:
0000BE E92D 480C push {r2,r3,r11,lr}
0000C2 F10B 0308 add r3, r11, 8
0000C6 9301 str r3, [sp+0x04]
G_M18101_IG10:
0000C8 F85B 0C0C ldr r0, [r11-0x0c] // [V07 loc1]
0000CC B2C0 uxtb r0, r0
0000CE 2300 movs r3, 0
0000D0 4298 cmp r0, r3
0000D2 D006 beq SHORT G_M18101_IG11
0000D4 F85B 0C10 ldr r0, [r11-0x10] // [V00 this]
0000D8 F64C 3C6D movw r12, 0xcb6d
0000DC F2CB 5CD5 movt r12, 0xb5d5
0000E0 47E0 blx r12 // System.Threading.Monitor:Exit(ref)
G_M18101_IG11:
0000E2 E8BD 880C pop {r2,r3,r11,pc}
; Total bytes of code 230, prolog size 28 for method System.AppDomain:SetupDomain(bool,ref,ref,ref,ref):this
; ============================================================
Compiling 1 System.AppDomain::SetupFusionStore, IL size = 71, hsh=0xc5141dd8
; Assembly listing for method System.AppDomain:SetupFusionStore(ref,ref):this
; Emitting BLENDED_CODE for generic ARM CPU
; optimized code
; r11 based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00,T01] ( 5, 4.5) ref -> r5 this
; V01 arg1 [V01,T00] ( 11, 9.7) ref -> r4
; V02 arg2 [V02,T03] ( 4, 3 ) ref -> r6
; V03 tmp0 [V03,T07] ( 2, 2 ) int -> r0
; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> r0
; V05 tmp2 [V05,T08] ( 1, 2 ) ref -> r0
; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> r1
; V07 tmp4 [V07,T06] ( 2, 2 ) ref -> r1
;# V08 OutArgs [V08 ] ( 1, 1 ) lclBlk ( 0) [sp+0x00]
; V09 cse0 [V09,T05] ( 4, 3 ) int -> r1
;
; Lcl frame size = 4
Assert failure(PID 10208 [0x000027e0], Thread: 10208 [0x27e0]): Assertion failed '!varDsc->lvIsRegCandidate()' in 'System.AppDomain:SetupFusionStore(ref,ref):this' (IL size 71)
File: /home/ubuntu/git/coreclr/src/jit/codegenarm.cpp Line: 725
Image: /home/ubuntu/git/coreclr/bin/Product/Linux.arm.Debug/corerun
Program received signal SIGTRAP, Trace/breakpoint trap.
0xb63885fc in DBG_DebugBreak () at /home/ubuntu/git/coreclr/src/pal/src/thread/context.cpp:1293
1293 __asm__ __volatile__(".inst.w 0xde01");
(gdb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment