- 02 Jun, 2015 2 commits
-
-
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}
-
chunyang.dai authored
port e2e47f30 (r28711) original commit message: [turbofan] First step towards sanitizing for-in and making it optimizable. 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). BUG= Review URL: https://codereview.chromium.org/1144143005 Cr-Commit-Position: refs/heads/master@{#28748}
-
- 01 Jun, 2015 6 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}
-
chunyang.dai authored
port 388e791d (r28672). original commit message: 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. BUG= Review URL: https://codereview.chromium.org/1143003003 Cr-Commit-Position: refs/heads/master@{#28719}
-
chunyang.dai authored
port 5450fc07 (r18659) original commit message: 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/1155383003 Cr-Commit-Position: refs/heads/master@{#28718}
-
chunyang.dai authored
port 44e98103 (r28644) original commit message: 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= Review URL: https://codereview.chromium.org/1158543004 Cr-Commit-Position: refs/heads/master@{#28717}
-
chunyang.dai authored
port eca5b5d7 (r28622). original commit message: * 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%. 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 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. BUG= Review URL: https://codereview.chromium.org/1153963010 Cr-Commit-Position: refs/heads/master@{#28716}
-
chunyang.dai authored
port 32de6778 (r29615) original commit message: 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/1165693002 Cr-Commit-Position: refs/heads/master@{#28715}
-
- 26 May, 2015 1 commit
-
-
yangguo authored
R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1150293002 Cr-Commit-Position: refs/heads/master@{#28612}
-
- 25 May, 2015 2 commits
-
-
chunyang.dai authored
port 9502e91a (r28534) original commit message: 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= Review URL: https://codereview.chromium.org/1152173002 Cr-Commit-Position: refs/heads/master@{#28606}
-
chunyang.dai authored
port a86384f1 (r28597). original commit message: 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/1148963003 Cr-Commit-Position: refs/heads/master@{#28605}
-
- 21 May, 2015 2 commits
-
-
chunyang.dai authored
port 09aaf003 (r28516). original commit message: Also removed ornamentation like "VectorRaw" from stub names. BUG= Review URL: https://codereview.chromium.org/1152473003 Cr-Commit-Position: refs/heads/master@{#28532}
-
chunyang.dai authored
port 78f0452d (r28491) original commit message: Also check whether the arguments count is smaller than the number of required parameters which is the same as the SharedFunctionInfo length. BUG= Review URL: https://codereview.chromium.org/1146103003 Cr-Commit-Position: refs/heads/master@{#28531}
-
- 19 May, 2015 2 commits
-
-
chunyang.dai authored
port 1efc1e4f (r28458). original commit message: 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 BUG= Review URL: https://codereview.chromium.org/1135233003 Cr-Commit-Position: refs/heads/master@{#28469}
-
chunyang.dai authored
X87: Now that vector ics are established for load, keyed load and call ics, let's remove dead code behind the flag. port 323ced9e (r28422). original commit message: BUG= Review URL: https://codereview.chromium.org/1142713007 Cr-Commit-Position: refs/heads/master@{#28467}
-
- 14 May, 2015 1 commit
-
-
chunyang.dai authored
This reverts commit 6eea2524. revert reason: original patch is reverted. BUG= Review URL: https://codereview.chromium.org/1130853007 Cr-Commit-Position: refs/heads/master@{#28401}
-
- 13 May, 2015 4 commits
-
-
chunyang.dai authored
port bd56d279 (R28340). original commit message: 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>. BUG= Review URL: https://codereview.chromium.org/1136953010 Cr-Commit-Position: refs/heads/master@{#28390}
-
chunyang.dai authored
port 3bce9c3a (r28359). original commit message: 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= Review URL: https://codereview.chromium.org/1124093008 Cr-Commit-Position: refs/heads/master@{#28388}
-
chunyang.dai authored
port 3226e980 (28346). original commit message: [strong] Check arity of functions 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 parameter BUG= Review URL: https://codereview.chromium.org/1139913007 Cr-Commit-Position: refs/heads/master@{#28387}
-
chunyang.dai authored
port abc35080 (r28339) original commit message: 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. BUG= Review URL: https://codereview.chromium.org/1134323002 Cr-Commit-Position: refs/heads/master@{#28386}
-
- 12 May, 2015 1 commit
-
-
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}
-
- 11 May, 2015 1 commit
-
-
titzer authored
R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/1139733002 Cr-Commit-Position: refs/heads/master@{#28344}
-
- 08 May, 2015 2 commits
-
-
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}
-
chunyang.dai authored
Reason for revert: original commit was reverted. This reverts commit c3529ce5. original issues's description: > X87: Resolve references to "this" the same way as normal variables > > port 06a792b7 (r28263). > > original commit message: > > 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> BUG= Review URL: https://codereview.chromium.org/1130913005 Cr-Commit-Position: refs/heads/master@{#28307}
-
- 07 May, 2015 3 commits
-
-
verwaest authored
BUG= Review URL: https://codereview.chromium.org/1134483002 Cr-Commit-Position: refs/heads/master@{#28298}
-
chunyang.dai authored
port 7798548a (r28260) original commit message: typeof was implemented as a runtime function. Calling it in optimized code with a non-constant input becomes burdensome. BUG= Review URL: https://codereview.chromium.org/1124263005 Cr-Commit-Position: refs/heads/master@{#28279}
-
chunyang.dai authored
port 06a792b7 (r28263). original commit message: 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> BUG= Review URL: https://codereview.chromium.org/1124393002 Cr-Commit-Position: refs/heads/master@{#28278}
-
- 06 May, 2015 2 commits
-
-
conradw authored
The Hydrogen representation for binops was never changed to care about the language mode. We thought this was ok, but it turns out we need to keep track of it to make sure inlining doesn't mess with the "strongness" of binops. Also added more rigorous inlining testing. BUG=v8:3956 LOG=N Review URL: https://codereview.chromium.org/1123043002 Cr-Commit-Position: refs/heads/master@{#28253}
-
chunyang.dai authored
port cf53fed9 (r28242). original commit message: ArgumentsAdaptorStub for derived constructor (the one that needs new.target) works in this way: - If the constructor is invoked via the Construct stub, we know that actual arguments always include new.target. ``arguments`` object however should not include a new.target, therefore we remove it. We achieve this by decrementing the argument count. - If the constructor is invoked as a call, we do not care for a correct ``arguments`` array since the constructor will immediately throw on entrance. The bug is that the call could actually pass 0 actual arguments, but I decrement unconditionally :(. The fix is to detect this case and avoid decrementing. ``arguments`` is bogus, but it is ok as constructor throws. Long-term we should just remove mucking about with arguments for new.target and just get it from the stack. BUG= Review URL: https://codereview.chromium.org/1124063002 Cr-Commit-Position: refs/heads/master@{#28246}
-
- 05 May, 2015 1 commit
-
-
arv authored
When comparing a symbol to istself using <, <=, > or >= we need to throw a TypeError. This is correctly handled in the runtime function so if we are comparing a symbol fall back to use the runtime. BUG=v8:4073 LOG=Y R=rossberg@chromium.org Review URL: https://codereview.chromium.org/1125783002 Cr-Commit-Position: refs/heads/master@{#28226}
-
- 04 May, 2015 4 commits
-
-
jarin authored
BUG=v8:3985 LOG=n R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1122083002 Cr-Commit-Position: refs/heads/master@{#28206}
-
verwaest authored
BUG= Review URL: https://codereview.chromium.org/1120093002 Cr-Commit-Position: refs/heads/master@{#28200}
-
chunyang.dai authored
port 83a0af55 (r28165). original commit message: VectorICs: built-in function apply should use an IC. Handled a TODO that sent builtin function apply to the runtime on property get. BUG= Review URL: https://codereview.chromium.org/1119263002 Cr-Commit-Position: refs/heads/master@{#28189}
-
chunyang.dai authored
port fb8e6136 (r28163). original commit message: We were deopting without learning anything. This is a rebase/reland of https://codereview.chromium.org/368263003 BUG= Review URL: https://codereview.chromium.org/1125623002 Cr-Commit-Position: refs/heads/master@{#28188}
-
- 30 Apr, 2015 4 commits
-
-
adamk authored
BUG=v8:1569 LOG=n Review URL: https://codereview.chromium.org/1106383008 Cr-Commit-Position: refs/heads/master@{#28179}
-
vogelheim authored
BUG=470930 LOG=N R=jochen@chromium.org Review URL: https://codereview.chromium.org/1116933002 Cr-Commit-Position: refs/heads/master@{#28169}
-
jochen authored
Just give internal ones an ArrayBuffer with a NULL backing store. This simplifies the access checks a lot. BUG=v8:3996 R=hpayer@chromium.org,verwaest@chromium.org LOG=n Review URL: https://codereview.chromium.org/1109353003 Cr-Commit-Position: refs/heads/master@{#28168}
-
vogelheim authored
An initial 'code age' state that will turn into a 'pre-aging' code age only after it was executed the first time. BUG=470930 LOG=Y Review URL: https://codereview.chromium.org/1107233004 Cr-Commit-Position: refs/heads/master@{#28162}
-
- 29 Apr, 2015 1 commit
-
-
chunyang.dai authored
port caeb9004 (r28056) original commit message: If the array's map is the initial FastHoley array map, and the array prototype chain is undisturbed and empty of elements, then keyed loads can convert the load of a hole to undefined. BUG= Review URL: https://codereview.chromium.org/1104073003 Cr-Commit-Position: refs/heads/master@{#28128}
-
- 28 Apr, 2015 1 commit
-
-
jochen authored
This instruction can be hoisted out of loops even though it contains a branch. BUG=v8:3996 R=bmeurer@chromium.org LOG=n Review URL: https://codereview.chromium.org/1108313003 Cr-Commit-Position: refs/heads/master@{#28109}
-