Search Unity

Burst compiling and outputting dll, but not running in build

Discussion in 'Burst' started by Taicoon, Feb 12, 2019.

  1. Taicoon

    Taicoon

    Joined:
    Jul 14, 2012
    Posts:
    6
    Question is if the following is a known random bug, or an issue which can be fixed through some action of my own.

    I have a project with a number of jobs, doing a lot of custom physics calculations. It is Universe Sandbox, so it is rather large and hard to cut down to a more debug friendly size.
    In editor, the jobs do compile and run using burst. The profiler tells me this and the performance tells me this.

    When I make a build, it does compile, and it does output the lib_burst_generated.dll
    Attaching the profiler, it indicates that the jobs do not run burst and the performance is about half what I see in the editor, seemingly also indicating that burst is not running.

    I have tried a number of different [burstCompile] settings and the result are the same. I tried development builds and ordinary builds. Also same result.

    The jobs are heavily using native lists, implicitly cast as arrays upon job start, if that matters.

    I made other, smaller, burst job projects which compile and run fine, so it seems the development environment is set up correctly.

    unity 2018.3.3f1
    burst 0.2.4 preview 41
    entities 0.0.12 preview 21 (tried 23 as well)
    collections 0.0.9 preview 11
     
    Last edited: Feb 13, 2019
  2. xoofx

    xoofx

    Unity Technologies

    Joined:
    Nov 5, 2016
    Posts:
    417
    Are the jobs that are supposed to be compiled by burst listed in the burst inspector as active and from which you can dump ASM output?
     
  3. Taicoon

    Taicoon

    Joined:
    Jul 14, 2012
    Posts:
    6
    Yes they are. As I mentioned, they work fine in inspector.
    If you mean to say that you would like to see the disassembly, I will paste one below.



    Code (CSharp):
    1.   .text
    2.         .intel_syntax noprefix
    3.         .file   "main"
    4.         .section        .rodata.cst8,"aM",@progbits,8
    5.         .p2align        3
    6. .LCPI0_0:
    7.         .quad   4607182418800017408
    8.         .section        .rodata.cst16,"aM",@progbits,16
    9.         .p2align        4
    10. .LCPI0_1:
    11.         .quad   -9223372036854775808
    12.         .quad   -9223372036854775808
    13.         .text
    14.         .globl  "Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[NBody.ComputationLayer.GravityCalculator+AcclerationJob, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(NBody.ComputationLayer.GravityCalculator+AcclerationJob&, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)"
    15.         .p2align        4, 0x90
    16.         .type   "Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[NBody.ComputationLayer.GravityCalculator+AcclerationJob, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(NBody.ComputationLayer.GravityCalculator+AcclerationJob&, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)",@function
    17. "Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[NBody.ComputationLayer.GravityCalculator+AcclerationJob, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(NBody.ComputationLayer.GravityCalculator+AcclerationJob&, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)":
    18.         .cfi_startproc
    19.         push    r15
    20.         .cfi_def_cfa_offset 16
    21.         push    r14
    22.         .cfi_def_cfa_offset 24
    23.         push    r13
    24.         .cfi_def_cfa_offset 32
    25.         push    r12
    26.         .cfi_def_cfa_offset 40
    27.         push    rsi
    28.         .cfi_def_cfa_offset 48
    29.         push    rdi
    30.         .cfi_def_cfa_offset 56
    31.         push    rbp
    32.         .cfi_def_cfa_offset 64
    33.         push    rbx
    34.         .cfi_def_cfa_offset 72
    35.         sub     rsp, 280
    36.         vmovapd xmmword ptr [rsp + 256], xmm15
    37.         vmovapd xmmword ptr [rsp + 240], xmm14
    38.         vmovapd xmmword ptr [rsp + 224], xmm13
    39.         vmovapd xmmword ptr [rsp + 208], xmm12
    40.         vmovapd xmmword ptr [rsp + 192], xmm11
    41.         vmovapd xmmword ptr [rsp + 176], xmm10
    42.         vmovapd xmmword ptr [rsp + 160], xmm9
    43.         vmovapd xmmword ptr [rsp + 144], xmm8
    44.         vmovapd xmmword ptr [rsp + 128], xmm7
    45.         vmovapd xmmword ptr [rsp + 112], xmm6
    46.         .cfi_def_cfa_offset 352
    47.         .cfi_offset rbx, -72
    48.         .cfi_offset rbp, -64
    49.         .cfi_offset rdi, -56
    50.         .cfi_offset rsi, -48
    51.         .cfi_offset r12, -40
    52.         .cfi_offset r13, -32
    53.         .cfi_offset r14, -24
    54.         .cfi_offset r15, -16
    55.         .cfi_offset xmm6, -240
    56.         .cfi_offset xmm7, -224
    57.         .cfi_offset xmm8, -208
    58.         .cfi_offset xmm9, -192
    59.         .cfi_offset xmm10, -176
    60.         .cfi_offset xmm11, -160
    61.         .cfi_offset xmm12, -144
    62.         .cfi_offset xmm13, -128
    63.         .cfi_offset xmm14, -112
    64.         .cfi_offset xmm15, -96
    65.         mov     rax, r9
    66.         mov     qword ptr [rsp + 64], r8
    67.         mov     rbx, rcx
    68.         mov     edx, dword ptr [rsp + 384]
    69.         movabs  rbp, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange_Ptr"
    70.         lea     r8, [rsp + 60]
    71.         lea     r9, [rsp + 56]
    72.         mov     qword ptr [rsp + 72], rax
    73.         mov     rcx, rax
    74.         call    qword ptr [rbp]
    75.         test    al, al
    76.         je      .LBB0_132
    77.         movabs  rsi, offset .Lburst_abort_Ptr
    78.         lea     r14, [rsp + 40]
    79.         movabs  rax, offset .LCPI0_0
    80.         vmovsd  xmm10, qword ptr [rax]
    81.         .p2align        4, 0x90
    82. .LBB0_2:
    83.         mov     r8d, dword ptr [rsp + 60]
    84.         mov     r9d, dword ptr [rsp + 56]
    85.         sub     r9d, r8d
    86.         mov     rcx, qword ptr [rsp + 64]
    87.         mov     rdx, rbx
    88.         movabs  rax, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges_Ptr"
    89.         call    qword ptr [rax]
    90.         movsxd  r15, dword ptr [rsp + 60]
    91.         cmp     r15d, dword ptr [rsp + 56]
    92.         jge     .LBB0_131
    93.         .p2align        4, 0x90
    94. .LBB0_3:
    95.         movsxd  rax, dword ptr [rbx + 12]
    96.         cmp     r15, rax
    97.         jl      .LBB0_5
    98.         movsxd  rcx, dword ptr [rbx + 16]
    99.         cmp     r15, rcx
    100.         jle     .LBB0_9
    101. .LBB0_5:
    102.         movsxd  rcx, dword ptr [rbx + 8]
    103.         cmp     r15, rcx
    104.         jge     .LBB0_8
    105.         test    eax, eax
    106.         jne     .LBB0_10
    107.         dec     ecx
    108.         cmp     dword ptr [rbx + 16], ecx
    109.         jne     .LBB0_10
    110.         .p2align        4, 0x90
    111. .LBB0_8:
    112.         movabs  rcx, offset .Lburst_abort.error.id
    113.         movabs  rdx, offset .Lburst_abort.error.message
    114.         call    qword ptr [rsi]
    115. .LBB0_9:
    116.         mov     eax, dword ptr [rbx + 32]
    117.         test    al, 1
    118.         je      .LBB0_11
    119.         jmp     .LBB0_13
    120.         .p2align        4, 0x90
    121. .LBB0_10:
    122.         movabs  rcx, offset .Lburst_abort.error.id.1
    123.         movabs  rdx, offset .Lburst_abort.error.message.2
    124.         call    qword ptr [rsi]
    125.         mov     eax, dword ptr [rbx + 32]
    126.         test    al, 1
    127.         jne     .LBB0_13
    128. .LBB0_11:
    129.         mov     rcx, qword ptr [rbx + 24]
    130.         mov     ecx, dword ptr [rcx]
    131.         and     ecx, -3
    132.         cmp     eax, ecx
    133.         je      .LBB0_13
    134.         mov     eax, dword ptr [rbx + 32]
    135.         mov     rcx, qword ptr [rbx + 24]
    136.         mov     qword ptr [rsp + 40], rcx
    137.         mov     dword ptr [rsp + 48], eax
    138.         mov     rcx, r14
    139.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    140.         call    qword ptr [rax]
    141. .LBB0_13:
    142.         mov     rax, qword ptr [rbx]
    143.         lea     rdi, [r15 + 2*r15]
    144.         vmovups xmm0, xmmword ptr [rax + 8*rdi]
    145.         vmovaps xmmword ptr [rsp + 96], xmm0
    146.         vmovsd  xmm0, qword ptr [rax + 8*rdi + 16]
    147.         vmovsd  qword ptr [rsp + 88], xmm0
    148.         movsxd  rax, dword ptr [rbx + 180]
    149.         cmp     r15, rax
    150.         jl      .LBB0_15
    151.         movsxd  rcx, dword ptr [rbx + 184]
    152.         cmp     r15, rcx
    153.         jle     .LBB0_19
    154. .LBB0_15:
    155.         movsxd  rcx, dword ptr [rbx + 176]
    156.         cmp     r15, rcx
    157.         jge     .LBB0_18
    158.         test    eax, eax
    159.         jne     .LBB0_20
    160.         dec     ecx
    161.         cmp     dword ptr [rbx + 184], ecx
    162.         jne     .LBB0_20
    163.         .p2align        4, 0x90
    164. .LBB0_18:
    165.         movabs  rcx, offset .Lburst_abort.error.id.3
    166.         movabs  rdx, offset .Lburst_abort.error.message.4
    167.         call    qword ptr [rsi]
    168. .LBB0_19:
    169.         mov     eax, dword ptr [rbx + 200]
    170.         test    al, 1
    171.         je      .LBB0_21
    172.         jmp     .LBB0_23
    173.         .p2align        4, 0x90
    174. .LBB0_20:
    175.         movabs  rcx, offset .Lburst_abort.error.id.5
    176.         movabs  rdx, offset .Lburst_abort.error.message.6
    177.         call    qword ptr [rsi]
    178.         mov     eax, dword ptr [rbx + 200]
    179.         test    al, 1
    180.         jne     .LBB0_23
    181. .LBB0_21:
    182.         mov     rcx, qword ptr [rbx + 192]
    183.         mov     ecx, dword ptr [rcx]
    184.         and     ecx, -3
    185.         cmp     eax, ecx
    186.         je      .LBB0_23
    187.         mov     eax, dword ptr [rbx + 200]
    188.         mov     rcx, qword ptr [rbx + 192]
    189.         mov     qword ptr [rsp + 40], rcx
    190.         mov     dword ptr [rsp + 48], eax
    191.         mov     rcx, r14
    192.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    193.         call    qword ptr [rax]
    194. .LBB0_23:
    195.         mov     eax, dword ptr [rbx + 392]
    196.         test    eax, eax
    197.         mov     qword ptr [rsp + 80], rdi
    198.         jle     .LBB0_122
    199.         mov     r12d, r15d
    200.         mov     rcx, qword ptr [rbx + 168]
    201.         mov     r13d, dword ptr [rcx + 4*r15]
    202.         vxorpd  xmm12, xmm12, xmm12
    203.         vxorpd  xmm13, xmm13, xmm13
    204.         mov     edi, 4
    205.         xor     ebp, ebp
    206.         vxorpd  xmm11, xmm11, xmm11
    207.         .p2align        4, 0x90
    208. .LBB0_25:
    209.         cmp     r12, rbp
    210.         je      .LBB0_118
    211.         cmp     r13d, -1
    212.         vmovapd xmm14, xmm10
    213.         je      .LBB0_49
    214.         movsxd  rax, dword ptr [rbx + 180]
    215.         cmp     rbp, rax
    216.         jl      .LBB0_29
    217.         movsxd  rcx, dword ptr [rbx + 184]
    218.         cmp     rbp, rcx
    219.         jle     .LBB0_33
    220. .LBB0_29:
    221.         movsxd  rcx, dword ptr [rbx + 176]
    222.         cmp     rbp, rcx
    223.         jge     .LBB0_32
    224.         test    eax, eax
    225.         jne     .LBB0_34
    226.         dec     ecx
    227.         cmp     dword ptr [rbx + 184], ecx
    228.         jne     .LBB0_34
    229. .LBB0_32:
    230.         movabs  rcx, offset .Lburst_abort.error.id.3
    231.         movabs  rdx, offset .Lburst_abort.error.message.4
    232.         call    qword ptr [rsi]
    233. .LBB0_33:
    234.         mov     eax, dword ptr [rbx + 200]
    235.         test    al, 1
    236.         je      .LBB0_35
    237.         jmp     .LBB0_37
    238. .LBB0_34:
    239.         movabs  rcx, offset .Lburst_abort.error.id.5
    240.         movabs  rdx, offset .Lburst_abort.error.message.6
    241.         call    qword ptr [rsi]
    242.         mov     eax, dword ptr [rbx + 200]
    243.         test    al, 1
    244.         jne     .LBB0_37
    245. .LBB0_35:
    246.         mov     rcx, qword ptr [rbx + 192]
    247.         mov     ecx, dword ptr [rcx]
    248.         and     ecx, -3
    249.         cmp     eax, ecx
    250.         je      .LBB0_37
    251.         mov     eax, dword ptr [rbx + 200]
    252.         mov     rcx, qword ptr [rbx + 192]
    253.         mov     qword ptr [rsp + 40], rcx
    254.         mov     dword ptr [rsp + 48], eax
    255.         mov     rcx, r14
    256.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    257.         call    qword ptr [rax]
    258. .LBB0_37:
    259.         mov     rax, qword ptr [rbx + 168]
    260.         cmp     r13d, dword ptr [rax + 4*rbp]
    261.         vmovapd xmm14, xmm10
    262.         jne     .LBB0_49
    263.         movsxd  rax, dword ptr [rbx + 236]
    264.         cmp     r15, rax
    265.         jl      .LBB0_40
    266.         movsxd  rcx, dword ptr [rbx + 240]
    267.         cmp     r15, rcx
    268.         jle     .LBB0_44
    269. .LBB0_40:
    270.         movsxd  rcx, dword ptr [rbx + 232]
    271.         cmp     r15, rcx
    272.         jge     .LBB0_43
    273.         test    eax, eax
    274.         jne     .LBB0_45
    275.         dec     ecx
    276.         cmp     dword ptr [rbx + 240], ecx
    277.         jne     .LBB0_45
    278. .LBB0_43:
    279.         movabs  rcx, offset .Lburst_abort.error.id.7
    280.         movabs  rdx, offset .Lburst_abort.error.message.8
    281.         call    qword ptr [rsi]
    282. .LBB0_44:
    283.         mov     eax, dword ptr [rbx + 256]
    284.         test    al, 1
    285.         je      .LBB0_46
    286.         jmp     .LBB0_48
    287. .LBB0_45:
    288.         movabs  rcx, offset .Lburst_abort.error.id.9
    289.         movabs  rdx, offset .Lburst_abort.error.message.10
    290.         call    qword ptr [rsi]
    291.         mov     eax, dword ptr [rbx + 256]
    292.         test    al, 1
    293.         jne     .LBB0_48
    294. .LBB0_46:
    295.         mov     rcx, qword ptr [rbx + 248]
    296.         mov     ecx, dword ptr [rcx]
    297.         and     ecx, -3
    298.         cmp     eax, ecx
    299.         je      .LBB0_48
    300.         mov     eax, dword ptr [rbx + 256]
    301.         mov     rcx, qword ptr [rbx + 248]
    302.         mov     qword ptr [rsp + 40], rcx
    303.         mov     dword ptr [rsp + 48], eax
    304.         mov     rcx, r14
    305.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    306.         call    qword ptr [rax]
    307. .LBB0_48:
    308.         mov     rax, qword ptr [rbx + 224]
    309.         vmovsd  xmm14, qword ptr [rax + 8*r15]
    310. .LBB0_49:
    311.         movsxd  rax, dword ptr [rbx + 12]
    312.         cmp     rbp, rax
    313.         jl      .LBB0_51
    314.         movsxd  rcx, dword ptr [rbx + 16]
    315.         cmp     rbp, rcx
    316.         jle     .LBB0_55
    317. .LBB0_51:
    318.         movsxd  rcx, dword ptr [rbx + 8]
    319.         cmp     rbp, rcx
    320.         jge     .LBB0_54
    321.         test    eax, eax
    322.         jne     .LBB0_56
    323.         dec     ecx
    324.         cmp     dword ptr [rbx + 16], ecx
    325.         jne     .LBB0_56
    326.         .p2align        4, 0x90
    327. .LBB0_54:
    328.         movabs  rcx, offset .Lburst_abort.error.id
    329.         movabs  rdx, offset .Lburst_abort.error.message
    330.         call    qword ptr [rsi]
    331. .LBB0_55:
    332.         mov     eax, dword ptr [rbx + 32]
    333.         test    al, 1
    334.         je      .LBB0_57
    335.         jmp     .LBB0_59
    336. .LBB0_56:
    337.         movabs  rcx, offset .Lburst_abort.error.id.1
    338.         movabs  rdx, offset .Lburst_abort.error.message.2
    339.         call    qword ptr [rsi]
    340.         mov     eax, dword ptr [rbx + 32]
    341.         test    al, 1
    342.         jne     .LBB0_59
    343. .LBB0_57:
    344.         mov     rcx, qword ptr [rbx + 24]
    345.         mov     ecx, dword ptr [rcx]
    346.         and     ecx, -3
    347.         cmp     eax, ecx
    348.         je      .LBB0_59
    349.         mov     eax, dword ptr [rbx + 32]
    350.         mov     rcx, qword ptr [rbx + 24]
    351.         mov     qword ptr [rsp + 40], rcx
    352.         mov     dword ptr [rsp + 48], eax
    353.         mov     rcx, r14
    354.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    355.         call    qword ptr [rax]
    356. .LBB0_59:
    357.         mov     rax, qword ptr [rbx]
    358.         vmovupd xmm0, xmmword ptr [rax + 4*rdi - 16]
    359.         vmovsd  xmm7, qword ptr [rax + 4*rdi]
    360.         vsubpd  xmm15, xmm0, xmmword ptr [rsp + 96]
    361.         movsxd  rax, dword ptr [rbx + 124]
    362.         cmp     r15, rax
    363.         jl      .LBB0_61
    364.         movsxd  rcx, dword ptr [rbx + 128]
    365.         cmp     r15, rcx
    366.         jle     .LBB0_65
    367. .LBB0_61:
    368.         movsxd  rcx, dword ptr [rbx + 120]
    369.         cmp     r15, rcx
    370.         jge     .LBB0_64
    371.         test    eax, eax
    372.         jne     .LBB0_66
    373.         dec     ecx
    374.         cmp     dword ptr [rbx + 128], ecx
    375.         jne     .LBB0_66
    376.         .p2align        4, 0x90
    377. .LBB0_64:
    378.         movabs  rcx, offset .Lburst_abort.error.id.7
    379.         movabs  rdx, offset .Lburst_abort.error.message.8
    380.         call    qword ptr [rsi]
    381. .LBB0_65:
    382.         vpermilpd       xmm6, xmm15, 1
    383.         mov     eax, dword ptr [rbx + 144]
    384.         test    al, 1
    385.         je      .LBB0_67
    386.         jmp     .LBB0_69
    387. .LBB0_66:
    388.         movabs  rcx, offset .Lburst_abort.error.id.9
    389.         movabs  rdx, offset .Lburst_abort.error.message.10
    390.         call    qword ptr [rsi]
    391.         vpermilpd       xmm6, xmm15, 1
    392.         mov     eax, dword ptr [rbx + 144]
    393.         test    al, 1
    394.         jne     .LBB0_69
    395. .LBB0_67:
    396.         mov     rcx, qword ptr [rbx + 136]
    397.         mov     ecx, dword ptr [rcx]
    398.         and     ecx, -3
    399.         cmp     eax, ecx
    400.         je      .LBB0_69
    401.         mov     eax, dword ptr [rbx + 144]
    402.         mov     rcx, qword ptr [rbx + 136]
    403.         mov     qword ptr [rsp + 40], rcx
    404.         mov     dword ptr [rsp + 48], eax
    405.         mov     rcx, r14
    406.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    407.         call    qword ptr [rax]
    408. .LBB0_69:
    409.         vmulsd  xmm6, xmm6, xmm6
    410.         mov     rax, qword ptr [rbx + 112]
    411.         vmovsd  xmm8, qword ptr [rax + 8*r15]
    412.         movsxd  rax, dword ptr [rbx + 124]
    413.         cmp     rbp, rax
    414.         jl      .LBB0_71
    415.         movsxd  rcx, dword ptr [rbx + 128]
    416.         cmp     rbp, rcx
    417.         jle     .LBB0_77
    418. .LBB0_71:
    419.         movsxd  rcx, dword ptr [rbx + 120]
    420.         cmp     rbp, rcx
    421.         jge     .LBB0_74
    422.         test    eax, eax
    423.         jne     .LBB0_75
    424.         dec     ecx
    425.         cmp     dword ptr [rbx + 128], ecx
    426.         jne     .LBB0_75
    427.         .p2align        4, 0x90
    428. .LBB0_74:
    429.         movabs  rcx, offset .Lburst_abort.error.id.7
    430.         movabs  rdx, offset .Lburst_abort.error.message.8
    431.         jmp     .LBB0_76
    432. .LBB0_75:
    433.         movabs  rcx, offset .Lburst_abort.error.id.9
    434.         movabs  rdx, offset .Lburst_abort.error.message.10
    435. .LBB0_76:
    436.         call    qword ptr [rsi]
    437. .LBB0_77:
    438.         vsubsd  xmm9, xmm7, qword ptr [rsp + 88]
    439.         vfmadd231sd     xmm6, xmm15, xmm15
    440.         mov     eax, dword ptr [rbx + 144]
    441.         test    al, 1
    442.         jne     .LBB0_80
    443.         mov     rcx, qword ptr [rbx + 136]
    444.         mov     ecx, dword ptr [rcx]
    445.         and     ecx, -3
    446.         cmp     eax, ecx
    447.         je      .LBB0_80
    448.         mov     eax, dword ptr [rbx + 144]
    449.         mov     rcx, qword ptr [rbx + 136]
    450.         mov     qword ptr [rsp + 40], rcx
    451.         mov     dword ptr [rsp + 48], eax
    452.         mov     rcx, r14
    453.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    454.         call    qword ptr [rax]
    455. .LBB0_80:
    456.         vfmadd231sd     xmm6, xmm9, xmm9
    457.         cmp     byte ptr [rbx + 416], 0
    458.         je      .LBB0_82
    459.         vaddsd  xmm0, xmm6, qword ptr [rbx + 408]
    460.         jmp     .LBB0_83
    461. .LBB0_82:
    462.         mov     rax, qword ptr [rbx + 112]
    463.         vaddsd  xmm0, xmm8, qword ptr [rax + 8*rbp]
    464.         vmulsd  xmm0, xmm0, xmm0
    465.         vmaxsd  xmm0, xmm0, xmm6
    466. .LBB0_83:
    467.         vsqrtsd xmm6, xmm0, xmm0
    468.         vmulsd  xmm7, xmm14, qword ptr [rbx + 400]
    469.         movsxd  rax, dword ptr [rbx + 68]
    470.         cmp     rbp, rax
    471.         jl      .LBB0_85
    472.         movsxd  rcx, dword ptr [rbx + 72]
    473.         cmp     rbp, rcx
    474.         jle     .LBB0_89
    475. .LBB0_85:
    476.         movsxd  rcx, dword ptr [rbx + 64]
    477.         cmp     rbp, rcx
    478.         jge     .LBB0_88
    479.         test    eax, eax
    480.         jne     .LBB0_90
    481.         dec     ecx
    482.         cmp     dword ptr [rbx + 72], ecx
    483.         jne     .LBB0_90
    484.         .p2align        4, 0x90
    485. .LBB0_88:
    486.         movabs  rcx, offset .Lburst_abort.error.id.7
    487.         movabs  rdx, offset .Lburst_abort.error.message.8
    488.         call    qword ptr [rsi]
    489. .LBB0_89:
    490.         vdivsd  xmm14, xmm10, xmm6
    491.         mov     eax, dword ptr [rbx + 88]
    492.         test    al, 1
    493.         je      .LBB0_91
    494.         jmp     .LBB0_93
    495. .LBB0_90:
    496.         movabs  rcx, offset .Lburst_abort.error.id.9
    497.         movabs  rdx, offset .Lburst_abort.error.message.10
    498.         call    qword ptr [rsi]
    499.         vdivsd  xmm14, xmm10, xmm6
    500.         mov     eax, dword ptr [rbx + 88]
    501.         test    al, 1
    502.         jne     .LBB0_93
    503. .LBB0_91:
    504.         mov     rcx, qword ptr [rbx + 80]
    505.         mov     ecx, dword ptr [rcx]
    506.         and     ecx, -3
    507.         cmp     eax, ecx
    508.         je      .LBB0_93
    509.         mov     eax, dword ptr [rbx + 88]
    510.         mov     rcx, qword ptr [rbx + 80]
    511.         mov     qword ptr [rsp + 40], rcx
    512.         mov     dword ptr [rsp + 48], eax
    513.         mov     rcx, r14
    514.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    515.         call    qword ptr [rax]
    516. .LBB0_93:
    517.         mov     rax, qword ptr [rbx + 56]
    518.         vmulsd  xmm0, xmm7, qword ptr [rax + 8*rbp]
    519.         vmovddup        xmm1, xmm0
    520.         vmulpd  xmm1, xmm15, xmm1
    521.         vmulsd  xmm0, xmm9, xmm0
    522.         vmovddup        xmm7, xmm14
    523.         vmulsd  xmm8, xmm14, xmm0
    524.         vmulpd  xmm9, xmm1, xmm7
    525.         movsxd  rax, dword ptr [rbx + 292]
    526.         cmp     r15, rax
    527.         jl      .LBB0_95
    528.         movsxd  rcx, dword ptr [rbx + 296]
    529.         cmp     r15, rcx
    530.         jle     .LBB0_101
    531. .LBB0_95:
    532.         movsxd  rcx, dword ptr [rbx + 288]
    533.         cmp     r15, rcx
    534.         jge     .LBB0_98
    535.         test    eax, eax
    536.         jne     .LBB0_99
    537.         dec     ecx
    538.         cmp     dword ptr [rbx + 296], ecx
    539.         jne     .LBB0_99
    540.         .p2align        4, 0x90
    541. .LBB0_98:
    542.         movabs  rcx, offset .Lburst_abort.error.id.11
    543.         movabs  rdx, offset .Lburst_abort.error.message.12
    544.         jmp     .LBB0_100
    545. .LBB0_99:
    546.         movabs  rcx, offset .Lburst_abort.error.id.13
    547.         movabs  rdx, offset .Lburst_abort.error.message.14
    548. .LBB0_100:
    549.         call    qword ptr [rsi]
    550. .LBB0_101:
    551.         vmulsd  xmm8, xmm14, xmm8
    552.         vmulpd  xmm6, xmm9, xmm7
    553.         mov     eax, dword ptr [rbx + 312]
    554.         test    al, 1
    555.         jne     .LBB0_104
    556.         mov     rcx, qword ptr [rbx + 304]
    557.         mov     ecx, dword ptr [rcx]
    558.         and     ecx, -3
    559.         cmp     eax, ecx
    560.         je      .LBB0_104
    561.         mov     eax, dword ptr [rbx + 312]
    562.         mov     rcx, qword ptr [rbx + 304]
    563.         mov     qword ptr [rsp + 40], rcx
    564.         mov     dword ptr [rsp + 48], eax
    565.         mov     rcx, r14
    566.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    567.         call    qword ptr [rax]
    568. .LBB0_104:
    569.         vmulpd  xmm7, xmm7, xmm6
    570.         vmulsd  xmm6, xmm14, xmm8
    571.         mov     rax, qword ptr [rbx + 280]
    572.         test    byte ptr [rax + 2*r15 + 1], 2
    573.         jne     .LBB0_116
    574.         movsxd  rax, dword ptr [rbx + 292]
    575.         cmp     rbp, rax
    576.         jl      .LBB0_107
    577.         movsxd  rcx, dword ptr [rbx + 296]
    578.         cmp     rbp, rcx
    579.         jle     .LBB0_111
    580. .LBB0_107:
    581.         movsxd  rcx, dword ptr [rbx + 288]
    582.         cmp     rbp, rcx
    583.         jge     .LBB0_110
    584.         test    eax, eax
    585.         jne     .LBB0_112
    586.         dec     ecx
    587.         cmp     dword ptr [rbx + 296], ecx
    588.         jne     .LBB0_112
    589. .LBB0_110:
    590.         movabs  rcx, offset .Lburst_abort.error.id.11
    591.         movabs  rdx, offset .Lburst_abort.error.message.12
    592.         call    qword ptr [rsi]
    593. .LBB0_111:
    594.         mov     eax, dword ptr [rbx + 312]
    595.         test    al, 1
    596.         je      .LBB0_113
    597.         jmp     .LBB0_115
    598. .LBB0_112:
    599.         movabs  rcx, offset .Lburst_abort.error.id.13
    600.         movabs  rdx, offset .Lburst_abort.error.message.14
    601.         call    qword ptr [rsi]
    602.         mov     eax, dword ptr [rbx + 312]
    603.         test    al, 1
    604.         jne     .LBB0_115
    605. .LBB0_113:
    606.         mov     rcx, qword ptr [rbx + 304]
    607.         mov     ecx, dword ptr [rcx]
    608.         and     ecx, -3
    609.         cmp     eax, ecx
    610.         je      .LBB0_115
    611.         mov     eax, dword ptr [rbx + 312]
    612.         mov     rcx, qword ptr [rbx + 304]
    613.         mov     qword ptr [rsp + 40], rcx
    614.         mov     dword ptr [rsp + 48], eax
    615.         mov     rcx, r14
    616.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    617.         call    qword ptr [rax]
    618. .LBB0_115:
    619.         mov     rax, qword ptr [rbx + 280]
    620.         test    byte ptr [rax + 2*rbp + 1], 2
    621.         je      .LBB0_117
    622. .LBB0_116:
    623.         movabs  rax, offset .LCPI0_1
    624.         vmovapd xmm0, xmmword ptr [rax]
    625.         vxorpd  xmm7, xmm7, xmm0
    626.         vxorpd  xmm6, xmm6, xmm0
    627. .LBB0_117:
    628.         vblendpd        xmm0, xmm12, xmm13, 1
    629.         vaddpd  xmm13, xmm0, xmm7
    630.         vaddsd  xmm11, xmm11, xmm6
    631.         mov     eax, dword ptr [rbx + 392]
    632.         vmovapd xmm12, xmm13
    633. .LBB0_118:
    634.         inc     rbp
    635.         movsxd  rcx, eax
    636.         add     rdi, 6
    637.         cmp     rbp, rcx
    638.         jl      .LBB0_25
    639.         movsxd  rax, dword ptr [rbx + 348]
    640.         cmp     r15, rax
    641.         mov     rdi, qword ptr [rsp + 80]
    642.         jl      .LBB0_123
    643. .LBB0_120:
    644.         movsxd  rcx, dword ptr [rbx + 352]
    645.         cmp     r15, rcx
    646.         jg      .LBB0_123
    647.         mov     eax, dword ptr [rbx + 368]
    648.         test    al, 2
    649.         je      .LBB0_128
    650.         jmp     .LBB0_130
    651.         .p2align        4, 0x90
    652. .LBB0_122:
    653.         vxorpd  xmm12, xmm12, xmm12
    654.         vxorpd  xmm11, xmm11, xmm11
    655.         movsxd  rax, dword ptr [rbx + 348]
    656.         cmp     r15, rax
    657.         mov     rdi, qword ptr [rsp + 80]
    658.         jge     .LBB0_120
    659. .LBB0_123:
    660.         movsxd  rcx, dword ptr [rbx + 344]
    661.         cmp     r15, rcx
    662.         jge     .LBB0_126
    663.         test    eax, eax
    664.         jne     .LBB0_127
    665.         dec     ecx
    666.         cmp     dword ptr [rbx + 352], ecx
    667.         jne     .LBB0_127
    668.         .p2align        4, 0x90
    669. .LBB0_126:
    670.         movabs  rcx, offset .Lburst_abort.error.id
    671.         movabs  rdx, offset .Lburst_abort.error.message
    672.         call    qword ptr [rsi]
    673.         mov     eax, dword ptr [rbx + 368]
    674.         test    al, 2
    675.         je      .LBB0_128
    676.         jmp     .LBB0_130
    677.         .p2align        4, 0x90
    678. .LBB0_127:
    679.         movabs  rcx, offset .Lburst_abort.error.id.1
    680.         movabs  rdx, offset .Lburst_abort.error.message.2
    681.         call    qword ptr [rsi]
    682.         mov     eax, dword ptr [rbx + 368]
    683.         test    al, 2
    684.         jne     .LBB0_130
    685. .LBB0_128:
    686.         mov     rcx, qword ptr [rbx + 360]
    687.         mov     ecx, dword ptr [rcx]
    688.         and     ecx, -2
    689.         cmp     eax, ecx
    690.         je      .LBB0_130
    691.         mov     eax, dword ptr [rbx + 368]
    692.         mov     rcx, qword ptr [rbx + 360]
    693.         mov     qword ptr [rsp + 40], rcx
    694.         mov     dword ptr [rsp + 48], eax
    695.         mov     rcx, r14
    696.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected_Ptr"
    697.         call    qword ptr [rax]
    698. .LBB0_130:
    699.         mov     rax, qword ptr [rbx + 336]
    700.         vmovupd xmmword ptr [rax + 8*rdi], xmm12
    701.         vmovsd  qword ptr [rax + 8*rdi + 16], xmm11
    702.         inc     r15
    703.         movsxd  rax, dword ptr [rsp + 56]
    704.         cmp     r15, rax
    705.         jl      .LBB0_3
    706. .LBB0_131:
    707.         mov     rcx, qword ptr [rsp + 72]
    708.         mov     edx, dword ptr [rsp + 384]
    709.         lea     r8, [rsp + 60]
    710.         lea     r9, [rsp + 56]
    711.         movabs  rax, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange_Ptr"
    712.         call    qword ptr [rax]
    713.         test    al, al
    714.         jne     .LBB0_2
    715. .LBB0_132:
    716.         vmovaps xmm6, xmmword ptr [rsp + 112]
    717.         vmovaps xmm7, xmmword ptr [rsp + 128]
    718.         vmovaps xmm8, xmmword ptr [rsp + 144]
    719.         vmovaps xmm9, xmmword ptr [rsp + 160]
    720.         vmovaps xmm10, xmmword ptr [rsp + 176]
    721.         vmovaps xmm11, xmmword ptr [rsp + 192]
    722.         vmovaps xmm12, xmmword ptr [rsp + 208]
    723.         vmovaps xmm13, xmmword ptr [rsp + 224]
    724.         vmovaps xmm14, xmmword ptr [rsp + 240]
    725.         vmovaps xmm15, xmmword ptr [rsp + 256]
    726.         add     rsp, 280
    727.         pop     rbx
    728.         pop     rbp
    729.         pop     rdi
    730.         pop     rsi
    731.         pop     r12
    732.         pop     r13
    733.         pop     r14
    734.         pop     r15
    735.         ret
    736. .Lfunc_end0:
    737.         .size   "Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[NBody.ComputationLayer.GravityCalculator+AcclerationJob, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(NBody.ComputationLayer.GravityCalculator+AcclerationJob&, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)", .Lfunc_end0-"Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[NBody.ComputationLayer.GravityCalculator+AcclerationJob, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(NBody.ComputationLayer.GravityCalculator+AcclerationJob&, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)"
    738.         .cfi_endproc
    739.  
    740.         .globl  "Unity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange"
    741.         .p2align        4, 0x90
    742.         .type   "Unity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange",@function
    743. "Unity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange":
    744.         .cfi_startproc
    745.         movabs  rax, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange_Ptr"
    746.         mov     rax, qword ptr [rax]
    747.         rex64 jmp       rax
    748. .Lfunc_end1:
    749.         .size   "Unity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange", .Lfunc_end1-"Unity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange"
    750.         .cfi_endproc
    751.  
    752.         .globl  "Unity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges"
    753.         .p2align        4, 0x90
    754.         .type   "Unity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges",@function
    755. "Unity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges":
    756.         .cfi_startproc
    757.         movabs  rax, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges_Ptr"
    758.         mov     rax, qword ptr [rax]
    759.         rex64 jmp       rax
    760. .Lfunc_end2:
    761.         .size   "Unity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges", .Lfunc_end2-"Unity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges"
    762.         .cfi_endproc
    763.  
    764.         .globl  "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected"
    765.         .p2align        4, 0x90
    766.         .type   "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected",@function
    767. "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected":
    768.         .cfi_startproc
    769.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    770.         rex64 jmp       qword ptr [rax]
    771. .Lfunc_end3:
    772.         .size   "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected", .Lfunc_end3-"Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected"
    773.         .cfi_endproc
    774.  
    775.         .globl  "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected"
    776.         .p2align        4, 0x90
    777.         .type   "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected",@function
    778. "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected":
    779.         .cfi_startproc
    780.         movabs  rax, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected_Ptr"
    781.         rex64 jmp       qword ptr [rax]
    782. .Lfunc_end4:
    783.         .size   "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected", .Lfunc_end4-"Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected"
    784.         .cfi_endproc
    785.  
    786.         .globl  burst_abort
    787.         .p2align        4, 0x90
    788.         .type   burst_abort,@function
    789. burst_abort:
    790.         .cfi_startproc
    791.         movabs  rax, offset .Lburst_abort_Ptr
    792.         mov     rax, qword ptr [rax]
    793.         rex64 jmp       rax
    794. .Lfunc_end5:
    795.         .size   burst_abort, .Lfunc_end5-burst_abort
    796.         .cfi_endproc
    797.  
    798.         .globl  burst.initialize
    799.         .p2align        4, 0x90
    800.         .type   burst.initialize,@function
    801. burst.initialize:
    802.         .cfi_startproc
    803.         push    rsi
    804.         .cfi_def_cfa_offset 16
    805.         sub     rsp, 32
    806.         .cfi_def_cfa_offset 48
    807.         .cfi_offset rsi, -16
    808.         mov     rsi, rcx
    809.         movabs  rcx, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange.function.string"
    810.         call    rsi
    811.         movabs  rcx, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange_Ptr"
    812.         mov     qword ptr [rcx], rax
    813.         movabs  rcx, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges.function.string"
    814.         call    rsi
    815.         movabs  rcx, offset ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges_Ptr"
    816.         mov     qword ptr [rcx], rax
    817.         movabs  rcx, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected.function.string"
    818.         call    rsi
    819.         movabs  rcx, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    820.         mov     qword ptr [rcx], rax
    821.         movabs  rcx, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected.function.string"
    822.         call    rsi
    823.         movabs  rcx, offset ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected_Ptr"
    824.         mov     qword ptr [rcx], rax
    825.         movabs  rcx, offset .Lburst_abort.function.string
    826.         call    rsi
    827.         movabs  rcx, offset .Lburst_abort_Ptr
    828.         mov     qword ptr [rcx], rax
    829.         add     rsp, 32
    830.         pop     rsi
    831.         ret
    832. .Lfunc_end6:
    833.         .size   burst.initialize, .Lfunc_end6-burst.initialize
    834.         .cfi_endproc
    835.  
    836.         .type   .Lburst_abort.error.id,[USER=646077]@object[/USER]
    837.         .section        .rodata,"a",@progbits
    838. .Lburst_abort.error.id:
    839.         .asciz  "System.IndexOutOfRangeException"
    840.         .size   .Lburst_abort.error.id, 32
    841.  
    842.         .type   .Lburst_abort.error.message,[USER=646077]@object[/USER]
    843. .Lburst_abort.error.message:
    844.         .asciz  "Index {0} is out of range of '{1}' Length."
    845.         .size   .Lburst_abort.error.message, 43
    846.  
    847.         .type   .Lburst_abort.error.id.1,[USER=646077]@object[/USER]
    848. .Lburst_abort.error.id.1:
    849.         .asciz  "System.IndexOutOfRangeException"
    850.         .size   .Lburst_abort.error.id.1, 32
    851.  
    852.         .type   .Lburst_abort.error.message.2,[USER=646077]@object[/USER]
    853. .Lburst_abort.error.message.2:
    854.         .asciz  "Index {0} is out of restricted IJobParallelFor range [{1}...{2}] in ReadWriteBuffer.\n"
    855.         .size   .Lburst_abort.error.message.2, 86
    856.  
    857.         .type   .Lburst_abort.error.id.3,[USER=646077]@object[/USER]
    858. .Lburst_abort.error.id.3:
    859.         .asciz  "System.IndexOutOfRangeException"
    860.         .size   .Lburst_abort.error.id.3, 32
    861.  
    862.         .type   .Lburst_abort.error.message.4,[USER=646077]@object[/USER]
    863. .Lburst_abort.error.message.4:
    864.         .asciz  "Index {0} is out of range of '{1}' Length."
    865.         .size   .Lburst_abort.error.message.4, 43
    866.  
    867.         .type   .Lburst_abort.error.id.5,[USER=646077]@object[/USER]
    868. .Lburst_abort.error.id.5:
    869.         .asciz  "System.IndexOutOfRangeException"
    870.         .size   .Lburst_abort.error.id.5, 32
    871.  
    872.         .type   .Lburst_abort.error.message.6,[USER=646077]@object[/USER]
    873. .Lburst_abort.error.message.6:
    874.         .asciz  "Index {0} is out of restricted IJobParallelFor range [{1}...{2}] in ReadWriteBuffer.\n"
    875.         .size   .Lburst_abort.error.message.6, 86
    876.  
    877.         .type   .Lburst_abort.error.id.7,[USER=646077]@object[/USER]
    878. .Lburst_abort.error.id.7:
    879.         .asciz  "System.IndexOutOfRangeException"
    880.         .size   .Lburst_abort.error.id.7, 32
    881.  
    882.         .type   .Lburst_abort.error.message.8,[USER=646077]@object[/USER]
    883. .Lburst_abort.error.message.8:
    884.         .asciz  "Index {0} is out of range of '{1}' Length."
    885.         .size   .Lburst_abort.error.message.8, 43
    886.  
    887.         .type   .Lburst_abort.error.id.9,[USER=646077]@object[/USER]
    888. .Lburst_abort.error.id.9:
    889.         .asciz  "System.IndexOutOfRangeException"
    890.         .size   .Lburst_abort.error.id.9, 32
    891.  
    892.         .type   .Lburst_abort.error.message.10,[USER=646077]@object[/USER]
    893. .Lburst_abort.error.message.10:
    894.         .asciz  "Index {0} is out of restricted IJobParallelFor range [{1}...{2}] in ReadWriteBuffer.\n"
    895.         .size   .Lburst_abort.error.message.10, 86
    896.  
    897.         .type   .Lburst_abort.error.id.11,[USER=646077]@object[/USER]
    898. .Lburst_abort.error.id.11:
    899.         .asciz  "System.IndexOutOfRangeException"
    900.         .size   .Lburst_abort.error.id.11, 32
    901.  
    902.         .type   .Lburst_abort.error.message.12,[USER=646077]@object[/USER]
    903. .Lburst_abort.error.message.12:
    904.         .asciz  "Index {0} is out of range of '{1}' Length."
    905.         .size   .Lburst_abort.error.message.12, 43
    906.  
    907.         .type   .Lburst_abort.error.id.13,[USER=646077]@object[/USER]
    908. .Lburst_abort.error.id.13:
    909.         .asciz  "System.IndexOutOfRangeException"
    910.         .size   .Lburst_abort.error.id.13, 32
    911.  
    912.         .type   .Lburst_abort.error.message.14,[USER=646077]@object[/USER]
    913. .Lburst_abort.error.message.14:
    914.         .asciz  "Index {0} is out of restricted IJobParallelFor range [{1}...{2}] in ReadWriteBuffer.\n"
    915.         .size   .Lburst_abort.error.message.14, 86
    916.  
    917.         .type   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange_Ptr",[USER=646077]@object[/USER]
    918.         .local  ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange_Ptr"
    919.         .comm   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange_Ptr",8,8
    920.         .type   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange.function.string",[USER=646077]@object[/USER]
    921. ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange.function.string":
    922.         .asciz  "Unity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange"
    923.         .size   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::GetWorkStealingRange.function.string", 61
    924.  
    925.         .type   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges_Ptr",[USER=646077]@object[/USER]
    926.         .local  ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges_Ptr"
    927.         .comm   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges_Ptr",8,8
    928.         .type   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges.function.string",[USER=646077]@object[/USER]
    929. ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges.function.string":
    930.         .asciz  "Unity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges"
    931.         .size   ".LUnity.Jobs.LowLevel.Unsafe.JobsUtility::patchBufferMinMaxRanges.function.string", 64
    932.  
    933.         .type   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr",[USER=646077]@object[/USER]
    934.         .local  ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr"
    935.         .comm   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected_Ptr",8,8
    936.         .type   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected.function.string",[USER=646077]@object[/USER]
    937. ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected.function.string":
    938.         .asciz  "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected"
    939.         .size   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckReadAndThrowNoEarlyOut_Injected.function.string", 91
    940.  
    941.         .type   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected_Ptr",[USER=646077]@object[/USER]
    942.         .local  ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected_Ptr"
    943.         .comm   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected_Ptr",8,8
    944.         .type   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected.function.string",[USER=646077]@object[/USER]
    945. ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected.function.string":
    946.         .asciz  "Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected"
    947.         .size   ".LUnity.Collections.LowLevel.Unsafe.AtomicSafetyHandle::CheckWriteAndThrowNoEarlyOut_Injected.function.string", 92
    948.  
    949.         .type   .Lburst_abort_Ptr,[USER=646077]@object[/USER]
    950.         .local  .Lburst_abort_Ptr
    951.         .comm   .Lburst_abort_Ptr,8,8
    952.         .type   .Lburst_abort.function.string,[USER=646077]@object[/USER]
    953. .Lburst_abort.function.string:
    954.         .asciz  "burst_abort"
    955.         .size   .Lburst_abort.function.string, 12
    956.  
    957.  
    958.         .section        ".note.GNU-stack","",@progbits
     
    Last edited: Feb 14, 2019
  4. Savagery

    Savagery

    Joined:
    Sep 3, 2015
    Posts:
    6
    We have found the solution to this. As it happens we are using the AssemblyVersionAttribute in order to acquire the build date for the assembly.

    https://docs.microsoft.com/en-us/do...emblyversionattribute?view=netframework-4.7.2

    We are using it like this:

    [assembly: AssemblyVersion("1.0.*")]

    Removing this (actually moving it to its own assembly using an assembly definition) fixed our problem. I was able to reproduce this in a simple test project - for a simple working project that uses Burst, just add that attribute to any .cs file in the same assembly as the IJob, and Burst will no longer run in a build.

    Does lib_burst_generated.dll perhaps use the assembly version to associate itself with the job, and this is somehow knocking it out of sync?

    Dave Nelson - Universe Sandbox
     
  5. korzen303

    korzen303

    Joined:
    Oct 2, 2012
    Posts:
    223
    Hi @xoofx,

    it seems I have got the same problem. I have upgraded the project (full-rebuild) from 2018.2.20 to 2018.3.6 and in the builds (Win64) Burst is clearly not being used anymore. I get the lib_burst_generated.dll generated (I can delete it without any effect) and I am not using any AssemblyVersionAttributes. In editor seems to work fine, the Burst compiled jobs are also shown in the assembly inspector.

    (everything latest stable)
    Unity 2018.3.6
    Burst 0.2.4-preview.50
    Mathematics 1.0.0-preview.1
    Jobs 0.0.7-preview.6
    Collections 0.0.9-preview.12

    Thanks for help!
     
    Last edited: Mar 6, 2019
  6. korzen303

    korzen303

    Joined:
    Oct 2, 2012
    Posts:
    223
    So I have made some further investigations and can confirm the problem. Here is a quick video showing the problem:


    Later, I have tried to strip down the problem with even simpler simulation and some jobs in the build are Burst-compiled and some are not. Could you please give some hints how to verify why is this happening? The jobs which are not compiled are rather simple, some ParallelFor loops doing physics integration.

    Thanks
     
  7. korzen303

    korzen303

    Joined:
    Oct 2, 2012
    Posts:
    223
    OK @xoofx, I have found what is causing that the Jobs don't get Burst accelerated in standalone builds.

    In my code I have got a single job struct implementing both IJob and IJobParallelFor. This is somehow causing that the job is not getting detected as Burst or compiled properly in the latest Unity versions. When I removed the IJobParallelFor things finally started to work fine.


    Code (CSharp):
    1.  
    2. [BurstCompile]
    3.         public struct UpdatePositionsJob : IJob, IJobParallelFor
    4.         {
    5.             public int particlesCount;
    6.             public float dtInv;
    7.             [ReadOnly] public NativeArray<Vector4> predPositions;
    8.             [ReadOnly] public NativeArray<float> massesInv;
    9.             [WriteOnly] public NativeArray<Vector4> velocities;
    10.  
    11.             public NativeArray<Vector4> positions;
    12.  
    13.             public void Execute()
    14.             {
    15.                 for (int i = 0; i < particlesCount; i++)
    16.                 {
    17.  
    18.                         velocities[i] = (predPositions[i] - positions[i]) * dtInv;
    19.                         positions[i] = predPositions[i];
    20.                 }
    21.  
    22.             }
    23.  
    24.             public void Execute(int i)
    25.             {
    26.                     velocities[i] = (predPositions[i] - positions[i]) * dtInv;
    27.                     positions[i] = predPositions[i];
    28.             }
    29.         }
     
  8. xoofx

    xoofx

    Unity Technologies

    Joined:
    Nov 5, 2016
    Posts:
    417
    Thanks, we will investigate this.
     
  9. xoofx

    xoofx

    Unity Technologies

    Joined:
    Nov 5, 2016
    Posts:
    417
    Question though: How does this UpdatePositionsJob appears in the burst inspector?
     
  10. xoofx

    xoofx

    Unity Technologies

    Joined:
    Nov 5, 2016
    Posts:
    417
    This should be fixed in the upcoming burst 1.0.0-preview.5 that will be released early next week
     
    FROS7 likes this.
  11. korzen303

    korzen303

    Joined:
    Oct 2, 2012
    Posts:
    223