- 23 Feb, 2018 1 commit
-
-
Jakob Kummerow authored
Originally reviewed at https://chromium-review.googlesource.com/929429 and landed as r51486 / d50c7731. Update in reland: whitelisted new builtins as side effect free. Bug: v8:6791 Change-Id: Iff45700c8a4eca23f3ee6fc9c0cb340dc027cbc6 Reviewed-on: https://chromium-review.googlesource.com/932802 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#51491}
-
- 22 Feb, 2018 2 commits
-
-
Michael Achenbach authored
This reverts commit d50c7731. Reason for revert: Fails on many bots, like: https://build.chromium.org/p/client.v8/builders/V8%20Linux/builds/23331 Original change's description: > [bigint] Implement DataView.{get,set}Big*64 > > Bug: v8:6791 > Change-Id: I4b5ad3cf68b5c2423d6e055332d7f0dfce7c1e99 > Reviewed-on: https://chromium-review.googlesource.com/929429 > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#51486} TBR=jkummerow@chromium.org,neis@chromium.org Change-Id: I95c260134d7d2671cd4cc0f8c07971af04d97546 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6791 Reviewed-on: https://chromium-review.googlesource.com/932801Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#51487}
-
Jakob Kummerow authored
Bug: v8:6791 Change-Id: I4b5ad3cf68b5c2423d6e055332d7f0dfce7c1e99 Reviewed-on: https://chromium-review.googlesource.com/929429 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51486}
-
- 21 Feb, 2018 1 commit
-
-
Ross McIlroy authored
Unifies GetSharedFunctionForStreamedScript with GetSharedFunctionForScript so that both share a more similar API and some common code can be moved to common helpers. Introduces a Compiler::ScriptDetails struct to hold script meta-data used to build new script objects. BUG=v8:5203 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I3e6b4cd50da9bb92ef5a2bfd666a09b3619c34a4 Reviewed-on: https://chromium-review.googlesource.com/924189 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#51438}
-
- 20 Feb, 2018 3 commits
-
-
Peter Marshall authored
Inline the promise constructor when we have one argument and target matches new_target. This is not complete, and is sitting behind an experimental flag for now. We need to fix deoptimization by providing proper frame states. Create a unittest class for JSCallReducer - just assert whether there was a change or not, rather than specify the exact graph that should be produced. Bug: v8:7253 Change-Id: Ib6886a8feb2799f47cd647853cabcf12a189bc25 Reviewed-on: https://chromium-review.googlesource.com/919282 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51389}
-
Benedikt Meurer authored
This CL introduces new operators JSFulfillPromise and JSPromiseResolve, corresponding to the specification operations with the same name, and uses that to lower calls to Promise.resolve() builtin to JSPromiseResolve. We also optimize JSPromiseResolve and JSResolvePromise further based on information found about the value/resolution in the graph. This applies to both Promise.resolve() builtin calls and implicit resolve operations in async functions and async generators. On a very simple microbenchmark like console.time('resolve'); for (let i = 0; i < 1e8; ++i) Promise.resolve({i}); console.timeEnd('resolve'); this CL reduces the execution time from around 3049ms to around 947ms, which is a pretty significant 3x improvement. On the wikipedia benchmark we observe an improvement around 2% with this CL. Bug: v8:7253 Change-Id: Ic69086cdc1b724f35dbe83305795539c562ab817 Reviewed-on: https://chromium-review.googlesource.com/913488Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51387}
-
Benedikt Meurer authored
There's no need to have the AsyncFunctionAwait/AsyncGeneratorAwait operations as separate closures that are called via JavaScript calling convention, but instead we can just have them as intrinsics (with the goal to eventually turn them into IC stubs). Drive-by-fix: Tail call to the ResumeGenerator builtin when resuming an async function. The earlier restrictions no only apply with the new machinery. Bug: v8:7253 Change-Id: I0c4d04dae15b4211158fc07151adafda69d4faec Reviewed-on: https://chromium-review.googlesource.com/924703Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51382}
-
- 19 Feb, 2018 3 commits
-
-
Peter Marshall authored
Factor out IterableToList into a helper stub to save space. There are two callers now, TypedArrayFrom and ConstructByIterable, and it is ~2.5kb so we save space by doing this. Increase test coverage to cover more of the branching in CSA. This is doesn't follow the control flow in the spec exactly - see the big code comment for an explanation. Change-Id: Ief39e93c4202cb7bf0e28a39dc6aa81b8b9c59d2 Reviewed-on: https://chromium-review.googlesource.com/908755 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#51377}
-
Benedikt Meurer authored
This extends the previously introduced logic for implementing await without having to allocate the throwaway promise and the additional closures and context, to also cover await and yield inside of async generators. Bug: v8:7253 Change-Id: I011583a7714bbd148c54e5f204e2076630008db0 Reviewed-on: https://chromium-review.googlesource.com/924003 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51361}
-
Jakob Kummerow authored
This is a reland of dda0419e. Originally reviewed-on: https://chromium-review.googlesource.com/914513 and landed as refs/heads/master@{#51342}. Bug: v8:6791 Change-Id: I3b3a069da7a0e64c38a81b3110dc5ece4887cb19 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/924665Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51352}
-
- 17 Feb, 2018 2 commits
-
-
Michael Achenbach authored
This reverts commit dda0419e. Reason for revert: msvc unhappy: https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20msvc/builds/1434 Original change's description: > [bigint] Add BigInt64Array, BigUint64Array > > Bug: v8:6791 > Tbr: hpayer@chromium.org > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng > Change-Id: I637e9084d2fe4869ad0be2fb996149ab9940f346 > Reviewed-on: https://chromium-review.googlesource.com/914513 > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#51342} TBR=jkummerow@chromium.org,neis@chromium.org,hpayer@chromium.org Change-Id: I49237fa323f0d3ea70e744d92d5cbdd4d5c4b39f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6791 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/924663Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#51344}
-
Jakob Kummerow authored
Bug: v8:6791 Tbr: hpayer@chromium.org Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I637e9084d2fe4869ad0be2fb996149ab9940f346 Reviewed-on: https://chromium-review.googlesource.com/914513 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51342}
-
- 16 Feb, 2018 2 commits
-
-
Benedikt Meurer authored
The ES2017 specification contains a so-called "throwaway" promise that is used to specify the behavior of await in terms of PerformPromiseThen, but it's actually not necessary and never exposed to user code. In addition to that, hooking up the promise in await required a context (to refer to the generator object) and two closures for the reject/fulfill handling, which would resume the generator corresponding to the async function. That meant, we had to allocate 4 additional objects for every await. Instead of using a JSPromise plus the callbacks, this CL adds logic to allow PromiseReaction and PromiseReactionJobTask to carry arbitrary payloads and Code handlers. We use this for await to avoid the additional 4 objects mentioned above, and instead just have simple Code handlers that resume the generator (for the async function), either by throwing (in case of a rejection) or by resuming normally (in case of fulfillment). For this to work properly the JSGeneratorObject has to have a link to the outer promise returned by the async function, so that the catch prediction can still figure out what to do in case of promise rejection. This is done by adding a new generator_outer_promise_symbol when the debugger is active, which refers from the generator to the outer promise. With this change the doxbee-async-es2017-native test goes from around 100.54ms to around 82.45ms, which corresponds to a ~18% reduction in execution time. Bug: v8:7253 Change-Id: Iae25b3300bac351c3417be5ae687eff469b0e61f Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/924069Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51334}
-
Benedikt Meurer authored
Add TurboFan inlining support for the following V8 Extras: - v8.createPromise - v8.rejectPromise - v8.resolvePromise These are used by the streams implementation in Chrome currently, and were previously not inlined into TurboFan, although TurboFan already had all the necessary functionality (namely the JSCreatePromise, JSRejectPromise and JSResolvePromise operators). We might eventually want to use these functions in Node core as well (at least short-term for Node 10), to replace the C++ internal API functions with the same name that are currently being used by parts of Node core. For this to work, the rejectPromise and resolvePromise builtins had to be moved back to CSA, as for JavaScript builtins we still have the policy that the optimizing compiler must not inline them. But that's straight-forward since the CSA has all the necessary functionality available anyways. Bug: v8:7253 Change-Id: I39ab015c379956cd58ace866e17f8ec23b2257b2 Reviewed-on: https://chromium-review.googlesource.com/924146Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51332}
-
- 15 Feb, 2018 2 commits
-
-
Mathias Bynens authored
This patch makes ECMAScript a syntactic superset of JSON by allowing U+2028 and U+2029 in string literals. Proposal repo: https://github.com/tc39/proposal-json-superset Bug: v8:7418 Change-Id: I7ef4ae6d85854ebc44a66e0eaf789814576832b7 Reviewed-on: https://chromium-review.googlesource.com/921228Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#51313}
-
Toon Verwaest authored
instance_class_name takes up space unnecessarily, and %_ClassOf and class_name implement [[Class]] which isn't part of ES2015+ anymore. Bug: Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I3a73f732ad83a616817fde9992f4e4d584638fa8 Reviewed-on: https://chromium-review.googlesource.com/776683Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#51309}
-
- 14 Feb, 2018 1 commit
-
-
Choongwoo Han authored
- Remove JS implementation of TA.p.filter - Reimplement TA.p.filter as CSA - This CL makes TA.p.filter 3x faster in microbenchmark - Fix a spec bug: throw if buffer is detached while executing callback Bug: v8:5929 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I2e14b6001d354ca6659cf65fff4ead2942ddc9ff Reviewed-on: https://chromium-review.googlesource.com/912989Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#51288}
-
- 13 Feb, 2018 2 commits
-
-
Peter Marshall authored
We don't need to pay the cost of going to JS to simply stamp out a new object. Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I8942771ff9c19dff1908243fd6d3bd701d3fb5a3 Reviewed-on: https://chromium-review.googlesource.com/897803 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51267}
-
Benedikt Meurer authored
This introduces dedicated builtins - FulfillPromise, - RejectPromise, and - ResolvePromise, which perform the corresponding operations from the language specification, and removes the redundant entry points and the excessive inlining of these operations into other builtins. We also add the same logic on the C++ side, so that we don't need to go into JavaScript land when resolving/rejecting from the API. The C++ side has a complete implementation, including full support for the debugger and the current PromiseHook machinery. This is to avoid constantly crossing the boundary for those cases, and to also simplify the CSA side (and soon the TurboFan side), where we only do the fast-path and bail out to the runtime for the general handling. On top of this we introduce %_RejectPromise and %_ResolvePromise, which are entry points used by the bytecode and parser desugarings for async functions, and also used by the V8 Extras API. Thanks to this we can uniformly optimize these in TurboFan, where we have corresponding operators JSRejectPromise and JSResolvePromise, which currently just call into the builtins, but middle-term can be further optimized, i.e. to skip the "then" lookup for JSResolvePromise when we know something about the resolution. In TurboFan we can also already inline the default PromiseCapability [[Reject]] and [[Resolve]] functions, although this is not as effective as it can be right now, until we have inlining support for the Promise constructor (being worked on by petermarshall@ right now) and/or SFI based CALL_IC feedback. Overall this change is meant as a refactoring without significant performance impact anywhere; it seems to improve performance of simple async functions a bit, but otherwise is neutral. Bug: v8:7253 Change-Id: Id0b979f9b2843560e38cd8df4b02627dad4b6d8c Reviewed-on: https://chromium-review.googlesource.com/911632Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51260}
-
- 09 Feb, 2018 1 commit
-
-
Dan Elphick authored
This removes the Javascript version of Array.from in js/array.js and adds a CodeStubAssembler version in src/builtins/builtins-array-gen.cc. Also modify IteratorBuiltinsAssembler to allow querying the existence of the iterator method without calling it so we can fall back to the array-like behavior. BUG=v8:1956 Change-Id: Ibfb3cef002d72d70bd30b4de676fd22becde006c Reviewed-on: https://chromium-review.googlesource.com/887066Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#51208}
-
- 08 Feb, 2018 2 commits
-
-
Adam Klein authored
This reverts commit 14108f4c. Reason for revert: Not the culprit for Canary microtask crashes Original change's description: > [builtins] Mega-revert to address the Dev blocker in crbug.com/808911. > > - Revert "[builtins] Save one word in contexts for Promise.all." > This reverts commit 7632da06. > - Revert "[builtins] Also use the Promise#then protector for Promise#finally()." > This reverts commit d4f072ce. > - Revert "[builtins] Don't mess with entered context for MicrotaskCallbacks." > This reverts commit 6703dacd. > - Revert "[debugger] Properly deal with settled promises in catch prediction." > This reverts commit 40dd0658. > - Revert "[builtins] Widen the fast-path for Promise builtins." > This reverts commit db0556b7. > - Revert "[builtins] Unify PerformPromiseThen and optimize it with TurboFan." > This reverts commit a582199c. > - Revert "[builtins] Remove obsolete PromiseBuiltinsAssembler::AppendPromiseCallback." > This reverts commit 6bf88852. > - Revert "[builtins] Turn NewPromiseCapability into a proper builtin." > This reverts commit 313b490d. > - Revert "[builtins] Inline InternalPromiseThen into it's only caller" > This reverts commit f7bd6a2f. > - Revert "[builtins] Implement Promise#catch by really calling into Promise#then." > This reverts commit b23b098f. > - Revert "[promise] Remove incorrect fast path" > This reverts commit 0f6eafe8. > - Revert "[builtins] Squeeze JSPromise::result and JSPromise::reactions into a single field." > This reverts commit 8a677a28. > - Revert "[builtins] Refactor promises to reduce GC overhead." > This reverts commit 8e7737cb. > > Tbr: hpayer@chromium.org > Bug: chromium:800651, chromium:808911, v8:5691, v8:7253 > Change-Id: I8c8ea5ed32ed62f6cd8b0d027a3707ddd891e5f1 > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng > Reviewed-on: https://chromium-review.googlesource.com/906991 > Commit-Queue: Yang Guo <yangguo@chromium.org> > Commit-Queue: Adam Klein <adamk@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#51158} Change-Id: I09d958cbebd635a325809072a290f2f53df8c5d4 Tbr: adamk@chromium.org,yangguo@chromium.org,bmeurer@chromium.org Bug: chromium:800651, chromium:808911, v8:5691, v8:7253 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/908988Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#51181}
-
Taketoshi Aono authored
Original CL is https://chromium-review.googlesource.com/c/v8/v8/+/810504 Reverted issue is https://bugs.chromium.org/p/chromium/issues/detail?id=804159 Fix Object.entries descriptor array value index. This reverts commit e5ecb248. Bug: v8:6804, chromium:804159 Change-Id: I73a5a5f670c5b36e0c5cc7984d5979ecec43d969 Reviewed-on: https://chromium-review.googlesource.com/892684 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#51170}
-
- 07 Feb, 2018 2 commits
-
-
Benedikt Meurer authored
- Revert "[builtins] Save one word in contexts for Promise.all." This reverts commit 7632da06. - Revert "[builtins] Also use the Promise#then protector for Promise#finally()." This reverts commit d4f072ce. - Revert "[builtins] Don't mess with entered context for MicrotaskCallbacks." This reverts commit 6703dacd. - Revert "[debugger] Properly deal with settled promises in catch prediction." This reverts commit 40dd0658. - Revert "[builtins] Widen the fast-path for Promise builtins." This reverts commit db0556b7. - Revert "[builtins] Unify PerformPromiseThen and optimize it with TurboFan." This reverts commit a582199c. - Revert "[builtins] Remove obsolete PromiseBuiltinsAssembler::AppendPromiseCallback." This reverts commit 6bf88852. - Revert "[builtins] Turn NewPromiseCapability into a proper builtin." This reverts commit 313b490d. - Revert "[builtins] Inline InternalPromiseThen into it's only caller" This reverts commit f7bd6a2f. - Revert "[builtins] Implement Promise#catch by really calling into Promise#then." This reverts commit b23b098f. - Revert "[promise] Remove incorrect fast path" This reverts commit 0f6eafe8. - Revert "[builtins] Squeeze JSPromise::result and JSPromise::reactions into a single field." This reverts commit 8a677a28. - Revert "[builtins] Refactor promises to reduce GC overhead." This reverts commit 8e7737cb. Tbr: hpayer@chromium.org Bug: chromium:800651, chromium:808911, v8:5691, v8:7253 Change-Id: I8c8ea5ed32ed62f6cd8b0d027a3707ddd891e5f1 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/906991 Commit-Queue: Yang Guo <yangguo@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51158}
-
Choongwoo Han authored
- Remove %TypedArray%.of in js/typedarray.js - Implement %TypedArray%.of in builtins/builtins-typedarray-gen.cc - This CL makes TA.of 1.5x faster Bug: v8:5929 Change-Id: Ie165114a0ab9b4ec9ed70840c4c6a42d1eeed101 Reviewed-on: https://chromium-review.googlesource.com/897227 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#51141}
-
- 06 Feb, 2018 2 commits
-
-
Peter Marshall authored
This is the last piece of the TypedArray constructors that was still written in JS. Bug: v8:7102 Change-Id: I7c4dc867b09408caa4eec2873ea7185b6c61a525 Reviewed-on: https://chromium-review.googlesource.com/888751 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#51122}
-
jgruber authored
The stack overflow boilerplate has been removed since the Error refactoring in 2016. These explicit stack space checks can now be removed in favor of standard Throw semantics. Change-Id: I8b02b9641ebd01e12d12b8da2454d2d04b65df3d Reviewed-on: https://chromium-review.googlesource.com/903168Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#51111}
-
- 04 Feb, 2018 1 commit
-
-
Benedikt Meurer authored
This adds a new isolate wide Promise#then protector, which guards the "then" lookup for all JSPromise instances whose [[Prototype]] is the initial %PromisePrototype%. Thus arbitrary mutations to the Promise.prototype (i.e. monkey-patching other methods or installing new functions) no longer sent you down the slow-path. Use this protector in Promise.prototype.catch and in Promise.resolve. Drive-by-fix: Restructure the resolve logic a bit and avoid the expensive and large SameValue check, which can be turned into a simple reference equal, as the promise in there is known to be a JSPromise anyways. Bug: v8:7253 Change-Id: If68b12c6bc6ca9c4d10552ae84854ebc3b5774f9 Reviewed-on: https://chromium-review.googlesource.com/899302 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#51085}
-
- 01 Feb, 2018 1 commit
-
-
Benedikt Meurer authored
Instead of inlining NewPromiseCapability everywhere, we should have it as a separate builtin that can be called. The motivation for doing so is to reduce the overhead of the builtins and just share the slow-path handling in a single place, plus this way we can also utilize the NewPromiseCapability functionality from TurboFan optimized code eventually. Also remove the unused %new_promise_capability intrinsic and the builtin backing it. Bug: v8:7253 Change-Id: Ic7c916a11f12d063a645e2c25cc4120badee5640 Reviewed-on: https://chromium-review.googlesource.com/897804Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51036}
-
- 29 Jan, 2018 1 commit
-
-
Benedikt Meurer authored
This adjusts the RunMicrotask logic to invoke CallHandlerInfo microtasks from CSA land directly (via a runtime function call), instead of bailing out to C++ for the rest of the microtask queue entries. Even in simple micro-benchmarks there doesn't seem to be a huge performance difference. In fact performance get's better when CallHandlerInfo and promises are mixed, which makes sense, since calling from C++ to JS land is more expensive than the other way around. But just in case the runtime function call overhead ever becomes the bottleneck we can introduce a direct C++ call and setup a handle scope around it, much like a very simple version of CallApiFunctionStub. This greatly simplifies the microtask handling and paves the way for refactoring the queue to significant reduce the GC overhead associated with promises currently. Bug: v8:7253 Change-Id: I33adb62a6bada138674d324f36d4be894e27f3c9 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/890441Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50934}
-
- 26 Jan, 2018 1 commit
-
-
Jakob Kummerow authored
which was dropped from the proposal: https://github.com/tc39/proposal-bigint/pull/101 Bug: v8:6791 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I5a3e0024900b34a322a23bcbc4bfdbdffbf8b9d4 Reviewed-on: https://chromium-review.googlesource.com/885510 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#50877}
-
- 25 Jan, 2018 2 commits
-
-
Yang Guo authored
This is somewhat of a revival of what used to be UnseededNumberDictionary. The difference to NumberDictionary is that each entry only has two fields (no field for property details) and there is no header field for a bitfield. The reason for this change is memory regression introduced when we removed UnseededNumberDictionary (6e1c57ea). We now use SimpleNumberDictionary for - slow template instantiation cache - code stubs table - value serializer map - stack frame cache - type profile source positions R=ishell@chromium.org, ulan@chromium.org Bug: chromium:783695 Change-Id: I3cd32e485060bb379fb2279eeefbbbded7455f0e Reviewed-on: https://chromium-review.googlesource.com/885811Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#50869}
-
peterwmwong authored
- Introduce new helper IsFastJSArrayWithNoCustomIteration. - Consolidates all entry array checks... - Is a fast array (defers to BranchIfFastJSArray) - No possibility that the Array's iteration protocol has been tampered with - Introduce new BoolT constant helpers Int32TrueConstant and Int32FalseConstant. Bug: chromium:804176, chromium:804188 Change-Id: I6b08396484682dc680b431ea564a7a28eeab8108 Reviewed-on: https://chromium-review.googlesource.com/883065 Commit-Queue: Peter Wong <peter.wm.wong@gmail.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#50867}
-
- 24 Jan, 2018 1 commit
-
-
Choongwoo Han authored
- Remove TypedArray.prototype.subarray in js/typedarray.js - Implement TypedArray.prototype.subarray as a CSA - Implement TypedArraySpeciesCreateByArrayBuffer as a CSA - Move a helper function for relative index from builtins-string-gec.cc to code-stub-assembler.cc - Move SpeciesConstructor from builtins-promise-gen.cc to code-stub-assembler.cc Bug: v8:7161, v8:5929 Change-Id: If3340476e16aa21659540eb4b24e3ead54e6a313 Reviewed-on: https://chromium-review.googlesource.com/830992 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#50831}
-
- 23 Jan, 2018 1 commit
-
-
Benedikt Meurer authored
Use this in the PromiseThen operation to skip the (expensive) lookup in the SpeciesConstructor operation. This yields in a nice 3-5% improvement on the bluebird and wikipedia benchmarks, and paves the way for inlining certain Promise operations into TurboFan optimized code later. On the micro-benchmark mentioned in the bug (from the findings doc), we reduce the overall execution time by 25%, which makes sense given that Promise.prototype.then spends a significant portion of it's time just figuring out the appropriate constructor. Bug: v8:7253, v8:7349 Change-Id: Ia1577b59d1b7e4b8dbda83e2186583edab76695a Reviewed-on: https://chromium-review.googlesource.com/880681Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50794}
-
- 22 Jan, 2018 2 commits
-
-
Jakob Gruber authored
This reverts commit 03e9d415. Reason for revert: Correctness issues, see https://crbug.com/804159. Bug: chromium:804159 Original change's description: > Reland: Reimplement Object.entries/values as CSA to optimize performance. > > Add Object.entries/values builtins to debug-evaluate.cc whitelist macro. > This fix revert commit of https://chromium-review.googlesource.com/c/v8/v8/+/859937 > Original is https://chromium-review.googlesource.com/c/v8/v8/+/810504 > >> Reimplements Object.entries/values as CSA to optimize performance. See more detail about https://bugs.chromium.org/p/v8/issues/ Issue 6804. > > This reverts commit 1b49f725. > > Bug: v8:6804 > Change-Id: I57e8b66e1c4ece2abb52e1630a97fbfd4070d810 > Reviewed-on: https://chromium-review.googlesource.com/860679 > Commit-Queue: Yang Guo <yangguo@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#50492} TBR=yangguo@chromium.org,cbruni@chromium.org,jgruber@chromium.org,ishell@chromium.org,brn@b6n.ch # Not skipping CQ checks because original CL landed > 1 day ago. Bug: v8:6804 Change-Id: I39b1854ca7c2f57819ba377f84560356d3756bfb Reviewed-on: https://chromium-review.googlesource.com/877886Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#50746}
-
Peter Marshall authored
Bug: v8:7102 Change-Id: Id37799cdf989558ca4f771d451f4b45cbf7123bf Reviewed-on: https://chromium-review.googlesource.com/787434 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#50744}
-
- 19 Jan, 2018 2 commits
-
-
Peter Marshall authored
This is a reland of a7c91c77. Original change's description: > [typedarray] Port ConstructByTypedArray to CSA. > > This is needed to easily port the constructor dispatcher to CSA. > > Bug: v8:7102 > Change-Id: I9672416495940ca12088a2980a9ecc61364aef9d > Reviewed-on: https://chromium-review.googlesource.com/785630 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Cr-Commit-Position: refs/heads/master@{#50671} Bug: v8:7102 Change-Id: I9d839343d9b95f288f806953455c2c26ca8cab06 Reviewed-on: https://chromium-review.googlesource.com/875031Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#50723}
-
Mathias Bynens authored
Until now, String.prototype.{trimLeft,trimRight} were non-standard language extensions, required for Web compatibility. The proposal at https://github.com/tc39/proposal-string-left-right-trim standardizes this functionality as String.prototype.{trimStart,trimEnd}, and defines String.prototype.{trimLeft,trimRight} as aliases for backwards compatibility. This patch implements that proposal behind the --harmony-string-trimming flag. Bug: v8:6530 Change-Id: Id21e624c12a79e6b782efb049a48901b9da7db71 Reviewed-on: https://chromium-review.googlesource.com/867044 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#50717}
-
- 18 Jan, 2018 2 commits
-
-
peterwmwong authored
- Add Map, WeakMap, Set, and WeakSet initial prototype maps to native context. - Set and WeakSet constructors check whether prototype map differs from initial before choosing the fast path. Bug: chromium:798026 Change-Id: I5f9cc2463f89e17f06a66b565c625fce133d01fb Reviewed-on: https://chromium-review.googlesource.com/853698 Commit-Queue: Peter Wong <peter.wm.wong@gmail.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#50691}
-
Michael Achenbach authored
This reverts commit a7c91c77. Reason for revert: changes a layout test https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/21031 Original change's description: > [typedarray] Port ConstructByTypedArray to CSA. > > This is needed to easily port the constructor dispatcher to CSA. > > Bug: v8:7102 > Change-Id: I9672416495940ca12088a2980a9ecc61364aef9d > Reviewed-on: https://chromium-review.googlesource.com/785630 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Cr-Commit-Position: refs/heads/master@{#50671} TBR=petermarshall@chromium.org,bmeurer@chromium.org,verwaest@chromium.org Change-Id: I118a1cb0d873a1d2e159619e5f327f9f6f7974c4 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7102 Reviewed-on: https://chromium-review.googlesource.com/873790Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50686}
-