- 04 Jan, 2017 1 commit
-
-
bmeurer authored
BUG=v8:5267 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2612763002 Cr-Commit-Position: refs/heads/master@{#42060}
-
- 03 Nov, 2016 1 commit
-
-
bmeurer authored
For lowering CheckHeapObject, always report TaggedPointer representation and let the RepresentationChanger come up with a reasonable conversion from whatever input representation to TaggedPointer. This way we no longer insert the useless ChangeSomethingToTagged and then check the result for HeapObject, i.e. mostly reduces the amount of useless code being generated. Note there are now two operators ChangeFloat64ToTaggedPointer and the old ChangeFloat64ToTagged, because their semantics different wrt. the strength reduction in the SimplifiedOperatorReducer. Also set the output MachineRepresentation::kTaggedPointer properly in SimplifiedLowering whenever we know that we produce a HeapObject. R=jarin@chromium.org BUG=v8:5267 Review-Url: https://codereview.chromium.org/2476593002 Cr-Commit-Position: refs/heads/master@{#40725}
-
- 17 Oct, 2016 1 commit
-
-
bmeurer authored
Apply the same strength reduction to the ChangeTaggedSignedToInt32 operator that we already have for ChangeTaggedToInt32. R=epertoso@chromium.org Review-Url: https://codereview.chromium.org/2428493002 Cr-Commit-Position: refs/heads/master@{#40352}
-
- 07 Oct, 2016 1 commit
-
-
bmeurer authored
R=mvstanton@chromium.org BUG=v8:5267 Review-Url: https://codereview.chromium.org/2397253002 Cr-Commit-Position: refs/heads/master@{#40073}
-
- 29 Sep, 2016 1 commit
-
-
bmeurer authored
Add simplified operator reduction rule that reduces CheckedTaggedSignedToInt32(ConvertTaggedHoleToUndefined(x)) to CheckedTaggedSignedToInt32(x) which avoids the unnecessary hole to undefined conversion, as the check operation will fail equally on either hole or undefined. BUG=v8:5267 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2384453002 Cr-Commit-Position: refs/heads/master@{#39863}
-
- 23 Sep, 2016 1 commit
-
-
Benedikt Meurer authored
Rename the high-level operators CheckTaggedSigned to CheckSmi and CheckTaggedPointer to CheckHeapObject, to better match the naming convention (i.e. ObjectIsSmi and CheckSmi, ObjectIsString and CheckString, etc.). For lowering CheckSmi, always report TaggedSigned representation and let the RepresentationChanger come up with a reasonable conversion from whatever input representation to TaggedSigned. This way we no longer insert the useless ChangeSomethingToTagged and then Smi check the result sequences, i.e. mostly reduces the amount of useless code being generated. But we also observe a few performance improvements on some crypto benchmarks. This would enable us to avoid the Smi canonicalization when going from Float64 to Tagged completely and thus match the representation selection of Crankshaft in many areas (which might reduce the amount of polymorphism until we fix our object model). A follow-up CL will do the same for CheckHeapObject. BUG=v8:5267 R=jarin@chromium.org Review URL: https://codereview.chromium.org/2362173003 . Cr-Commit-Position: refs/heads/master@{#39654}
-
- 13 Sep, 2016 1 commit
-
-
bmeurer authored
Add strength reduction rules to optimize CheckTaggedSigned(CheckTaggedSigned(x)) -> CheckTaggedSigned(x) and CheckTaggedPointer(CheckTaggedPointer(x)) -> CheckTaggedPointer(x) where we do some cleanup optimizations after loop peeling and redundancy elimination, which can generate these constructs. BUG=v8:5267 Review-Url: https://codereview.chromium.org/2336093002 Cr-Commit-Position: refs/heads/master@{#39366}
-
- 29 Aug, 2016 1 commit
-
-
bmeurer authored
For asm.js we now have a dedicated AsmTyper, that uses it's own type system (which is tailored towards asm.js), and so we don't need the special asm.js types anymore in the TypeCache. This also moves the TypeCache into the src/compiler directory, because it doesn't make sense to use outside anyways. TBR=ahaas@chromium.org R=jarin@chromium.org BUG=v8:5267 Review-Url: https://codereview.chromium.org/2289573002 Cr-Commit-Position: refs/heads/master@{#38964}
-
- 11 Aug, 2016 1 commit
-
-
bmeurer authored
We can fold ConvertTaggedHoleToUndefined into CheckNumber and CheckTaggedSigned, as they deoptimize no matter if the input is undefined or hole. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2233393002 Cr-Commit-Position: refs/heads/master@{#38576}
-
- 30 Jun, 2016 1 commit
-
-
bmeurer authored
This adds a new CheckIf operator and changes all direct uses of DeoptimizeIf and DeoptimizeUnless on the JavaScript level to use CheckIf (or one of the more concrete check operators) instead. This way we do not depend on particular frame states, but the effect/control linearizer will assign an appropriate frame state instead. R=jarin@chromium.org BUG=v8:5141 Review-Url: https://codereview.chromium.org/2115513002 Cr-Commit-Position: refs/heads/master@{#37423}
-
- 29 Jun, 2016 2 commits
-
-
bmeurer authored
There are no useful typing rules for Change and Checked operators, so we better make sure we don't run them through the Typer at all. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2107783004 Cr-Commit-Position: refs/heads/master@{#37382}
-
bmeurer authored
The only real use case left for TypeGuard was the renaming inside the LoadElimination, but this case only occurs in dead code (guarded by a previous Check), so it's not relevant, and we can drop the TypeGuard operator completely. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2108793003 Cr-Commit-Position: refs/heads/master@{#37361}
-
- 28 Jun, 2016 1 commit
-
-
bmeurer authored
Add NumberAbs operator to implement an inline version of Math.abs, that can be optimized and eliminated. We don't use any speculation here, but for now stick to the information we can infer (this way we avoid the inherent deopt loops that Crankshaft has around Math.abs). CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel R=jarin@chromium.org BUG=v8:5086 Review-Url: https://codereview.chromium.org/2096403002 Cr-Commit-Position: refs/heads/master@{#37306}
-
- 22 Jun, 2016 1 commit
-
-
bmeurer authored
Let the SimplifiedOperatorReducer perform some strength reduction for certain CheckTaggedSigned and CheckTaggedPointer inputs (reusing the existing logic for ObjectIsSmi). R=jarin@chromium.org BUG=v8:5141 Review-Url: https://codereview.chromium.org/2080703006 Cr-Commit-Position: refs/heads/master@{#37167}
-
- 08 Jun, 2016 1 commit
-
-
bmeurer authored
Ideally we would have a dedicated MachineRepresentation for Smis during representation selection and use that to properly optimize ObjectIsSmi (and other ObjectIs<Type> predicates), but that will take some time to get that done. So in the meantime we can just do simple (local) strength reduction on ObjectIsSmi to avoid Smi checks in the simplest cases at least. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2047213002 Cr-Commit-Position: refs/heads/master@{#36809}
-
- 31 May, 2016 1 commit
-
-
jarin authored
This prevents the compiler from optimizing f64-to-tagged(tagged-to-f64(x)) ==> x for non-number x (such as undefined). Review-Url: https://codereview.chromium.org/2027593002 Cr-Commit-Position: refs/heads/master@{#36613}
-
- 18 May, 2016 1 commit
-
-
bmeurer authored
The type guard should never be used after the effect/control linearization pass, so making it a simplified operator better expresses the intended use. Also this way none of the common operators actually has any dependency on the type system. Drive-by-fix: Properly print the type parameter to a TypeGuard operator. BUG=chromium:612142 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1994503002 Cr-Commit-Position: refs/heads/master@{#36304}
-
- 02 May, 2016 3 commits
-
-
bmeurer authored
Now ChangeLowering is only concerned with lowering memory access and allocation operations, and all changes are consistently lowered during the effect/control linearization pass. The next step is to move the left over lowerings to a pass dedicated to eliminate redundant loads and stores, eliminate write barriers, fold and inline allocations. Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to ChangeInt31ToTaggedSigned for consistency. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel Committed: https://crrev.com/ceca5ae308bddda166651c654f96d71d74f617d0 Cr-Commit-Position: refs/heads/master@{#35924} Review-Url: https://codereview.chromium.org/1941673002 Cr-Commit-Position: refs/heads/master@{#35929}
-
machenbach authored
Revert of [turbofan] Remove left-over change bits from ChangeLowering. (patchset #2 id:20001 of https://codereview.chromium.org/1941673002/ ) Reason for revert: [Sheriff] Breaks mac gc stress: https://build.chromium.org/p/client.v8/builders/V8%20Mac%20GC%20Stress/builds/5821 Original issue's description: > [turbofan] Remove left-over change bits from ChangeLowering. > > Now ChangeLowering is only concerned with lowering memory access and > allocation operations, and all changes are consistently lowered during > the effect/control linearization pass. The next step is to move the > left over lowerings to a pass dedicated to eliminate redundant loads and > stores, eliminate write barriers, fold and inline allocations. > > Also remove the atomic regions now that we wire everything into the > effect chain properly. This is an important step towards allocation > inlining. > > Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, > ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to > ChangeInt31ToTaggedSigned for consistency. > > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel > > Committed: https://crrev.com/ceca5ae308bddda166651c654f96d71d74f617d0 > Cr-Commit-Position: refs/heads/master@{#35924} TBR=ishell@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/1942733002 Cr-Commit-Position: refs/heads/master@{#35927}
-
bmeurer authored
Now ChangeLowering is only concerned with lowering memory access and allocation operations, and all changes are consistently lowered during the effect/control linearization pass. The next step is to move the left over lowerings to a pass dedicated to eliminate redundant loads and stores, eliminate write barriers, fold and inline allocations. Also remove the atomic regions now that we wire everything into the effect chain properly. This is an important step towards allocation inlining. Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to ChangeInt31ToTaggedSigned for consistency. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel Review-Url: https://codereview.chromium.org/1941673002 Cr-Commit-Position: refs/heads/master@{#35924}
-
- 24 Apr, 2016 1 commit
-
-
bmeurer authored
This allows us to get rid of the "push TruncateFloat64ToInt32 into Phi" trick that was used in the MachineOperatorReducer to combine the ChangeTaggedToFloat64 and TruncateFloat64ToInt32 operations. Instead of doing that later, we can just introduce the proper operator during the representation selection directly. Also separate the TruncateFloat64ToInt32 machine operator, which had two different meanings depending on a flag (either JavaScript truncation or C++ style round to zero). Now there's a TruncateFloat64ToWord32 which represents the JavaScript truncation (implemented via TruncateDoubleToI macro + code stub) and the RoundFloat64ToInt32, which implements the C++ round towards zero operation (in the same style as the other WebAssembly driven Round* machine operators). R=jarin@chromium.org Review URL: https://codereview.chromium.org/1919513002 Cr-Commit-Position: refs/heads/master@{#35743}
-
- 22 Apr, 2016 2 commits
-
-
bmeurer authored
Get rid of further typing checks from ChangeLowering and put them into the representation selection pass instead (encoding the information in the operator instead). Drive-by-change: Rename ChangeSmiToInt32 to ChangeTaggedSignedToInt32 for consistency about naming Tagged, TaggedSigned and TaggedPointer. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1909343002 Cr-Commit-Position: refs/heads/master@{#35723}
-
bmeurer authored
If we have to convert a float64 value to tagged representation and we already know that the value is either in Signed31/Signed32 or Unsigned32 range, then we can just convert the float64 to word32 and use the fast word32 to tagged conversion. Doing this in ChangeLowering (or the effect linearization pass) would be unsound, as the types on the nodes are no longer usable. This removes all Type uses from effect linearization. There's still some work to be done for ChangeLowering tho. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1908093002 Cr-Commit-Position: refs/heads/master@{#35713}
-
- 14 Apr, 2016 1 commit
-
-
bmeurer authored
Replace ChangeFloat64ToTagged(ChangeTaggedToFloat64(x)) with x in the SimplifiedOperatorReducer. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1883023003 Cr-Commit-Position: refs/heads/master@{#35488}
-
- 30 Mar, 2016 1 commit
-
-
bmeurer authored
Migrate Math.ceil, Math.round and Math.trunc to TurboFan code stubs, similar to what we did with Math.floor, and make these builtins properly optimizable in TurboFan via appropriate simplified operators NumberCeil, NumberRound and NumberTrunc, which are intended to be reusable for ToInteger and ToLength optimizations that will be done in a followup CL. Also allows us to kill the funky %RoundNumber runtime function, which was quite heavy. Improve test coverage for Math.ceil and Math.trunc a lot, especially making sure that we also properly trigger the TurboFan builtin reducer case. R=jarin@chromium.org BUG=v8:4059 LOG=n Review URL: https://codereview.chromium.org/1841993002 Cr-Commit-Position: refs/heads/master@{#35135}
-
- 29 Mar, 2016 1 commit
-
-
bmeurer authored
The NumberFloor operator matches exactly the semantics of the Math.floor builtin on Numbers. It uses hardware rounding instructions if available, but provides a full fallback solution that is compatible with Math.floor. The lowering is optimizable based on types if needed later, i.e. we already optimize it for the case that the input is already an Integer (in the EcmaScript sense, including NaN and -0), but we could add more optimizations, like combining NumberFloor and NumberDivide in the future, if necessary. R=jarin@chromium.org BUG=v8:2890,v8:4059 LOG=n Review URL: https://codereview.chromium.org/1843533003 Cr-Commit-Position: refs/heads/master@{#35090}
-
- 17 Dec, 2015 1 commit
-
-
sigurds authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1532063002 Cr-Commit-Position: refs/heads/master@{#32950}
-
- 19 Oct, 2015 1 commit
-
-
mstarzinger authored
This removes all locally constructed SimplifiedOperatorBuilder instances and uses the one passed along the JSGraph. It ensures that the correct zone is used to allocate operators, no matter where the reducer is used. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1410003002 Cr-Commit-Position: refs/heads/master@{#31355}
-
- 24 Sep, 2015 1 commit
-
-
mstarzinger authored
This introduces the NodeProperties::ChangeOp helper which guards node operator changes so that additional checking can be done without any additional dependencies being pulled into the Node class. For now only the input count is checked, but additional checking might follow. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1366753003 Cr-Commit-Position: refs/heads/master@{#30916}
-
- 01 Sep, 2015 1 commit
-
-
mstarzinger authored
Now that it is no longer needed, this also removes the invalid inclusion of "object-inl.h" within the "unique.h" header file. Note that this change still leaves 2 violations of that rule in the code, checked with the "tools/check-inline-includes.sh" tool. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1321223002 Cr-Commit-Position: refs/heads/master@{#30503}
-
- 31 Aug, 2015 1 commit
-
-
mstarzinger authored
The usage of Unique<T> throughout the TurboFan IR does not have any advantage. There is no single point in time when they are initialized and most use-sites looked through to the underlying Handle<T> anyways. Also there already was a mixture of Handle<T> versus Unique<T> in the graph and this unifies the situation to use Handle<T> everywhere. R=bmeurer@chromium.org,titzer@chromium.org Review URL: https://codereview.chromium.org/1314473007 Cr-Commit-Position: refs/heads/master@{#30458}
-
- 25 Jun, 2015 1 commit
-
-
bmeurer authored
This partially reverts https://codereview.chromium.org/1162563002 because we might actually be able to optimize certain combinations now due to dead code elimination. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1202263006 Cr-Commit-Position: refs/heads/master@{#29277}
-
- 28 May, 2015 1 commit
-
-
bmeurer authored
The SimplifiedOperatorReducer is (mostly) unused, except for the very rough store elimination, and just eats compilation time. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1162563002 Cr-Commit-Position: refs/heads/master@{#28673}
-
- 09 Apr, 2015 1 commit
-
-
Benedikt Meurer authored
This is a very simple dead store elimination that removes StoreField nodes which are immediately followed by other StoreField nodes that store to the same field. Ideally there should be a fully featured store elimination, which walks over the effect graph starting from the end, but there are some technical difficulties to solve before we can get to that, esp. we need to think about "effect producing" operators like ValueEffect first. Once we have that, it is trivial to remove this temporary poor man's store elimination. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/1070003002 Cr-Commit-Position: refs/heads/master@{#27697}
-
- 19 Mar, 2015 1 commit
-
-
Benedikt Meurer authored
This reduces the overhead of typed lowering, because we lower JSToBoolean/JSUnaryNot directly if possible, instead of first lowering to AnyToBoolean, and then letting the SimplifiedOperatorReducer do the further lowering. Also remove some obsolete tests from the cctest suite that have since been removed by proper unittests. And improve unitttest coverage for the typed lowering cases. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/999173003 Cr-Commit-Position: refs/heads/master@{#27295}
-
- 29 Jan, 2015 1 commit
-
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/883613006 Cr-Commit-Position: refs/heads/master@{#26316}
-
- 14 Jan, 2015 1 commit
-
-
bmeurer authored
TEST=cctest,mjsunit,unittests BUG=v8:3812 LOG=y Review URL: https://codereview.chromium.org/850013003 Cr-Commit-Position: refs/heads/master@{#26051}
-
- 08 Jan, 2015 1 commit
-
-
bmeurer authored
TEST=cctest/test-representation-change,unittests,mjsunit/compiler/regress-bit-number-constant R=jarin@chromium.org Review URL: https://codereview.chromium.org/840953003 Cr-Commit-Position: refs/heads/master@{#25987}
-
- 05 Jan, 2015 1 commit
-
-
Benedikt Meurer authored
Introduce a new AnyToBoolean simplified operator to handle the later lowering of boolean conversions. Previously we tried to hack that with the generic JSToBoolean, having its context set to zero, but that lead to various problems/bugs and did not handle all cases. TEST=cctest,unittests R=jarin@chromium.org Review URL: https://codereview.chromium.org/800833003 Cr-Commit-Position: refs/heads/master@{#25958}
-
- 02 Dec, 2014 1 commit
-
-
Benedikt Meurer authored
TEST=mjsunit,cctest,unittests R=jarin@chromium.org Review URL: https://codereview.chromium.org/763963002 Cr-Commit-Position: refs/heads/master@{#25591}
-