- 08 Nov, 2016 2 commits
-
-
neis authored
Also add a primitive mjsunit test that uses such a function optimized by Turbofan. R=mstarzinger@chromium.org CC=adamk@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2472143002 Cr-Commit-Position: refs/heads/master@{#40826}
-
neis authored
This introduces two new bytecodes LdaModuleVariable and StaModuleVariable, replacing the corresponding runtime calls. Support in the bytecode graph builder exists only in the form of runtime calls. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2471033004 Cr-Commit-Position: refs/heads/master@{#40825}
-
- 27 Oct, 2016 1 commit
-
-
ishell authored
The reasons are: 1) Type feedback vectors are not shared between different native contexts and therefore the IC handler created for one native context will not be reused in other native context. 2) Access rights revocation is not supported at all, therefore given (1) once we pass the access check we don't have to check access rights again. BUG=v8:5561 Review-Url: https://codereview.chromium.org/2455953002 Cr-Commit-Position: refs/heads/master@{#40627}
-
- 26 Oct, 2016 1 commit
-
-
bmeurer authored
For global object property cells, we did not check that the map on the previous object is still the same for which we actually optimized. So the optimized code was not in sync with the actual state of the property cell. When loading from such a global object property cell, Crankshaft optimizes away any map checks (based on the stable map assumption), leading to arbitrary memory access in the worst case. TurboFan has the same bug for stores, but is safe on loads because we do appropriate map checks there. However mixing TurboFan and Crankshaft still exposes the bug. R=yangguo@chromium.org BUG=chromium:659475 Review-Url: https://codereview.chromium.org/2444233004 Cr-Commit-Position: refs/heads/master@{#40592}
-
- 20 Oct, 2016 1 commit
-
-
jkummerow authored
Review-Url: https://chromiumcodereview.appspot.com/2434753003 Cr-Commit-Position: refs/heads/master@{#40459}
-
- 17 Oct, 2016 1 commit
-
-
mstarzinger authored
This makes optimization of all class constructors (i.e. both base and derived) go through TurboFan. Note some class constructors containing Harmony language features (e.g. super constructor calls or accesses to the new.target value) were already going through TurboFan before. R=bmeurer@chromium.org BUG=v8:5458 Review-Url: https://codereview.chromium.org/2397723002 Cr-Commit-Position: refs/heads/master@{#40342}
-
- 23 Sep, 2016 1 commit
-
-
verwaest authored
Remove ARGUMENTS_VARIABLE and fix crankshaft to properly detect the arguments object and keep it alive when inlining .apply BUG= Review-Url: https://codereview.chromium.org/2367483003 Cr-Commit-Position: refs/heads/master@{#39670}
-
- 20 Sep, 2016 1 commit
-
-
klaasb authored
Refactors CodeStubAssembler::AllocateJSArray to share code. BUG=chromium:608675 Review-Url: https://codereview.chromium.org/2304573004 Cr-Commit-Position: refs/heads/master@{#39550}
-
- 31 Aug, 2016 1 commit
-
-
adamk authored
The only remaining use of this VariableMode is for the names of sloppy named function expressions. This patch instead uses CONST for such bindings (just as we do in strict mode) and instead marks those Variables specially. During code generation a new helper method, Variable::throw_on_const_assignment(), is called to decide whether to throw or silently ignore the assignment. Review-Url: https://codereview.chromium.org/2233673003 Cr-Commit-Position: refs/heads/master@{#39052}
-
- 25 Aug, 2016 3 commits
-
-
jarin authored
This reverts commit a55fdb1e, relands https://codereview.chromium.org/2266823002/. BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2277283002 Cr-Commit-Position: refs/heads/master@{#38917}
-
bmeurer authored
Revert of [turbofan] Insert dummy values when changing from None type. (patchset #5 id:80001 of https://codereview.chromium.org/2266823002/ ) Reason for revert: Octane/Mandreel aborts with an exception now: TypeError: __FUNCTION_TABLE__[(r2 >> 2)] is not a function Original issue's description: > [turbofan] Insert dummy values when changing from None type. > > Currently we choose the MachineRepresentation::kNone representation for > values of Type::None, and when converting values from the kNone representation > we use "impossible" conversions that will crash at runtime. This > assumes that the impossible conversions should never be hit (the only > way to produce the impossible values is to perform an always-failing > runtime check on a value, such as Smi-checking a string). Note that > this assumes that the runtime check is executed before the impossible > convesrion. > > Introducing BitwiseOr type feedback broke this in two ways: > > - we always pick Word32 representation for bitwise-or, so the > impossible conversion does not trigger (it only triggers with > None representation), and we could end up with unsupported > conversions from Word32. > > - even if we inserted impossible conversions, they are pure conversions. > Since untagging, bitwise-or operations are also pure, we could hoist > all these before the smi check of the inputs and we could hit the > impossible conversions before we get to the smi check. > > This CL addresses this by just providing dummy values for conversions > from the Type::None type. It also removes the impossible-to-* conversions. > > BUG=chromium:638132 > > Committed: https://crrev.com/c83b21ab755f1420b6da85b3ff43d7e96ead9bbe > Cr-Commit-Position: refs/heads/master@{#38883} TBR=mstarzinger@chromium.org,jarin@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2280613002 Cr-Commit-Position: refs/heads/master@{#38893}
-
jarin authored
Currently we choose the MachineRepresentation::kNone representation for values of Type::None, and when converting values from the kNone representation we use "impossible" conversions that will crash at runtime. This assumes that the impossible conversions should never be hit (the only way to produce the impossible values is to perform an always-failing runtime check on a value, such as Smi-checking a string). Note that this assumes that the runtime check is executed before the impossible convesrion. Introducing BitwiseOr type feedback broke this in two ways: - we always pick Word32 representation for bitwise-or, so the impossible conversion does not trigger (it only triggers with None representation), and we could end up with unsupported conversions from Word32. - even if we inserted impossible conversions, they are pure conversions. Since untagging, bitwise-or operations are also pure, we could hoist all these before the smi check of the inputs and we could hit the impossible conversions before we get to the smi check. This CL addresses this by just providing dummy values for conversions from the Type::None type. It also removes the impossible-to-* conversions. BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2266823002 Cr-Commit-Position: refs/heads/master@{#38883}
-
- 05 Aug, 2016 1 commit
-
-
klaasb authored
ForInPrepare checked whether the receiver object was null, undefined or converted to a JSObject. This is already done by the generated bytecode. BUG=v8:4820 LOG=n Review-Url: https://codereview.chromium.org/2208043002 Cr-Commit-Position: refs/heads/master@{#38394}
-
- 25 Jul, 2016 1 commit
-
-
jarin authored
BUG=chromium:630611 Review-Url: https://codereview.chromium.org/2177483002 Cr-Commit-Position: refs/heads/master@{#37994}
-
- 18 Jul, 2016 1 commit
-
-
neis authored
Highlights: - Record all imports and exports in the ModuleDescriptor. - Remove ImportDeclaration; instead, introduce a new variable kind for imports. - Set name on default exported anonymous functions. Still to do: declaration of namespace imports. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2108193003 Cr-Commit-Position: refs/heads/master@{#37815}
-
- 05 Jul, 2016 1 commit
-
-
verwaest authored
BUG=chromium:621147 Review-Url: https://codereview.chromium.org/2122943002 Cr-Commit-Position: refs/heads/master@{#37535}
-
- 28 Jun, 2016 1 commit
-
-
neis authored
R=adamk@chromium.org BUG= Review-Url: https://codereview.chromium.org/2081733004 Cr-Commit-Position: refs/heads/master@{#37311}
-
- 13 Jun, 2016 1 commit
-
-
neis authored
It's sufficient to bailout when seeing that the function literal is a generator or async function, as those are the only cases in which there can be yields. Also: add a comment on --turbo-from-bytecode and Ignition generators. R=mstarzinger@chromium.org BUG= Review-Url: https://codereview.chromium.org/2060843002 Cr-Commit-Position: refs/heads/master@{#36930}
-
- 18 May, 2016 1 commit
-
-
rmcilroy authored
In order to support compiling to baseline on return we need to be able to return to the actual return address. With this change this is what the Return bytecode now does, removing the need for the InterpreterExitTrampoline. This change also removes the InterpreterNotifyDeoptXXX builtins and unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this change, FullCodegenerator::State is moved to Deoptimize::BailoutState. BUG=v8:4280 LOG=N Committed: https://crrev.com/34c9626e2ee56fe805de549697ca5323aed7cb66 Cr-Commit-Position: refs/heads/master@{#36288} Review-Url: https://codereview.chromium.org/1969423002 Cr-Commit-Position: refs/heads/master@{#36310}
-
- 17 May, 2016 5 commits
-
-
rmcilroy authored
Makes LogicalNot bytecode not do the ToBoolean operation, and add support in the peephole optimizer to choose between the appropriate bytecode depending upon whether the previous bytecode emitted a boolean or not. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1985033002 Cr-Commit-Position: refs/heads/master@{#36295}
-
machenbach authored
Revert of [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline. (patchset #6 id:170001 of https://codereview.chromium.org/1969423002/ ) Reason for revert: Breaks https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm%20-%20sim/builds/619 Might only affect pure release builds? Original issue's description: > [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline. > > In order to support compiling to baseline on return we need to be able to > return to the actual return address. With this change this is what the > Return bytecode now does, removing the need for the > InterpreterExitTrampoline. > > This change also removes the InterpreterNotifyDeoptXXX builtins and > unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this > change, FullCodegenerator::State is moved to Deoptimize::BailoutState. > > BUG=v8:4280 > LOG=N > > Committed: https://crrev.com/34c9626e2ee56fe805de549697ca5323aed7cb66 > Cr-Commit-Position: refs/heads/master@{#36288} TBR=mstarzinger@chromium.org,oth@chromium.org,rmcilroy@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4280 Review-Url: https://codereview.chromium.org/1986353002 Cr-Commit-Position: refs/heads/master@{#36294}
-
rmcilroy authored
In order to support compiling to baseline on return we need to be able to return to the actual return address. With this change this is what the Return bytecode now does, removing the need for the InterpreterExitTrampoline. This change also removes the InterpreterNotifyDeoptXXX builtins and unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this change, FullCodegenerator::State is moved to Deoptimize::BailoutState. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1969423002 Cr-Commit-Position: refs/heads/master@{#36288}
-
neis authored
There's a script for finding them (tools/check-unused-bailouts.sh), but make sure you don't have an old .bailout-reason.h.swp or such around when using it... R=mstarzinger@chromium.org BUG= Review-Url: https://codereview.chromium.org/1986173004 Cr-Commit-Position: refs/heads/master@{#36287}
-
neis authored
R=mstarzinger@chromium.org, oth@chromium.org BUG= Review-Url: https://codereview.chromium.org/1988573003 Cr-Commit-Position: refs/heads/master@{#36281}
-
- 16 May, 2016 1 commit
-
-
rmcilroy authored
Remove checks for IC hotness from Ignition tiering up decision since this is not relevent for full-codegen compilation. Also make the decision about what tier we are moving to more explicit and visible in --trace-opt. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1969773002 Cr-Commit-Position: refs/heads/master@{#36260}
-
- 13 May, 2016 1 commit
-
-
oth authored
BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1979523002 Cr-Commit-Position: refs/heads/master@{#36249}
-
- 11 May, 2016 1 commit
-
-
rmcilroy authored
The previous approach taken by FastNew[Sloppy,Strict,Rest]ArgumentsStub looked at the function slot in order to skip stub frames and find the JS frame. However, stub frames do not have a function slot (in fact their fixed frame ends one slot before the JS frame's function slot). Therefore, if this location in the stub frame happens to have the function object the create arguments stubs won't skip this frame correctly. Replace this approach with one where the stub is specialized to either skip a frame if required (since there will only ever be one extra frame on Ignition the loop approach isn't necessary). BUG=v8:4928 LOG=N CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_dbg Review-Url: https://codereview.chromium.org/1949023003 Cr-Commit-Position: refs/heads/master@{#36181}
-
- 10 May, 2016 1 commit
-
-
neis authored
In the bytecode graphbuilder, translate the two generator-specific bytecodes as a couple of runtime calls for now. BUG=v8:4907 LOG=n Review-Url: https://codereview.chromium.org/1957393004 Cr-Commit-Position: refs/heads/master@{#36134}
-
- 28 Apr, 2016 1 commit
-
-
neis authored
Instead of replacing the array with an empty one after resuming, overwrite contents with a new Oddball. This will simplify the work to be done by the bytecode graphbuilder and potentially allow for more optimization. (For full-codegen generators, nothing changes.) BUG=v8:4907 LOG=n Review-Url: https://codereview.chromium.org/1923253002 Cr-Commit-Position: refs/heads/master@{#35872}
-
- 11 Apr, 2016 1 commit
-
-
mstarzinger authored
This refactors the OptimizedCompileJob class to be agnostic from the actual underlying compiler. Instead it represents a base class for all compilation jobs. The implementation is provided by the backend by just overriding the phase methods. Also note that this contains the semantics change of not falling back to Crankshaft when TurboFan optimization fails. This fallback is no longer needed and will not be supported going forward. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1872483002 Cr-Commit-Position: refs/heads/master@{#35377}
-
- 06 Apr, 2016 1 commit
-
-
bmeurer authored
Introduce a ResumeGeneratorTrampoline, which does the actual stack state reconstruction (currently always restores a fullcodegen frame), and introduce appropriate TurboFan builtins for %GeneratorPrototype%.next, %GeneratorPrototype%.return and %GeneratorPrototype%.throw based on this native builtin. Also unify the flooding in case of step-in to always work based on JSFunction and remove the special casing for JSGeneratorObject. R=mstarzinger@chromium.org, neis@chromium.org TBR=rossberg@chromium.org BUG=chromium:513471 LOG=n Review URL: https://codereview.chromium.org/1865833002 Cr-Commit-Position: refs/heads/master@{#35283}
-
- 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}
-
epertoso authored
Introduces a bytecode whose handler executes the equivalent of %_IsArray and %_IsJSReceiver without a runtime call. BUG=v8:4822 LOG=y Review URL: https://codereview.chromium.org/1645763003 Cr-Commit-Position: refs/heads/master@{#34983}
-
- 21 Mar, 2016 2 commits
-
-
oth authored
This change introduces wide prefix bytecodes to support wide (16-bit) and extra-wide (32-bit) operands. It retires the previous wide-bytecodes and reduces the number of operand types. Operands are now either scalable or fixed size. Scalable operands increase in width when a bytecode is prefixed with wide or extra-wide. The bytecode handler table is extended to 256*3 entries. The first 256 entries are used for bytecodes with 8-bit operands, the second 256 entries are used for bytecodes with operands that scale to 16-bits, and the third group of 256 entries are used for bytecodes with operands that scale to 32-bits. LOG=N BUG=v8:4747,v8:4280 Review URL: https://codereview.chromium.org/1783483002 Cr-Commit-Position: refs/heads/master@{#34955}
-
bmeurer authored
Split ToNumberStub into the entry ToNumberStub, and two new stubs, StringToNumberStub and NonNumberToNumberStub, which can be used when we already know something about the input (i.e. in various branches of the code stubs, or in TurboFan graphs). Also introduce an appropriate StringToNumber simplified operator for TurboFan, that is pure and is lowered to an invocation of the newly added StringToNumberStub. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1818923002 Cr-Commit-Position: refs/heads/master@{#34922}
-
- 16 Mar, 2016 1 commit
-
-
ishell authored
This should recover regression caused by 7f11fba7 (https://codereview.chromium.org/1739233002). TBR=bmeurer@chromium.org BUG=chromium:592692, chromium:595265 LOG=N Review URL: https://codereview.chromium.org/1807913002 Cr-Commit-Position: refs/heads/master@{#34824}
-
- 10 Mar, 2016 1 commit
-
-
mstarzinger authored
This ensures our optimizing compilers as well as the interpreter are never tasked with compiling the generator-resuming builtin methods. The corresponding intrinsics for those methods are not supported and it is not possible to provide a C++ reference implementation for them. We do this by assigning builtin function ids to them that we can recognize during the compiler dispatch. Note that this also affects the interpreter, because methods having a builtin function id assigned are not interpreted ({function_data} field is overlapping). If this ever changes we can still do an early check in the compiler dispatch (similar to the optimizing compilers) easily. This applies to the following methods: - Generator.prototype.next (calls Runtime_GeneratorNext). - Generator.prototype.return (calls Runtime_GeneratorReturn). - Generator.prototype.throw (calls Runtime_GeneratorThrow). R=neis@chromium.org BUG=v8:4681 LOG=n Review URL: https://codereview.chromium.org/1779123003 Cr-Commit-Position: refs/heads/master@{#34675}
-
- 04 Mar, 2016 1 commit
-
-
mvstanton authored
Crankshaft can't track operand/environment changes between arbitrary statements. We need that to fully support do-expressions. Instead, a subset is supported by bailing out on break statements, continue statements, and if we've made an OSR entry within a do-expression. This partial support is a good idea because do-expressions are a useful tool for desugaring during parsing. BUG= R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1769463002 Cr-Commit-Position: refs/heads/master@{#34491}
-
- 01 Mar, 2016 1 commit
-
-
jkummerow authored
When we try to optimize a function with Crankshaft, but compilation bails out, don't disable optimization for that function entirely, just disable Crankshaft, so TurboFan will be used for the next attempt. Thereby this widens the TurboFan intake valve. Review URL: https://codereview.chromium.org/1751873002 Cr-Commit-Position: refs/heads/master@{#34396}
-
- 25 Feb, 2016 1 commit
-
-
ishell authored
This optimization does not give us much (see perf try bot results associated with this CL) but complicates things a lot. The main motivation is to avoid additional complexity in tail call optimization. There are some pieces left in the deoptimizer, but I'll address this in a separate CL. Review URL: https://codereview.chromium.org/1731273003 Cr-Commit-Position: refs/heads/master@{#34273}
-