- 20 Sep, 2016 1 commit
-
-
mvstanton authored
Full code uses patching ICs for this feedback, and the interpreter uses the type feedback vector. It's a good idea to code the vector slots appropriately as ICs so that the runtime profiler can better gauge if the function is ready for tiering up from Ignition to TurboFan. As is, the feedback is stored in "general" slots which can't be characterized by the runtime profiler into feedback states. This CL addresses that problem. Note that it's also important to carefully exclude these slots from the profiler's consideration when determining if you want to optimize from Full code. BUG= Review-Url: https://codereview.chromium.org/2342853002 Cr-Commit-Position: refs/heads/master@{#39555}
-
- 14 Sep, 2016 1 commit
-
-
bmeurer authored
Extract the call counts from the type feedback vector during graph building (either via the AstGraphBuilder or the BytecodeGraphBuilder), and put them onto the JSCallFunction and JSCallConstruct operators, so that they work even across inlinine through .apply and .call (which was previously hacked by creating a temporary type feedback vector for those). The next logic step will be to make those call counts into real relative call frequencies (also during graph building), so that we can make inlining decisions that make sense for the function being optimized (where absolute values are misleading). R=jarin@chromium.org BUG=v8:5267,v8:5372 Review-Url: https://codereview.chromium.org/2330883002 Cr-Commit-Position: refs/heads/master@{#39400}
-
- 06 Sep, 2016 1 commit
-
-
jochen authored
This will allow for chaining ScopeInfos together to form the same chains as contexts chains currently do. BUG=v8:5215 R=mstarzinger@chromium.org,marja@chromium.org,bmeurer@chromium.org,rmcilroy@chromium.org Review-Url: https://codereview.chromium.org/2314483002 Cr-Commit-Position: refs/heads/master@{#39192}
-
- 05 Sep, 2016 1 commit
-
-
jochen authored
Since the extension field is already used for the catch name, store a ContextExtension there instead. In the future, this will allow for chaining ScopeInfos together, so we no longer need a context chain for lazy parsing / compilation. BUG=v8:5215 R=bmeurer@chromium.org,neis@chromium.org,marja@chromium.org Review-Url: https://codereview.chromium.org/2302013002 Cr-Commit-Position: refs/heads/master@{#39164}
-
- 29 Aug, 2016 1 commit
-
-
bmeurer authored
These JavaScript operators were special hacks to ensure that we always operate on Smis for the magic for-in index variable, but this never really worked in the OSR case, because the OsrValue for the index variable didn't have the proper information (that we have for the JSForInPrepare in the non-OSR case). Now that we have loop induction variable analysis and binary operation hints, we can just use JSLessThan and JSAdd instead with appropriate Smi hints, which handle the OSR case by inserting Smi checks (that are always true). Thanks to OSR deconstruction and loop peeling these Smi checks will be hoisted so they don't hurt the OSR case too much. Drive-by-change: Rename the ForInDone bytecode to ForInContinue, since we have to lower it to JSLessThan to get the loop induction variable goodness. R=epertoso@chromium.org BUG=v8:5267 Review-Url: https://codereview.chromium.org/2289613002 Cr-Commit-Position: refs/heads/master@{#38968}
-
- 28 Aug, 2016 2 commits
-
-
hablich authored
Reland of Fix compiler warnings on "make android_arm" (patchset #1 id:1 of https://codereview.chromium.org/2286163002/ ) Reason for revert: Roll was unstuck before the revert landed => reland Original issue's description: > Revert of Fix compiler warnings on "make android_arm" (patchset #1 id:1 of https://codereview.chromium.org/2264283007/ ) > > Reason for revert: > Speculative revert because of roll blocker https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20debug/builds/2241 > > Original issue's description: > > Fix compiler warnings on "make android_arm" > > > > Committed: https://crrev.com/3e809a6129d0097529c885579ac46e4acf4e99f6 > > Cr-Commit-Position: refs/heads/master@{#38937} > > TBR=bmeurer@chromium.org,jkummerow@chromium.org > # Not skipping CQ checks because original CL landed more than 1 days ago. > > Committed: https://crrev.com/d992c1f52f116930239ed90cc033442047e789b4 > Cr-Commit-Position: refs/heads/master@{#38961} TBR=bmeurer@chromium.org,jkummerow@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/2285113002 Cr-Commit-Position: refs/heads/master@{#38962}
-
hablich authored
Revert of Fix compiler warnings on "make android_arm" (patchset #1 id:1 of https://codereview.chromium.org/2264283007/ ) Reason for revert: Speculative revert because of roll blocker https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20debug/builds/2241 Original issue's description: > Fix compiler warnings on "make android_arm" > > Committed: https://crrev.com/3e809a6129d0097529c885579ac46e4acf4e99f6 > Cr-Commit-Position: refs/heads/master@{#38937} TBR=bmeurer@chromium.org,jkummerow@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. Review-Url: https://codereview.chromium.org/2286163002 Cr-Commit-Position: refs/heads/master@{#38961}
-
- 26 Aug, 2016 1 commit
-
-
jkummerow authored
Review-Url: https://codereview.chromium.org/2264283007 Cr-Commit-Position: refs/heads/master@{#38937}
-
- 09 Aug, 2016 1 commit
-
-
bmeurer authored
Remove the useless information from the BinaryOperationHints and CompareOperationHints, and cache the JS operators appropriately. R=epertoso@chromium.org Review-Url: https://codereview.chromium.org/2228983002 Cr-Commit-Position: refs/heads/master@{#38506}
-
- 16 Jun, 2016 1 commit
-
-
jarin authored
Review-Url: https://codereview.chromium.org/2035383003 Cr-Commit-Position: refs/heads/master@{#37024}
-
- 02 Jun, 2016 1 commit
-
-
jarin authored
This introduces optimized number operations based on type feedback. Summary of changes: 1. Typed lowering produces SpeculativeNumberAdd/Subtract for JSAdd/Subtract if there is suitable feedback. The speculative nodes are connected to both the effect chain and the control chain and they retain the eager frame state. 2. Simplified lowering now executes in three phases: a. Propagation phase computes truncations by traversing the graph from uses to definitions until checkpoint is reached. It also records type-check decisions for later typing phase, and computes representation. b. The typing phase computes more precise types base on the speculative types (and recomputes representation for affected nodes). c. The lowering phase performs lowering and inserts representation changes and/or checks. 3. Effect-control linearization lowers the checks to machine graphs. Notes: - SimplifiedLowering will be refactored to have handling of each operation one place and with clearer input/output protocol for each sub-phase. I would prefer to do this once we have more operations implemented, and the pattern is clearer. - The check operations (Checked<A>To<B>) should have some flags that would affect the kind of truncations that they can handle. E.g., if we know that a node produces a number, we can omit the oddball check in the CheckedTaggedToFloat64 lowering. - In future, we want the typer to reuse the logic from OperationTyper. BUG=v8:4583 LOG=n Review-Url: https://codereview.chromium.org/1921563002 Cr-Commit-Position: refs/heads/master@{#36674}
-
- 20 May, 2016 1 commit
-
-
neis authored
Introduce three new JS operators in Turbofan: - JSGeneratorStore is used in implementing Ignition's SuspendGenerator bytecode. - JSGeneratorRestoreContinuation and JSGeneratorRestoreRegister are used in implementing Ignition's ResumeGenerator bytecode. Remove the runtime functions that were used to implement these bytecodes before. BUG=v8:4907 Review-Url: https://codereview.chromium.org/1991203002 Cr-Commit-Position: refs/heads/master@{#36395}
-
- 18 May, 2016 1 commit
-
-
neis authored
R=bmeurer@chromium.org BUG= Review-Url: https://codereview.chromium.org/1981323002 Cr-Commit-Position: refs/heads/master@{#36312}
-
- 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}
-
- 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}
-