- 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}
-
- 30 May, 2016 1 commit
-
-
bmeurer authored
The NumberIsHoleNaN operator used to test the lower word of the double input which is obviously wrong. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2022753002 Cr-Commit-Position: refs/heads/master@{#36584}
-
- 25 May, 2016 1 commit
-
-
bmeurer authored
Previously we first created a temporary graph for the inlinee and then copied over all the nodes to the actual graph. This however introduces unnecessary complexity, and we can instead just create the inlinee inside the target graph. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2006353003 Cr-Commit-Position: refs/heads/master@{#36508}
-
- 18 May, 2016 2 commits
-
-
mstarzinger authored
This promotes the escape analysis from an experimental feature to be a fully supported feature. The main goal is to unleach ClusterFuzz on the implementation so that we can stabilize it. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1989833002 Cr-Commit-Position: refs/heads/master@{#36324}
-
mstarzinger authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1980503002 Cr-Commit-Position: refs/heads/master@{#36311}
-
- 17 May, 2016 1 commit
-
-
bmeurer authored
This adds back the instanceof operator support in the backends and introduces a @@hasInstance protector cell on the isolate that guards the fast path for the InstanceOfStub. This way we recover the ~10% regression on Octane EarleyBoyer in Crankshaft and greatly improve TurboFan and Ignition performance of instanceof. R=ishell@chromium.org TBR=hpayer@chromium.org,rossberg@chromium.org BUG=chromium:597249, v8:4447 LOG=n Review-Url: https://codereview.chromium.org/1980483003 Cr-Commit-Position: refs/heads/master@{#36275}
-
- 12 May, 2016 1 commit
-
-
bmeurer authored
We got the condition wrong and actually deoptimized when the typed array was not neutered. This fixes the deopt loop in Math.random and actually many programs that use typed arrays. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1970123002 Cr-Commit-Position: refs/heads/master@{#36194}
-
- 09 May, 2016 1 commit
-
-
mstarzinger authored
The flag in question used to fall-back to Crankshaft whenever an OSR request couldn't be handled by TurboFan. By now OSR in TurboFan is sufficiently stabilized that one single --use-osr flag should do it. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/1960043002 Cr-Commit-Position: refs/heads/master@{#36102}
-
- 03 May, 2016 2 commits
-
-
jarin authored
The problem is actually not related to try-catch, so here is a test without try-catch. BUG=chromium:607493 LOG=n Review-Url: https://codereview.chromium.org/1943883002 Cr-Commit-Position: refs/heads/master@{#35985}
-
jarin authored
BUG=chromium:607493 LOG=n Review-Url: https://codereview.chromium.org/1949433002 Cr-Commit-Position: refs/heads/master@{#35982}
-
- 15 Apr, 2016 1 commit
-
-
mstarzinger authored
This prefixes the escape analysis flag with "experimental", thereby making sure the flag in question is not being fuzzed. It will reduce noise levels on ClusterFuzz again. R=jarin@chromium.org BUG=chromium:603653 LOG=n Review URL: https://codereview.chromium.org/1894513002 Cr-Commit-Position: refs/heads/master@{#35521}
-
- 08 Apr, 2016 1 commit
-
-
jarin authored
BUG=chromium:600593 LOG=n R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1870763003 Cr-Commit-Position: refs/heads/master@{#35347}
-
- 22 Mar, 2016 2 commits
-
-
adamk authored
Now that ES2015 const has shipped, in Chrome 49, legacy const declarations are no more. This lets us remove a bunch of code from many parts of the codebase. In this patch, I remove parser support for generating legacy const variables from const declarations. This also removes the special "illegal declaration" bit from Scope, which has ripples into all compiler backends. Also gone are any tests which relied on legacy const declarations. Note that we do still generate a Variable in mode CONST_LEGACY in one case: function name bindings in sloppy mode. The likely fix there is to add a new Variable::Kind for this case and handle it appropriately for stores in each backend, but I leave that for a later patch to make this one completely subtractive. Review URL: https://codereview.chromium.org/1819123002 Cr-Commit-Position: refs/heads/master@{#35002}
-
bmeurer authored
This CL adds support for builtins with JavaScript linkage written using the TurboFan CodeStubAssembler, but with a JSCall descriptor (which was already supported thanks to a previous patch by Ben Smith). As a first example, we convert the Math.sqrt builtin and thereby get rid of the %_MathSqrt intrinsic, which causes trouble for the representation selection pass in the JavaScript pipeline. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1824993002 Cr-Commit-Position: refs/heads/master@{#34989}
-
- 08 Mar, 2016 1 commit
-
-
mstarzinger authored
R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1773593002 Cr-Commit-Position: refs/heads/master@{#34572}
-
- 18 Feb, 2016 1 commit
-
-
rmcilroy authored
Moves the accumulator value on-heap to be restored in the InterpreterNotifyDeopt handler rather than explicitly setting the accumulator register. This allows it to be materialized correctly if required. BUG=v8:4678 LOG=N Review URL: https://codereview.chromium.org/1707133003 Cr-Commit-Position: refs/heads/master@{#34113}
-
- 12 Feb, 2016 5 commits
-
-
bmeurer authored
This removes support for the %Arguments and %ArgumentsLength runtime entries and their intrinsic counterparts. If you need variable arguments in any builtin, either use (strict) arguments object or rest parameters, which are both compositional across inlining (in TurboFan), and not that much slower compared to the %_Arguments hackery. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1688163004 Cr-Commit-Position: refs/heads/master@{#33943}
-
jarin authored
Review URL: https://codereview.chromium.org/1669303002 Cr-Commit-Position: refs/heads/master@{#33942}
-
jarin authored
The idea here is to perform the handler lookup in the deoptimizer, and then take the information from the handler table to build the catch handler frame in the deoptimizer. Specifically, we use the pc offset, context location and stack height (in full-code) to tweak the output frame. Sadly, this still requires nasty voodoo for the liveness analyzer so that it keeps variables alive if they are used in the catch handler. Review URL: https://codereview.chromium.org/1416543006 Cr-Commit-Position: refs/heads/master@{#33936}
-
mstarzinger authored
Reland of [interpreter] Correctly thread through catch prediction. (patchset #1 id:1 of https://codereview.chromium.org/1695613002/ ) Reason for revert: No fix needed, original CL was perfectly fine! Original issue's description: > Revert of [interpreter] Correctly thread through catch prediction. (patchset #1 id:1 of https://codereview.chromium.org/1690973002/ ) > > Reason for revert: > Depends on the reverted https://codereview.chromium.org/1691723002 > > Original issue's description: > > [interpreter] Correctly thread through catch prediction. > > > > This change correctly sets the {CatchPrediction} field in exception > > handler tables for bytecode and optimized code. It also adds tests > > independent of promise handling for this prediction, to ensure all our > > backends are in sync on their prediction. > > > > R=rmcilroy@chromium.org,yangguo@chromium.org > > TEST=mjsunit/compiler/debug-catch-prediction > > BUG=v8:4674 > > LOG=n > > > > Committed: https://crrev.com/ba55f5594cb0b4a1a1e9b35d87fe54afe2d93f3b > > Cr-Commit-Position: refs/heads/master@{#33906} > > TBR=rmcilroy@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=v8:4674 > > Committed: https://crrev.com/c5229b311968fd638a6cd537c341b1055eb7be97 > Cr-Commit-Position: refs/heads/master@{#33922} TBR=rmcilroy@chromium.org,yangguo@chromium.org,adamk@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4674 Review URL: https://codereview.chromium.org/1689113004 Cr-Commit-Position: refs/heads/master@{#33933}
-
adamk authored
Revert of [interpreter] Correctly thread through catch prediction. (patchset #1 id:1 of https://codereview.chromium.org/1690973002/ ) Reason for revert: Depends on the reverted https://codereview.chromium.org/1691723002 Original issue's description: > [interpreter] Correctly thread through catch prediction. > > This change correctly sets the {CatchPrediction} field in exception > handler tables for bytecode and optimized code. It also adds tests > independent of promise handling for this prediction, to ensure all our > backends are in sync on their prediction. > > R=rmcilroy@chromium.org,yangguo@chromium.org > TEST=mjsunit/compiler/debug-catch-prediction > BUG=v8:4674 > LOG=n > > Committed: https://crrev.com/ba55f5594cb0b4a1a1e9b35d87fe54afe2d93f3b > Cr-Commit-Position: refs/heads/master@{#33906} TBR=rmcilroy@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4674 Review URL: https://codereview.chromium.org/1695613002 Cr-Commit-Position: refs/heads/master@{#33922}
-
- 11 Feb, 2016 1 commit
-
-
mstarzinger authored
This change correctly sets the {CatchPrediction} field in exception handler tables for bytecode and optimized code. It also adds tests independent of promise handling for this prediction, to ensure all our backends are in sync on their prediction. R=rmcilroy@chromium.org,yangguo@chromium.org TEST=mjsunit/compiler/debug-catch-prediction BUG=v8:4674 LOG=n Review URL: https://codereview.chromium.org/1690973002 Cr-Commit-Position: refs/heads/master@{#33906}
-
- 09 Feb, 2016 2 commits
-
-
mstarzinger authored
This adds test cases for exception handlers that require a context switch when entering the catch-block or the finally-block, triggered through nested contexts within the try-block. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1681933002 Cr-Commit-Position: refs/heads/master@{#33845}
-
bmeurer authored
By now only the default %TypedArray%.prototype.sort compare function and the JS implementation of SameValueZero were still using the odd %_IsMinusZero intrinsic, whose semantics both included a number check (actually HeapNumber test) plus testing if the heap number stores the special -0 value. In both cases we already know that we deal with number so we can reduce it to a simple number test for -0, which can be expressed via dividing 1 by that value and checking the sign of the result. In case of the compare function, we can be even smarter and work with the reciprocal values in case x and y are equal to 0 (although long term we should probably rewrite the fast case for the typed array sorting function in C++ anyway, which will be way, way faster than our handwritten callback-style, type-feedback polluted JS implementation). R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1680783002 Cr-Commit-Position: refs/heads/master@{#33833}
-
- 05 Feb, 2016 1 commit
-
-
jarin authored
Review URL: https://codereview.chromium.org/1675433003 Cr-Commit-Position: refs/heads/master@{#33767}
-
- 02 Feb, 2016 1 commit
-
-
bmeurer authored
Avoid the hacking in JSIntrinsicLowering and provide a proper simplified operator ObjectIsReceiver instead that is used to implement %_IsJSReceiver which is used by our JavaScript builtins and the JSInliner. R=jarin@chromium.org BUG=v8:4544 LOG=n Review URL: https://codereview.chromium.org/1657863004 Cr-Commit-Position: refs/heads/master@{#33675}
-
- 28 Jan, 2016 1 commit
-
-
bmeurer authored
The previous versions of Math.max and Math.min made it difficult to optimize those (that's why we already have custom code in Crankshaft), and due to lack of ideas what to do about the variable number of arguments, we will probably need to stick in special code in TurboFan as well; so inlining those builtins is off the table, hence there's no real advantage in having them around as "not quite JS" with extra work necessary in the optimizing compilers to still make those builtins somewhat fast in cases where we cannot inline them (also there's a tricky deopt loop in Crankshaft related to Math.min and Math.max, but that will be dealt with later). So to sum up: Instead of trying to make Math.max and Math.min semi-fast in the optimizing compilers with weird work-arounds support %_Arguments %_ArgumentsLength, we do provide the optimal code as native builtins instead and call it a day (which gives a nice performance boost on some benchmarks). R=jarin@chromium.org Review URL: https://codereview.chromium.org/1641083003 Cr-Commit-Position: refs/heads/master@{#33582}
-
- 22 Jan, 2016 1 commit
-
-
bmeurer authored
R=jarin@chromium.org BUG=v8:3650 LOG=n Review URL: https://codereview.chromium.org/1621583002 Cr-Commit-Position: refs/heads/master@{#33453}
-
- 11 Jan, 2016 1 commit
-
-
littledan authored
This patch moves the semantics of 'const' in sloppy mode to match those in strict mode, that is, const makes lexical (let-like) bindings, must have an initializer, and does not create properties of the global object. R=adamk LOG=Y BUG=v8:3305 CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1571873004 Cr-Commit-Position: refs/heads/master@{#33218}
-
- 08 Jan, 2016 1 commit
-
-
rmcilroy authored
Adds support for the CallRuntimeForPair bytecode to the Bytecode Graph Builder. Modifies the FrameState support to allow updating of output registers. Also adds Eval tests to test-run-bytecode-graph-builder since these are enabled by CallRuntimeForPair support. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1570623007 Cr-Commit-Position: refs/heads/master@{#33186}
-
- 05 Jan, 2016 1 commit
-
-
sigurds authored
Deopt support is added on two levels. On the IR level, a new ObjectState node is added, which represenents an object to be materialized. ObjectState nodes appear as inputs of FrameState and StateValues nodes. On the instruction select/code-generation level, the FrameStateDescriptor class handles the nesting introduced by ObjectState, and ensures that deopt code with CAPTURED_OBJECT/DUPLICATED_OBJECT entries are generated similarly to what crankshaft's escape analysis does. Two unittests test correctness of the IR level implementation. Correctness for instruction selection / code generation is tested by mjsunit tests. R=jarin@chromium.org,mstarzinger@chromium.org BUG=v8:4586 LOG=n Review URL: https://codereview.chromium.org/1485183002 Cr-Commit-Position: refs/heads/master@{#33115}
-
- 04 Jan, 2016 1 commit
-
-
jarin authored
BUG=572409 LOG=n Review URL: https://codereview.chromium.org/1555023002 Cr-Commit-Position: refs/heads/master@{#33078}
-
- 14 Dec, 2015 1 commit
-
-
sigurds authored
Bugfixes and improvements in escape analysis include: * Handling of ObjectIsSmi (non-escaping) * Handling of nested phi replacements * Handling of phis with arity > 2 * Resilience against effectful nodes dangling from start * Allocations escape now, if non-const load/store is performed * Fixed a bug where non-allocated objects where tracked * Allow fixed double arrays to be tracked R=mstarzinger@chromium.org BUG=v8:4586 LOG=n Review URL: https://codereview.chromium.org/1510973006 Cr-Commit-Position: refs/heads/master@{#32833}
-
- 07 Dec, 2015 1 commit
-
-
sigurds authored
This patch improves escape analysis and fixes bugs triggered by clusterfuzz. Impovements include: * Handling of LoadElement/StoreElement if index is a constant * Handling of JSStoreProperty: invalidate all information, as the store could have altered any field. * Treat phis that use an allocation as escaping * Improve resolution of replacements R=mstarzinger@chromium.org BUG=v8:4586 LOG=n Review URL: https://codereview.chromium.org/1499143002 Cr-Commit-Position: refs/heads/master@{#32656}
-
- 04 Dec, 2015 1 commit
-
-
machenbach authored
Revert of [es6] Correctify and unify ArrayBuffer and SharedArrayBuffer constructors. (patchset #2 id:20001 of https://codereview.chromium.org/1500543002/ ) Reason for revert: Blocks the roll: https://codereview.chromium.org/1497763004/ Original issue's description: > [es6] Correctify and unify ArrayBuffer and SharedArrayBuffer constructors. > > The ArrayBuffer and SharedArrayBuffer constructors should raise an > exception when called with no arguments or undefined length. Also > unified the ArrayBuffer and SharedArrayBuffer implementations as C++ > builtins, and removed some (now) obsolete runtime entries. > > R=yangguo@chromium.org > > Committed: https://crrev.com/3235ccbb7826ceec2188f6ebab98fc851b54f60e > Cr-Commit-Position: refs/heads/master@{#32590} TBR=yangguo@chromium.org,cbruni@chromium.org,adamk@chromium.org,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1501673002 Cr-Commit-Position: refs/heads/master@{#32606}
-
- 03 Dec, 2015 1 commit
-
-
bmeurer authored
The ArrayBuffer and SharedArrayBuffer constructors should raise an exception when called with no arguments or undefined length. Also unified the ArrayBuffer and SharedArrayBuffer implementations as C++ builtins, and removed some (now) obsolete runtime entries. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1500543002 Cr-Commit-Position: refs/heads/master@{#32590}
-
- 02 Dec, 2015 2 commits
-
-
danno authored
* Add a sibling interface to InterpreterAssembler called CodeStubAssembler which provides a wrapper around the RawMachineAssembler and is intented to make it easy to build efficient cross-platform code stubs. Much of the implementation of CodeStubAssembler is shamelessly stolen from the InterpreterAssembler, and the idea is to eventually merge the two interfaces somehow, probably moving the InterpreterAssembler interface over to use the CodeStubAssembler. Short-term, however, the two interfaces shall remain decoupled to increase our velocity developing the two systems in parallel. * Implement the StringLength stub in TurboFan with the new CodeStubAssembler. Replace and remove the old Hydrogen-stub version. * Remove a whole slew of machinery to support JavaScript-style code stub generation, since it ultimately proved unwieldy, brittle and baroque. This cleanup includes removing the shared code stub context, several example stubs and a tangle of build file changes. BUG=v8:4587 LOG=n Review URL: https://codereview.chromium.org/1475953002 Cr-Commit-Position: refs/heads/master@{#32508}
-
sigurds authored
This is the first part of escape analysis for turbofan. At the moment, there is no deopt support, and support for loops is partial (only binary Phis are handled). The CL includes 4 unittests. There are also 8 new mjsunit tests, some of which are skiped as they require features not yet implemented. BUG=v8:4586 LOG=n Review URL: https://codereview.chromium.org/1457683003 Cr-Commit-Position: refs/heads/master@{#32498}
-
- 26 Nov, 2015 1 commit
-
-
bmeurer authored
Contributed by Fedor Indutny <fedor@indutny.com>. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1478933002 Cr-Commit-Position: refs/heads/master@{#32314}
-
- 18 Nov, 2015 1 commit
-
-
jarin authored
If the input type does not help us, we are conservative and truncate (rather than guessing signed). Review URL: https://codereview.chromium.org/1455103002 Cr-Commit-Position: refs/heads/master@{#32075}
-