- 30 Jun, 2017 1 commit
-
-
Igor Sheludko authored
This CL removes unused utils.InstallFunctions, utils.InstallGetter(), utils.SetFunctionName, utils.OverrideFunction and respective runtime functions (%FunctionSetSharedName and %FunctionRemovePrototype). This CL is one of a series of cleanup CL which are the preliminary steps for improving function closures creation. Bug: v8:6459 Change-Id: I0fb5940ed628f0c1958f585411e2fca3e2038054 Reviewed-on: https://chromium-review.googlesource.com/548037 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#46336}
-
- 29 Jun, 2017 1 commit
-
-
titzer authored
R=marja@chromium.org BUG= Review-Url: https://codereview.chromium.org/2961253002 Cr-Commit-Position: refs/heads/master@{#46321}
-
- 28 Jun, 2017 3 commits
-
-
Georg Neis authored
... instead of creating a new one in each recursive call. R=adamk@chromium.org Bug: v8:1569 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Ieb2e76a5dec7bc0157b534a8b5f21acf6c86007c Reviewed-on: https://chromium-review.googlesource.com/552548Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46294}
-
Georg Neis authored
This implements the changes proposed at https://github.com/tc39/ecma262/pull/916. The API will be extended in a follow-up CL. R=adamk@chromium.org Bug: v8:1569 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I79476b5b674c924fea390dff1b9bee7f86a111c6 Reviewed-on: https://chromium-review.googlesource.com/544970Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46289}
-
Igor Sheludko authored
This CL replaces usages of utils.InstallFunctions and utils.InstallGetter() with the DEFINE_METHOD* macros that ensure that the native function is created in proper form from the beginning. Thus the function will not require further reconfiguring like adding a computed name or removing of 'prototype' property. This CL is one of a series of cleanup CL which are the preliminary steps for improving function closures creation. Bug: v8:6459 Change-Id: Iff4b0754677e8b71f893ea29a06da64b58b41b27 Reviewed-on: https://chromium-review.googlesource.com/548056 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#46280}
-
- 27 Jun, 2017 2 commits
-
-
Michael Starzinger authored
R=mvstanton@chromium.org Change-Id: Ic8276eb6c282032a81d40c47409ead31d11565b7 Reviewed-on: https://chromium-review.googlesource.com/549302Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46256}
-
Toon Verwaest authored
Bug: Change-Id: I56bfd921d63783ddaa74133dde5f3daf776e68ca Reviewed-on: https://chromium-review.googlesource.com/548115 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#46250}
-
- 26 Jun, 2017 1 commit
-
-
Jaroslav Sevcik authored
This is mainly to enable optimization of case-insensitive maps, where we see the pattern if (m.has(key.toLowerCase())) { return m.get(key.toLowerCase()) } ... Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: I8c78a185401c51e8a53ae2932a158eaafa169495 Reviewed-on: https://chromium-review.googlesource.com/547057 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#46206}
-
- 23 Jun, 2017 1 commit
-
-
Toon Verwaest authored
Bug: Change-Id: I240356157c71a544d94f8898029d54010b2f4d37 Reviewed-on: https://chromium-review.googlesource.com/544309 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#46173}
-
- 22 Jun, 2017 5 commits
-
-
Ulan Degenbaev authored
This patch also adds handling of NativeContext and BytecodeArray. BUG=chromium:694255 Change-Id: I6d4b2db03ece7346200853bd0b80daf65672787f Reviewed-on: https://chromium-review.googlesource.com/543237 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46139}
-
Camillo Bruni authored
Change-Id: I918bf4752c66537015cc67bd81ec68a57b4dac52 Reviewed-on: https://chromium-review.googlesource.com/544878Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#46130}
-
kris.selden authored
transition, check to see if we have already done this transition. BUG=v8:6450 Review-Url: https://codereview.chromium.org/2915863004 Cr-Commit-Position: refs/heads/master@{#46129}
-
Michael Starzinger authored
This switches all uses of the patching {BinaryOpICStub} over to the respective existing and non-patching CSA-builtins, and removes some supporting code. It also removes the inlined SMI handling. R=verwaest@chromium.org BUG=v8:6408 Change-Id: If547c0127bfcafbd01ccb33b702b1868006ebcb1 Reviewed-on: https://chromium-review.googlesource.com/541398 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#46122}
-
Toon Verwaest authored
Bug: Change-Id: I335dc1259f2468e91f8fb6d5a3b13a601c807a79 Reviewed-on: https://chromium-review.googlesource.com/544875Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#46121}
-
- 21 Jun, 2017 2 commits
-
-
Alexey Kozyatinskiy authored
This method returns position of importing stmt in module source. R=neis@chromium.org Bug: chromium:721589 Change-Id: I8639796a001fdfec7cf5aa1bf1a27493f7a757a9 Reviewed-on: https://chromium-review.googlesource.com/541322Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#46105}
-
Michael Starzinger authored
This switches all uses of the patching {ToBooleanICStub} over to the existing and non-patching {ToBoolean} CSA-builtin, and removes some supporting code. R=verwaest@chromium.org BUG=v8:6408 Change-Id: Iab60c95e6b54e426408390e056b679f6227e7ce0 Reviewed-on: https://chromium-review.googlesource.com/539576Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46089}
-
- 20 Jun, 2017 3 commits
-
-
Camillo Bruni authored
Change-Id: I353d5959eef5369ae42ed7a176d6e59e94cc2d77 Reviewed-on: https://chromium-review.googlesource.com/541424Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#46057}
-
Camillo Bruni authored
Change-Id: Ie91d29f2e2ec7dc6dc4f824212c17d70a57d8b08 Reviewed-on: https://chromium-review.googlesource.com/541316Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#46048}
-
Sathya Gunasekaran authored
Bug: v8:6443 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I20b1006a5c5ff24a730f15286cf0f340ba047b78 Reviewed-on: https://chromium-review.googlesource.com/526001Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#46034}
-
- 19 Jun, 2017 3 commits
-
-
Camillo Bruni authored
It might happen that we deprecate the map of previous sub-literals if we create literals with the same map several times. This is usually the case for configuration arrays. Bug: chromium:734051 Change-Id: I82284e5aae632286135b2092816d776d229c65af Reviewed-on: https://chromium-review.googlesource.com/538665Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#46003}
-
Leszek Swirski authored
For interpreted functions, use the optimized code slot in the feedback vector to store an optimization marker (optimize/in optimization queue) rather than changing the JSFunction's code object. Then, adapt the self-healing mechanism to also dispatch based on this optimization marker. Similarly, replace SFI marking with optimization marker checks in CompileLazy. This allows JSFunctions to share optimization information (replacing shared function marking) without leaking this information across native contexts. Non I+TF functions (asm.js or --no-turbo) use a CheckOptimizationMarker shim which generalises the old CompileOptimized/InOptimizationQueue builtins and also checks the same optimization marker as CompileLazy and InterpreterEntryTrampoline. This is a reland of https://chromium-review.googlesource.com/c/509716 Change-Id: I02b790544596562373da4c9c9f6afde5fb3bcffe Reviewed-on: https://chromium-review.googlesource.com/535460Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#45997}
-
bmeurer authored
The heap verifier does certain invariant checks on JSBoundFunction objects, i.e. it assumes that the bound_target_function is a proper JSReceiver. The Deoptimizer cannot maintain this invariant, because it first allocates the JSBoundFunction in an invalid state and only afterwards fix up the state. But the GC (and thus the heap verifier) can observe this invalid state why materializing field values, so we need to relax the verification slightly. BUG=chromium:729573,chromium:732176 R=mstarzinger@chromium.org Review-Url: https://codereview.chromium.org/2933283002 Cr-Commit-Position: refs/heads/master@{#45988}
-
- 16 Jun, 2017 1 commit
-
-
Camillo Bruni authored
Storing the boilerplate on the first run leads to memory ovehead for code that is run only once. Hence we directly return the creating literal on the first run and only start creating copies from the second run on. Bug: v8:6211 Change-Id: I69b96d124a5b594b991fdbcc76dbf935d973ffad Reviewed-on: https://chromium-review.googlesource.com/530688 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#45975}
-
- 15 Jun, 2017 1 commit
-
-
Adam Klein authored
This reverts commit 8196e102. Reason for revert: Performance regression due to hashcode lookup. Original change's description: > [builtins] Move most WeakMap/WeakSet code from JS to C++ builtins > > They were already implemented mostly in C++ (only error/negative > cases were handled in script), so this is mostly just a cleanup. > Only the constructors remain in script after this CL. > > Bug: v8:6354 > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng > Change-Id: I5b3579337a8e33dc30d49c2da5cfd42baec697bb > Reviewed-on: https://chromium-review.googlesource.com/531670 > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> > Commit-Queue: Adam Klein <adamk@chromium.org> > Cr-Commit-Position: refs/heads/master@{#45924} TBR=adamk@chromium.org,cbruni@chromium.org,gsathya@chromium.org Bug: v8:6354, chromium:733238 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Ia5a741b9587886298f3ca057f6a6adeba556b8e0 Reviewed-on: https://chromium-review.googlesource.com/537207Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#45966}
-
- 14 Jun, 2017 3 commits
-
-
Ulan Degenbaev authored
This patch also changes the visitor of BytecodeArray to use BytecodeArray::BodyDescriptor. BUG=chromium:733159 Change-Id: I2ac72c97ec51996b5b100c447b543895180f4f78 Reviewed-on: https://chromium-review.googlesource.com/535674Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#45955}
-
Michael Starzinger authored
This removes support for reconstructing stack frames for full-codegen from the deoptimizer. We no longer deoptimize to such code. This also allows us to remove the {DeoptimizationOutputData} data structure. R=jarin@chromium.org BUG=v8:6409 Change-Id: Id28ef05aa985b6877b5c91926a7d7d0d6d6e661d Reviewed-on: https://chromium-review.googlesource.com/535537Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45943}
-
Michael Starzinger authored
This removes the ability to prepare bailout points in code generated by the {FullCodeGenerator}. Such code is no longer used as the target of deoptimization attempts, hence storing deoptimization data is obsolete. R=jarin@chromium.org BUG=v8:6409 Change-Id: I3200182a6e88014ce953881fa0d1ac0bc65ee424 Reviewed-on: https://chromium-review.googlesource.com/533153Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45939}
-
- 13 Jun, 2017 7 commits
-
-
bmeurer authored
Port the baseline implementation of Object.prototype.isPrototypeOf to the CodeStubAssembler, sharing the existing prototype chain lookup logic with the instanceof / OrdinaryHasInstance implementation. Based on that, do the same in TurboFan, introducing a new JSHasInPrototypeChain operator, which encapsulates the central prototype chain walk logic. This speeds up Object.prototype.isPrototypeOf by more than a factor of four, so that the code A.prototype.isPrototypeOf(a) is now performance-wise on par with a instanceof A for the case where A is a regular constructor function and a is an instance of A. Since instanceof does more than just the fundamental prototype chain lookup, it was discovered in Node core that O.p.isPrototypeOf would be a more appropriate alternative for certain sanity checks, since it's less vulnerable to monkey-patching. In addition, the Object builtin would also avoid the performance-cliff associated with instanceof (due to the Symbol.hasInstance hook), as for example hit by https://github.com/nodejs/node/pull/13403#issuecomment-305915874. The main blocker was the missing performance of isPrototypeOf, since it was still a JS builtin backed by a runtime call. This CL also adds more test coverage for the Object.prototype.isPrototypeOf builtin, especially when called from optimized code. CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_rel_ng BUG=v8:5269,v8:5989,v8:6483 R=jgruber@chromium.org Review-Url: https://codereview.chromium.org/2934893002 Cr-Commit-Position: refs/heads/master@{#45925}
-
Adam Klein authored
They were already implemented mostly in C++ (only error/negative cases were handled in script), so this is mostly just a cleanup. Only the constructors remain in script after this CL. Bug: v8:6354 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I5b3579337a8e33dc30d49c2da5cfd42baec697bb Reviewed-on: https://chromium-review.googlesource.com/531670Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#45924}
-
Leszek Swirski authored
This reverts commit e39c9e02. Reason for revert: Breaks https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20debug/builds/15561 Original change's description: > [compiler] Drive optimizations with feedback vector > > For interpreted functions, use the optimized code slot in the feedback vector > to store an optimization marker (optimize/in optimization queue) rather than > changing the JSFunction's code object. Then, adapt the self-healing mechanism > to also dispatch based on this optimization marker. Similarly, replace SFI > marking with optimization marker checks in CompileLazy. > > This allows JSFunctions to share optimization information (replacing shared > function marking) without leaking this information across native contexts. Non > I+TF functions (asm.js or --no-turbo) use a CheckOptimizationMarker shim which > generalises the old CompileOptimized/InOptimizationQueue builtins and also > checks the same optimization marker as CompileLazy and > InterpreterEntryTrampoline. > > Change-Id: I6826bdde7ab9a919cdb6b69bc0ebc6174bcb91ae > Reviewed-on: https://chromium-review.googlesource.com/509716 > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#45901} TBR=rmcilroy@chromium.org,mstarzinger@chromium.org,leszeks@chromium.org No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: Ib6c2b4d90fc5f659a6dcaf3fd30321507ca9cb94 Reviewed-on: https://chromium-review.googlesource.com/532916Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#45903}
-
Leszek Swirski authored
For interpreted functions, use the optimized code slot in the feedback vector to store an optimization marker (optimize/in optimization queue) rather than changing the JSFunction's code object. Then, adapt the self-healing mechanism to also dispatch based on this optimization marker. Similarly, replace SFI marking with optimization marker checks in CompileLazy. This allows JSFunctions to share optimization information (replacing shared function marking) without leaking this information across native contexts. Non I+TF functions (asm.js or --no-turbo) use a CheckOptimizationMarker shim which generalises the old CompileOptimized/InOptimizationQueue builtins and also checks the same optimization marker as CompileLazy and InterpreterEntryTrampoline. Change-Id: I6826bdde7ab9a919cdb6b69bc0ebc6174bcb91ae Reviewed-on: https://chromium-review.googlesource.com/509716 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45901}
-
Ulan Degenbaev authored
Since code flushing is gone, we treat the code entry as a strong field. Change-Id: Idfcaf6fbfd84f7e4435b81d30a2a0e1be71ec89d Reviewed-on: https://chromium-review.googlesource.com/531285 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#45894}
-
Leszek Swirski authored
With the deprecation of Crankshaft, it's no longer necessary for FullCodeGen to keep track of its runtime profiler ticks on the code object, and we can instead unify the behaviour of FCG and Ignition to both increment the SFI counter instead. Bug: v8:6408 Change-Id: Idcdd673aa39af06fe15a0fc14dfda2afafb5e417 Reviewed-on: https://chromium-review.googlesource.com/528117Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#45892}
-
Marja Hölttä authored
This is an unexciting CL (doesn't make the build step situation any better) but enables moving FixedArray & co next. BUG=v8:5402,v8:6474 Change-Id: Ia36eb3973e6242f6f68e02b9f583dc552d48422f Reviewed-on: https://chromium-review.googlesource.com/529168 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45889}
-
- 12 Jun, 2017 1 commit
-
-
Marja Hölttä authored
BUG=v8:5402,v8:6474 Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: Id38249fe9dc88001218aa1faa1b31c9d2f9703d1 Reviewed-on: https://chromium-review.googlesource.com/528102 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45853}
-
- 09 Jun, 2017 1 commit
-
-
Michael Starzinger authored
R=cbruni@chromium.org BUG=v8:6474 Change-Id: I84be45bab041082cc66b5fdd70a9e799a44facee Reviewed-on: https://chromium-review.googlesource.com/529207Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45819}
-
- 08 Jun, 2017 1 commit
-
-
Toon Verwaest authored
Don't treat new prototypes differently depending on how they become a prototype. This is work towards always keeping prototypes in slow-mode. Bug: v8:6471 Change-Id: I62de1018e21d91fda3a5da044615f32c718910b1 Reviewed-on: https://chromium-review.googlesource.com/526596Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#45781}
-
- 07 Jun, 2017 1 commit
-
-
Camillo Bruni authored
Bug: chromium:727000 Change-Id: I0fb6fecc9564aee97bcf7c0e9201c580572061be Reviewed-on: https://chromium-review.googlesource.com/525717 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#45767}
-
- 06 Jun, 2017 1 commit
-
-
jgruber authored
This CL implements general infrastructure for block coverage together with initial support for if-statements. Coverage output can be generated in lcov format by d8 as follows: $ d8 --block-coverage --lcov=$(echo ~/simple-if.lcov) ~/simple-if.js $ genhtml ~/simple-if.lcov -o ~/simple-if $ chrome ~/simple-if/index.html A high level overview of the implementation follows: The parser now collects source ranges unconditionally for relevant AST nodes. Memory overhead is very low and this seemed like the cleanest and simplest alternative. Bytecode generation uses these ranges to allocate coverage slots and insert IncBlockCounter instructions (e.g. at the beginning of then- and else blocks for if-statements). The slot-range mapping is generated here and passed on through CompilationInfo, and is later accessible through the SharedFunctionInfo. The IncBlockCounter bytecode fetches the slot-range mapping (called CoverageInfo) from the shared function info and simply increments the counter. We don't collect native-context-specific counts as they are irrelevant to our use-cases. Coverage information is finally generated on-demand through Coverage::Collect. The only current consumer is a d8 front-end with lcov-style output, but the short-term goal is to expose this through the inspector protocol. BUG=v8:6000 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_rel_ng Review-Url: https://codereview.chromium.org/2882973002 Cr-Commit-Position: refs/heads/master@{#45737}
-
- 02 Jun, 2017 1 commit
-
-
bmeurer authored
When the input to Function.prototype.bind is a known function, we can inline the allocation of the JSBoundFunction into TurboFan, which provides a 2x speed-up for several hot functions in Node streams (as discovered by Matteo Collina). One of example of this can be found in https://github.com/nodejs/node/pull/13322, which can be optimized and made more readable using bind instead of closures. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2916063002 Cr-Commit-Position: refs/heads/master@{#45679}
-