- 01 Apr, 2016 1 commit
-
-
bmeurer authored
These operators will be easier to optimize, and we can remove some unnecessary clutter from the intrinsic lowering. Drive-by-cleanup: Some alpha sorting of the type conversion operator business. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1848243002 Cr-Commit-Position: refs/heads/master@{#35197}
-
- 08 Mar, 2016 1 commit
-
-
mstarzinger authored
This adds the number of properties to be expected within the boilerplate object for object literals to the TurboFan IR. The reason is that this length can no longer be easily inferred from just the constants array. The length is potentially non-zero for empty object literals and might also diverge in the presence of constant functions or duplicate property names. For future safety and for symmetry reasons, the same change was applied to array literals as well, even though inferring the length from the constant elements is still possible there. R=verwaest@chromium.org BUG=chromium:593008 LOG=n Review URL: https://codereview.chromium.org/1772803003 Cr-Commit-Position: refs/heads/master@{#34594}
-
- 17 Feb, 2016 2 commits
-
-
mstarzinger authored
This removes the language mode parameter from all JSCall operators. The information is no longer used anywhere and is not threaded through the interpreter bytecode. We should only thread it through the bytecode if it has a semantic impact on the compilation. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1709493002 Cr-Commit-Position: refs/heads/master@{#34073}
-
mstarzinger authored
R=rossberg@chromium.org,bmeurer@chromium.org,verwaest@chromium.org BUG=v8:3956 LOG=n Review URL: https://codereview.chromium.org/1700993002 Cr-Commit-Position: refs/heads/master@{#34067}
-
- 16 Feb, 2016 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org BUG=v8:3956 LOG=n Review URL: https://codereview.chromium.org/1693833002 Cr-Commit-Position: refs/heads/master@{#34036}
-
- 11 Feb, 2016 1 commit
-
-
bmeurer authored
Add dedicated %LoadLookupSlot, %LoadLookupSlotInsideTypeof, %LoadLookupSlotForCall, %StoreLookupSlot_Sloppy and %StoreLookupSlot_Strict runtime entry points and use them appropriately in the various compilers. This way we can finally drop the machine operators from the JS graph level completely in TurboFan. Also drop the funky JSLoadDynamic operator from TurboFan, which was by now just a small wrapper around the runtime call to %LoadLookupSlot. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1683103002 Cr-Commit-Position: refs/heads/master@{#33880}
-
- 08 Feb, 2016 1 commit
-
-
bmeurer authored
Replace the somewhat awkward RestParamAccessStub, which would always call into the runtime anyway with a proper FastNewRestParameterStub, which is basically based on the code that was already there for strict arguments object materialization. But for rest parameters we could optimize even further (leading to 8-10x improvements for functions with rest parameters), by fixing the internal formal parameter count: Every SharedFunctionInfo has a formal_parameter_count field, which specifies the number of formal parameters, and is used to decide whether we need to create an arguments adaptor frame when calling a function (i.e. if there's a mismatch between the actual and expected parameters). Previously the formal_parameter_count included the rest parameter, which was sort of unfortunate, as that meant that calling a function with only the non-rest parameters still required an arguments adaptor (plus some other oddities). Now with this CL we fix, so that we do no longer include the rest parameter in that count. Thereby checking for rest parameters is very efficient, as we only need to check whether there is an arguments adaptor frame, and if not create an empty array, otherwise check whether the arguments adaptor frame has more parameters than specified by the formal_parameter_count. The FastNewRestParameterStub is written in a way that it can be directly used by Ignition as well, and with some tweaks to the TurboFan backends and the CodeStubAssembler, we should be able to rewrite it as TurboFanCodeStub in the near future. Drive-by-fix: Refactor and unify the CreateArgumentsType which was different in TurboFan and Ignition; now we have a single enum class which is used in both TurboFan and Ignition. R=jarin@chromium.org, rmcilroy@chromium.org TBR=rossberg@chromium.org BUG=v8:2159 LOG=n Review URL: https://codereview.chromium.org/1676883002 Cr-Commit-Position: refs/heads/master@{#33809}
-
- 26 Jan, 2016 1 commit
-
-
ishell authored
This CL implements PrepareForTailCall() mentioned in ES6 spec for full codegen, Crankshaft and Turbofan. When debugger is active tail calls are disabled. Tail calling can be enabled by --harmony-tailcalls flag. BUG=v8:4698 LOG=Y TBR=rossberg@chromium.org Review URL: https://codereview.chromium.org/1609893003 Cr-Commit-Position: refs/heads/master@{#33509}
-
- 18 Jan, 2016 1 commit
-
-
cbruni authored
In many places we over-specify runtime-calls by explicitly mentioning again the argument count. Except for var-args runtime-functions we can easily deduce this from the parameters in runtime.h. BUG= Review URL: https://codereview.chromium.org/1596293003 Cr-Commit-Position: refs/heads/master@{#33363}
-
- 16 Dec, 2015 1 commit
-
-
bmeurer authored
Introduce JSCreateIterResultObject operator, as a way to optimize the %_CreateIterResultObject intrinsic, which is used to provide uniform, non-polymorphic result objects for iterators (and generators). We cannot utilize the existing JSCreate operator here, because there's no constructor function for iterator result objects (as required by the spec). R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1531753002 Cr-Commit-Position: refs/heads/master@{#32901}
-
- 03 Dec, 2015 1 commit
-
-
bmeurer authored
Extract ToBoolean hints from the fullcodegen code object and put them into the ToBoolean nodes created by the AstGraphBuilder. We currently do not yet consume this feedback, that will be done in a followup CL. R=mstarzinger@chromium.org BUG=v8:4583 LOG=n Review URL: https://codereview.chromium.org/1494973002 Cr-Commit-Position: refs/heads/master@{#32576}
-
- 02 Dec, 2015 1 commit
-
-
bmeurer authored
Also remove the ResultMode from ToBooleanStub and always return true or false and use the same mechanism in fullcodegen. This is in preparation for adding ToBoolean hints to TurboFan. Drive-by-fix: We can use the power of the ToBooleanIC in TurboFan now that the ResultMode is gone (and the runtime always returns true or false from the miss handler). R=mstarzinger@chromium.org BUG=v8:4583 LOG=n Review URL: https://codereview.chromium.org/1491223002 Cr-Commit-Position: refs/heads/master@{#32524}
-
- 01 Dec, 2015 1 commit
-
-
bmeurer authored
This is the initial support for binary operation hints on javascript binary operators, i.e. JSAdd, JSSubtract and so on. The hints are extracted from the fullcodegen code object before graph building and the AstGraphBuilder puts those hints on the operators if available. R=jarin@chromium.org BUG=v8:4583 LOG=n Review URL: https://codereview.chromium.org/1487973002 Cr-Commit-Position: refs/heads/master@{#32443}
-
- 27 Nov, 2015 3 commits
-
-
bmeurer authored
Previously all contexts had a link to the global object, but what is required in most cases (except for the global load, store and delete case) is the native context. This also removes the second dummy global object that was still linked to every native context. We will add a different mechanism to ensure that builtins do not pollute the actual global object during bootstrapping. Drive-by-fix: Unify some MacroAssembler magic and drop obsolete stuff. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_rel R=yangguo@chromium.org,mstarzinger@chromium.org Committed: https://crrev.com/d290f204938295bfecc5c8e645ccfcff6e80ddb8 Cr-Commit-Position: refs/heads/master@{#32375} Review URL: https://codereview.chromium.org/1480003002 Cr-Commit-Position: refs/heads/master@{#32381}
-
machenbach authored
Revert of [runtime] Replace global object link with native context link in all contexts. (patchset #3 id:40001 of https://codereview.chromium.org/1480003002/ ) Reason for revert: [Sheriff] Breaks: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/5472 Original issue's description: > [runtime] Replace global object link with native context link in all contexts. > > Previously all contexts had a link to the global object, but what is > required in most cases (except for the global load, store and delete > case) is the native context. > > This also removes the second dummy global object that was still linked > to every native context. We will add a different mechanism to ensure > that builtins do not pollute the actual global object during > bootstrapping. > > Drive-by-fix: Unify some MacroAssembler magic and drop obsolete stuff. > > R=yangguo@chromium.org > > Committed: https://crrev.com/d290f204938295bfecc5c8e645ccfcff6e80ddb8 > Cr-Commit-Position: refs/heads/master@{#32375} TBR=yangguo@chromium.org,mstarzinger@chromium.org,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1478303002 Cr-Commit-Position: refs/heads/master@{#32377}
-
bmeurer authored
Previously all contexts had a link to the global object, but what is required in most cases (except for the global load, store and delete case) is the native context. This also removes the second dummy global object that was still linked to every native context. We will add a different mechanism to ensure that builtins do not pollute the actual global object during bootstrapping. Drive-by-fix: Unify some MacroAssembler magic and drop obsolete stuff. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1480003002 Cr-Commit-Position: refs/heads/master@{#32375}
-
- 25 Nov, 2015 3 commits
-
-
machenbach authored
Reland of [turbofan] Introduce proper JSCreateLiteralRegExp operator. (patchset #1 id:1 of https://codereview.chromium.org/1472423002/ ) Reason for revert: [Sheriff] Wrong revert. Original issue's description: > Revert of [turbofan] Introduce proper JSCreateLiteralRegExp operator. (patchset #2 id:20001 of https://codereview.chromium.org/1475973002/ ) > > Reason for revert: > Broke "V8 Linux64 GC Stress - custom snapshot". > > http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/2824 > > Original issue's description: > > [turbofan] Introduce proper JSCreateLiteralRegExp operator. > > > > This adds a new JavaScript level operator for regexp literal creation, > > similar to what we already have for array and object literals. This > > once gets lowered to a call to the FastCloneRegExpStub always. > > > > R=mstarzinger@chromium.org > > > > Committed: https://crrev.com/8659c5d1d287177369ce179a8d0b910192d840d9 > > Cr-Commit-Position: refs/heads/master@{#32288} > > TBR=mstarzinger@chromium.org,bmeurer@chromium.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > > Committed: https://crrev.com/168683d270d44f05f28acaf7d34c32d0250d2a4c > Cr-Commit-Position: refs/heads/master@{#32292} TBR=mstarzinger@chromium.org,bmeurer@chromium.org,ishell@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1478823002 Cr-Commit-Position: refs/heads/master@{#32293}
-
ishell authored
Revert of [turbofan] Introduce proper JSCreateLiteralRegExp operator. (patchset #2 id:20001 of https://codereview.chromium.org/1475973002/ ) Reason for revert: Broke "V8 Linux64 GC Stress - custom snapshot". http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/2824 Original issue's description: > [turbofan] Introduce proper JSCreateLiteralRegExp operator. > > This adds a new JavaScript level operator for regexp literal creation, > similar to what we already have for array and object literals. This > once gets lowered to a call to the FastCloneRegExpStub always. > > R=mstarzinger@chromium.org > > Committed: https://crrev.com/8659c5d1d287177369ce179a8d0b910192d840d9 > Cr-Commit-Position: refs/heads/master@{#32288} TBR=mstarzinger@chromium.org,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1472423002 Cr-Commit-Position: refs/heads/master@{#32292}
-
bmeurer authored
This adds a new JavaScript level operator for regexp literal creation, similar to what we already have for array and object literals. This once gets lowered to a call to the FastCloneRegExpStub always. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1475973002 Cr-Commit-Position: refs/heads/master@{#32288}
-
- 24 Nov, 2015 1 commit
-
-
bmeurer authored
Put the constant parts of the CreateLiteralArray and CreateLiteralObject operators into CreateLiteralParameters and properly use them everywhere. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1475613002 Cr-Commit-Position: refs/heads/master@{#32207}
-
- 20 Nov, 2015 1 commit
-
-
bmeurer authored
Introduce a JSCreateArray operator that represents the Array constructor, and lower call and construct calls to the Array constructor to JSCreateArray. Currently we don't yet replace that with an inline allocation, but always use the specialized stubs for the Array constructor. This saves a lot of unnecessary deopts and elements transitions because now we can actually consume the allocation site feedback for the transitions. R=mstarzinger@chromium.org BUG=v8:4470 LOG=n Review URL: https://codereview.chromium.org/1466643002 Cr-Commit-Position: refs/heads/master@{#32145}
-
- 18 Nov, 2015 1 commit
-
-
mstarzinger authored
This ensures the class in question specifies the correct equality and hashing function when instantiated. Note that this introduces two new structs (i.e. OpEqualTo and OpHash) which can be used for defaults within OpParameter as well. R=titzer@chromium.org,bmeurer@chromium.org TEST=cctest/test-operator Review URL: https://codereview.chromium.org/1455913003 Cr-Commit-Position: refs/heads/master@{#32080}
-
- 12 Nov, 2015 2 commits
-
-
mstarzinger authored
This passes both, the actual constructor and the original constructor, to nodes having the {JSCreate} operator. This is required for allocating properly subclassed implicit receiver objects. R=verwaest@chromium.org BUG=v8:4544 LOG=n Review URL: https://codereview.chromium.org/1434873004 Cr-Commit-Position: refs/heads/master@{#31955}
-
mstarzinger authored
This implements a first version of support for constructor call inlining in the inlining machinery. For now we can only inline calls where the actual constructor and the original constructor coincide (i.e. no super constructor calls). Note that the target of a super constructor call is loaded with a runtime call, so there is no way for it to be constant promoted at the moment. R=bmeurer@chromium.org BUG=v8:4544 LOG=n Review URL: https://codereview.chromium.org/1435873002 Cr-Commit-Position: refs/heads/master@{#31954}
-
- 09 Nov, 2015 2 commits
-
-
mstarzinger authored
This switches loading and storing of the message object within the Isolate to use JavaScript operators built by the JSOperatorBuilder instead of machine operators. This is a preparation for a stricter representation selection for loads and stores. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1412443010 Cr-Commit-Position: refs/heads/master@{#31879}
-
bmeurer authored
Introduce receiver conversion mode specialization for the Call and CallFunction builtins, so we can specialize the builtin functionality (actually an optimization only) based on static information from the callsite (this is basically a superset of the optimizations that were available with the CallFunctionStub and CallICStub, except that these optimizations are correct now). This fixes a regression introduced by the removal of CallFunctionStub, for programs that call a lot. R=yangguo@chromium.org BUG=chromium:552244 LOG=n Review URL: https://codereview.chromium.org/1436493002 Cr-Commit-Position: refs/heads/master@{#31871}
-
- 04 Nov, 2015 1 commit
-
-
bmeurer authored
Use the Call builtin instead, which does the right thing(TM) always, especially since the CallFunctionStub is going away. R=jarin@chromium.org BUG=v8:4413 LOG=n Review URL: https://codereview.chromium.org/1410853007 Cr-Commit-Position: refs/heads/master@{#31794}
-
- 02 Nov, 2015 1 commit
-
-
mstarzinger authored
This moves the optimization for variables loads targeting lookup slots in DYNAMIC_GLOBAL and DYNAMIC_LOCAL mode into the AstGraphBuilder. This way we implicitly get all optimizations that target global loads and context loads for free. R=bmeurer@chromium.org BUG=v8:4513 LOG=n Review URL: https://codereview.chromium.org/1424943008 Cr-Commit-Position: refs/heads/master@{#31713}
-
- 28 Oct, 2015 1 commit
-
-
bmeurer authored
Typed lowering can lower JSConvertReceiver either based on the operator hints or the (statically) known receiver type. R=jarin@chromium.org BUG=chromium:548557, v8:4493, v8:4470 LOG=n Review URL: https://codereview.chromium.org/1426893002 Cr-Commit-Position: refs/heads/master@{#31618}
-
- 27 Oct, 2015 1 commit
-
-
mstarzinger authored
This introduces a JSConvertReceiver operator to model the implicit conversion of receiver values for sloppy callees. It is used by the JSInliner for now, but can also be used to model direction function calls that bypass call stubs. Also note that a hint is passed to said operator whenever the source structure constrains the receiver value type. This hint allows for optimizations in the lowering of the operator. The underlying specification in ES6, section 9.2.1.2 is the basis for this implementation. R=bmeurer@chromium.org TEST=mjsunit/compiler/receiver-conversion BUG=v8:4493, v8:4470 LOG=n Review URL: https://codereview.chromium.org/1412223015 Cr-Commit-Position: refs/heads/master@{#31598}
-
- 22 Oct, 2015 2 commits
-
-
ishell authored
Remove support for "loads and stores to global vars through property cell shortcuts installed into parent script context" from all compilers. The plan is to implement the same idea using vector IC machinery. Stubs implementations and scopes modifications are left untouched for now. Review URL: https://codereview.chromium.org/1419823003 Cr-Commit-Position: refs/heads/master@{#31458}
-
bmeurer authored
Use a unified NamedAccess operator parameter for both JSLoadNamed and JSStoreNamed, and similar use PropertyAccess for both JSLoadProperty and JSStoreProperty. Review URL: https://codereview.chromium.org/1418993002 Cr-Commit-Position: refs/heads/master@{#31456}
-
- 13 Oct, 2015 1 commit
-
-
mstarzinger authored
This changes hashing and comparison functions for JSCreateClosure operators to be based in the handle location instead of the referenced object identity. This is in sync with all other JS operators. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1388233007 Cr-Commit-Position: refs/heads/master@{#31225}
-
- 02 Oct, 2015 1 commit
-
-
mstarzinger authored
This lowers JSCreateFunctionContext nodes to call the above stub for help with allocating function contexts when possible. It also contains an implementation for inlined allocations of such contexts, which is still behind a flag until inlined allocations are ready for prime time. TEST=unittests/JSTypedLoweringTest.JSCreateFunctionContext R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1380113002 Cr-Commit-Position: refs/heads/master@{#31068}
-
- 01 Oct, 2015 1 commit
-
-
ishell authored
This CL also allows to use arbitrary number of feedback vector elements for particular slot kind. Review URL: https://codereview.chromium.org/1370303004 Cr-Commit-Position: refs/heads/master@{#31050}
-
- 29 Sep, 2015 2 commits
-
-
mstarzinger authored
This changes the operators for JSCreate[Block|Script]Context to take their ScopeInfo as a static parameter as opposed to a value input and in turn allows for easier access to that parameter during lowerings. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1379593002 Cr-Commit-Position: refs/heads/master@{#31009}
-
jarin authored
This is necessary because these operators can read heap (equality can actually write heap when flattening strings). BUG=v8:4446 LOG=n Review URL: https://codereview.chromium.org/1374683002 Cr-Commit-Position: refs/heads/master@{#31005}
-
- 16 Sep, 2015 1 commit
-
-
mstarzinger authored
This makes sure that the arguments object materialization in the method prologue is composable with respect to inlining. The generic runtime functions materializing those objects now respect the deoptimization information when reconstructing the original arguments. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1340313003 Cr-Commit-Position: refs/heads/master@{#30766}
-
- 15 Sep, 2015 1 commit
-
-
mstarzinger authored
This models the materialization of arguments objects in the prologue within the IR graph. It will in turn allow us to optimize access to these objects and also correctly handle them with inlining. R=bmeurer@chromium.org,mvstanton@chromium.org TEST=cctest/test-run-jsobjects/Arguments* Review URL: https://codereview.chromium.org/1344553003 Cr-Commit-Position: refs/heads/master@{#30735}
-
- 10 Sep, 2015 1 commit
-
-
bmeurer authored
There are now two runtime entries %NewClosure and %NewClosure_Tenured, with the same signature (one parameter, the SharedFunctionInfo, and the context of the caller). Also remove the HFunctionLiteral special case instruction from Crankshaft, as HCallWithDescriptor with FastNewClosureStub or HCallRuntime with either %NewClosure or %NewClosure_Tenured can easily do that for you. Also remove the redundant context parameter from the JSCreateClosure operator, because every JS operator already takes a context input. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_dbg Review URL: https://codereview.chromium.org/1329293003 Cr-Commit-Position: refs/heads/master@{#30671}
-