- 04 Sep, 2015 1 commit
-
-
bmeurer authored
Similar to DELETE, the IN builtin is just a thin wrapper for %HasElement and %HasProperty anyway, and cannot be optimized, plus it had a weird special fast case (which also involved at least one LOAD_IC plus some intrinsic magic). R=yangguo@chromium.org,jarin@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_win_nosnap_shared_rel Committed: https://crrev.com/72d60a1e80e81e2e68ca402665e2acbc46c5e471 Cr-Commit-Position: refs/heads/master@{#30154} Review URL: https://codereview.chromium.org/1295433002 Cr-Commit-Position: refs/heads/master@{#30582}
-
- 03 Sep, 2015 1 commit
-
-
neis authored
BUG= Review URL: https://codereview.chromium.org/1312893010 Cr-Commit-Position: refs/heads/master@{#30559}
-
- 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}
-
- 06 Jul, 2015 2 commits
-
-
bmeurer authored
The value output count for Start is currently off by 1 for code stubs, because the CommonOperatorBuilder hardcodes the receiver parameter. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1217553005 Cr-Commit-Position: refs/heads/master@{#29490}
-
bmeurer authored
[turbofan] Reland "Add new JSFrameSpecialization reducer." and "Perform OSR deconstruction early and remove type propagation.". We have to reland these two commits at once, because the first breaks some asm.js benchmarks without the second. The change was reverted because of bogus checks in the verifier, which will not work in the presence of OSR (and where hidden because of the type back propagation hack in OSR so far). Original messages are below: [turbofan] Add new JSFrameSpecialization reducer. The JSFrameSpecialization specializes an OSR graph to the current unoptimized frame on which we will perform the on-stack replacement. This is used for asm.js functions, where we cannot reuse the OSR code object anyway because of context specialization, and so we could as well specialize to the max instead. It works by replacing all OsrValues in the graph with their values in the JavaScriptFrame. The idea is that using this trick we get better performance without doing the unsound backpropagation of types to OsrValues later. This is the first step towards fixing OSR for TurboFan. [turbofan] Perform OSR deconstruction early and remove type propagation. This way we don't have to deal with dead pre-OSR code in the graph and risk optimizing the wrong code, especially we don't make optimistic assumptions in the dead code that leaks into the OSR code (i.e. deopt guards are in dead code, but the types propagate to OSR code via the OsrValue type back propagation). BUG=v8:4273 LOG=n R=jarin@chromium.org Review URL: https://codereview.chromium.org/1226673005 Cr-Commit-Position: refs/heads/master@{#29486}
-
- 03 Jul, 2015 2 commits
-
-
bmeurer authored
Currently we lower shifts directly to machine operators, and add an appropriate Word32And to implement the & 0x1F operation on the right hand side required by the specification. However for Word32And we assume Int32 in simplified lowering, which is basically changes the right hand side bit interpretation for the shifts from Uint32 to Int32, which is obviously wrong. So now we represent that explicitly by proper simplified operators for the shifts, which are lowered to machine in simplified lowering. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1213803008 Cr-Commit-Position: refs/heads/master@{#29465}
-
titzer authored
Also add control inputs to 64-bit integer divide and modulus operations. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1223613002 Cr-Commit-Position: refs/heads/master@{#29460}
-
- 23 Jun, 2015 4 commits
-
-
mstarzinger authored
This is a precursor to using specialized LoadIC and StoreIC stubs for global variable access. It also removes the need to keep track of the global object in the type system, hence freeing up one bit. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1205473004 Cr-Commit-Position: refs/heads/master@{#29231}
-
Benedikt Meurer authored
This will immediately remove dead code from the graph once any of the advanced reducers inserts it. Also changes the GraphReducer to use the canonical Dead node for ReplaceWithValue. R=jarin@chromium.org Committed: https://crrev.com/88a40c5fb381924b1c0b2403dc582bceb2abe5da Cr-Commit-Position: refs/heads/master@{#29217} Review URL: https://codereview.chromium.org/1206533002. Cr-Commit-Position: refs/heads/master@{#29225}
-
bmeurer authored
Revert of [turbofan] Run DeadCodeElimination together with the advanced reducers. (patchset #1 id:1 of https://codereview.chromium.org/1206533002/) Reason for revert: Looks like this breaks Tests262. Original issue's description: > [turbofan] Run DeadCodeElimination together with the advanced reducers. > > This will immediately remove dead code from the graph once any of > the advanced reducers inserts it. Also changes the GraphReducer to > use the canonical Dead node for ReplaceWithValue. > > R=jarin@chromium.org > > Committed: https://crrev.com/88a40c5fb381924b1c0b2403dc582bceb2abe5da > Cr-Commit-Position: refs/heads/master@{#29217} TBR=jarin@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1200983004 Cr-Commit-Position: refs/heads/master@{#29220}
-
bmeurer authored
This will immediately remove dead code from the graph once any of the advanced reducers inserts it. Also changes the GraphReducer to use the canonical Dead node for ReplaceWithValue. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1206533002 Cr-Commit-Position: refs/heads/master@{#29217}
-
- 19 Jun, 2015 1 commit
-
-
bmeurer authored
The three different concerns that the ControlReducer used to deal with are now properly separated into a.) DeadCodeElimination, which is a regular AdvancedReducer, that propagates Dead via control edges, b.) CommonOperatorReducer, which does strength reduction on common operators (i.e. Branch, Phi, and friends), and c.) GraphTrimming, which removes dead->live edges from the graph. This will make it possible to run the DeadCodeElimination together with other passes that actually introduce Dead nodes, i.e. typed lowering; and it opens the door for general inlining without two stage fix point iteration. To make the DeadCodeElimination easier and more uniform, we basically reverted the introduction of DeadValue and DeadEffect, and changed the Dead operator to produce control, value and effect. Note however that this is not a requirement, but merely a way to make dead propagation easier and more uniform. We could always go back and decide to have different Dead operators if some other change requires that. Note that there are several additional opportunities for cleanup now, i.e. OSR deconstruction could be a regular reducer now, and we don't need to use TheHole as dead value marker in the GraphReducer. And we can actually run the dead code elimination together with the other passes instead of using separate passes over the graph. We will do this in follow up CLs. R=jarin@chromium.org, mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1193833002 Cr-Commit-Position: refs/heads/master@{#29146}
-
- 18 Jun, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1186033006 Cr-Commit-Position: refs/heads/master@{#29104}
-
- 05 Jun, 2015 2 commits
-
-
danno authored
Only optimized for TF R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1146963002 Cr-Commit-Position: refs/heads/master@{#28812}
-
mstarzinger authored
This allows any AdvancedReducer to remove exception projections from graphs. This is the common case when JS-operators are being replaced with pure values. The old NodeProperties::ReplaceWithValue is being deprecated in favor of AdvancedReducer::ReplaceWithValue. R=titzer@chromium.org TEST=unittests/AdvancedReducerTest Review URL: https://codereview.chromium.org/1168693002 Cr-Commit-Position: refs/heads/master@{#28810}
-
- 03 Jun, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1155723005 Cr-Commit-Position: refs/heads/master@{#28784}
-
- 02 Jun, 2015 1 commit
-
-
bmeurer authored
Unfortunately StringAdd is not pure in V8 because we might throw an exception if the resulting string length is outside the valid bounds, so there's no point in having a simplified StringAdd operator. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1164743002 Cr-Commit-Position: refs/heads/master@{#28747}
-
- 01 Jun, 2015 2 commits
-
-
mstarzinger authored
This introduces two new operators for loads of variables bound to Variable::LOOKUP locations. Currently they all still lower to runtime calls, but will allow optimization during typed lowering. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1155103004 Cr-Commit-Position: refs/heads/master@{#28713}
-
bmeurer authored
In a nutshell: The FILTER_KEY builtin is gone, and was replaced by a simple runtime call to ForInFilter, which does everything and is even cheaper (because FILTER_KEY used to call into the runtime anyway). And ForInFilter returns either the name or undefined, which makes it possible to remove the control flow construction from the AstGraphBuilder, and thereby make both the initialization and the per-loop code of for-in optimizable later (in typed lowering). R=jarin@chromium.org Review URL: https://codereview.chromium.org/1160983004 Cr-Commit-Position: refs/heads/master@{#28711}
-
- 29 May, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1162633002 Cr-Commit-Position: refs/heads/master@{#28695}
-
- 27 May, 2015 1 commit
-
-
bmeurer authored
This simplifies inlining, in that we only need to update uses of Start and inputs of End instead of walking the whole inlinee to update all outer frame states. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1146403008 Cr-Commit-Position: refs/heads/master@{#28649}
-
- 26 May, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1153963006 Cr-Commit-Position: refs/heads/master@{#28624}
-
- 20 May, 2015 1 commit
-
-
erikcorry authored
R=verwaest@chromium.org BUG= Review URL: https://codereview.chromium.org/1143133002 Cr-Commit-Position: refs/heads/master@{#28502}
-
- 15 May, 2015 1 commit
-
-
bmeurer authored
First step towards support for inlining based on SharedFunctionInfo instead of JSFunction. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1134713004 Cr-Commit-Position: refs/heads/master@{#28419}
-
- 06 May, 2015 1 commit
-
-
bmeurer authored
This revives the Terminate operator and removes the weird Always operator. As a first step we let the ControlReducer connect non terminating loops via Terminate. The next step will be to change the graph builder to insert Terminate nodes into every loop. Review URL: https://codereview.chromium.org/1123213002 Cr-Commit-Position: refs/heads/master@{#28259}
-
- 05 May, 2015 1 commit
-
-
bmeurer authored
Tail calls are matched on the graph, with a dedicated tail call optimization that is actually testable. The instruction selection can still fall back to a regular if the platform constraints don't allow to emit a tail call (i.e. the return locations of caller and callee differ or the callee takes non-register parameters, which is a restriction that will be removed in the future). Also explicitly limit tail call optimization to stubs for now and drop the global flag. BUG=v8:4076 LOG=n Review URL: https://codereview.chromium.org/1114163005 Cr-Commit-Position: refs/heads/master@{#28219}
-
- 04 May, 2015 1 commit
-
-
mstarzinger authored
This introduces a simplified allocation operator which can be used to model inline allocations in TurboFan. It is currently used for context allocations, but still disabled because change lowering introduces floating allocations outside the effect chain that interfere. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1109773002 Cr-Commit-Position: refs/heads/master@{#28195}
-
- 27 Apr, 2015 2 commits
-
-
mstarzinger authored
This uses explicit operators instead of intrinsic runtime calls to create literals froms boilerplates. It allows for easier access of static parameters and syncs it with other allocating operators. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1104453006 Cr-Commit-Position: refs/heads/master@{#28062}
-
mstarzinger authored
This introduces a JSCreateClosure operator which can be lowered by the typed pipeline to the aforementioned stub. It also allows for further optimizations of closure creation. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1105513002 Cr-Commit-Position: refs/heads/master@{#28058}
-
- 22 Apr, 2015 1 commit
-
-
titzer authored
R=bmeurer@chromium.org, mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1090303004 Cr-Commit-Position: refs/heads/master@{#28002}
-
- 08 Apr, 2015 1 commit
-
-
Benedikt Meurer authored
These operators compute the absolute floating point value of some arbitrary input, and are implemented without any branches (i.e. using vabs on arm, and andps/andpd on x86). R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1066393002 Cr-Commit-Position: refs/heads/master@{#27662}
-
- 31 Mar, 2015 1 commit
-
-
mstarzinger authored
TEST=cctest/test-run-jsexceptions Review URL: https://codereview.chromium.org/989123003 Cr-Commit-Position: refs/heads/master@{#27537}
-
- 30 Mar, 2015 1 commit
-
-
bmeurer authored
This adds the basics necessary to support float32 operations in TurboFan. The actual functionality required to detect safe float32 operations will be added based on this later. Therefore this does not affect production code except for some cleanup/refactoring. In detail, this patchset contains the following features: - Add support for float32 operations to arm, arm64, ia32 and x64 backends. - Add float32 machine operators. - Add support for float32 constants to simplified lowering. - Handle float32 representation for phis in simplified lowering. In addition, contains the following (related) cleanups: - Fix/unify naming of backend instructions. - Use AVX comparisons when available. - Extend ArchOpcodeField to 9 bits (required for arm64). - Refactor some code duplication in instruction selectors. BUG=v8:3589 LOG=n R=dcarney@chromium.org Review URL: https://codereview.chromium.org/1044793002 Cr-Commit-Position: refs/heads/master@{#27509}
-
- 26 Mar, 2015 1 commit
-
-
titzer authored
BUG= Review URL: https://codereview.chromium.org/1021713005 Cr-Commit-Position: refs/heads/master@{#27470}
-
- 25 Mar, 2015 1 commit
-
-
mstarzinger authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1029583009 Cr-Commit-Position: refs/heads/master@{#27437}
-
- 20 Mar, 2015 1 commit
-
-
Benedikt Meurer authored
R=dcarney@chromium.org, yangguo@chromium.org BUG=v8:3952 LOG=n Review URL: https://codereview.chromium.org/1021183002 Cr-Commit-Position: refs/heads/master@{#27329}
-
- 19 Mar, 2015 3 commits
-
-
jarin authored
With this change, we remember the types of frame state inputs (in a new operator, called TypedStateValues). Instead of inferring the value types when building translations, we used the recorded types. The original approach was not reliable because the passes after simplified lowering can change node types, and this in turn confuses the translation builder. BUG=chromium:468727 LOG=n R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1015423002 Cr-Commit-Position: refs/heads/master@{#27310}
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1020873002 Cr-Commit-Position: refs/heads/master@{#27304}
-
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}
-
- 12 Mar, 2015 1 commit
-
-
bmeurer authored
Basically recognize certain x < y ? x : y constructs and turn that into Float64Min/Float64Max operations, if the target machine supports that. On x86 we lower to (v)minsd/(v)maxsd. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/998283002 Cr-Commit-Position: refs/heads/master@{#27160}
-