Click here to Skip to main content
15,887,446 members

Welcome to the Lounge

   

For discussing anything related to a software developer's life but is not for programming questions. Got a programming question?

The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.

 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 10:43
trønderen22-Jan-24 10:43 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
Chris Copeland22-Jan-24 3:29
mveChris Copeland22-Jan-24 3:29 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 4:36
mvahoney the codewitch22-Jan-24 4:36 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 11:09
trønderen22-Jan-24 11:09 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 11:46
mvahoney the codewitch22-Jan-24 11:46 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 12:07
trønderen22-Jan-24 12:07 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 12:10
mvahoney the codewitch22-Jan-24 12:10 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 13:04
trønderen22-Jan-24 13:04 
Yes, I guess I was wrong about that. In C#, inlining is not absolute, just a proposal. The compiler/jitter is free to ignore the proposal. That depends on the cost of a call, which varies a lot with CPU architecture. I would guess that on an ARM, a lot more functions are not inlined, even if proposed by the developer, as calls are significantly cheaper on the ARM than on, say, x8x/x64.

Nevertheless, even if the code generator makes the final decision based on that CPUs specific instruction set and instruction timing, inlining is something you relate to at source code level. Compare it to unrolling a tight loop with a small, fixed number of iterations. Or use of #define expressions in C/C++. It is not at the level of which instructions are generated. (Well, of course all source code has an effect on code generated, but not at the level of selecting specific coding techniques.) If a method is inlined on both architecture X and architecture Y, that is the same structural code change, regardless of X and Y instruction set.

I saw the inlining option a generation ago, when it was a new concept. Then it was a directive to be honored, not a meek proposal. That was at a time when you could also direct a variable to reside in a specific register its entire lifetime. Experience showed that the compiler might know better ... (So we started trusting the compilers!).

Note that leaving the decision whether to inline or not might restrict the freedom of the higher level optimizer: If it takes care of the inlining above code generator level, it can e.g. combine common expressions in the inlined code with other code before or after the (inlined) call. While a code generator in principle could do a similar analysis of surrounding code, don't expect, it to be prepared to! The code to possibly be inlined will be inlined in extenso, even if identical expressions were calculated before or after the call. The task of a (code-independent) compiler is to discover such common expressions even when it takes the responsibility for inlining functions, while the code generator does not have a similar responsibily for restructuring the parse tree before generating code.

Religious freedom is the freedom to say that two plus two make five.

GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 13:24
mvahoney the codewitch22-Jan-24 13:24 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 12:35
trønderen22-Jan-24 12:35 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 12:50
mvahoney the codewitch22-Jan-24 12:50 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 13:06
trønderen22-Jan-24 13:06 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 13:13
mvahoney the codewitch22-Jan-24 13:13 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 13:37
trønderen22-Jan-24 13:37 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 13:54
mvahoney the codewitch22-Jan-24 13:54 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
jschell22-Jan-24 5:58
jschell22-Jan-24 5:58 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 6:00
mvahoney the codewitch22-Jan-24 6:00 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 10:10
trønderen22-Jan-24 10:10 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch22-Jan-24 10:12
mvahoney the codewitch22-Jan-24 10:12 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen22-Jan-24 10:55
trønderen22-Jan-24 10:55 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
jschell23-Jan-24 5:26
jschell23-Jan-24 5:26 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
honey the codewitch23-Jan-24 5:43
mvahoney the codewitch23-Jan-24 5:43 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
trønderen23-Jan-24 9:06
trønderen23-Jan-24 9:06 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
jschell24-Jan-24 4:38
jschell24-Jan-24 4:38 
GeneralRe: Does anyone know of a good guide to the MSIL JIT compiler? Pin
Alister Morton22-Jan-24 22:59
Alister Morton22-Jan-24 22:59 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.