- 08 Mar, 2016 2 commits
-
-
littledan authored
A previous spec compliance fix for TypedArrays caused a ~4x performance regression. This patch removes the regression by calling out to a path within the runtime which implements array copying more efficiently. BUG=chromium:592007 R=adamk LOG=Y Review URL: https://codereview.chromium.org/1767893002 Cr-Commit-Position: refs/heads/master@{#34601}
-
littledan authored
We have compatibility workarounds to return 'undefined' on accessors to RegExp.prototype. This patch adds two UseCounters for two categories of this non-spec-compliant path: - source - ignorecase, multiline, global R=yangguo BUG=chromium:581577 LOG=Y Review URL: https://codereview.chromium.org/1762423002 Cr-Commit-Position: refs/heads/master@{#34597}
-
- 07 Mar, 2016 1 commit
-
-
littledan authored
The ES2015 specification requires that String.prototype.startsWith, String.prototype.endsWith and String.prototype.includes use the IsRegExp internal algorithm to determine whether to throw a TypeError to prevent a RegExp from being accidentally cast to a String for those methods. That internal algorithm checks the presence/truthiness of Symbol.match to make its determination. This patch switches the builtins to use this correct test, rather than checking for the [[RegExpMatcher]] internal slot as the builtins previously did. R=yangguo Review URL: https://codereview.chromium.org/1762183002 Cr-Commit-Position: refs/heads/master@{#34547}
-
- 02 Mar, 2016 1 commit
-
-
littledan authored
The ES2016 draft spec defines a sort of fast path for constructing a TypedArray based on another TypedArray. This patch implements that alternative path in TypedArray construction. It is verified by test262 tests, which now pass. This patch also has a slight cleanup of TypedArray code by using a macro for TypedArray type checks, as is done for other types. This patch includes a minor spec violation: In the same-type case, the spec indicates that the underlying ArrayBuffer should be copied until the end, and this is fixed up by making the [[ArrayLength]] shorter. This is observable with the buffer getter. This patch just copies the used part of the underlying ArrayBuffer. R=adamk BUG=v8:4726 LOG=Y Review URL: https://codereview.chromium.org/1754593003 Cr-Commit-Position: refs/heads/master@{#34443}
-
- 01 Mar, 2016 5 commits
-
-
mstarzinger authored
R=bmeurer@chromium.org BUG=v8:3956 LOG=n Review URL: https://codereview.chromium.org/1731063007 Cr-Commit-Position: refs/heads/master@{#34398}
-
neis authored
We must not use for-of since that could be observed. R=yangguo@chromium.org BUG=v8:4769 LOG=n Review URL: https://codereview.chromium.org/1748633002 Cr-Commit-Position: refs/heads/master@{#34387}
-
neis authored
ArrayIteratorPrototype must not provide Symbol.iterator. R=rossberg BUG= Review URL: https://codereview.chromium.org/1749093002 Cr-Commit-Position: refs/heads/master@{#34386}
-
neis authored
The code used to [[Get]] the first element twice instead of once, which can be observed (one of the kangax tests does so). R=rossberg BUG= Review URL: https://codereview.chromium.org/1747933002 Cr-Commit-Position: refs/heads/master@{#34383}
-
littledan authored
This patch fixes %TypedArray%.from to follow the ES2016 draft spec more precisely. Specifically, the input is first converted to an ArrayLike, and then afterwards, the mapping function is run and the results written into the TypedArray. This fixes a test262 test. R=adamk LOG=Y BUG=v8:4782 Review URL: https://codereview.chromium.org/1743463004 Cr-Commit-Position: refs/heads/master@{#34373}
-
- 29 Feb, 2016 1 commit
-
-
verwaest authored
This gets rid of the JavaScript wrapper. That way we can more quickly handle non-JSReceivers and indexed properties; and don't need to optimize the JavaScript wrapper either. BUG= Review URL: https://codereview.chromium.org/1742283002 Cr-Commit-Position: refs/heads/master@{#34356}
-
- 26 Feb, 2016 8 commits
-
-
littledan authored
Reland of Test262 roll, 2016-2-23 (patchset #1 id:1 of https://codereview.chromium.org/1736223002/ ) Reason for revert: Intl change relanded https://codereview.chromium.org/1745483002/ Original issue's description: > Revert of Test262 roll, 2016-2-23 (patchset #2 id:20001 of https://codereview.chromium.org/1738033002/ ) > > Reason for revert: > An Intl change that this depends on breaks a bot > > Original issue's description: > > Test262 roll, 2016-2-23 > > > > R=adamk > > > > Committed: https://crrev.com/34492040fbfb04fead21416245c8696b9847e751 > > Cr-Commit-Position: refs/heads/master@{#34312} > > TBR=adamk@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > > Committed: https://crrev.com/3b829ad80628bf521aa78255c2e5e20040a57b5f > Cr-Commit-Position: refs/heads/master@{#34313} TBR=adamk@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/1739533006 Cr-Commit-Position: refs/heads/master@{#34338}
-
littledan authored
Reland of Make Intl install properties more like how other builtins do (patchset #1 id:1 of https://codereview.chromium.org/1733293003/ ) This reland fixes a bug by pulling properties off the utils object, so that it can be garbage collected in nosnap builds. Original commit message: Intl has been somewhat of an oddball for how it integrates with V8. One aspect is that it largely didn't use utils to install itself into the snapshot, which led to some missing names, which new test262 tests check for, and duplicated code. This patch brings Intl a bit closer to how the rest of the builtins do things, though not entirely as it is currently structured to do unusual things, such as creating new constructors from JavaScript rather than C++. New test262 tests check for some of the names that are added in this patch. R=adamk CC=jshin BUG=v8:4778 LOG=Y Review URL: https://codereview.chromium.org/1745483002 Cr-Commit-Position: refs/heads/master@{#34337}
-
bmeurer authored
The %TailCall runtime entry and the %_TailCall intrinsic is not used, and will never be used (because %TailCall doesn't actually do a tail call). We will soon have proper ES6 tail calls, which are correct and properly tested. The %Apply runtime entry is basically a super-slow, less correct version of Reflect.apply, so we can as well just use Reflect.apply, which is exposed to builtins via %reflect_apply. R=ishell@chromium.org Review URL: https://codereview.chromium.org/1739233002 Cr-Commit-Position: refs/heads/master@{#34317}
-
littledan authored
Revert of Make Intl install properties more like how other builtins do (patchset #1 id:1 of https://codereview.chromium.org/1733293003/ ) Reason for revert: Breaks a bot: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/6812 Original issue's description: > Make Intl install properties more like how other builtins do > > Intl has been somewhat of an oddball for how it integrates with V8. > One aspect is that it largely didn't use utils to install itself > into the snapshot, which led to some missing names, which new > test262 tests check for, and duplicated code. This patch brings > Intl a bit closer to how the rest of the builtins do things, though > not entirely as it is currently structured to do unusual things, > such as creating new constructors from JavaScript rather than C++. > New test262 tests check for some of the names that are added in > this patch. > > R=adamk > CC=jshin > BUG=v8:4778 > LOG=Y > > Committed: https://crrev.com/a40830577d80f699282dd83864619656b7a7966c > Cr-Commit-Position: refs/heads/master@{#34311} TBR=adamk@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4778 Review URL: https://codereview.chromium.org/1737873003 Cr-Commit-Position: refs/heads/master@{#34314}
-
littledan authored
Revert of Test262 roll, 2016-2-23 (patchset #2 id:20001 of https://codereview.chromium.org/1738033002/ ) Reason for revert: An Intl change that this depends on breaks a bot Original issue's description: > Test262 roll, 2016-2-23 > > R=adamk > > Committed: https://crrev.com/34492040fbfb04fead21416245c8696b9847e751 > Cr-Commit-Position: refs/heads/master@{#34312} TBR=adamk@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/1736223002 Cr-Commit-Position: refs/heads/master@{#34313}
-
littledan authored
R=adamk Review URL: https://codereview.chromium.org/1738033002 Cr-Commit-Position: refs/heads/master@{#34312}
-
littledan authored
Intl has been somewhat of an oddball for how it integrates with V8. One aspect is that it largely didn't use utils to install itself into the snapshot, which led to some missing names, which new test262 tests check for, and duplicated code. This patch brings Intl a bit closer to how the rest of the builtins do things, though not entirely as it is currently structured to do unusual things, such as creating new constructors from JavaScript rather than C++. New test262 tests check for some of the names that are added in this patch. R=adamk CC=jshin BUG=v8:4778 LOG=Y Review URL: https://codereview.chromium.org/1733293003 Cr-Commit-Position: refs/heads/master@{#34311}
-
littledan authored
BUG=v8:4315 R=adamk LOG=Y Review URL: https://codereview.chromium.org/1734223004 Cr-Commit-Position: refs/heads/master@{#34310}
-
- 25 Feb, 2016 2 commits
-
-
bmeurer authored
Migrate Math.imul, Math.fround, Math.acos, Math.asin and Math.atan to C++ builtins, as these ones call into C++ anyway and so there's no need to have this extra wrapper around it. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1731543004 Cr-Commit-Position: refs/heads/master@{#34274}
-
jkummerow authored
When there is no receiver object, plain function calls are a few percent faster than %_Call(). This patch also fixes the HAS_INDEX macro used in a bunch of Array.prototype functions to properly check for elements inherited from prototypes. Review URL: https://codereview.chromium.org/1706213002 Cr-Commit-Position: refs/heads/master@{#34269}
-
- 24 Feb, 2016 1 commit
-
-
littledan authored
The Intl object used to keep around functions which are bound to the receiver and memoized in the object (as required by the ECMA-402 spec) in ordinary properties with names like __boundformat__. This patch instead stores those methods in private symbol properties, so they are not exposed to users. A search in GitHub didn't find any uses of __boundformat__ (whereas the same search found plenty of usages of other V8 Intl features), so I think this should be fine in terms of web compatibility. BUG=v8:3785 R=adamk LOG=Y Review URL: https://codereview.chromium.org/1728823002 Cr-Commit-Position: refs/heads/master@{#34230}
-
- 23 Feb, 2016 2 commits
-
-
littledan authored
A recent ES2016 draft spec clarification indicates that, if -0 is passed into Array.prototype.indexOf or Array.prototype.lastIndexOf as the starting index, and the result is found at index 0, then +0 rather than -0 should be returned. This patch ensures that V8 has that result, which is consistent with what some other browsers return. The patch allows a couple test262 tests to pass. R=adamk LOG=Y Review URL: https://codereview.chromium.org/1729653002 Cr-Commit-Position: refs/heads/master@{#34229}
-
littledan authored
It turns out that some old polyfill library uses RegExp.prototype.flags as a way of feature testing. It's not clear how widespread this is. For now, as a minimal workaround, we can return undefined from getters like RegExp.prototype.global when the receiver is RegExp.prototype. This patch implements that strategy but omits a UseCounter to make backports easier. R=adamk CC=yangguo@chromium.org BUG=chromium:581577 LOG=Y CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1640803003 Cr-Commit-Position: refs/heads/master@{#34201}
-
- 22 Feb, 2016 2 commits
-
-
littledan authored
In ES2016, the Proxy enumerate trap is removed. This patch changes for-in iteration on Proxies to use the ownKeys trap. Due to the clean organization of that code, the patch basically consists of deletions. R=adamk LOG=Y BUG=v8:4768 Review URL: https://codereview.chromium.org/1717893002 Cr-Commit-Position: refs/heads/master@{#34200}
-
littledan authored
The Proxy enumerate trap and Reflect.enumerate are removed from the ES2016 draft specification. This patch removes the Reflect.enumerate function, and a follow-on patch will be responsible for the Proxy trap changes. R=adamk LOG=Y BUG=v8:4768 Review URL: https://codereview.chromium.org/1721453002 Cr-Commit-Position: refs/heads/master@{#34196}
-
- 20 Feb, 2016 2 commits
-
-
demoneaux authored
Most libraries use `JSON.stringify` with all three arguments [1] to allow for configuration, even if `replacer` and `space` are falsey, causing the optimized native stringifying to be missed. This commit allows for the common case where `replacer` and `space` are not used to be fast. [1]: https://github.com/hapijs/hapi/pull/3014 BUG=v8:4730 LOG=N R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1710933002 Cr-Commit-Position: refs/heads/master@{#34174}
-
adamk authored
This was changed to match Annex B.2.5.1 of ES2015 and Firefox in https://chromium.googlesource.com/v8/v8/+/469d9bfa, but website breakage was seen in M49 Beta. JSC still returns undefined here. BUG=chromium:585775 LOG=y CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1714903004 Cr-Commit-Position: refs/heads/master@{#34172}
-
- 19 Feb, 2016 2 commits
-
-
bmeurer authored
This intrinsic was only supported in fullcodegen, and is actually no longer relevant for SunSpider peak performance it seems, so let's get rid of it and maybe just implement Array.prototype.join with a fast path at some point instead. R=mstarzinger@chromium.org Committed: https://crrev.com/ccf12b4bede3f1ce3ce14fb33bcc4041525a40af Cr-Commit-Position: refs/heads/master@{#34084} Review URL: https://codereview.chromium.org/1708523002 Cr-Commit-Position: refs/heads/master@{#34146}
-
bmeurer authored
The DataView constructor calls into C++ anyway, and is easier to deal with this way, especially since we don't have the half initialized object floating through JavaScript. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1712163002 Cr-Commit-Position: refs/heads/master@{#34145}
-
- 18 Feb, 2016 2 commits
-
-
verwaest authored
Revert of Use displayName in Error.stack rendering if present. (patchset #1 id:1 of https://codereview.chromium.org/1706823003/ ) Reason for revert: See Domenic's comment on the V8 bug. Original issue's description: > Use displayName in Error.stack rendering if present. > > BUG=v8:4761 > LOG=y > > Committed: https://crrev.com/953874e974037e7e96ef282a7078760ccc905878 > Cr-Commit-Position: refs/heads/master@{#34105} TBR=jochen@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4761 Review URL: https://codereview.chromium.org/1713663002 Cr-Commit-Position: refs/heads/master@{#34129}
-
verwaest authored
BUG=v8:4761 LOG=y Review URL: https://codereview.chromium.org/1706823003 Cr-Commit-Position: refs/heads/master@{#34105}
-
- 17 Feb, 2016 6 commits
-
-
machenbach authored
Revert of [fullcodegen] Remove the hacky %_FastOneByteArrayJoin intrinsic. (patchset #1 id:1 of https://codereview.chromium.org/1708523002/ ) Reason for revert: [Sheriff] Speculative revert for adding arm flakes: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm%20-%20sim/builds/5756 https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm%20-%20sim%20-%20novfp3/builds/3375/ And some more... Original issue's description: > [fullcodegen] Remove the hacky %_FastOneByteArrayJoin intrinsic. > > This intrinsic was only supported in fullcodegen, and is actually no > longer relevant for SunSpider peak performance it seems, so let's get > rid of it and maybe just implement Array.prototype.join with a fast > path at some point instead. > > R=mstarzinger@chromium.org > > Committed: https://crrev.com/ccf12b4bede3f1ce3ce14fb33bcc4041525a40af > Cr-Commit-Position: refs/heads/master@{#34084} TBR=mstarzinger@chromium.org,bmeurer@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/1709693002 Cr-Commit-Position: refs/heads/master@{#34091}
-
bmeurer authored
This intrinsic was only supported in fullcodegen, and is actually no longer relevant for SunSpider peak performance it seems, so let's get rid of it and maybe just implement Array.prototype.join with a fast path at some point instead. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1708523002 Cr-Commit-Position: refs/heads/master@{#34084}
-
bmeurer authored
There's no need to have inline platform code for this intrinsic, which is only used when generating a descriptive string for an error, the runtime call is just fine here. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1706743002 Cr-Commit-Position: refs/heads/master@{#34080}
-
bmeurer authored
Also move Object.is implementation to C++ builtin, which is faster than the current implementation. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1695743003 Cr-Commit-Position: refs/heads/master@{#34069}
-
bmeurer authored
There's no point in having the setup or the toString/valueOf methods in JavaScript. The full setup can be done during bootstrapping when the Boolean constructor is created, and the prototype methods don't benefit from JS + %_ at all. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1701273003 Cr-Commit-Position: refs/heads/master@{#34068}
-
bmeurer authored
It's fine to only have the runtime call here, as it's only used in the debug mirror. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1699133002 Cr-Commit-Position: refs/heads/master@{#34056}
-
- 16 Feb, 2016 1 commit
-
-
bmeurer authored
Drive-by-fix: Remove the (now) unused %_SetValueOf and %_JSValueGetValue intrinsics from the various compilers and the runtime. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1698343002 Cr-Commit-Position: refs/heads/master@{#34037}
-
- 12 Feb, 2016 2 commits
-
-
bmeurer authored
There are only two uses of %_ObjectEquals left, which should actually use strict equality instead, so there's no need to keep this special logic at all. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1692193002 Cr-Commit-Position: refs/heads/master@{#33948}
-
bmeurer authored
This is the very last use of %_Arguments and %_ArgumentsLength, and also the main blocker for not inlining builtins. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1681403006 Cr-Commit-Position: refs/heads/master@{#33939}
-