Runtime: JIT: boxing(x) == boxing(y)๋ฅผ false๋กœ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 11์›” 23์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/runtime

static bool Generic<T1, T2>(T1 a, T2 b)
{
    return (object)a == (object)b;
}

static bool Test()
{
    return Generic(42, 3.14);
}

Test ์— ๋Œ€ํ•œ Codegen:

; Method Program:Test():bool
G_M11853_IG01:
       push     rsi
       sub      rsp, 32
       vzeroupper 
G_M11853_IG02:
       mov      rcx, 0xD1FFAB1E
       call     CORINFO_HELP_NEWSFAST
       mov      rsi, rax
       mov      dword ptr [rsi+8], 42
       mov      rcx, 0xD1FFAB1E
       call     CORINFO_HELP_NEWSFAST
       vmovsd   xmm0, qword ptr [reloc @RWD00]
       vmovsd   qword ptr [rax+8], xmm0
       cmp      rsi, rax
       sete     al
       movzx    rax, al
G_M11853_IG03:
       add      rsp, 32
       pop      rsi
       ret      
RWD00  dq   40091EB851EB851Fh

```
--* EQ\NE ์ •์ˆ˜
+--* BOX ์ฐธ์กฐ
| --* LCL_VAR ์ฐธ์กฐ V03 tmp1
--* ์ƒ์ž ์ฐธ์กฐ
--* LCL_VAR ์ฐธ์กฐ V04 tmp2

Expected codegen:
```asm
; Method Program:Test():bool
       xor      eax, eax  ; return false 
       ret     

์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ์ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CoreCLR์ด ์ด๋ฏธ ์œ ์‚ฌํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๊ถŒํˆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•œ ์ˆ˜์ •์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: boxing(x) == null ์—์„œ false ๋“ฑ, ๋งํฌ๋Š” https://github.com/mono/mono/issues/17858 ์ฐธ์กฐ). .

์นดํ…Œ๊ณ ๋ฆฌ:cq
ํ…Œ๋งˆ:์ตœ์ ํ™”
๊ธฐ์ˆ  ์ˆ˜์ค€:์ค‘๊ธ‰
๋น„์šฉ:์ค‘๊ฐ„

area-CodeGen-coreclr optimization

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@jkotas ๋‚˜๋Š” ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“ค์—ˆ๊ณ  jit-diff๋Š” BCL์— ๋Œ€ํ•ด ๋ช‡ kb diff๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค(์˜ˆ: https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data ).

UPD: ๊ธ€์Ž„์š”, pmi ์ด ์•ฝ๋ฌผ์„ ํˆฌ์—ฌํ•œ ๊ฒƒ ๊ฐ™๊ณ  ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ์ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ

์‹ค์ œ ์ฝ”๋“œ์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒƒ๋ณด๋‹ค ํŒจํ„ด์— ๋Œ€ํ•œ ์ตœ์ ํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค....

@jkotas ๋‚˜๋Š” ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“ค์—ˆ๊ณ  jit-diff๋Š” BCL์— ๋Œ€ํ•ด ๋ช‡ kb diff๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค(์˜ˆ: https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data ).

UPD: ๊ธ€์Ž„์š”, pmi ์ด ์•ฝ๋ฌผ์„ ํˆฌ์—ฌํ•œ ๊ฒƒ ๊ฐ™๊ณ  ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‹ค์ œ ์ฝ”๋“œ์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ์˜ˆ์ƒ์„ ๊ฐ์•ˆํ•  ๋•Œ ์‹ค์ œ ๋™๊ธฐ ๋ถ€์—ฌ ์˜ˆ์ œ๋ฅผ ๋ณผ ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์„ ๋‹ซ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰