From 045f470f71cfcedf3eb7ff248f25bf29619d9a88 Mon Sep 17 00:00:00 2001 From: Andy Ayers Date: Thu, 6 Dec 2018 09:03:31 -0800 Subject: [PATCH] Guarded devirtualization foundations (#21270) Lay the groundwork for guarded devirtualization of virtual and interface calls in the jit. Introduce the notion of a guarded devirtualization candidate and identify these if regular devirtualization fails. Use simple heuristics to produce a class to guess for. Require that the method that would be invoked if the class guess is correct be a plausible inline candidate. Generalize the calli transformer to become an indirect call transformer. This runs after importation because it needs to introduce control flow and runs before inlining so that the new direct calls it introduces can be inlined. Implement the transformation to duplicate the call site, devirtualize on the side where the class is now known exactly, and turn the resulting direct call into an inline candidate. Add a motivation and design document. --- .../design-docs/GuardedDevirtualization.md | 533 ++++++++++++++++ Documentation/design-docs/ThreeClassesDevirt.JPG | Bin 0 -> 111024 bytes .../design-docs/ThreeClassesDevirtDetail.JPG | Bin 0 -> 140846 bytes .../design-docs/ThreeClassesDevirtFull.JPG | Bin 0 -> 113061 bytes .../design-docs/ThreeClassesInterface.JPG | Bin 0 -> 91430 bytes Documentation/design-docs/TwoClassesBaseline.JPG | Bin 0 -> 80619 bytes Documentation/design-docs/TwoClassesDevirt.JPG | Bin 0 -> 84273 bytes Documentation/design-docs/TwoClassesInterface.JPG | Bin 0 -> 56361 bytes src/jit/compiler.cpp | 6 +- src/jit/compiler.h | 48 +- src/jit/flowgraph.cpp | 706 +++++++++++++++++---- src/jit/gentree.cpp | 20 +- src/jit/gentree.h | 34 +- src/jit/importer.cpp | 420 ++++++++++-- src/jit/inline.cpp | 12 +- src/jit/inline.h | 34 +- src/jit/jitconfigvalues.h | 9 + src/jit/lclvars.cpp | 5 + src/jit/morph.cpp | 64 +- 19 files changed, 1642 insertions(+), 249 deletions(-) create mode 100644 Documentation/design-docs/GuardedDevirtualization.md create mode 100644 Documentation/design-docs/ThreeClassesDevirt.JPG create mode 100644 Documentation/design-docs/ThreeClassesDevirtDetail.JPG create mode 100644 Documentation/design-docs/ThreeClassesDevirtFull.JPG create mode 100644 Documentation/design-docs/ThreeClassesInterface.JPG create mode 100644 Documentation/design-docs/TwoClassesBaseline.JPG create mode 100644 Documentation/design-docs/TwoClassesDevirt.JPG create mode 100644 Documentation/design-docs/TwoClassesInterface.JPG diff --git a/Documentation/design-docs/GuardedDevirtualization.md b/Documentation/design-docs/GuardedDevirtualization.md new file mode 100644 index 0000000..ba1f7bf --- /dev/null +++ b/Documentation/design-docs/GuardedDevirtualization.md @@ -0,0 +1,533 @@ +# Guarded Devirtualization + +## Overview + +Guarded devirtualization is a proposed new optimization for the JIT in .NET Core +3.0. This document describes the motivation, initial design sketch, and highlights +various issues needing further investigation. + +## Motivation + +The .NET Core JIT is able to do a limited amount of devirtualization for virtual +and interface calls. This ability was added in .NET Core 2.0. To devirtualize +the JIT must be able to demonstrate one of two things: either that it knows the +type of some reference exactly (say because it has seen a `newobj`) or that the +declared type of the reference is a `final` class (aka `sealed`). For virtual +calls the JIT can also devirtualize if it can prove the method is marked as `final`. + +However, most of the time the JIT is unable to determine exactness or finalness +and so devirtualization fails. Statistics show that currently only around 15% of +virtual call sites can be devirtualized. Result are even more pessimistic for +interface calls, where success rates are around 5%. + +There are a variety of reasons for this. The JIT analysis is somewhat weak. +Historically all the JIT cared about was whether some location held **a** reference +type, not a specific reference type. So the current type propagation has been +retrofitted and there are places where types just get lost. The JIT analysis +happens quite early (during importation) and there is only minimal ability to do +data flow analysis at this stage. So for current devirtualization the source of +the type information and the consumption must be fairly close in the code. A +more detailed accounting of some of the shortcomings can be found in +[CoreCLR#9908](https://github.com/dotnet/coreclr/issues/9908). + +Resolution of these issues will improve the ability of the JIT to devirtualize, +but even the best analysis possible will still miss out on many cases. Some call +sites are truly polymorphic. Some others are truly monomorphic but proving this +would require sophisticated interprocedural analyses that are not practical in +the JIT or in a system as dynamic as the CLR. And some sites are monomorphic in +practice but potentially polymorphic. + +As an alternative, when devirtualization fails, the JIT can perform *guarded +devirtualization*. Here the JIT creates an `if-then-else` block set in place of +a virtual or interface call and inserts a runtime type test (or similar) into +the `if` -- the "guard". If the guard test succeeds the JIT knows the type of +the reference, so the `then` block can directly invoke the method corresponding +to that type. If the test fails then the `else` block is executed and this +contains the original virtual or interface call. + +The upshot is that the JIT conditionally gains the benefit of devirtualization at +the expense of increased code size, longer JIT times, and slightly longer code +paths around the call. So long as the JIT's guess at the type is somewhat +reasonable, this optimization can improve performance. + +## Opportunity + +One might imagine that the JIT's guess about the type of the reference has to be +pretty good for devirtualization to pay off. Somewhat surprisingly, at least based +on our initial results, that is not the case. + +### Virtual Calls: The Two-Class Case + +Given these class declarations: +```C# +class B +{ + public virtual int F() { return 33; } +} + +class D : B +{ + public override int F() { return 44; } +} +``` +Suppose we have an array `B[]` that is randomly filled with instances of `B` and +`D` and each element is class `B` with probability `p`. We time how long +it takes to invoke `F` on each member of the array (note the JIT will not ever +be able to devirtualize these calls), and plot the times as a function of `p`. +The result is something like the following: + +![two classes baseline perf](TwoClassesBaseline.JPG) + +Modern hardware includes an indirect branch target predictor and we can see it +in action here. When the array element type is predictable (`p` very close to +zero or very close to 1) performance is better. When the element type is +unpredictable (`p` near 0.5) performance is quite a bit worse. + +From this we can see that a correctly predicted virtual call requires about +19 time units and worst case incorrect prediction around 55 time units. There is +some timing overhead here too so the real costs are a bit lower. + +Now imagine we update the JIT to do guarded devirtualization and check if the +element is indeed type `B`. If so the JIT can call `B.F` directly and in our +prototype the JIT will also inline the call. So we would expect that if the +element types are mostly `B`s (that is if `p` is near 1.0) we'd see very good +performance, and if the element type is mostly `D` (that is `p` near 0.0) +performance should perhaps slightly worse than the un-optimized case as there is +now extra code to run check before the call. + +![two classes devirt perf](TwoClassesDevirt.JPG) + +However as you can see the performance of devirtualized case (blue line) is as +good or better than the un-optimized case for all values of `p`. This is perhaps +unexpected and deserves some explanation. + +Recall that modern hardware also includes a branch predictor. For small or large +values of `p` this predictor will correctly guess whether the test added by the +JIT will resolve to the `then` or `else` case. For small values of `p` the JIT +guess will be wrong and control will flow to the `else` block. But unlike the +original example, the indirect call here will only see instances of type `D` and +so the indirect branch predictor will work extremely well. So the overhead for +the small `p` case is similar to the well-predicted indirect case without guarded +devirtualization. As `p` increases the branch predictor starts to mispredict and +that costs some cycles. But when it mispredicts control reaches the `then` block +which executes the inlined call. So the cost of misprediction is offset by the +faster execution and the cost stays relatively flat. + +As `p` passes 0.5 the branch predictor flips its prediction to prefer the `then` +case. As before mispredicts are costly and send us down the `else` path but there +we still execute a correctly predicted indirect call. + +And as `p` approaches 1.0 the cost falls as the branch predictor is almost always +correct and so the cost is simply that of the inlined call. + +So oddly enough the guarded devirtualization case shown here does not require any +sort of perf tradeoff. The JIT is better off guessing the more likely case but +even guessing the less likely case can pay off and doesn't hurt performance. + +One might suspect at this point that the two class case is a special case and that +the results do not hold up in more complex cases. More on that shortly. + +Before moving on, we should point out that virtual calls in the current +CLR are a bit more expensive than in C++, because the CLR uses a two-level method +table. That is, the indirect call sequence is something like: +```asm +000095 mov rax, qword ptr [rcx] ; fetch method table +000098 mov rax, qword ptr [rax+72] ; fetch proper chunk +00009C call qword ptr [rax+32]B:F():int:this ; call indirect +``` +This is a chain of 3 dependent loads and so best-case will require at least 3x +the best cache latency (plus any indirect prediction overhead). + +So the virtual call costs for the CLR are high. The chunked method table design +was adopted to save space (chunks can be shared by different classes) at the +expense of some performance. And this apparently makes guarded devirtualization +pay off over a wider range of class distributions than one might expect. + +And for completeness, the full guarded `if-then-else` sequence measured above is: +```asm +00007A mov rcx, gword ptr [rsi+8*rcx+16] ; fetch array element +00007F mov rax, 0x7FFC9CFB4A90 ; B's method table +000089 cmp qword ptr [rcx], rax ; method table test +00008C jne SHORT G_M30756_IG06 ; jump if class is not B + +00008E mov eax, 33 ; inlined B.F +000093 jmp SHORT G_M30756_IG07 + +G_M30756_IG06: + +000095 mov rax, qword ptr [rcx] ; fetch method table +000098 mov rax, qword ptr [rax+72] ; fetch proper chunk +00009C call qword ptr [rax+32]B:F():int:this ; call indirect + +G_M30756_IG07: +``` +Note there is a redundant load of the method table (hidden in the `cmp`) that +could be eliminated with a bit more work on the prototype. So guarded +devirtualization perf could potentially be even better than is shown above, +especially for smaller values of `p`. + +### Virtual Calls: The Three-Class Case + +Now to return to the question we asked above: is there something about the two +class case that made guarded devirtualization especially attractive? Read on. + +Suppose we introduce a third class into the mix and repeat the above measurement. +There are now two probabilities in play: `p`, the probability that the element +has class `B`, and `p1`, the probability that the element has class `D`, and +there is a third class `E`. To avoid introducing a 3D plot we'll first simply +average the results for the various values of `p1` and plot performance as a +function of `p`: + +![three classes devirt perf](ThreeClassesDevirt.JPG) + +The right-hand side (`p` near 1.0) looks a lot like the previous chart. This is +not surprising as there are relatively few instances of that third class. But the +middle and left hand side differ and are more costly. + +For the un-optimized case (orange) the difference is directly attributable to +the performance of the indirect ranch predictor. Even when `p` is small there +are still two viable branch targets (on average) and some some degree of indirect +misprediction. + +For the optimized case we now see that guarded devirtualization performs worse +than no optimization if the JIT's guess is completely wrong. The penalty is not +that bad because the JIT-introduced branch is predictable. But even at very +modest values of `p` guarded devirtualization starts to win out. + +Because we've averaged over `p1` you might suspect that we're hiding something. +The following chart shows the min and max values as well as the average, and also +shows the two-class result (dashed lines). + +![three classes devirt perf ranges](ThreeClassesDevirtFull.JPG) + +You can see the minimum values are very similar to the two class case; these +are cases where the `p1` is close to 0 or close to 1. And that makes sense because +if there really are only two classes despite the potential of there being three +then we'd expect to see similar results as in the case where there only can be +two classes. + +And as noted above, if `p` is high enough then the curves also converge to the +two class case, as the relative mixture of `D` and `E` is doesn't matter: the +predominance of `B` wins out. + +For low values of `p` the actual class at the call site is some mixture of `D` +and `E`. Here's some detail (the x axis now shows `p1` and `p` as upper and +lower values respectively). + +![three classes devirt perf detail](ThreeClassesDevirtDetail.JPG) + +The worst case for perf for both is when the mixture of `D` and `E` is +unpredictably 50-50 and there are no `B`s. Once we mix in just 10% of `B` then +guarded devirt performs better no matter what distribution we have for the other +two classes. Worst case overhead -- where the JIT guesses a class that never +appears, and the other classes are evenly distributed -- is around 20%. + +So it seems reasonable to say that so long as the JIT can make a credible guess +about the possible class -- say a guess that is right at least 10% of the time +-- then there is quite likely a performance benefit to guarded +devirtualization for virtual calls. + +We'll need to verify this with more scenarios, but these initial results are +certainly encouraging. + +### Virtual Calls: Testing for Multiple Cases + +One might deduce from the above that if there are two likely candidates the JIT +should test for each. This is certainly a possibility and in C++ compilers that +do indirect call profiling there are cases where multiple tests are considered +a good idea. But there's also additional code size and another branch. + +This is something we'll look into further. + +### Interface Calls: The Two Class Case + +Interface calls on the CLR are implemented via [Virtual Stub Dispatch]( +https://github.com/dotnet/coreclr/blob/master/Documentation/botr/virtual-stub-dispatch.md +) (aka VSD). Calls are made through an indirection cell that initially points +at a lookup stub. On the first call, the interface target is identified from the +object's method table and the lookup stub is replaced with a dispatch stub that +checks for that specific method table in a manner quite similar to guarded +devirtualization. + +If the method table check fails a counter is incremented, and once the counter +reaches a threshold the dispatch stub is replaced with a resolve stub that looks +up the right target in a process-wide hash table. + +For interface call sites that are monomorphic, the VSD mechanism (via the dispatch +stub) executes the following code sequence (here for x64) +```asm +; JIT-produced code +; +; set up R11 with interface target info +mov R11, ... ; additional VSD info for call +mov RCX, ... ; dispatch target object +cmp [rcx], rcx ; null check (unnecessary) +call [addr] ; call indirect through indir cell + +; dispatch stub +cmp [RCX], targetMT ; check for right method table +jne DISPATCH-FAIL ; bail to resolve stub if check fails (uses R11 info) +jmp targetCode ; else "tail call" the right method +``` + +At first glance it might appear that adding guarded devirtualization on top of +VSD may not provide much benefit for monomorphic sites. However the guarded +devirtualization test doesn't use an indirection cell and doesn't require R11 +setup, may be able to optimize away the null check, and opens the door for +inlining. So it should be slightly cheaper on average and significantly cheaper +in some cases. + +(Note [CoreCLR#1422](https://github.com/dotnet/coreclr/issues/14222) indicates +we should be able to optimize away the null check in any case). + +If the guarded tests fails we've filtered out one method table the dispatch cell +now works well even if a call site alternates between two classes. So we'd expect +the combination of guarded devirtualization and VSD to perform well on the two +class test and only show limitations when faced with mixtures of three or more +classes. + +If the guard test always fails we have the up-front cost for the vtable fetch +(which should amortize pretty well with the subsequent fetch in the) stub plus +the predicted not taken branch. So we'd expect the cost for the two-class cases +where the JIT's prediction is always wrong to be a bit higher). + +The graph below shows the measured results. To makes sure we're not overly impacted +by residual VSD state we use a fresh call site for each value of p. The solid +orange line is the current cost. The dashed orange line is the corresponding cost +for a virtual call with the same value of p. The solid blue line is the cost with +an up-front guarded test. As noted there is some slowdown when the JIT always +guesses the wrong class, but the break-even point (not shown) is at a relatively +small probability of a correct guess. + +![two classes interface devirt](TwoClassesInterface.JPG) + +### Interface Calls: The Three Class Case + +As with virtual calls you may strongly suspect the two class case for interface +calls is special. And you'd be right. + +If we mix a third class in as we did above, we see similar changes in the +performance mix for interface calls, as seen below. But also as with virtual calls +the JIT's guess doesn't have to be all that good to see payoffs. At around 10% +correct, guessing wins on average, and around 30% correct guessing is always a +perf win. + +![three classes interface devirt](ThreeClassesInterface.JPG) + +### Delegate Speculation + +While we have been discussing this topic in the context of virtual calls, the +method is general and can be applied to indirect calls as well. Here the guard +test may just test for a particular function rather than a type. + +`Delegate.Invoke` is a special method that can eventually turns into an indirect +call. The JIT could speculate about the possible target of this call. Choosing +a good target here would require some kind of indirect call profiling. + +### Calli Speculation + +Indirect calls also arise via the `calli` opcode. As with delegates, choosing a +target here likely requires specialized profiling. + +### Costs + +Given the optimistic take on performance, it is important to remember that +there are also some costs involved to guarded devirtualization: increased code +size and increased JIT time. There may also be some second-order effects on +the local code generation as we've introduced control flow into the method where +it didn't exist previously. + +A naive implementation that aggressively performs guarded devirtualization +increases code size overall by about 5% as measured by PMI. JIT time increase +was not measured but should be in that same ballpark. Some assemblies see code +size increasing by as much as 12%. + +However the guarded devirtualization only kicks in for about 15% of the methods. +So the average relative size increase in a method with virtual calls is probably +more like 33%. + +There may be some inefficiencies in the current prototype that can be fixed to +reduce the code size impact. Aside from the extra method table fetch noted above +the duplicated calls have the same sets of arguments and so we might be able to +amortize argument evaluation costs better. And there are some complexities around +handling return values (especially for implicit by-reference structures) that +likewise might be able to be tightened up. + +Nevertheless, blindly optimizing all virtual calls with guarded devirtualization +is not likely the right approach. Something more selective is almost certainly +needed. + +However we have done code-expanding optimizations somewhat blindly before, and +we could contain the size growth risk by restricting this optimization to Tier1. +Also PMI can overstate size impact seen in real scenarios as it may over-count +the impact of changes in methods that are always inlined. So we should look at +size increases from some actual scenarios. + +And perhaps I'll look at the size impact of loop cloning as a precedent. + +## Implementation Considerations + +To get the data above and a better feel for the challenges involved we have +implemented a prototype. It is currently located on this branch: +[GuardedDevirtFoundations](https://github.com/AndyAyersMS/coreclr/tree/GuardedDevirtFoundations). + +The prototype can introduce guarded devirtualization for some virtual and +interface calls. It supports inlining of the directly invoked method. It uses +the JIT's "best known type" as the class to predict. It also anticipates being +able to query the runtime for implementing classes of an interface. + +### Phase Ordering + +For the most part, devirtualization is done very early on in the JIT, during +importation. This allows devirtualized calls to subsequently be inlined, and for +devirtualization of call sites in inlinees to take advantage of type information +propagating down into the inlinee from inlined arguments. + +We want those same properties to hold for guarded devirtualization candidates. +So conceptually the transformation should happen in the same place. However it is +not possible to introduce new control flow in the importer (ignoring for the moment +the possibility of using question ops). So the actual transformation must be +deferred until sometime after the importer runs and before the inliner runs. + +This deferral is a bit problematic as some key bits of importer state are needed +to query the runtime about the properties of a call target. So if we defer the +transformation we need to somehow capture the data needed for these queries and +make it available later. The current prototype uses (abuses?) the inline +candidate information for this. As part of this we require that all speculative +devirtualization sites be treated as inline candidates, at least initially. +This has the side effect of hoisting the call to be a top level (statement) +expression and introduces a return value placeholder. + +We currently already have a similar transformation in the JIT, the "fat calli" +transformation needed on CoreRT. This transformation runs at the right time -- +after the importer and before the inliner -- and introduces the right kind of +`if-then-else` control flow structure. So the thought is to generalize this to +handle guarded devirtualization as well. + +### Recognition + +In the prototype, candidates are recognized during the initial importer driven +call to `impDevirtualizeCall`. If the only reason devirtualization fails is lack +of exactness, then the call is marked as a guarded devirtualization candidate. + +### Devirtualization + +To produce the direct call the prototype updates the `this` passed in the `then` +version of the call so it has the exact predicted type. It then re-invokes +`impDevirtualizeCall` which should now succeed as the type is now exactly +known. The benefit of reuse here is that certain special cases of devirtualization +are now more likely to be handled. + +### Inline Candidacy + +The prototype currently sets up all virtual and interface calls as potential +inline candidates. One open question is whether it is worth doing guarded +devirtualization simply to introduce a direct call. As an alternative we could +insist that the directly called method also be something that is potentially +inlineable. One can argue that call overhead matters much more for small methods +that are also likely good inline candidates. + +The inline candidate info is based on the apparent method invoked at the virtual +site. This is the base method, the one that introduces the virtual slot. So if we +speculatively check for some class and that class overrides, we need to somehow +update the inline info. How to best do this is unclear. + +### Return Values + +Because the candidate calls are handled as inline candidates, the JIT hoists the +call to a top level expression (which is good) during importation and introduces +a return value placeholder into the place the call occupied in its original tree. +(Oddly we introduce return value placeholders for some calls that don't return a +a value -- we should fix this). The placeholder points back at the call. + +When we split the call into two calls we can't keep this structure intact as there +needs to be a 1-1 relationship between call and placeholder. So the prototype +needs to save the return value in a new local and then update the placeholder to +refer to that local. This can be tricky because in some cases we haven't yet settled +on what the actual type of the return value is. + +The handling of return values in the early stages of the JIT (arguably, in the entire +JIT) is quite messy. The ABI details bleed through quite early and do so somewhat +unevenly. This mostly impacts methods that return structures as different ABIs have +quite different conventions, and the IR is transformed to reflect those conventions +at different times for un-inlined calls, inlineable calls that end up not getting +inlined, and for calls that get inlined. In particular, structures that are small +enough to be returned by value (in a register or set of registers) need careful +handling. + +The prototype skips over such by-value-returning struct methods today. Some of +the logic found in `fgUpdateInlineReturnExpressionPlaceHolder` needs to be pulled +in to properly type the call return value so we can properly type the temp. Or +perhaps we could leverage some of importer-time transformations that are done for +the fat calli cases. + +For larger structs we should arrange so that the call(s) write their return values +directly into the new temp, instead of copying the value from wherever they +return it into a temp, to avoid one level of struct copy. Doing so may require +upstream zero init of the return value struct and this should only happen in one +place. + +## Open Issues + +Here are some of the issues that need to be looked into more carefully. + +### Policy + +- what is the best mechanism for guessing which class to test for? + - instrument Tier0 code? + - look at types of arguments? + - ask runtime for set of known classes? + - harvest info from runtime caches (VSD)? + - add instrumenting Tier1 to collect data and Tier2 to optimize? +- is there some efficient way to test for class ranges? Currently the JIT is +doing an exact type test. But we really care more about what method is going to +be invoked. So if there is a range of types `D1...DN` that all will invoke some +particular method can we test for them all somehow? +- or should we test the method after the method lookup (possibly worse tradeoff +because of the chunked method table arrangement, also tricky as a method can +have multiple addresses over time. Since many types can share a chunk this +might allow devirtualization over a wider set of classes (good) but we'd lose +knowledge of exact types (bad). Not clear how these tradeoffs play out. +- interaction of guarded devirt with VSD? For interface calls we are sort of +inlining the first level of the VSD into the JITted code. +- revocation or reworking of the guard if the JIT's prediction turns out to bad? +- improve regular devirtualization to reduce need for guarded +devirtualization. +- should we enable this for preJITted code? In preJITted code the target method +table is not a JIT-time constant and must be looked up. +- in the prototype, guarded devirtualization and late devirtualization sometimes +conflict. Say we fail to devirtualize a site, and so expand via guarded devirtualization +guessing some class X. The residual virtual call then may be optimizable via late +devirtualization, and this may discover the actual class. In that case the guarded +devirtualization is not needed. But currently it can't be undone. +- we probably don't want to bother with guarded devirtualization if we can't also +inline. But it takes us several evaluation steps to determine if a call can +be inlined, some of these happening *after* we've done the guarded expansion. +Again this expansion can't be undone. +- so perhaps we need to build an undo capability for the cases where guarded +devirtualization doesn't lead to inlining and/or where late devirtualization also +applies. + +### Implementation + +- avoid re-fetching method table for latent virtual call (should reduce code +size and improve overall perf win) +- look at how effectively we are sharing argument setup (might reduce code size +and JIT time impact) -- perhaps implement head merging? +- handle return values in full generality +- il offsets +- flag residual calls as not needing null checks +- properly establish inline candidacy +- decide if the refactoring of `InlineCandidateInfo` is the right way to pass +information from importer to the indirect transform phase + +### Futures + +- can we cover multiple calls with one test? This can happen already if the +subsequent call is introduced via inlining of the directly called method, as we +know the exact type along that path. But for back to back calls to virtual +methods off of the same object it would be nice to do just one test. +- should we test for multiple types? Once we've peeled off the "most likely" case +if the conditional probability of the next most likely case is high it is probably +worth testing for it too. I believe the C++ compiler will test up to 3 candidates +this way... but that's a lot of code expansion. \ No newline at end of file diff --git a/Documentation/design-docs/ThreeClassesDevirt.JPG b/Documentation/design-docs/ThreeClassesDevirt.JPG new file mode 100644 index 0000000000000000000000000000000000000000..1ae19baab4a1f164b62dbaf6998c5283246e915b GIT binary patch literal 111024 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%0AomK2U&I-&N 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 literal 0 HcmV?d00001 diff --git a/Documentation/design-docs/ThreeClassesDevirtDetail.JPG b/Documentation/design-docs/ThreeClassesDevirtDetail.JPG new file mode 100644 index 0000000000000000000000000000000000000000..0edba7479e947581de7f565e5e8c646ee4592e2f GIT binary patch literal 140846 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 literal 0 HcmV?d00001 diff --git a/Documentation/design-docs/TwoClassesBaseline.JPG b/Documentation/design-docs/TwoClassesBaseline.JPG new file mode 100644 index 0000000000000000000000000000000000000000..3a8b4b21e86090f8de3eedf0e69e4f0a030e0a35 GIT binary patch literal 80619 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

*2Y(kB5f2%Qbb#0uxfCn#f(~LKY9Y$JEQ7Eu;6} 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 1) && (lvaTable[lvaInlineeReturnSpillTemp].lvSingleDef == 1)) + { + // Make sure it is no longer marked single def. This is only safe + // to do if we haven't ever updated the type. + assert(!lvaTable[lvaInlineeReturnSpillTemp].lvClassInfoUpdated); + JITDUMP("Marked return spill temp V%02u as NOT single def temp\n", lvaInlineeReturnSpillTemp); + lvaTable[lvaInlineeReturnSpillTemp].lvSingleDef = 0; + } + } } else { @@ -21859,43 +21874,58 @@ void Compiler::fgInline() do { - /* Make the current basic block address available globally */ - + // Make the current basic block address available globally compCurBB = block; - GenTreeStmt* stmt; - GenTree* expr; - - for (stmt = block->firstStmt(); stmt != nullptr; stmt = stmt->gtNextStmt) + for (GenTreeStmt* stmt = block->firstStmt(); stmt != nullptr; stmt = stmt->gtNextStmt) { - expr = stmt->gtStmtExpr; - // See if we can expand the inline candidate - if ((expr->gtOper == GT_CALL) && ((expr->gtFlags & GTF_CALL_INLINE_CANDIDATE) != 0)) +#ifdef DEBUG + // In debug builds we want the inline tree to show all failed + // inlines. Some inlines may fail very early and never make it to + // candidate stage. So scan the tree looking for those early failures. + fgWalkTreePre(&stmt->gtStmtExpr, fgFindNonInlineCandidate, stmt); +#endif + + GenTree* expr = stmt->gtStmtExpr; + + // The importer ensures that all inline candidates are + // statement expressions. So see if we have a call. + if (expr->IsCall()) { GenTreeCall* call = expr->AsCall(); - InlineResult inlineResult(this, call, stmt, "fgInline"); - fgMorphStmt = stmt; + // We do. Is it an inline candidate? + // + // Note we also process GuardeDevirtualizationCandidates here as we've + // split off GT_RET_EXPRs for them even when they are not inline candidates + // as we need similar processing to ensure they get patched back to where + // they belong. + if (call->IsInlineCandidate() || call->IsGuardedDevirtualizationCandidate()) + { + InlineResult inlineResult(this, call, stmt, "fgInline"); + + fgMorphStmt = stmt; - fgMorphCallInline(call, &inlineResult); + fgMorphCallInline(call, &inlineResult); - if (stmt->gtStmtExpr->IsNothingNode()) - { - fgRemoveStmt(block, stmt); - continue; + // fgMorphCallInline may have updated the + // statement expression to a GT_NOP if the + // call returned a value, regardless of + // whether the inline succeeded or failed. + // + // If so, remove the GT_NOP and continue + // on with the next statement. + if (stmt->gtStmtExpr->IsNothingNode()) + { + fgRemoveStmt(block, stmt); + continue; + } } } - else - { -#ifdef DEBUG - // Look for non-candidates. - fgWalkTreePre(&stmt->gtStmtExpr, fgFindNonInlineCandidate, stmt); -#endif - } - // See if we need to replace the return value place holder. - // Also, see if this update enables further devirtualization. + // See if we need to replace some return value place holders. + // Also, see if this replacement enables further devirtualization. // // Note we have both preorder and postorder callbacks here. // @@ -22008,6 +22038,11 @@ Compiler::fgWalkResult Compiler::fgFindNonInlineCandidate(GenTree** pTree, fgWal void Compiler::fgNoteNonInlineCandidate(GenTreeStmt* stmt, GenTreeCall* call) { + if (call->IsInlineCandidate() || call->IsGuardedDevirtualizationCandidate()) + { + return; + } + InlineResult inlineResult(this, call, nullptr, "fgNotInlineCandidate"); InlineObservation currentObservation = InlineObservation::CALLSITE_NOT_CANDIDATE; @@ -22471,10 +22506,11 @@ Compiler::fgWalkResult Compiler::fgLateDevirtualization(GenTree** pTree, fgWalkD } #endif // DEBUG - CORINFO_METHOD_HANDLE method = call->gtCallMethHnd; - unsigned methodFlags = 0; - CORINFO_CONTEXT_HANDLE context = nullptr; - comp->impDevirtualizeCall(call, &method, &methodFlags, &context, nullptr); + CORINFO_METHOD_HANDLE method = call->gtCallMethHnd; + unsigned methodFlags = 0; + CORINFO_CONTEXT_HANDLE context = nullptr; + const bool isLateDevirtualization = true; + comp->impDevirtualizeCall(call, &method, &methodFlags, &context, nullptr, isLateDevirtualization); } } else if (tree->OperGet() == GT_ASG) @@ -25507,8 +25543,10 @@ bool Compiler::fgRetargetBranchesToCanonicalCallFinally(BasicBlock* block, return true; } -// FatCalliTransformer transforms calli that can use fat function pointer. -// Fat function pointer is pointer with the second least significant bit set, +// IndirectCallTransformer transforms indirect calls that involve fat pointers +// or guarded devirtualization. +// +// A fat function pointer is pointer with the second least significant bit set, // if the bit is set, the pointer (after clearing the bit) actually points to // a tuple where // instantiationArgument is a hidden first argument required by method pointer. @@ -25557,38 +25595,60 @@ bool Compiler::fgRetargetBranchesToCanonicalCallFinally(BasicBlock* block, // subsequent statements // } // -class FatCalliTransformer +class IndirectCallTransformer { public: - FatCalliTransformer(Compiler* compiler) : compiler(compiler) + IndirectCallTransformer(Compiler* compiler) : compiler(compiler) { } //------------------------------------------------------------------------ // Run: run transformation for each block. // - void Run() + // Returns: + // Count of calls transformed. + int Run() { + int count = 0; + for (BasicBlock* block = compiler->fgFirstBB; block != nullptr; block = block->bbNext) { - TransformBlock(block); + count += TransformBlock(block); } + + return count; } private: //------------------------------------------------------------------------ - // TransformBlock: look through statements and transform statements with fat pointer calls. + // TransformBlock: look through statements and transform statements with + // particular indirect calls // - void TransformBlock(BasicBlock* block) + // Returns: + // Count of calls transformed. + // + int TransformBlock(BasicBlock* block) { + int count = 0; + for (GenTreeStmt* stmt = block->firstStmt(); stmt != nullptr; stmt = stmt->gtNextStmt) { if (ContainsFatCalli(stmt)) { - StatementTransformer stmtTransformer(compiler, block, stmt); - stmtTransformer.Run(); + FatPointerCallTransformer transformer(compiler, block, stmt); + transformer.Run(); + count++; + } + + if (ContainsGuardedDevirtualizationCandidate(stmt)) + { + GuardedDevirtualizationTransformer transformer(compiler, block, stmt); + transformer.Run(); + count++; } } + + return count; } //------------------------------------------------------------------------ @@ -25609,39 +25669,158 @@ private: return fatPointerCandidate->IsCall() && fatPointerCandidate->AsCall()->IsFatPointerCandidate(); } - class StatementTransformer + //------------------------------------------------------------------------ + // ContainsGuardedDevirtualizationCandidate: check does this statement contain a virtual + // call that we'd like to guardedly devirtualize? + // + // Return Value: + // true if contains, false otherwise. + // + // Notes: + // calls are hoisted to top level ... (we hope) + bool ContainsGuardedDevirtualizationCandidate(GenTreeStmt* stmt) + { + GenTree* candidate = stmt->gtStmtExpr; + return candidate->IsCall() && candidate->AsCall()->IsGuardedDevirtualizationCandidate(); + } + + class Transformer { public: - StatementTransformer(Compiler* compiler, BasicBlock* block, GenTreeStmt* stmt) + Transformer(Compiler* compiler, BasicBlock* block, GenTreeStmt* stmt) : compiler(compiler), currBlock(block), stmt(stmt) { - remainderBlock = nullptr; - checkBlock = nullptr; - thenBlock = nullptr; - elseBlock = nullptr; - doesReturnValue = stmt->gtStmtExpr->OperIs(GT_ASG); - origCall = GetCall(stmt); - fptrAddress = origCall->gtCallAddr; - pointerType = fptrAddress->TypeGet(); + remainderBlock = nullptr; + checkBlock = nullptr; + thenBlock = nullptr; + elseBlock = nullptr; + origCall = nullptr; } //------------------------------------------------------------------------ // Run: transform the statement as described above. // - void Run() + virtual void Run() + { + origCall = GetCall(stmt); + Transform(); + } + + void Transform() { - ClearFatFlag(); + JITDUMP("*** %s: transforming [%06u]\n", Name(), compiler->dspTreeID(stmt)); + FixupRetExpr(); + ClearFlag(); CreateRemainder(); CreateCheck(); CreateThen(); CreateElse(); - RemoveOldStatement(); SetWeights(); ChainFlow(); } - private: + protected: + virtual const char* Name() = 0; + virtual void ClearFlag() = 0; + virtual GenTreeCall* GetCall(GenTreeStmt* callStmt) = 0; + virtual void FixupRetExpr() = 0; + + //------------------------------------------------------------------------ + // CreateRemainder: split current block at the call stmt and + // insert statements after the call into remainderBlock. + // + void CreateRemainder() + { + remainderBlock = compiler->fgSplitBlockAfterStatement(currBlock, stmt); + unsigned propagateFlags = currBlock->bbFlags & BBF_GC_SAFE_POINT; + remainderBlock->bbFlags |= BBF_JMP_TARGET | BBF_HAS_LABEL | propagateFlags; + } + + virtual void CreateCheck() = 0; + + //------------------------------------------------------------------------ + // CreateAndInsertBasicBlock: ask compiler to create new basic block. + // and insert in into the basic block list. + // + // Arguments: + // jumpKind - jump kind for the new basic block + // insertAfter - basic block, after which compiler has to insert the new one. + // + // Return Value: + // new basic block. + BasicBlock* CreateAndInsertBasicBlock(BBjumpKinds jumpKind, BasicBlock* insertAfter) + { + BasicBlock* block = compiler->fgNewBBafter(jumpKind, insertAfter, true); + if ((insertAfter->bbFlags & BBF_INTERNAL) == 0) + { + block->bbFlags &= ~BBF_INTERNAL; + block->bbFlags |= BBF_IMPORTED; + } + return block; + } + + virtual void CreateThen() = 0; + virtual void CreateElse() = 0; + + //------------------------------------------------------------------------ + // RemoveOldStatement: remove original stmt from current block. + // + void RemoveOldStatement() + { + compiler->fgRemoveStmt(currBlock, stmt); + } + + //------------------------------------------------------------------------ + // SetWeights: set weights for new blocks. + // + void SetWeights() + { + remainderBlock->inheritWeight(currBlock); + checkBlock->inheritWeight(currBlock); + thenBlock->inheritWeightPercentage(currBlock, HIGH_PROBABILITY); + elseBlock->inheritWeightPercentage(currBlock, 100 - HIGH_PROBABILITY); + } + + //------------------------------------------------------------------------ + // ChainFlow: link new blocks into correct cfg. + // + void ChainFlow() + { + assert(!compiler->fgComputePredsDone); + checkBlock->bbJumpDest = elseBlock; + thenBlock->bbJumpDest = remainderBlock; + } + + Compiler* compiler; + BasicBlock* currBlock; + BasicBlock* remainderBlock; + BasicBlock* checkBlock; + BasicBlock* thenBlock; + BasicBlock* elseBlock; + GenTreeStmt* stmt; + GenTreeCall* origCall; + + const int HIGH_PROBABILITY = 80; + }; + + class FatPointerCallTransformer final : public Transformer + { + public: + FatPointerCallTransformer(Compiler* compiler, BasicBlock* block, GenTreeStmt* stmt) + : Transformer(compiler, block, stmt) + { + doesReturnValue = stmt->gtStmtExpr->OperIs(GT_ASG); + fptrAddress = origCall->gtCallAddr; + pointerType = fptrAddress->TypeGet(); + } + + protected: + virtual const char* Name() + { + return "FatPointerCall"; + } + //------------------------------------------------------------------------ // GetCall: find a call in a statement. // @@ -25650,7 +25829,7 @@ private: // // Return Value: // call tree node pointer. - GenTreeCall* GetCall(GenTreeStmt* callStmt) + virtual GenTreeCall* GetCall(GenTreeStmt* callStmt) { GenTree* tree = callStmt->gtStmtExpr; GenTreeCall* call = nullptr; @@ -25667,28 +25846,22 @@ private: } //------------------------------------------------------------------------ - // ClearFatFlag: clear fat pointer candidate flag from the original call. + // ClearFlag: clear fat pointer candidate flag from the original call. // - void ClearFatFlag() + virtual void ClearFlag() { origCall->ClearFatPointerCandidate(); } - //------------------------------------------------------------------------ - // CreateRemainder: split current block at the fat call stmt and - // insert statements after the call into remainderBlock. - // - void CreateRemainder() + // FixupRetExpr: no action needed as we handle this in the importer. + virtual void FixupRetExpr() { - remainderBlock = compiler->fgSplitBlockAfterStatement(currBlock, stmt); - unsigned propagateFlags = currBlock->bbFlags & BBF_GC_SAFE_POINT; - remainderBlock->bbFlags |= BBF_JMP_TARGET | BBF_HAS_LABEL | propagateFlags; } //------------------------------------------------------------------------ // CreateCheck: create check block, that checks fat pointer bit set. // - void CreateCheck() + virtual void CreateCheck() { checkBlock = CreateAndInsertBasicBlock(BBJ_COND, currBlock); GenTree* fatPointerMask = new (compiler, GT_CNS_INT) GenTreeIntCon(TYP_I_IMPL, FAT_POINTER_MASK); @@ -25702,19 +25875,20 @@ private: } //------------------------------------------------------------------------ - // CreateCheck: create then block, that is executed if call address is not fat pointer. + // CreateThen: create then block, that is executed if the check succeeds. + // This simply executes the original call. // - void CreateThen() + virtual void CreateThen() { - thenBlock = CreateAndInsertBasicBlock(BBJ_ALWAYS, checkBlock); - GenTree* nonFatCallStmt = compiler->gtCloneExpr(stmt)->AsStmt(); - compiler->fgInsertStmtAtEnd(thenBlock, nonFatCallStmt); + thenBlock = CreateAndInsertBasicBlock(BBJ_ALWAYS, checkBlock); + GenTree* copyOfOriginalStmt = compiler->gtCloneExpr(stmt)->AsStmt(); + compiler->fgInsertStmtAtEnd(thenBlock, copyOfOriginalStmt); } //------------------------------------------------------------------------ - // CreateCheck: create else block, that is executed if call address is fat pointer. + // CreateElse: create else block, that is executed if call address is fat pointer. // - void CreateElse() + virtual void CreateElse() { elseBlock = CreateAndInsertBasicBlock(BBJ_NONE, thenBlock); @@ -25727,27 +25901,6 @@ private: } //------------------------------------------------------------------------ - // CreateAndInsertBasicBlock: ask compiler to create new basic block. - // and insert in into the basic block list. - // - // Arguments: - // jumpKind - jump kind for the new basic block - // insertAfter - basic block, after which compiler has to insert the new one. - // - // Return Value: - // new basic block. - BasicBlock* CreateAndInsertBasicBlock(BBjumpKinds jumpKind, BasicBlock* insertAfter) - { - BasicBlock* block = compiler->fgNewBBafter(jumpKind, insertAfter, true); - if ((insertAfter->bbFlags & BBF_INTERNAL) == 0) - { - block->bbFlags &= ~BBF_INTERNAL; - block->bbFlags |= BBF_IMPORTED; - } - return block; - } - - //------------------------------------------------------------------------ // GetFixedFptrAddress: clear fat pointer bit from fat pointer address. // // Return Value: @@ -25843,49 +25996,306 @@ private: iterator->Rest() = compiler->gtNewArgList(hiddenArgument); } + private: + const int FAT_POINTER_MASK = 0x2; + + GenTree* fptrAddress; + var_types pointerType; + bool doesReturnValue; + }; + + class GuardedDevirtualizationTransformer final : public Transformer + { + public: + GuardedDevirtualizationTransformer(Compiler* compiler, BasicBlock* block, GenTreeStmt* stmt) + : Transformer(compiler, block, stmt), returnTemp(BAD_VAR_NUM) + { + } + //------------------------------------------------------------------------ - // RemoveOldStatement: remove original stmt from current block. + // Run: transform the statement as described above. // - void RemoveOldStatement() + virtual void Run() { - compiler->fgRemoveStmt(currBlock, stmt); + origCall = GetCall(stmt); + + JITDUMP("*** %s contemplating [%06u]\n", Name(), compiler->dspTreeID(origCall)); + + // We currently need inline candidate info to guarded devirt. + if (!origCall->IsInlineCandidate()) + { + JITDUMP("*** %s Bailing on [%06u] -- not an inline candidate\n", Name(), compiler->dspTreeID(origCall)); + ClearFlag(); + return; + } + + // For now, bail on transforming calls that still appear + // to return structs by value as there is deferred work + // needed to fix up the return type. + // + // See for instance fgUpdateInlineReturnExpressionPlaceHolder. + if (origCall->TypeGet() == TYP_STRUCT) + { + JITDUMP("*** %s Bailing on [%06u] -- can't handle by-value struct returns yet\n", Name(), + compiler->dspTreeID(origCall)); + ClearFlag(); + + // For stub calls restore the stub address + if (origCall->IsVirtualStub()) + { + origCall->gtStubCallStubAddr = origCall->gtInlineCandidateInfo->stubAddr; + } + return; + } + + Transform(); + } + + protected: + virtual const char* Name() + { + return "GuardedDevirtualization"; } //------------------------------------------------------------------------ - // SetWeights: set weights for new blocks. + // GetCall: find a call in a statement. // - void SetWeights() + // Arguments: + // callStmt - the statement with the call inside. + // + // Return Value: + // call tree node pointer. + virtual GenTreeCall* GetCall(GenTreeStmt* callStmt) { - remainderBlock->inheritWeight(currBlock); - checkBlock->inheritWeight(currBlock); - thenBlock->inheritWeightPercentage(currBlock, HIGH_PROBABILITY); - elseBlock->inheritWeightPercentage(currBlock, 100 - HIGH_PROBABILITY); + GenTree* tree = callStmt->gtStmtExpr; + assert(tree->IsCall()); + GenTreeCall* call = tree->AsCall(); + return call; } //------------------------------------------------------------------------ - // ChainFlow: link new blocks into correct cfg. + // ClearFlag: clear guarded devirtualization candidate flag from the original call. // - void ChainFlow() + virtual void ClearFlag() { - assert(!compiler->fgComputePredsDone); - checkBlock->bbJumpDest = elseBlock; - thenBlock->bbJumpDest = remainderBlock; + origCall->ClearGuardedDevirtualizationCandidate(); } - Compiler* compiler; - BasicBlock* currBlock; - BasicBlock* remainderBlock; - BasicBlock* checkBlock; - BasicBlock* thenBlock; - BasicBlock* elseBlock; - GenTreeStmt* stmt; - GenTreeCall* origCall; - GenTree* fptrAddress; - var_types pointerType; - bool doesReturnValue; + //------------------------------------------------------------------------ + // CreateCheck: create check block and check method table + // + virtual void CreateCheck() + { + checkBlock = CreateAndInsertBasicBlock(BBJ_COND, currBlock); - const int FAT_POINTER_MASK = 0x2; - const int HIGH_PROBABILITY = 80; + // Fetch method table from object arg to call. + GenTree* thisTree = compiler->gtCloneExpr(origCall->gtCallObjp); + + // Create temp for this if the tree is costly. + if (!thisTree->IsLocal()) + { + const unsigned thisTempNum = compiler->lvaGrabTemp(true DEBUGARG("guarded devirt this temp")); + // lvaSetClass(thisTempNum, ...); + GenTree* asgTree = compiler->gtNewTempAssign(thisTempNum, thisTree); + GenTree* asgStmt = compiler->fgNewStmtFromTree(asgTree, stmt->gtStmt.gtStmtILoffsx); + compiler->fgInsertStmtAtEnd(checkBlock, asgStmt); + + thisTree = compiler->gtNewLclvNode(thisTempNum, TYP_REF); + + // Propagate the new this to the call. Must be a new expr as the call + // will live on in the else block and thisTree is used below. + origCall->gtCallObjp = compiler->gtNewLclvNode(thisTempNum, TYP_REF); + } + + GenTree* methodTable = compiler->gtNewIndir(TYP_I_IMPL, thisTree); + methodTable->gtFlags |= GTF_IND_INVARIANT; + + // Find target method table + GuardedDevirtualizationCandidateInfo* guardedInfo = origCall->gtGuardedDevirtualizationCandidateInfo; + CORINFO_CLASS_HANDLE clsHnd = guardedInfo->guardedClassHandle; + GenTree* targetMethodTable = compiler->gtNewIconEmbClsHndNode(clsHnd); + + // Compare and jump to else (which does the indirect call) if NOT equal + GenTree* methodTableCompare = compiler->gtNewOperNode(GT_NE, TYP_INT, targetMethodTable, methodTable); + GenTree* jmpTree = compiler->gtNewOperNode(GT_JTRUE, TYP_VOID, methodTableCompare); + GenTree* jmpStmt = compiler->fgNewStmtFromTree(jmpTree, stmt->gtStmt.gtStmtILoffsx); + compiler->fgInsertStmtAtEnd(checkBlock, jmpStmt); + } + + //------------------------------------------------------------------------ + // FixupRetExpr: set up to repair return value placeholder from call + // + virtual void FixupRetExpr() + { + // If call returns a value, we need to copy it to a temp, and + // update the associated GT_RET_EXPR to refer to the temp instead + // of the call. + // + // Note implicit by-ref returns should have already been converted + // so any struct copy we induce here should be cheap. + // + // Todo: make sure we understand how this interacts with return type + // munging for small structs. + InlineCandidateInfo* inlineInfo = origCall->gtInlineCandidateInfo; + GenTree* retExpr = inlineInfo->retExpr; + + // Sanity check the ret expr if non-null: it should refer to the original call. + if (retExpr != nullptr) + { + assert(retExpr->gtRetExpr.gtInlineCandidate == origCall); + } + + if (origCall->TypeGet() != TYP_VOID) + { + returnTemp = compiler->lvaGrabTemp(false DEBUGARG("guarded devirt return temp")); + JITDUMP("Reworking call(s) to return value via a new temp V%02u\n", returnTemp); + + if (varTypeIsStruct(origCall)) + { + compiler->lvaSetStruct(returnTemp, origCall->gtRetClsHnd, false); + } + + GenTree* tempTree = compiler->gtNewLclvNode(returnTemp, origCall->TypeGet()); + + JITDUMP("Updating GT_RET_EXPR [%06u] to refer to temp V%02u\n", compiler->dspTreeID(retExpr), + returnTemp); + retExpr->gtRetExpr.gtInlineCandidate = tempTree; + } + else if (retExpr != nullptr) + { + // We still oddly produce GT_RET_EXPRs for some void + // returning calls. Just patch the ret expr to a NOP. + // + // Todo: consider bagging creation of these RET_EXPRs. The only possible + // benefit they provide is stitching back larger trees for failed inlines + // of void-returning methods. But then the calls likely sit in commas and + // the benefit of a larger tree is unclear. + JITDUMP("Updating GT_RET_EXPR [%06u] for VOID return to refer to a NOP\n", + compiler->dspTreeID(retExpr)); + GenTree* nopTree = compiler->gtNewNothingNode(); + retExpr->gtRetExpr.gtInlineCandidate = nopTree; + } + else + { + // We do not produce GT_RET_EXPRs for CTOR calls, so there is nothing to patch. + } + } + + //------------------------------------------------------------------------ + // CreateThen: create else block with direct call to method + // + virtual void CreateThen() + { + thenBlock = CreateAndInsertBasicBlock(BBJ_ALWAYS, checkBlock); + + InlineCandidateInfo* inlineInfo = origCall->gtInlineCandidateInfo; + CORINFO_CLASS_HANDLE clsHnd = inlineInfo->clsHandle; + + // copy 'this' to temp with exact type. + const unsigned thisTemp = compiler->lvaGrabTemp(false DEBUGARG("guarded devirt this exact temp")); + GenTree* clonedObj = compiler->gtCloneExpr(origCall->gtCallObjp); + GenTree* assign = compiler->gtNewTempAssign(thisTemp, clonedObj); + compiler->lvaSetClass(thisTemp, clsHnd, true); + GenTreeStmt* assignStmt = compiler->gtNewStmt(assign); + compiler->fgInsertStmtAtEnd(thenBlock, assignStmt); + + // Clone call + GenTreeCall* call = compiler->gtCloneExpr(origCall)->AsCall(); + call->gtCallObjp = compiler->gtNewLclvNode(thisTemp, TYP_REF); + call->SetIsGuarded(); + + JITDUMP("Direct call [%06u] in block BB%02u\n", compiler->dspTreeID(call), thenBlock->bbNum); + + // Then invoke impDevirtualizeCall do actually + // transform the call for us. It should succeed.... as we have + // now provided an exact typed this. + CORINFO_METHOD_HANDLE methodHnd = inlineInfo->methInfo.ftn; + unsigned methodFlags = inlineInfo->methAttr; + CORINFO_CONTEXT_HANDLE context = inlineInfo->exactContextHnd; + const bool isLateDevirtualization = true; + compiler->impDevirtualizeCall(call, &methodHnd, &methodFlags, &context, nullptr, isLateDevirtualization); + + // Presumably devirt might fail? If so we should try and avoid + // making this a guarded devirt candidate instead of ending + // up here. + assert(!call->IsVirtual()); + + // Re-establish this call as an inline candidate. + GenTree* oldRetExpr = inlineInfo->retExpr; + inlineInfo->clsHandle = clsHnd; + inlineInfo->exactContextHnd = context; + call->gtInlineCandidateInfo = inlineInfo; + + // Add the call + GenTreeStmt* callStmt = compiler->gtNewStmt(call); + compiler->fgInsertStmtAtEnd(thenBlock, callStmt); + + // If there was a ret expr for this call, we need to create a new one + // and append it just after the call. + // + // Note the original GT_RET_EXPR is sitting at the join point of the + // guarded expansion and for non-void calls, and now refers to a temp local; + // we set all this up in FixupRetExpr(). + if (oldRetExpr != nullptr) + { + GenTree* retExpr = compiler->gtNewInlineCandidateReturnExpr(call, call->TypeGet()); + inlineInfo->retExpr = retExpr; + + if (returnTemp != BAD_VAR_NUM) + { + retExpr = compiler->gtNewTempAssign(returnTemp, retExpr); + } + else + { + // We should always have a return temp if we return results by value + assert(origCall->TypeGet() == TYP_VOID); + } + + GenTreeStmt* resultStmt = compiler->gtNewStmt(retExpr); + compiler->fgInsertStmtAtEnd(thenBlock, resultStmt); + } + } + + //------------------------------------------------------------------------ + // CreateElse: create else block. This executes the unaltered indirect call. + // + virtual void CreateElse() + { + elseBlock = CreateAndInsertBasicBlock(BBJ_NONE, thenBlock); + GenTreeCall* call = origCall; + GenTreeStmt* newStmt = compiler->gtNewStmt(call); + + call->gtFlags &= ~GTF_CALL_INLINE_CANDIDATE; + call->SetIsGuarded(); + + JITDUMP("Residual call [%06u] moved to block BB%02u\n", compiler->dspTreeID(call), elseBlock->bbNum); + + if (returnTemp != BAD_VAR_NUM) + { + GenTree* assign = compiler->gtNewTempAssign(returnTemp, call); + newStmt->gtStmtExpr = assign; + } + + // For stub calls, restore the stub address. For everything else, + // null out the candidate info field. + if (call->IsVirtualStub()) + { + JITDUMP("Restoring stub addr %p from candidate info\n", call->gtInlineCandidateInfo->stubAddr); + call->gtStubCallStubAddr = call->gtInlineCandidateInfo->stubAddr; + } + else + { + call->gtInlineCandidateInfo = nullptr; + } + + compiler->fgInsertStmtAtEnd(elseBlock, newStmt); + + // Set the original statement to a nop. + stmt->gtStmtExpr = compiler->gtNewNothingNode(); + } + + private: + unsigned returnTemp; }; Compiler* compiler; @@ -25894,46 +26304,74 @@ private: #ifdef DEBUG //------------------------------------------------------------------------ -// fgDebugCheckFatPointerCandidates: callback to make sure there are no more GTF_CALL_M_FAT_POINTER_CHECK calls. +// fgDebugCheckForTransformableIndirectCalls: callback to make sure there +// are no more GTF_CALL_M_FAT_POINTER_CHECK or GTF_CALL_M_GUARDED_DEVIRT +// calls remaining // -Compiler::fgWalkResult Compiler::fgDebugCheckFatPointerCandidates(GenTree** pTree, fgWalkData* data) +Compiler::fgWalkResult Compiler::fgDebugCheckForTransformableIndirectCalls(GenTree** pTree, fgWalkData* data) { GenTree* tree = *pTree; if (tree->IsCall()) { assert(!tree->AsCall()->IsFatPointerCandidate()); + assert(!tree->AsCall()->IsGuardedDevirtualizationCandidate()); } return WALK_CONTINUE; } //------------------------------------------------------------------------ -// CheckNoFatPointerCandidatesLeft: walk through blocks and check that there are no fat pointer candidates left. +// CheckNoTransformableIndirectCallsRemain: walk through blocks and check +// that there are no indirect call candidates left to transform. // -void Compiler::CheckNoFatPointerCandidatesLeft() +void Compiler::CheckNoTransformableIndirectCallsRemain() { assert(!doesMethodHaveFatPointer()); + assert(!doesMethodHaveGuardedDevirtualization()); + for (BasicBlock* block = fgFirstBB; block != nullptr; block = block->bbNext) { for (GenTreeStmt* stmt = fgFirstBB->firstStmt(); stmt != nullptr; stmt = stmt->gtNextStmt) { - fgWalkTreePre(&stmt->gtStmtExpr, fgDebugCheckFatPointerCandidates); + fgWalkTreePre(&stmt->gtStmtExpr, fgDebugCheckForTransformableIndirectCalls); } } } #endif //------------------------------------------------------------------------ -// fgTransformFatCalli: find and transform fat calls. +// fgTransformIndirectCalls: find and transform various indirect calls // -void Compiler::fgTransformFatCalli() +// These transformations happen post-import because they may introduce +// control flow. +// +void Compiler::fgTransformIndirectCalls() { - assert(IsTargetAbi(CORINFO_CORERT_ABI)); - FatCalliTransformer fatCalliTransformer(this); - fatCalliTransformer.Run(); - clearMethodHasFatPointer(); -#ifdef DEBUG - CheckNoFatPointerCandidatesLeft(); -#endif + JITDUMP("\n*************** in fgTransformIndirectCalls(%s)\n", compIsForInlining() ? "inlinee" : "root"); + + if (doesMethodHaveFatPointer() || doesMethodHaveGuardedDevirtualization()) + { + IndirectCallTransformer indirectCallTransformer(this); + int count = indirectCallTransformer.Run(); + + if (count > 0) + { + JITDUMP("\n*************** After fgTransformIndirectCalls() [%d calls transformed]\n", count); + INDEBUG(if (verbose) { fgDispBasicBlocks(true); }); + } + else + { + JITDUMP(" -- no transforms done (?)\n"); + } + + clearMethodHasFatPointer(); + clearMethodHasGuardedDevirtualization(); + } + else + { + JITDUMP(" -- no candidates to transform\n"); + } + + INDEBUG(CheckNoTransformableIndirectCallsRemain();); } //------------------------------------------------------------------------ diff --git a/src/jit/gentree.cpp b/src/jit/gentree.cpp index 90b6bf8..542a701 100644 --- a/src/jit/gentree.cpp +++ b/src/jit/gentree.cpp @@ -7343,8 +7343,9 @@ GenTree* Compiler::gtCloneExpr( copy->gtCall.setEntryPoint(tree->gtCall.gtEntryPoint); #endif -#ifdef DEBUG +#if defined(DEBUG) || defined(INLINE_DATA) copy->gtCall.gtInlineObservation = tree->gtCall.gtInlineObservation; + copy->gtCall.gtRawILOffset = tree->gtCall.gtRawILOffset; #endif copy->AsCall()->CopyOtherRegFlags(tree->AsCall()); @@ -9334,9 +9335,22 @@ void Compiler::gtDispNode(GenTree* tree, IndentStack* indentStack, __in __in_z _ goto DASH; case GT_CALL: - if (tree->gtFlags & GTF_CALL_INLINE_CANDIDATE) + if (tree->gtCall.IsInlineCandidate()) { - printf("I"); + if (tree->gtCall.IsGuardedDevirtualizationCandidate()) + { + printf("&"); + } + else + { + printf("I"); + } + --msgLength; + break; + } + else if (tree->gtCall.IsGuardedDevirtualizationCandidate()) + { + printf("G"); --msgLength; break; } diff --git a/src/jit/gentree.h b/src/jit/gentree.h index c6c5841..360fa1b 100644 --- a/src/jit/gentree.h +++ b/src/jit/gentree.h @@ -144,8 +144,8 @@ enum gtCallTypes : BYTE /*****************************************************************************/ struct BasicBlock; - struct InlineCandidateInfo; +struct GuardedDevirtualizationCandidateInfo; typedef unsigned short AssertionIndex; @@ -3547,6 +3547,8 @@ struct GenTreeCall final : public GenTree // the comma result is unused. #define GTF_CALL_M_DEVIRTUALIZED 0x00040000 // GT_CALL -- this call was devirtualized #define GTF_CALL_M_UNBOXED 0x00080000 // GT_CALL -- this call was optimized to use the unboxed entry point +#define GTF_CALL_M_GUARDED_DEVIRT 0x00100000 // GT_CALL -- this call is a candidate for guarded devirtualization +#define GTF_CALL_M_GUARDED 0x00200000 // GT_CALL -- this call was transformed by guarded devirtualization // clang-format on @@ -3739,6 +3741,11 @@ struct GenTreeCall final : public GenTree return (gtCallMoreFlags & GTF_CALL_M_FAT_POINTER_CHECK) != 0; } + bool IsGuardedDevirtualizationCandidate() const + { + return (gtCallMoreFlags & GTF_CALL_M_GUARDED_DEVIRT) != 0; + } + bool IsPure(Compiler* compiler) const; bool HasSideEffects(Compiler* compiler, bool ignoreExceptions = false, bool ignoreCctors = false) const; @@ -3758,11 +3765,31 @@ struct GenTreeCall final : public GenTree return (gtCallMoreFlags & GTF_CALL_M_DEVIRTUALIZED) != 0; } + bool IsGuarded() const + { + return (gtCallMoreFlags & GTF_CALL_M_GUARDED) != 0; + } + bool IsUnboxed() const { return (gtCallMoreFlags & GTF_CALL_M_UNBOXED) != 0; } + void ClearGuardedDevirtualizationCandidate() + { + gtCallMoreFlags &= ~GTF_CALL_M_GUARDED_DEVIRT; + } + + void SetGuardedDevirtualizationCandidate() + { + gtCallMoreFlags |= GTF_CALL_M_GUARDED_DEVIRT; + } + + void SetIsGuarded() + { + gtCallMoreFlags |= GTF_CALL_M_GUARDED; + } + unsigned gtCallMoreFlags; // in addition to gtFlags unsigned char gtCallType : 3; // value from the gtCallTypes enumeration @@ -3774,8 +3801,9 @@ struct GenTreeCall final : public GenTree // only used for CALLI unmanaged calls (CT_INDIRECT) GenTree* gtCallCookie; // gtInlineCandidateInfo is only used when inlining methods - InlineCandidateInfo* gtInlineCandidateInfo; - void* gtStubCallStubAddr; // GTF_CALL_VIRT_STUB - these are never inlined + InlineCandidateInfo* gtInlineCandidateInfo; + GuardedDevirtualizationCandidateInfo* gtGuardedDevirtualizationCandidateInfo; + void* gtStubCallStubAddr; // GTF_CALL_VIRT_STUB - these are never inlined CORINFO_GENERIC_HANDLE compileTimeHelperArgumentHandle; // Used to track type handle argument of dynamic helpers void* gtDirectCallAddress; // Used to pass direct call address between lower and codegen }; diff --git a/src/jit/importer.cpp b/src/jit/importer.cpp index eabc3bc..0ddf3b3 100644 --- a/src/jit/importer.cpp +++ b/src/jit/importer.cpp @@ -7740,8 +7740,7 @@ var_types Compiler::impImportCall(OPCODE opcode, } else { - // ok, the stub is available at compile type. - + // The stub address is known at compile time call = gtNewCallNode(CT_USER_FUNC, callInfo->hMethod, callRetTyp, nullptr, ilOffset); call->gtCall.gtStubCallStubAddr = callInfo->stubLookup.constLookup.addr; call->gtFlags |= GTF_CALL_VIRT_STUB; @@ -8388,8 +8387,9 @@ var_types Compiler::impImportCall(OPCODE opcode, assert(obj->gtType == TYP_REF); // See if we can devirtualize. + const bool isLateDevirtualization = false; impDevirtualizeCall(call->AsCall(), &callInfo->hMethod, &callInfo->methodFlags, &callInfo->contextHandle, - &exactContextHnd); + &exactContextHnd, isLateDevirtualization); } if (impIsThis(obj)) @@ -8717,26 +8717,43 @@ DONE_CALL: { // Sometimes "call" is not a GT_CALL (if we imported an intrinsic that didn't turn into a call) - bool fatPointerCandidate = call->AsCall()->IsFatPointerCandidate(); + GenTreeCall* origCall = call->AsCall(); + + const bool isFatPointerCandidate = origCall->IsFatPointerCandidate(); + const bool isInlineCandidate = origCall->IsInlineCandidate(); + const bool isGuardedDevirtualizationCandidate = origCall->IsGuardedDevirtualizationCandidate(); + if (varTypeIsStruct(callRetTyp)) { + // Need to treat all "split tree" cases here, not just inline candidates call = impFixupCallStructReturn(call->AsCall(), sig->retTypeClass); } - if ((call->gtFlags & GTF_CALL_INLINE_CANDIDATE) != 0) + // TODO: consider handling fatcalli cases this way too...? + if (isInlineCandidate || isGuardedDevirtualizationCandidate) { + // We should not have made any adjustments in impFixupCallStructReturn + // as we defer those until we know the fate of the call. + assert(call == origCall); + assert(opts.OptEnabled(CLFLG_INLINING)); - assert(!fatPointerCandidate); // We should not try to inline calli. + assert(!isFatPointerCandidate); // We should not try to inline calli. // Make the call its own tree (spill the stack if needed). impAppendTree(call, (unsigned)CHECK_SPILL_ALL, impCurStmtOffs); // TODO: Still using the widened type. - call = gtNewInlineCandidateReturnExpr(call, genActualType(callRetTyp)); + GenTree* retExpr = gtNewInlineCandidateReturnExpr(call, genActualType(callRetTyp)); + + // Link the retExpr to the call so if necessary we can manipulate it later. + origCall->gtInlineCandidateInfo->retExpr = retExpr; + + // Propagate retExpr as the placeholder for the call. + call = retExpr; } else { - if (fatPointerCandidate) + if (isFatPointerCandidate) { // fatPointer candidates should be in statements of the form call() or var = call(). // Such form allows to find statements with fat calls without walking through whole trees @@ -18378,7 +18395,7 @@ void Compiler::impCanInlineIL(CORINFO_METHOD_HANDLE fncHandle, /***************************************************************************** */ -void Compiler::impCheckCanInline(GenTree* call, +void Compiler::impCheckCanInline(GenTreeCall* call, CORINFO_METHOD_HANDLE fncHandle, unsigned methAttr, CORINFO_CONTEXT_HANDLE exactContextHnd, @@ -18391,7 +18408,7 @@ void Compiler::impCheckCanInline(GenTree* call, struct Param { Compiler* pThis; - GenTree* call; + GenTreeCall* call; CORINFO_METHOD_HANDLE fncHandle; unsigned methAttr; CORINFO_CONTEXT_HANDLE exactContextHnd; @@ -18523,22 +18540,42 @@ void Compiler::impCheckCanInline(GenTree* call, (varTypeIsStruct(fncRetType) && (fncRealRetType == TYP_STRUCT))); #endif + // Allocate an InlineCandidateInfo structure, // - // Allocate an InlineCandidateInfo structure + // Or, reuse the existing GuardedDevirtualizationCandidateInfo, + // which was pre-allocated to have extra room. // InlineCandidateInfo* pInfo; - pInfo = new (pParam->pThis, CMK_Inlining) InlineCandidateInfo; - - pInfo->dwRestrictions = dwRestrictions; - pInfo->methInfo = methInfo; - pInfo->methAttr = pParam->methAttr; - pInfo->clsHandle = clsHandle; - pInfo->clsAttr = clsAttr; - pInfo->fncRetType = fncRetType; - pInfo->exactContextHnd = pParam->exactContextHnd; - pInfo->ilCallerHandle = pParam->pThis->info.compMethodHnd; - pInfo->initClassResult = initClassResult; - pInfo->preexistingSpillTemp = BAD_VAR_NUM; + + if (pParam->call->IsGuardedDevirtualizationCandidate()) + { + pInfo = pParam->call->gtInlineCandidateInfo; + } + else + { + pInfo = new (pParam->pThis, CMK_Inlining) InlineCandidateInfo; + + // Null out bits we don't use when we're just inlining + pInfo->guardedClassHandle = nullptr; + pInfo->guardedMethodHandle = nullptr; + pInfo->stubAddr = nullptr; + } + + pInfo->methInfo = methInfo; + pInfo->ilCallerHandle = pParam->pThis->info.compMethodHnd; + pInfo->clsHandle = clsHandle; + pInfo->exactContextHnd = pParam->exactContextHnd; + pInfo->retExpr = nullptr; + pInfo->dwRestrictions = dwRestrictions; + pInfo->preexistingSpillTemp = BAD_VAR_NUM; + pInfo->clsAttr = clsAttr; + pInfo->methAttr = pParam->methAttr; + pInfo->initClassResult = initClassResult; + pInfo->fncRetType = fncRetType; + pInfo->exactContextNeedsRuntimeLookup = false; + + // Note exactContextNeedsRuntimeLookup is reset later on, + // over in impMarkInlineCandidate. *(pParam->ppInlineCandidateInfo) = pInfo; @@ -19488,6 +19525,60 @@ BOOL Compiler::impInlineIsGuaranteedThisDerefBeforeAnySideEffects(GenTree* ad // callInfo -- call info from VM // // Notes: +// Mostly a wrapper for impMarkInlineCandidateHelper that also undoes +// guarded devirtualization for virtual calls where the method we'd +// devirtualize to cannot be inlined. + +void Compiler::impMarkInlineCandidate(GenTree* callNode, + CORINFO_CONTEXT_HANDLE exactContextHnd, + bool exactContextNeedsRuntimeLookup, + CORINFO_CALL_INFO* callInfo) +{ + GenTreeCall* call = callNode->AsCall(); + + // Do the actual evaluation + impMarkInlineCandidateHelper(call, exactContextHnd, exactContextNeedsRuntimeLookup, callInfo); + + // If this call is an inline candidate or is not a guarded devirtualization + // candidate, we're done. + if (call->IsInlineCandidate() || !call->IsGuardedDevirtualizationCandidate()) + { + return; + } + + // If we can't inline the call we'd guardedly devirtualize to, + // we undo the guarded devirtualization, as the benefit from + // just guarded devirtualization alone is likely not worth the + // extra jit time and code size. + // + // TODO: it is possibly interesting to allow this, but requires + // fixes elsewhere too... + JITDUMP("Revoking guarded devirtualization candidacy for call [%06u]: target method can't be inlined\n", + dspTreeID(call)); + + call->ClearGuardedDevirtualizationCandidate(); + + // If we have a stub address, restore it back into the union that it shares + // with the candidate info. + if (call->IsVirtualStub()) + { + JITDUMP("Restoring stub addr %p from guarded devirt candidate info\n", + call->gtGuardedDevirtualizationCandidateInfo->stubAddr); + call->gtStubCallStubAddr = call->gtGuardedDevirtualizationCandidateInfo->stubAddr; + } +} + +//------------------------------------------------------------------------ +// impMarkInlineCandidateHelper: determine if this call can be subsequently +// inlined +// +// Arguments: +// callNode -- call under scrutiny +// exactContextHnd -- context handle for inlining +// exactContextNeedsRuntimeLookup -- true if context required runtime lookup +// callInfo -- call info from VM +// +// Notes: // If callNode is an inline candidate, this method sets the flag // GTF_CALL_INLINE_CANDIDATE, and ensures that helper methods have // filled in the associated InlineCandidateInfo. @@ -19497,10 +19588,10 @@ BOOL Compiler::impInlineIsGuaranteedThisDerefBeforeAnySideEffects(GenTree* ad // method may be marked as "noinline" to short-circuit any // future assessments of calls to this method. -void Compiler::impMarkInlineCandidate(GenTree* callNode, - CORINFO_CONTEXT_HANDLE exactContextHnd, - bool exactContextNeedsRuntimeLookup, - CORINFO_CALL_INFO* callInfo) +void Compiler::impMarkInlineCandidateHelper(GenTreeCall* call, + CORINFO_CONTEXT_HANDLE exactContextHnd, + bool exactContextNeedsRuntimeLookup, + CORINFO_CALL_INFO* callInfo) { // Let the strategy know there's another call impInlineRoot()->m_inlineStrategy->NoteCall(); @@ -19525,7 +19616,6 @@ void Compiler::impMarkInlineCandidate(GenTree* callNode, return; } - GenTreeCall* call = callNode->AsCall(); InlineResult inlineResult(this, call, nullptr, "impMarkInlineCandidate"); // Don't inline if not optimizing root method @@ -19562,14 +19652,20 @@ void Compiler::impMarkInlineCandidate(GenTree* callNode, if (call->IsVirtual()) { - inlineResult.NoteFatal(InlineObservation::CALLSITE_IS_NOT_DIRECT); - return; + // Allow guarded devirt calls to be treated as inline candidates, + // but reject all other virtual calls. + if (!call->IsGuardedDevirtualizationCandidate()) + { + inlineResult.NoteFatal(InlineObservation::CALLSITE_IS_NOT_DIRECT); + return; + } } /* Ignore helper calls */ if (call->gtCallType == CT_HELPER) { + assert(!call->IsGuardedDevirtualizationCandidate()); inlineResult.NoteFatal(InlineObservation::CALLSITE_IS_CALL_TO_HELPER); return; } @@ -19585,17 +19681,27 @@ void Compiler::impMarkInlineCandidate(GenTree* callNode, * restricts the inliner to non-expanding inlines. I removed the check to allow for non-expanding * inlining in throw blocks. I should consider the same thing for catch and filter regions. */ - CORINFO_METHOD_HANDLE fncHandle = call->gtCallMethHnd; + CORINFO_METHOD_HANDLE fncHandle; unsigned methAttr; - // Reuse method flags from the original callInfo if possible - if (fncHandle == callInfo->hMethod) + if (call->IsGuardedDevirtualizationCandidate()) { - methAttr = callInfo->methodFlags; + fncHandle = call->gtGuardedDevirtualizationCandidateInfo->guardedMethodHandle; + methAttr = info.compCompHnd->getMethodAttribs(fncHandle); } else { - methAttr = info.compCompHnd->getMethodAttribs(fncHandle); + fncHandle = call->gtCallMethHnd; + + // Reuse method flags from the original callInfo if possible + if (fncHandle == callInfo->hMethod) + { + methAttr = callInfo->methodFlags; + } + else + { + methAttr = info.compCompHnd->getMethodAttribs(fncHandle); + } } #ifdef DEBUG @@ -19695,14 +19801,13 @@ void Compiler::impMarkInlineCandidate(GenTree* callNode, return; } - // The old value should be NULL - assert(call->gtInlineCandidateInfo == nullptr); + // The old value should be null OR this call should be a guarded devirtualization candidate. + assert((call->gtInlineCandidateInfo == nullptr) || call->IsGuardedDevirtualizationCandidate()); - // The new value should not be NULL. + // The new value should not be null. assert(inlineCandidateInfo != nullptr); inlineCandidateInfo->exactContextNeedsRuntimeLookup = exactContextNeedsRuntimeLookup; - - call->gtInlineCandidateInfo = inlineCandidateInfo; + call->gtInlineCandidateInfo = inlineCandidateInfo; // Mark the call node as inline candidate. call->gtFlags |= GTF_CALL_INLINE_CANDIDATE; @@ -19837,6 +19942,7 @@ bool Compiler::IsMathIntrinsic(GenTree* tree) // methodFlags -- [IN/OUT] flags for the method to call. Updated iff call devirtualized. // contextHandle -- [IN/OUT] context handle for the call. Updated iff call devirtualized. // exactContextHnd -- [OUT] updated context handle iff call devirtualized +// isLateDevirtualization -- if devirtualization is happening after importation // // Notes: // Virtual calls in IL will always "invoke" the base class method. @@ -19861,11 +19967,16 @@ bool Compiler::IsMathIntrinsic(GenTree* tree) // to instead make a local copy. If that is doable, the call is // updated to invoke the unboxed entry on the local copy. // +// When guarded devirtualization is enabled, this method will mark +// calls as guarded devirtualization candidates, if the type of `this` +// is not exactly known, and there is a plausible guess for the type. + void Compiler::impDevirtualizeCall(GenTreeCall* call, CORINFO_METHOD_HANDLE* method, unsigned* methodFlags, CORINFO_CONTEXT_HANDLE* contextHandle, - CORINFO_CONTEXT_HANDLE* exactContextHandle) + CORINFO_CONTEXT_HANDLE* exactContextHandle, + bool isLateDevirtualization) { assert(call != nullptr); assert(method != nullptr); @@ -20031,16 +20142,67 @@ void Compiler::impDevirtualizeCall(GenTreeCall* call, } #endif // defined(DEBUG) - // Bail if obj class is an interface. + // See if the jit's best type for `obj` is an interface. // See for instance System.ValueTuple`8::GetHashCode, where lcl 0 is System.IValueTupleInternal // IL_021d: ldloc.0 // IL_021e: callvirt instance int32 System.Object::GetHashCode() + // + // If so, we can't devirtualize, but we may be able to do guarded devirtualization. if ((objClassAttribs & CORINFO_FLG_INTERFACE) != 0) { - JITDUMP("--- obj class is interface, sorry\n"); + // If we're called during early devirtualiztion, attempt guarded devirtualization + // if there's currently just one implementing class. + if (exactContextHandle == nullptr) + { + JITDUMP("--- obj class is interface...unable to dervirtualize, sorry\n"); + return; + } + + CORINFO_CLASS_HANDLE uniqueImplementingClass = NO_CLASS_HANDLE; + + // info.compCompHnd->getUniqueImplementingClass(objClass); + + if (uniqueImplementingClass == NO_CLASS_HANDLE) + { + JITDUMP("No unique implementor of interface %p (%s), sorry\n", objClass, objClassName); + return; + } + + JITDUMP("Only known implementor of interface %p (%s) is %p (%s)!\n", objClass, objClassName, + uniqueImplementingClass, eeGetClassName(uniqueImplementingClass)); + + bool guessUniqueInterface = true; + + INDEBUG(guessUniqueInterface = (JitConfig.JitGuardedDevirtualizationGuessUniqueInterface() > 0);); + + if (!guessUniqueInterface) + { + JITDUMP("Guarded devirt for unique interface implementor is not enabled, sorry\n"); + return; + } + + // Ask the runtime to determine the method that would be called based on the guessed-for type. + CORINFO_CONTEXT_HANDLE ownerType = *contextHandle; + CORINFO_METHOD_HANDLE uniqueImplementingMethod = + info.compCompHnd->resolveVirtualMethod(baseMethod, uniqueImplementingClass, ownerType); + + if (uniqueImplementingMethod == nullptr) + { + JITDUMP("Can't figure out which method would be invoked, sorry\n"); + return; + } + + JITDUMP("Interface call would invoke method %s\n", eeGetMethodName(uniqueImplementingMethod, nullptr)); + DWORD uniqueMethodAttribs = info.compCompHnd->getMethodAttribs(uniqueImplementingMethod); + DWORD uniqueClassAttribs = info.compCompHnd->getClassAttribs(uniqueImplementingClass); + + addGuardedDevirtualizationCandidate(call, uniqueImplementingMethod, uniqueImplementingClass, + uniqueMethodAttribs, uniqueClassAttribs); return; } + // If we get this far, the jit has a lower bound class type for the `this` object being used for dispatch. + // It may or may not know enough to devirtualize... if (isInterface) { assert(call->IsVirtualStub()); @@ -20054,6 +20216,9 @@ void Compiler::impDevirtualizeCall(GenTreeCall* call, // If we failed to get a handle, we can't devirtualize. This can // happen when prejitting, if the devirtualization crosses // servicing bubble boundaries. + // + // Note if we have some way of guessing a better and more likely type we can do something similar to the code + // above for the case where the best jit type is an interface type. if (derivedMethod == nullptr) { JITDUMP("--- no derived method, sorry\n"); @@ -20068,7 +20233,7 @@ void Compiler::impDevirtualizeCall(GenTreeCall* call, const char* derivedClassName = "?derivedClass"; const char* derivedMethodName = "?derivedMethod"; - const char* note = "speculative"; + const char* note = "inexact or not final"; if (isExact) { note = "exact"; @@ -20093,29 +20258,41 @@ void Compiler::impDevirtualizeCall(GenTreeCall* call, } #endif // defined(DEBUG) - if (!isExact && !objClassIsFinal && !derivedMethodIsFinal) - { - // Type is not exact, and neither class or method is final. - // - // We could speculatively devirtualize, but there's no - // reason to believe the derived method is the one that - // is likely to be invoked. - // - // If there's currently no further overriding (that is, at - // the time of jitting, objClass has no subclasses that - // override this method), then perhaps we'd be willing to - // make a bet...? - JITDUMP(" Class not final or exact, method not final, no devirtualization\n"); - return; - } + const bool canDevirtualize = isExact || objClassIsFinal || (!isInterface && derivedMethodIsFinal); - // For interface calls we must have an exact type or final class. - if (isInterface && !isExact && !objClassIsFinal) + if (!canDevirtualize) { - JITDUMP(" Class not final or exact for interface, no devirtualization\n"); + JITDUMP(" Class not final or exact%s\n", isInterface ? "" : ", and method not final"); + + // Have we enabled guarded devirtualization by guessing the jit's best class? + bool guessJitBestClass = true; + INDEBUG(guessJitBestClass = (JitConfig.JitGuardedDevirtualizationGuessBestClass() > 0);); + + if (!guessJitBestClass) + { + JITDUMP("No guarded devirt: guessing for jit best class disabled\n"); + return; + } + + // Don't try guarded devirtualiztion when we're doing late devirtualization. + if (isLateDevirtualization) + { + JITDUMP("No guarded devirt during late devirtualization\n"); + return; + } + + // We will use the class that introduced the method as our guess + // for the runtime class of othe object. + CORINFO_CLASS_HANDLE derivedClass = info.compCompHnd->getMethodClass(derivedMethod); + + // Try guarded devirtualization. + addGuardedDevirtualizationCandidate(call, derivedMethod, derivedClass, derivedMethodAttribs, objClassAttribs); return; } + // All checks done. Time to transform the call. + assert(canDevirtualize); + JITDUMP(" %s; can devirtualize\n", note); // Make the updates. @@ -20429,10 +20606,25 @@ private: { GenTree* retExpr = *pRetExpr; assert(retExpr->OperGet() == GT_RET_EXPR); - JITDUMP("Store return expression %u as a local var.\n", retExpr->gtTreeID); - unsigned tmp = comp->lvaGrabTemp(true DEBUGARG("spilling ret_expr")); + const unsigned tmp = comp->lvaGrabTemp(true DEBUGARG("spilling ret_expr")); + JITDUMP("Storing return expression [%06u] to a local var V%02u.\n", comp->dspTreeID(retExpr), tmp); comp->impAssignTempGen(tmp, retExpr, (unsigned)Compiler::CHECK_SPILL_NONE); *pRetExpr = comp->gtNewLclvNode(tmp, retExpr->TypeGet()); + + if (retExpr->TypeGet() == TYP_REF) + { + assert(comp->lvaTable[tmp].lvSingleDef == 0); + comp->lvaTable[tmp].lvSingleDef = 1; + JITDUMP("Marked V%02u as a single def temp\n", tmp); + + bool isExact = false; + bool isNonNull = false; + CORINFO_CLASS_HANDLE retClsHnd = comp->gtGetClassHandle(retExpr, &isExact, &isNonNull); + if (retClsHnd != nullptr) + { + comp->lvaSetClass(tmp, retClsHnd, isExact); + } + } } private: @@ -20448,8 +20640,108 @@ private: // void Compiler::addFatPointerCandidate(GenTreeCall* call) { + JITDUMP("Marking call [%06u] as fat pointer candidate\n", dspTreeID(call)); setMethodHasFatPointer(); call->SetFatPointerCandidate(); SpillRetExprHelper helper(this); helper.StoreRetExprResultsInArgs(call); } + +//------------------------------------------------------------------------ +// addGuardedDevirtualizationCandidate: potentially mark the call as a guarded +// devirtualization candidate +// +// Notes: +// +// We currently do not mark calls as candidates when prejitting. This was done +// to simplify bringing up the associated transformation. It is worth revisiting +// if we think we can come up with a good guess for the class when prejitting. +// +// Call sites in rare or unoptimized code, and calls that require cookies are +// also not marked as candidates. +// +// As part of marking the candidate, the code spills GT_RET_EXPRs anywhere in any +// child tree, because and we need to clone all these trees when we clone the call +// as part of guarded devirtualization, and these IR nodes can't be cloned. +// +// Arguments: +// call - potentual guarded devirtialization candidate +// methodHandle - method that will be invoked if the class test succeeds +// classHandle - class that will be tested for at runtime +// methodAttr - attributes of the method +// classAttr - attributes of the class +// +void Compiler::addGuardedDevirtualizationCandidate(GenTreeCall* call, + CORINFO_METHOD_HANDLE methodHandle, + CORINFO_CLASS_HANDLE classHandle, + unsigned methodAttr, + unsigned classAttr) +{ + // This transformation only makes sense for virtual calls + assert(call->IsVirtual()); + + // Only mark calls if the feature is enabled. + const bool isEnabled = JitConfig.JitEnableGuardedDevirtualization() > 0; + + if (!isEnabled) + { + JITDUMP("NOT Marking call [%06u] as guarded devirtualization candidate -- disabled by jit config\n", + dspTreeID(call)); + return; + } + + // Bail when prejitting. We only do this for jitted code. + // We shoud revisit this if we think we can come up with good class guesses when prejitting. + if (opts.jitFlags->IsSet(JitFlags::JIT_FLAG_PREJIT)) + { + JITDUMP("NOT Marking call [%06u] as guarded devirtualization candidate -- prejitting", dspTreeID(call)); + return; + } + + // Bail if not optimizing or the call site is very likely cold + if (compCurBB->isRunRarely() || opts.compDbgCode || opts.MinOpts()) + { + JITDUMP("NOT Marking call [%06u] as guarded devirtualization candidate -- rare / dbg / minopts\n", + dspTreeID(call)); + return; + } + + // CT_INDRECT calls may use the cookie, bail if so... + // + // If transforming these provides a benefit, we could save this off in the same way + // we save the stub address below. + if ((call->gtCallType == CT_INDIRECT) && (call->gtCall.gtCallCookie != nullptr)) + { + return; + } + + // We're all set, proceed with candidate creation. + JITDUMP("Marking call [%06u] as guarded devirtualization candidate; will guess for class %s\n", dspTreeID(call), + eeGetClassName(classHandle)); + setMethodHasGuardedDevirtualization(); + call->SetGuardedDevirtualizationCandidate(); + + // Spill off any GT_RET_EXPR subtrees so we can clone the call. + SpillRetExprHelper helper(this); + helper.StoreRetExprResultsInArgs(call); + + // Gather some information for later. Note we actually allocate InlineCandidateInfo + // here, as the devirtualized half of this call will likely become an inline candidate. + GuardedDevirtualizationCandidateInfo* pInfo = new (this, CMK_Inlining) InlineCandidateInfo; + + pInfo->guardedMethodHandle = methodHandle; + pInfo->guardedClassHandle = classHandle; + + // Save off the stub address since it shares a union with the candidate info. + if (call->IsVirtualStub()) + { + JITDUMP("Saving stub addr %p in candidate info\n", call->gtStubCallStubAddr); + pInfo->stubAddr = call->gtStubCallStubAddr; + } + else + { + pInfo->stubAddr = nullptr; + } + + call->gtGuardedDevirtualizationCandidateInfo = pInfo; +} diff --git a/src/jit/inline.cpp b/src/jit/inline.cpp index a106476..f523d2a 100644 --- a/src/jit/inline.cpp +++ b/src/jit/inline.cpp @@ -337,6 +337,7 @@ InlineContext::InlineContext(InlineStrategy* strategy) , m_CodeSizeEstimate(0) , m_Success(true) , m_Devirtualized(false) + , m_Guarded(false) , m_Unboxed(false) #if defined(DEBUG) || defined(INLINE_DATA) , m_Policy(nullptr) @@ -397,18 +398,19 @@ void InlineContext::Dump(unsigned indent) const char* inlineReason = InlGetObservationString(m_Observation); const char* inlineResult = m_Success ? "" : "FAILED: "; const char* devirtualized = m_Devirtualized ? " devirt" : ""; + const char* guarded = m_Guarded ? " guarded" : ""; const char* unboxed = m_Unboxed ? " unboxed" : ""; if (m_Offset == BAD_IL_OFFSET) { - printf("%*s[%u IL=???? TR=%06u %08X] [%s%s%s%s] %s\n", indent, "", m_Ordinal, m_TreeID, calleeToken, - inlineResult, inlineReason, devirtualized, unboxed, calleeName); + printf("%*s[%u IL=???? TR=%06u %08X] [%s%s%s%s%s] %s\n", indent, "", m_Ordinal, m_TreeID, calleeToken, + inlineResult, inlineReason, guarded, devirtualized, unboxed, calleeName); } else { IL_OFFSET offset = jitGetILoffs(m_Offset); - printf("%*s[%u IL=%04d TR=%06u %08X] [%s%s%s%s] %s\n", indent, "", m_Ordinal, offset, m_TreeID, calleeToken, - inlineResult, inlineReason, devirtualized, unboxed, calleeName); + printf("%*s[%u IL=%04d TR=%06u %08X] [%s%s%s%s%s] %s\n", indent, "", m_Ordinal, offset, m_TreeID, + calleeToken, inlineResult, inlineReason, guarded, devirtualized, unboxed, calleeName); } } @@ -1205,6 +1207,7 @@ InlineContext* InlineStrategy::NewSuccess(InlineInfo* inlineInfo) calleeContext->m_Observation = inlineInfo->inlineResult->GetObservation(); calleeContext->m_Success = true; calleeContext->m_Devirtualized = originalCall->IsDevirtualized(); + calleeContext->m_Guarded = originalCall->IsGuarded(); calleeContext->m_Unboxed = originalCall->IsUnboxed(); #if defined(DEBUG) || defined(INLINE_DATA) @@ -1266,6 +1269,7 @@ InlineContext* InlineStrategy::NewFailure(GenTreeStmt* stmt, InlineResult* inlin failedContext->m_Callee = inlineResult->GetCallee(); failedContext->m_Success = false; failedContext->m_Devirtualized = originalCall->IsDevirtualized(); + failedContext->m_Guarded = originalCall->IsGuarded(); failedContext->m_Unboxed = originalCall->IsUnboxed(); assert(InlIsValidObservation(failedContext->m_Observation)); diff --git a/src/jit/inline.h b/src/jit/inline.h index 551341e..e94765a 100644 --- a/src/jit/inline.h +++ b/src/jit/inline.h @@ -494,22 +494,36 @@ private: bool m_Reported; }; +// GuardedDevirtualizationCandidateInfo provides information about +// a potential target of a virtual call. + +struct GuardedDevirtualizationCandidateInfo +{ + CORINFO_CLASS_HANDLE guardedClassHandle; + CORINFO_METHOD_HANDLE guardedMethodHandle; + void* stubAddr; +}; + // InlineCandidateInfo provides basic information about a particular // inline candidate. +// +// It is a superset of GuardedDevirtualizationCandidateInfo: calls +// can start out as GDv candidates and turn into inline candidates -struct InlineCandidateInfo +struct InlineCandidateInfo : public GuardedDevirtualizationCandidateInfo { - DWORD dwRestrictions; CORINFO_METHOD_INFO methInfo; - unsigned methAttr; + CORINFO_METHOD_HANDLE ilCallerHandle; // the logical IL caller of this inlinee. CORINFO_CLASS_HANDLE clsHandle; + CORINFO_CONTEXT_HANDLE exactContextHnd; + GenTree* retExpr; + DWORD dwRestrictions; + unsigned preexistingSpillTemp; unsigned clsAttr; + unsigned methAttr; + CorInfoInitClassResult initClassResult; var_types fncRetType; - CORINFO_METHOD_HANDLE ilCallerHandle; // the logical IL caller of this inlinee. - CORINFO_CONTEXT_HANDLE exactContextHnd; bool exactContextNeedsRuntimeLookup; - CorInfoInitClassResult initClassResult; - unsigned preexistingSpillTemp; }; // InlArgInfo describes inline candidate argument properties. @@ -683,6 +697,11 @@ public: return m_Devirtualized; } + bool IsGuarded() const + { + return m_Guarded; + } + bool IsUnboxed() const { return m_Unboxed; @@ -703,6 +722,7 @@ private: int m_CodeSizeEstimate; // in bytes * 10 bool m_Success : 1; // true if this was a successful inline bool m_Devirtualized : 1; // true if this was a devirtualized call + bool m_Guarded : 1; // true if this was a guarded call bool m_Unboxed : 1; // true if this call now invokes the unboxed entry #if defined(DEBUG) || defined(INLINE_DATA) diff --git a/src/jit/jitconfigvalues.h b/src/jit/jitconfigvalues.h index 383264e..649db4e 100644 --- a/src/jit/jitconfigvalues.h +++ b/src/jit/jitconfigvalues.h @@ -363,6 +363,15 @@ CONFIG_INTEGER(JitEnableRemoveEmptyTry, W("JitEnableRemoveEmptyTry"), 0) #endif // defined(FEATURE_CORECLR) #endif // DEBUG +// Overall master enable for Guarded Devirtualization. Currently not enabled by default. +CONFIG_INTEGER(JitEnableGuardedDevirtualization, W("JitEnableGuardedDevirtualization"), 0) + +#if defined(DEBUG) +// Various policies for GuardedDevirtualization +CONFIG_INTEGER(JitGuardedDevirtualizationGuessUniqueInterface, W("JitGuardedDevirtualizationGuessUniqueInterface"), 1) +CONFIG_INTEGER(JitGuardedDevirtualizationGuessBestClass, W("JitGuardedDevirtualizationGuessBestClass"), 1) +#endif // DEBUG + #undef CONFIG_INTEGER #undef CONFIG_STRING #undef CONFIG_METHODSET diff --git a/src/jit/lclvars.cpp b/src/jit/lclvars.cpp index 8ce2b59..339f7a5 100644 --- a/src/jit/lclvars.cpp +++ b/src/jit/lclvars.cpp @@ -2746,6 +2746,11 @@ void Compiler::lvaUpdateClass(unsigned varNum, CORINFO_CLASS_HANDLE clsHnd, bool { varDsc->lvClassHnd = clsHnd; varDsc->lvClassIsExact = isExact; + +#if DEBUG + // Note we've modified the type... + varDsc->lvClassInfoUpdated = true; +#endif // DEBUG } return; diff --git a/src/jit/morph.cpp b/src/jit/morph.cpp index 20e378e..566714f 100644 --- a/src/jit/morph.cpp +++ b/src/jit/morph.cpp @@ -6614,42 +6614,59 @@ GenTree* Compiler::fgMorphField(GenTree* tree, MorphAddrContext* mac) void Compiler::fgMorphCallInline(GenTreeCall* call, InlineResult* inlineResult) { - // The call must be a candiate for inlining. - assert((call->gtFlags & GTF_CALL_INLINE_CANDIDATE) != 0); + bool inliningFailed = false; - // Attempt the inline - fgMorphCallInlineHelper(call, inlineResult); + // Is this call an inline candidate? + if (call->IsInlineCandidate()) + { + // Attempt the inline + fgMorphCallInlineHelper(call, inlineResult); - // We should have made up our minds one way or another.... - assert(inlineResult->IsDecided()); + // We should have made up our minds one way or another.... + assert(inlineResult->IsDecided()); - // If we failed to inline, we have a bit of work to do to cleanup - if (inlineResult->IsFailure()) - { + // If we failed to inline, we have a bit of work to do to cleanup + if (inlineResult->IsFailure()) + { #ifdef DEBUG - // Before we do any cleanup, create a failing InlineContext to - // capture details of the inlining attempt. - m_inlineStrategy->NewFailure(fgMorphStmt, inlineResult); + // Before we do any cleanup, create a failing InlineContext to + // capture details of the inlining attempt. + m_inlineStrategy->NewFailure(fgMorphStmt, inlineResult); #endif - // It was an inline candidate, but we haven't expanded it. - if (call->gtCall.gtReturnType != TYP_VOID) + inliningFailed = true; + + // Clear the Inline Candidate flag so we can ensure later we tried + // inlining all candidates. + // + call->gtFlags &= ~GTF_CALL_INLINE_CANDIDATE; + } + } + else + { + // This wasn't an inline candidate. So it must be a GDV candidate. + assert(call->IsGuardedDevirtualizationCandidate()); + + // We already know we can't inline this call, so don't even bother to try. + inliningFailed = true; + } + + // If we failed to inline (or didn't even try), do some cleanup. + if (inliningFailed) + { + if (call->gtReturnType != TYP_VOID) { + JITDUMP("Inlining [%06u] failed, so bashing [%06u] to NOP\n", dspTreeID(call), dspTreeID(fgMorphStmt)); + // Detach the GT_CALL tree from the original statement by // hanging a "nothing" node to it. Later the "nothing" node will be removed // and the original GT_CALL tree will be picked up by the GT_RET_EXPR node. - noway_assert(fgMorphStmt->gtStmtExpr == call); fgMorphStmt->gtStmtExpr = gtNewNothingNode(); } - - // Clear the Inline Candidate flag so we can ensure later we tried - // inlining all candidates. - // - call->gtFlags &= ~GTF_CALL_INLINE_CANDIDATE; } } @@ -6682,6 +6699,13 @@ void Compiler::fgMorphCallInlineHelper(GenTreeCall* call, InlineResult* result) return; } + // Re-check this because guarded devirtualization may allow these through. + if (gtIsRecursiveCall(call) && call->IsImplicitTailCall()) + { + result->NoteFatal(InlineObservation::CALLSITE_IMPLICIT_REC_TAIL_CALL); + return; + } + // impMarkInlineCandidate() is expected not to mark tail prefixed calls // and recursive tail calls as inline candidates. noway_assert(!call->IsTailPrefixedCall()); -- 2.7.4