- 08 Jun, 2015 3 commits
-
-
mvstanton authored
BUG= Review URL: https://codereview.chromium.org/1160173004 Cr-Commit-Position: refs/heads/master@{#28827}
-
jarin authored
This unifies methods Deoptimizer::DoTranslateCommand, Deotpimizer::DoTranslateObject and the arguments object materializer. To unify these, we have to separate reading of the input frame from writing to the output frame because the argument materializer does not write to output frames. Instead, we now deoptimize in following stages: 1. Read out the input frame/registers, decode them using the translations from the deoptimizer and store them in the deoptimizer (Deoptimizer::translated_state_). This is done in TranslatedState::Init. 2. Write out into the output frame buffer all the values that do not require allocation. We also remember references to the values that require materialization. As before, this is done in Deoptimizer::DoCompute*Frame method, but instead calling to DoTranslateCommand, we use the translated frame to obtain the values and write them to the output frames. 3. The platform specific code then sets up the output frames and calls into the deoptimization notification. This has not been changed at all. 4. Once the stack is setup, we handlify all the references in the saved translated values (TranslatedState::Prepare). 5. Finally, we materialize all the values we remembered in step (1) and write them to their frames on the stack (using the TranslatedValue::GetValue method). BUG= Review URL: https://codereview.chromium.org/1136223004 Cr-Commit-Position: refs/heads/master@{#28826}
-
mvstanton authored
BUG= R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/1154303008 Cr-Commit-Position: refs/heads/master@{#28825}
-
- 04 Jun, 2015 2 commits
-
-
arv authored
Before this we had 3 super related lexical bindings that got injected into method bodies: .home_object, .this_function, and new.target. With this change we get rid of the .home_object one in favor of using .this_function[home_object_symbol] which allows some simplifications throughout the code base. BUG=v8:3768 LOG=N R=adamk@chromium.org, wingo@igalia.com Review URL: https://codereview.chromium.org/1154103005 Cr-Commit-Position: refs/heads/master@{#28802}
-
mbrandy authored
Embed constant pools within their corresponding Code objects. This removes support for out-of-line constant pools in favor of the new approach -- the main advantage being that it eliminates the need to allocate and manage separate constant pool array objects. Currently supported on PPC and ARM. Enabled by default on PPC only. This yields a 6% improvment in Octane on PPC64. R=bmeurer@chromium.org, rmcilroy@chromium.org, michael_dawson@ca.ibm.com BUG=chromium:478811 LOG=Y Review URL: https://codereview.chromium.org/1162993006 Cr-Commit-Position: refs/heads/master@{#28801}
-
- 03 Jun, 2015 3 commits
-
-
mstarzinger authored
This fixes a corner-case where arrow functions that require a context allocate none, because there are no additional slots allocated. Note that this didn't happen with true function scopes because they always had at least the receiver slot. The outcome was a context chain that no longer was in sync with the scope chain, hence context slot loads were bogus. This is observable using the DYNAMIC_LOCAL optimization in all compilers. R=rossberg@chromium.org,wingo@igalia.com TEST=mjsunit/harmony/regress/regress-4160 BUG=v8:4160 LOG=N Review URL: https://codereview.chromium.org/1146063006 Cr-Commit-Position: refs/heads/master@{#28788}
-
bmeurer authored
Previously the %_DateField intrinsic would also check the object and throw an exception if you happen to pass something that is not a valid JSDate, which (a) violates our policy for instrinsics and (b) is hard to optimize in TurboFan (even Crankshaft has a hard time, but there we will never inline the relevant builtins, so it doesn't show up). The throwing part is now a separate intrinsics %_ThrowIfNotADate that throws an exception in full codegen and deoptimizes in Crankshaft, which means the code for the current use cases is roughly the same (modulo some register renamings/gap moves). R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/1167813003 Cr-Commit-Position: refs/heads/master@{#28782}
-
bmeurer authored
Revert of Embedded constant pools. (patchset #12 id:220001 of https://codereview.chromium.org/1131783003/) Reason for revert: Breaks Linux nosnap cctest/test-api/FastReturnValuesWithProfiler, see http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug%20-%202/builds/609/steps/Check/logs/FastReturnValuesWithP.. Original issue's description: > Add support for Embedded Constant Pools for PPC and Arm > > Embed constant pools within their corresponding Code > objects. > > This removes support for out-of-line constant pools in favor > of the new approach -- the main advantage being that it > eliminates the need to allocate and manage separate constant > pool array objects. > > Currently supported on PPC and ARM. Enabled by default on > PPC only. > > This yields a 6% improvment in Octane on PPC64. > > R=danno@chromium.org, svenpanne@chromium.org, bmeurer@chromium.org, rmcilroy@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com > BUG=chromium:478811 > LOG=Y > > Committed: https://crrev.com/a9404029343d65f146e3443f5280c40a97e736af > Cr-Commit-Position: refs/heads/master@{#28770} TBR=rmcilroy@chromium.org,ishell@chromium.org,rodolph.perfetta@arm.com,mbrandy@us.ibm.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:478811 Review URL: https://codereview.chromium.org/1155703006 Cr-Commit-Position: refs/heads/master@{#28772}
-
- 02 Jun, 2015 4 commits
-
-
mbrandy authored
Embed constant pools within their corresponding Code objects. This removes support for out-of-line constant pools in favor of the new approach -- the main advantage being that it eliminates the need to allocate and manage separate constant pool array objects. Currently supported on PPC and ARM. Enabled by default on PPC only. This yields a 6% improvment in Octane on PPC64. R=danno@chromium.org, svenpanne@chromium.org, bmeurer@chromium.org, rmcilroy@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com BUG=chromium:478811 LOG=Y Review URL: https://codereview.chromium.org/1131783003 Cr-Commit-Position: refs/heads/master@{#28770}
-
arv authored
This splits the SuperReference AST node into SuperPropertyReference and SuperCallReference. The super call reference node consists of three unresolved vars to this, new.target and this_function. These gets declared when the right function is entered and if it is in use. The variables gets assigned in FullCodeGenerator::Generate. This is a revert of the revert 88b1c917 BUG=v8:3768 LOG=N R=wingo@igalia.com, adamk@chromium.org Review URL: https://codereview.chromium.org/1168513004 Cr-Commit-Position: refs/heads/master@{#28769}
-
conradw authored
Copied, with permission, from https://codereview.chromium.org/1151853003/ Initial patch set is an unmodified copy, rebased on top of related fixes from https://codereview.chromium.org/1158933002/ Subsequent patch sets contain fixes for remaining bugs in the CL. BUG=v8:3956 LOG=N Review URL: https://codereview.chromium.org/1152093003 Cr-Commit-Position: refs/heads/master@{#28760}
-
mvstanton authored
It's necessary to do this in order to know how many type feedback vector slots we should allocate for the object literal. BUG= Review URL: https://codereview.chromium.org/1165463007 Cr-Commit-Position: refs/heads/master@{#28749}
-
- 01 Jun, 2015 4 commits
-
-
erikcorry authored
When compiling on a laptop I like to concatenate the small test files. This makes a big difference to compile times. These changes make that easier. R=ulan@chromium.org BUG= Review URL: https://codereview.chromium.org/1163803002 Cr-Commit-Position: refs/heads/master@{#28742}
-
arv authored
Revert of [es6] Super call in arrows and eval (patchset #5 id:100001 of https://codereview.chromium.org/1146863007/) Reason for revert: Fails http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug%20-%201/builds/579/steps/Check/logs/super Original issue's description: > [es6] Super call in arrows and eval > > This splits the SuperReference AST node into SuperPropertyReference and > SuperCallReference. The super call reference node consists of three > unresolved vars to this, new.target and this_function. These gets > declared when the right function is entered and if it is in use. The > variables gets assigned in FullCodeGenerator::Generate. > > BUG=v8:3768 > LOG=N > R=wingo@igalia.com, adamk@chromium.org > > Committed: https://crrev.com/673c0516ab96f24343bbb26e0afc2846b5a679df > Cr-Commit-Position: refs/heads/master@{#28731} TBR=wingo@igalia.com,adamk@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:3768 Review URL: https://codereview.chromium.org/1161243005 Cr-Commit-Position: refs/heads/master@{#28735}
-
arv authored
This splits the SuperReference AST node into SuperPropertyReference and SuperCallReference. The super call reference node consists of three unresolved vars to this, new.target and this_function. These gets declared when the right function is entered and if it is in use. The variables gets assigned in FullCodeGenerator::Generate. BUG=v8:3768 LOG=N R=wingo@igalia.com, adamk@chromium.org Review URL: https://codereview.chromium.org/1146863007 Cr-Commit-Position: refs/heads/master@{#28731}
-
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
-
-
rodolph.perfetta authored
vmov immediate was always emitting movt for some immediates wether or not the CPU supported ARMv7. BUG=v8:4019 LOG=n Review URL: https://codereview.chromium.org/1160093002 Cr-Commit-Position: refs/heads/master@{#28691}
-
- 28 May, 2015 1 commit
-
-
bmeurer authored
The list of inlined functions is used in exactly two places - for live edit and to prevent code flushing for inlined functions - and those are fine with SharedFunctionInfo and don't require a closure. This is one additional step towards inlining based on SharedFunctionInfo instead of JSFunction. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1145893003 Cr-Commit-Position: refs/heads/master@{#28672}
-
- 27 May, 2015 1 commit
-
-
mvstanton authored
Also adapt code generation to pass the slot to the store/keyed-store ic. AST nodes ObjectLiteral, Assignment, ForEach, Call and CountOperation now include one or more feedback vector ic slot ids. BUG= Review URL: https://codereview.chromium.org/1161623002 Cr-Commit-Position: refs/heads/master@{#28659}
-
- 26 May, 2015 4 commits
-
-
arv authored
When we enter a method that needs access to the [[HomeObject]] we allocate a local variable `.home_object` and assign it the value from the [[HomeObject]] private symbol. Something along the lines of: method() { var .home_object = %ThisFunction()[home_object_symbol]; ... } BUG=v8:3867, v8:4031 LOG=N Review URL: https://codereview.chromium.org/1135243004 Cr-Commit-Position: refs/heads/master@{#28644}
-
erikcorry authored
* Hash code is now just done with a private own symbol instead of the hidden string, which predates symbols. * In the long run we should do all hidden properties this way and get rid of the hidden magic 0-length string with the zero hash code. The advantages include less complexity and being able to do things from JS in a natural way. * Initially, the performance of weak set regressed, because it's a little harder to do the lookup in C++. Instead of heroics in C++ to make things faster I moved some functionality into JS and got the performance back. JS is supposed to be good at looking up named properties on objects. * This also changes hash codes of Smis so that they are always Smis. Performance figures are in the comments to the code review. Summary: Most of js-perf-test/Collections is neutral. Set and Map with object keys are 40-50% better. WeakMap is -5% and WeakSet is +9%. After the measurements, I fixed global proxies, which cost 1% on most tests and 5% on the weak ones :-(. In the code review comments is a patch with an example of the heroics we could do in C++ to make lookup faster (I hope we don't have to do this. Instead of checking for the property, then doing a new lookup to insert it, we could do one lookup and handle the addition immediately). With the current benchmarks above this buys us nothing, but if we go back to doing more lookups in C++ instead of in stubs and JS then it's a win. In a similar vein we could give the magic zero hash code to the hash code symbol. Then when we look up the hash code we would sometimes see the table with all the hidden properties. This dual use of the field for either the hash code or the table with all hidden properties and the hash code is rather ugly, and this CL gets rid of it. I'd be loath to bring it back. On the benchmarks quoted above it's slightly slower than moving the hash code lookup to JS like in this CL. One worry is that the benchmark results above are more monomorphic than real world code, so may be overstating the performance benefits of moving to JS. I think this is part of a general issue we have with handling polymorphic code in JS and any solutions there will benefit this solution, which boils down to regular property access. Any improvement there will lift all boats. R=adamk@chromium.org, verwaest@chromium.org BUG= Review URL: https://codereview.chromium.org/1149863005 Cr-Commit-Position: refs/heads/master@{#28622}
-
mvstanton authored
The reason is that this information will be needed to compute the number of vector ic slots done at numbering time. BUG= Review URL: https://codereview.chromium.org/1150323002 Cr-Commit-Position: refs/heads/master@{#28615}
-
yangguo authored
R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1150293002 Cr-Commit-Position: refs/heads/master@{#28612}
-
- 22 May, 2015 1 commit
-
-
mvstanton authored
Also introduce new interface descriptors for the trampoline and full versions of those stubs. Currently, the stubs aren't functional. BUG= Review URL: https://codereview.chromium.org/1149903005 Cr-Commit-Position: refs/heads/master@{#28597}
-
- 21 May, 2015 1 commit
-
-
arv authored
This allows you to put iterables into your array literals and the will get spread into the array. let x = [0, ...range(1, 3)]; // [0, 1, 2] This is done by treating the array literal up to the first spread element as usual, including using a boiler plate array, and then appending the remaining expressions and rest expressions. BUG=v8:3018 LOG=N Review URL: https://codereview.chromium.org/1125183008 Cr-Commit-Position: refs/heads/master@{#28534}
-
- 20 May, 2015 2 commits
-
-
mvstanton authored
Also removed ornamentation like "VectorRaw" from stub names. BUG= Review URL: https://codereview.chromium.org/1144063002 Cr-Commit-Position: refs/heads/master@{#28516}
-
svenpanne authored
Alas, this involved quite a bit of copy-n-paste between the architectures, but this is caused by the very convoluted relationships, lifetimes and distribution of responsibilities. This should really be cleaned up by moving code around and using STL maps, but that's not really a priority right now. Bonus: Fixed leaks in the ARM64 disassembler tests. Review URL: https://codereview.chromium.org/1132943007 Cr-Commit-Position: refs/heads/master@{#28496}
-
- 19 May, 2015 3 commits
-
-
arv authored
Also check whether the arguments count is smaller than the number of required parameters which is the same as the SharedFunctionInfo length. BUG=v8:4102 LOG=N R=rossberg@chromium.org Review URL: https://codereview.chromium.org/1133933003 Cr-Commit-Position: refs/heads/master@{#28491}
-
wingo authored
This reapplies https://codereview.chromium.org/1136073002, along with the followups: Remove Scope::scope_uses_this_ flag https://codereview.chromium.org/1128963005 and PPC: Resolve references to "this" the same way as normal variables https://codereview.chromium.org/1134073003 R=rossberg@chromium.org LOG=N BUG= Review URL: https://codereview.chromium.org/1136883006 Cr-Commit-Position: refs/heads/master@{#28458} Review URL: https://codereview.chromium.org/1140633003 Cr-Commit-Position: refs/heads/master@{#28484}
-
wingo authored
Revert of Reapply "Resolve references to "this" the same way as normal variables"" (patchset #2 id:20001 of https://codereview.chromium.org/1136883006/) Reason for revert: Something is deserializing "this" declarations as Variable::NORMAL and not Variable::THIS https://codereview.chromium.org/1136123010/ Original issue's description: > Reapply "Resolve references to "this" the same way as normal variables"" > > This reapplies https://codereview.chromium.org/1136073002, along with > the followups: > > Remove Scope::scope_uses_this_ flag > https://codereview.chromium.org/1128963005 > > and > > PPC: Resolve references to "this" the same way as normal variables > https://codereview.chromium.org/1134073003 > > R=yangguo@chromium.org, rossberg@chromium.org > LOG=N > BUG= > > Committed: https://crrev.com/1efc1e4f7a3d30d5225e9d5cb2585cad7cb17099 > Cr-Commit-Position: refs/heads/master@{#28458} TBR=rossberg@chromium.org,yangguo@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1146733002 Cr-Commit-Position: refs/heads/master@{#28473}
-
- 18 May, 2015 1 commit
-
-
wingo authored
This reapplies https://codereview.chromium.org/1136073002, along with the followups: Remove Scope::scope_uses_this_ flag https://codereview.chromium.org/1128963005 and PPC: Resolve references to "this" the same way as normal variables https://codereview.chromium.org/1134073003 R=yangguo@chromium.org, rossberg@chromium.org LOG=N BUG= Review URL: https://codereview.chromium.org/1136883006 Cr-Commit-Position: refs/heads/master@{#28458}
-
- 15 May, 2015 1 commit
-
-
mvstanton authored
Now that vector ics are established for load, keyed load and call ics, let's remove dead code behind the flag. BUG= Review URL: https://codereview.chromium.org/1129853002 Cr-Commit-Position: refs/heads/master@{#28422}
-
- 13 May, 2015 1 commit
-
-
yangguo authored
... and the following two "PPC: Resolve references to "this" the same way as normal variables" "Remove Scope::scope_uses_this_ flag" R=hablich@chromium.org BUG=chromium:487289 LOG=N Review URL: https://codereview.chromium.org/1134003003 Cr-Commit-Position: refs/heads/master@{#28395}
-
- 12 May, 2015 2 commits
-
-
conradw authored
Implements the strong mode proposal's restrictions on implicit conversions for the binary >, >=, <, and <= operators. BUG=v8:3956 LOG=N Review URL: https://codereview.chromium.org/1130283002 Cr-Commit-Position: refs/heads/master@{#28370}
-
mvstanton authored
HMaybeGrowElements moves the situation where you actually have to grow into deferred code. This means crankshaft doesn't have to spill registers just to make the bounds comparison to see if it'll need to grow or not. It makes the growing case a bit more expensive, but reduces the cost of the general case. BUG=chromium:484025 LOG=N Review URL: https://codereview.chromium.org/1124443004 Cr-Commit-Position: refs/heads/master@{#28359}
-
- 11 May, 2015 4 commits
-
-
arv authored
In strong mode it is an error to call a function with too few arguments. This is enforced inside the ArgumentsAdaptorTrampoline. This does not yet handle rest parameters BUG=v8:3956 LOG=N R=rossberg@chromium.org, dslomov@chromium.org Review URL: https://codereview.chromium.org/1115263004 Cr-Commit-Position: refs/heads/master@{#28346}
-
titzer authored
R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/1139733002 Cr-Commit-Position: refs/heads/master@{#28344}
-
wingo authored
Make the parser handle references to "this" as unresolved variables, so the same logic as for the rest of function parameters is used for the receiver. Minor additions to the code generation handle copying the receiver to the context, along with the rest of the function parameters. Based on work by Adrian Perez de Castro <aperez@igalia.com>. This is a reapplication of https://codereview.chromium.org/1130733003. R=rossberg@chromium.org BUG=v8:2700 LOG=N Review URL: https://codereview.chromium.org/1136073002 Cr-Commit-Position: refs/heads/master@{#28340}
-
danno authored
This stub will be used as the basis of a Math.floor-specific CallIC to detect and track calls to floor that return -0. Along the way: - Create a TurboFanCodeStub super class from which the StringLength and MathRound TF stubs derive. - Fix the ugly hack that passes the first stub parameter as the "this" pointer in the the TF-compiled JS function. - Fix bugs in the ia32/x64 disassembler. Review URL: https://codereview.chromium.org/1137703002 Cr-Commit-Position: refs/heads/master@{#28339}
-
- 08 May, 2015 1 commit
-
-
verwaest authored
Revert of Allow loading holes from holey smi arrays (patchset #2 id:20001 of https://codereview.chromium.org/1134483002/) Reason for revert: Shouldn't unconditionally load holes since it tanks performance. I'll change it in a follow-up to only do it if the IC ever saw it happen. Original issue's description: > Allow loading holes from holey smi arrays > > BUG= > > Committed: https://crrev.com/eab5bb5390fab79d063f29398377c6d181963dde > Cr-Commit-Position: refs/heads/master@{#28298} TBR=mvstanton@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1131203002 Cr-Commit-Position: refs/heads/master@{#28309}
-