- 05 Jun, 2018 2 commits
-
-
Alexey Kozyatinskiy authored
Currently we enable instrumentation if debugger is active. With this approach we can not: - capture async stack when debugger is disabled, - avoid async instrumentation overhead when debugger is enabled and async stacks are disabled. R=dgozman@chromium.org,yangguo@chromium.org Bug: none Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I19400c4c4e12b6c9b5a980fb6bd3293bac6e6a64 Reviewed-on: https://chromium-review.googlesource.com/1081494 Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Dmitry Gozman <dgozman@chromium.org> Cr-Commit-Position: refs/heads/master@{#53530}
-
Anna Henningsen authored
Add an inspection callback for embedders that allows tracking of `Atomics.wait()` calls in order to enable diagnostic tooling around it, as well as providing a way to break out of an `Atomics.wait()` call without having to fully terminate execution. The motivation here is that this allows embedders to perform somewhat customizable deadlock detection. Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Ib6346747aa3cbffb07cf6abd12645e2d98584f0f Reviewed-on: https://chromium-review.googlesource.com/1080788 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#53517}
-
- 30 May, 2018 1 commit
-
-
Alexei Filippov authored
Do not create a CPU profiler for each isolate implicitly. BUG=v8:7070 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I6ddd93c58f56591477d8fe4249103a74b7698904 Reviewed-on: https://chromium-review.googlesource.com/1043449 Commit-Queue: Alexei Filippov <alph@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#53449}
-
- 28 May, 2018 1 commit
-
-
Yang Guo authored
Introduce a new public API called CodeEventListener to allow embedders to better support external profilers and other diagnostic tools without relying on unsupported methods like --perf-basic-prof. Bug: v8:7694 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I063cc965394d59401358757634c9ea84c11517e9 Co-authored-by:
Daniel Beckert <daniel@sthima.com.br> Reviewed-on: https://chromium-review.googlesource.com/1028770 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#53382}
-
- 24 May, 2018 1 commit
-
-
Hannes Payer authored
Bug: chromium:846360 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I5376d4f6f9c8df768d60c63e0a767bf41b51b8b3 Reviewed-on: https://chromium-review.googlesource.com/1071531Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53345}
-
- 14 May, 2018 1 commit
-
-
Maya Lekova authored
Revert "[async-await] Eliminate throwaway promise in async functions." This reverts commit a840f1f8. Revert "[async-generators] Also avoid throwaway promise here." This reverts commit feb545ce. Revert "[async-await] Turn await closures into intrinsics." This reverts commit d97bb317. Revert "[async-generators] Add fast-path for primitives in AsyncGeneratorYield." This reverts commit e57b500e. Revert "[async-generators] Add fast-path to skip "then" lookup in AsyncGeneratorResolve." This reverts commit c15802e1. Revert "[promises] Correctly run before/after hooks for await." This reverts commit ca763923. Bug: v8:7253, v8:7745 Change-Id: I25ad0d2df3cfbc84dbb431aa25b268bce8a39e89 Reviewed-on: https://chromium-review.googlesource.com/1049975 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53139}
-
- 09 May, 2018 2 commits
-
-
Alexey Kozyatinskiy authored
Allocation is super slow and produce big performance regression on blink side. Bug: chromium:839567,chromium:839809 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I3e9989435515ecfaedaee60c1f0c6939b9053e95 Reviewed-on: https://chromium-review.googlesource.com/1053105 Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53115}
-
Alexei Filippov authored
We cannot drop the deprecated API right away because we need to keep binary compatiblity. As a short term solution create CPU profiler lazily if the API is called. BUG=v8:7070 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I04029844895976b25db165f4fba6afbfe1681913 Reviewed-on: https://chromium-review.googlesource.com/1047848Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Alexei Filippov <alph@chromium.org> Cr-Commit-Position: refs/heads/master@{#53113}
-
- 07 May, 2018 1 commit
-
-
jgruber authored
Stubs and builtins are very similar. The main differences are that stubs can be parameterized and may be generated at runtime, whereas builtins are generated at mksnapshot-time and shipped with the snapshot (or embedded into the binary). My main motivation for these conversions is that we can generate faster calls and jumps to (embedded) builtins callees from (embedded) builtin callers. Instead of going through the builtins constants table indirection, we can simply do a pc-relative call/jump. This also unlocks other refactorings, e.g. removal of CallRuntimeDelayed. TBR=mlippautz@chromium.org Bug: v8:6666 Change-Id: I4cd63477f19a330ec70bbf20e2af8a42fb05fabb Reviewed-on: https://chromium-review.googlesource.com/1044245Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53027}
-
- 03 May, 2018 1 commit
-
-
Benoît Lizé authored
As with other code size stats, this doesn't distinguish between live and dead objects, and doesn't scan the young generation. Also make ExternalString::is_short() const. Bug: chromium:837659 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I72815edb719ba61d9727e226ff1da0fc4af22a24 Reviewed-on: https://chromium-review.googlesource.com/1032994 Commit-Queue: Benoit L <lizeb@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#52955}
-
- 01 May, 2018 1 commit
-
-
Kenton Varda authored
In b49206de I changed thread_data_table_ and thread_data_table_mutex_ from static members to regular class member variables. To do this, I only deleted the `static` keyword and left the declarations where they were. This was a little odd in that all of the dynamic class members are declared together in one place, but now these two new members weren't next to the rest. Making it a little bit weirder is the fact that these two new members actually ended up being the first members of the class, since the exsiting dynamic members were declared later. This change merely moves these two members down to the end of the dynamic member variable list, where they probably should have gone. Bug: chromium:837477 Change-Id: If993935cc56c8026bb7331493ed657c42ba06ac7 Reviewed-on: https://chromium-review.googlesource.com/1036478Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#52902}
-
- 26 Apr, 2018 4 commits
-
-
Ben L. Titzer authored
This CL simplifies and extends the implementation of Managed<T> and now uses a std::shared_ptr<T> underneath in order to offer cross-isolate management of C++ allocated memory. R=mstarzinger@chromium.org CC=ulan@chromium.org Bug: v8:7424 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: Id43a26f565677e8c9cdfd73810568d4f2b1871fe Reviewed-on: https://chromium-review.googlesource.com/1028190Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52820}
-
jgruber authored
This is a reland of f5d30851 Original change's description: > [builtins] Introduce further constant & external reference indirections > > This introduces further indirections for embedded constants and > external references for builtins generated by the macro-assembler. > The used mechanisms (LookupConstant and LookupExternalReference) are > identical to what we already use in CSA. > > Almost all builtins are now isolate-independent in both release and > debug modes. snapshot_blob.bin is roughly 670K smaller in embedded > builds vs. non-embedded builds, while libv8.so is roughly 280K larger. > > Bug: v8:6666 > Change-Id: I7a6c2193ef5a763e6cf7543dd51597d6fff6c110 > Reviewed-on: https://chromium-review.googlesource.com/1006581 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52810} TBR=mstarzinger@chromium.org Bug: v8:6666 Change-Id: I73dfe207f2c5f79a9a06c165c75f5619e88a5a17 Reviewed-on: https://chromium-review.googlesource.com/1030550Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52819}
-
jgruber authored
This reverts commit f5d30851. Breakages: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20noi18n%20-%20debug/builds/20370 https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20custom%20snapshot%20-%20debug/builds/21174 TBR=yangguo@chromium.org No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6666 Change-Id: Ic4d28fccf647aadcac0a60430b7fb66d22ce4577 Reviewed-on: https://chromium-review.googlesource.com/1030431Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52813}
-
jgruber authored
This introduces further indirections for embedded constants and external references for builtins generated by the macro-assembler. The used mechanisms (LookupConstant and LookupExternalReference) are identical to what we already use in CSA. Almost all builtins are now isolate-independent in both release and debug modes. snapshot_blob.bin is roughly 670K smaller in embedded builds vs. non-embedded builds, while libv8.so is roughly 280K larger. Bug: v8:6666 Change-Id: I7a6c2193ef5a763e6cf7543dd51597d6fff6c110 Reviewed-on: https://chromium-review.googlesource.com/1006581 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52810}
-
- 25 Apr, 2018 1 commit
-
-
Alexey Kozyatinskiy authored
When only_terminate_in_safe_scope flag is passed as CreateParams for v8::Isolate, V8 does not trigger intrruption for termination if there is no explicit SafeForTerminationeScope. Scope enables termination only in direct v8 calls, any recursive calls require explicit SafeForTerminationScope. R=yangguo@chromium.org Bug: chromium:820640 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Iac17e30a4b47aa84e70e9218ca0adca9d07f726e Reviewed-on: https://chromium-review.googlesource.com/1025390Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#52793}
-
- 24 Apr, 2018 1 commit
-
-
Kenton Varda authored
For use cases with a large number of threads or a large number of isolates (or both), ThreadDataTable can be a major performance bottleneck due to O(n) lookup time of the linked list. Switching to a hash map reduces this to O(1). Example 1: Sandstorm.io, a Node.js app that utilizes "fibers", was observed spending the majority of CPU time iterating over the ThreadDataTable. See: https://sandstorm.io/news/2016-09-30-fiber-bomb-debugging-story Example 2: Cloudflare's Workers engine, a high-multi-tenancy web server framework built on V8 (but not Node), creates large numbers of threads and isolates per-process. It saw a 34x improvement in throughput when we applied this patch. Cloudflare has been using a patch in production since the Workers launch which replaces the linked list with a hash map -- but still global. This commit builds on that but goes further and creates a separate hash map and mutex for each isolate, with the table being a member of the Isolate class. This avoids any globals and should reduce lock contention. Bug: v8:5338 Change-Id: If0d11509afb2e043b888c376e36d3463db931b47 Reviewed-on: https://chromium-review.googlesource.com/1014407Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#52753}
-
- 23 Apr, 2018 5 commits
-
-
Alexey Kozyatinskiy authored
This CL introduced SafeForInterruptsScope. This scope overrides outer PostponeInterruptsScopes: - reschedule postponed interrupts if needed, - allow requesting new interrupts. As soon as scope removed interrupts are posponed if needed. This scope will be: - used to allow inspector to interrupt and terminate DebugeEvaluate::Local, - exposed with new flag on Isolate to implement SafeForTerminationScope in blink. R=yangguo@chromium.org Bug: chromium:820640 Change-Id: I15befc10c2cee393d1e3be48cecb31ee14dae638 Reviewed-on: https://chromium-review.googlesource.com/1022969 Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#52743}
-
Sigurd Schneider authored
This is a reland of 5728b3fb Original change's description: > [builtins] Separate species protectors for Array, TypedArray, Promise > > Previously, there was one species protector for Array, TypedArray and > Promise. This CL splits the protector in three separate ones. This means > that invalidating one of them does not have negative performance > implications for the other ones. > > Bug: chromium:835347, v8:7340 > Change-Id: Id84aa0071f17096192965264eb60ddadd1e8e73f > Reviewed-on: https://chromium-review.googlesource.com/1023408 > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52733} Bug: chromium:835347, v8:7340 Change-Id: I0c0188a0723e206ddb362834bcf872b23cd7666d Reviewed-on: https://chromium-review.googlesource.com/1023811 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52742}
-
Sigurd Schneider authored
This reverts commit 5728b3fb. Reason for revert: Breaks noi18n build Original change's description: > [builtins] Separate species protectors for Array, TypedArray, Promise > > Previously, there was one species protector for Array, TypedArray and > Promise. This CL splits the protector in three separate ones. This means > that invalidating one of them does not have negative performance > implications for the other ones. > > Bug: chromium:835347, v8:7340 > Change-Id: Id84aa0071f17096192965264eb60ddadd1e8e73f > Reviewed-on: https://chromium-review.googlesource.com/1023408 > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52733} TBR=sigurds@chromium.org,bmeurer@chromium.org Change-Id: Ied8b436e7991c759eb3b98702c142aa127a7e63c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:835347, v8:7340 Reviewed-on: https://chromium-review.googlesource.com/1024151Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#52736}
-
Sigurd Schneider authored
Previously, there was one species protector for Array, TypedArray and Promise. This CL splits the protector in three separate ones. This means that invalidating one of them does not have negative performance implications for the other ones. Bug: chromium:835347, v8:7340 Change-Id: Id84aa0071f17096192965264eb60ddadd1e8e73f Reviewed-on: https://chromium-review.googlesource.com/1023408 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52733}
-
Andreas Haas authored
At the moment, the isolate is allocated and initialized in a single step. This has the downside that the platform cannot register the isolate before the isolate gets initialized, and therefore the platform is not available for the isolate during initialization. With this CL we register the uninitialized isolate on the platform and initialize the isolate after that. This change is needed to allow the creation of task runners already during the initialization of the isolate. The related chromium CL: https://crrev.com/c/1015020 R=yangguo@chromium.org Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I52e89388a757f2693d1a800e7aa7701aa0080795 Reviewed-on: https://chromium-review.googlesource.com/1014044Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52731}
-
- 17 Apr, 2018 1 commit
-
-
Andreas Haas authored
In a recent CL (https://crrev.com/c/1012039) I removed the only valid use case of {external_reference_redirector}. In this CL I remove the remaining uses, which are more or less checks if there is a simulator or not. R=mstarzinger@chromium.org Change-Id: I96203b7b112d57bb3feb9d6863b036747b1963f0 Reviewed-on: https://chromium-review.googlesource.com/1014126 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52649}
-
- 16 Apr, 2018 1 commit
-
-
Dan Elphick authored
Previously Isolate and Factory relied on the undefined behavior of reinterpret_cast to switch between the two unrelated classes (which worked because Factory had no data members). With Isolate inheriting from Factory, it's now possible to switch between the two classes using c-style casts. These are allowed under the C++ standard. The inheritance is private which allows the continuing separation of the Factory and Isolate namespaces. This is a defensive clean-up, since ubsan does not yet detect the previous undefined behavior. Bug: v8:3770 Change-Id: I0ccf09f1d34f747550812ce698ab7e182812409e Reviewed-on: https://chromium-review.googlesource.com/1010122Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#52615}
-
- 11 Apr, 2018 1 commit
-
-
Alexei Filippov authored
Previously embedder had to create an instance of TracingCpuProfiler explicitly. The patch makes the profiler created automatically for every isolate. The profiler has no overhead unless tracing with v8.cpu_profiler category is enabled. Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I9369c2c56bcddc72093eda33dc2bc185c9253b4a Reviewed-on: https://chromium-review.googlesource.com/1006049 Commit-Queue: Alexei Filippov <alph@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#52552}
-
- 09 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
MUST_USE_RESULT was deprecated for some time. This removes it and replaces all uses by the equivalent V8_WARN_UNUSED_RESULT. R=mstarzinger@chromium.org Bug: v8:7570 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I86883218638e64eeeb7a5891904319ed0844a004 Reviewed-on: https://chromium-review.googlesource.com/999533 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#52486}
-
- 05 Apr, 2018 1 commit
-
-
Alexey Kozyatinskiy authored
This is a reland of 7a2c3713 Original change's description: > [debug] introduced runtime side effect check > > This CL demonstrates minimum valuable addition to existing debug evaluate > without side effects mechanism. > With this CL user can evaluate expressions like: > [a,b] // create any kind of temporary array literals > [a,b].reduce((x,y) => x + y, 0); // use reduce method > [1,2,3].fill(2); // change temporary arrays > > The core idea: any change of the object created during evaluation without > side effects is side effect free. As soon as we try to store this temporary > object to object existed before evaluation we will terminate execution. > > Implementation: > - track all objects allocated during evaluation and mark them as temporary, > - patch all bytecodes which change objects. > > A little more details (including performance analysis): [1]. > > [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit# > > Bug: v8:7588 > Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111 > Reviewed-on: https://chromium-review.googlesource.com/972615 > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52370} Bug: v8:7588 Change-Id: Ibc92bf19155f2ddaedae39b0c576b994e84afcf8 Reviewed-on: https://chromium-review.googlesource.com/996760Reviewed-by:
Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#52373}
-
- 04 Apr, 2018 2 commits
-
-
Aleksey Kozyatinskiy authored
This reverts commit 7a2c3713. Reason for revert: msan is broken Original change's description: > [debug] introduced runtime side effect check > > This CL demonstrates minimum valuable addition to existing debug evaluate > without side effects mechanism. > With this CL user can evaluate expressions like: > [a,b] // create any kind of temporary array literals > [a,b].reduce((x,y) => x + y, 0); // use reduce method > [1,2,3].fill(2); // change temporary arrays > > The core idea: any change of the object created during evaluation without > side effects is side effect free. As soon as we try to store this temporary > object to object existed before evaluation we will terminate execution. > > Implementation: > - track all objects allocated during evaluation and mark them as temporary, > - patch all bytecodes which change objects. > > A little more details (including performance analysis): [1]. > > [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit# > > Bug: v8:7588 > Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111 > Reviewed-on: https://chromium-review.googlesource.com/972615 > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52370} TBR=ulan@chromium.org,rmcilroy@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org,leszeks@chromium.org Change-Id: Ied1739c6308b13a4981189e0999f5912316cf456 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7588 Reviewed-on: https://chromium-review.googlesource.com/996135Reviewed-by:
Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#52371}
-
Alexey Kozyatinskiy authored
This CL demonstrates minimum valuable addition to existing debug evaluate without side effects mechanism. With this CL user can evaluate expressions like: [a,b] // create any kind of temporary array literals [a,b].reduce((x,y) => x + y, 0); // use reduce method [1,2,3].fill(2); // change temporary arrays The core idea: any change of the object created during evaluation without side effects is side effect free. As soon as we try to store this temporary object to object existed before evaluation we will terminate execution. Implementation: - track all objects allocated during evaluation and mark them as temporary, - patch all bytecodes which change objects. A little more details (including performance analysis): [1]. [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit# Bug: v8:7588 Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111 Reviewed-on: https://chromium-review.googlesource.com/972615 Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#52370}
-
- 27 Mar, 2018 1 commit
-
-
Ulan Degenbaev authored
The embedder can get notification when V8 heap size approaches the heap limit and can extend the heap limit if needed using - v8::Isolate::AddNearHeapLimitCallback - v8::Isolate::RemoveNearHeapLimitCallback This generalizes the exiting v8::debug::SetOutOfMemoryCallback API. Bug: chromium:824214 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ia444cb7efb6fe85c57fa3785e8fd1d8b654a5224 Reviewed-on: https://chromium-review.googlesource.com/979447 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#52238}
-
- 26 Mar, 2018 2 commits
-
-
jgruber authored
This removes one level of indirection from loading external references, which can now be accesses through the root pointer with a single load: [kRootPointer + <offset from root list to desired offset in table>] Bug: v8:6666 Change-Id: I927634993920828ff48621a0e17e5f3099782917 Reviewed-on: https://chromium-review.googlesource.com/971041 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52211}
-
jgruber authored
Access to the constant pool of off-heap builtins must use Instruction{Start,Size} instead of the raw instruction_{start,size} accessors, and we need to copy the constant_pool_offset field when creating trampolines. This in turn required access to the embedded blob without an associated isolate, which is now implemented by global variable set by each isolate. Both writes and reads are relaxed, as races do not matter since each isolate will attempt to set the same value of the blob and its size. Drive-by: Support off-heap code disassembly. Bug: v8:6666,v8:7575 Change-Id: I4f203acd4dc128339cf2dd54b3253d9552616649 Reviewed-on: https://chromium-review.googlesource.com/973442 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52209}
-
- 22 Mar, 2018 1 commit
-
-
jgruber authored
This is a reland of 9afde91b Original change's description: > [builtins] Load external references from the external-reference-table > > Off-heap code cannot embed external references. With this CL, we load > from the external reference table (reached through the root pointer) > instead. > > In a follow-up, the table could be stored within the isolate itself, > removing one more level of indirection. > > Bug: v8:6666 > Change-Id: I4c612ad3d4112ec03c3b389f5bfb9cdc3dc8a671 > Reviewed-on: https://chromium-review.googlesource.com/970468 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52073} TBR=mstarzinger@chromium.org Bug: v8:6666, v8:7580 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I30639fe17ea345119d38a176a29d521c4b1904cb Reviewed-on: https://chromium-review.googlesource.com/975241 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#52141}
-
- 21 Mar, 2018 2 commits
-
-
Jakob Gruber authored
This reverts commit f8184738. Reason for revert: arm is still unhappy https://build.chromium.org/p/client.v8.ports/builders/V8%20Arm%20GC%20Stress/builds/6633 Original change's description: > Reland "[builtins] Load external references from the external-reference-table" > > This is a reland of 9afde91b > > Original change's description: > > [builtins] Load external references from the external-reference-table > > > > Off-heap code cannot embed external references. With this CL, we load > > from the external reference table (reached through the root pointer) > > instead. > > > > In a follow-up, the table could be stored within the isolate itself, > > removing one more level of indirection. > > > > Bug: v8:6666 > > Change-Id: I4c612ad3d4112ec03c3b389f5bfb9cdc3dc8a671 > > Reviewed-on: https://chromium-review.googlesource.com/970468 > > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > > Reviewed-by: Yang Guo <yangguo@chromium.org> > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#52073} > > TBR=mstarzinger@chromium.org > > Bug: v8:6666, v8:7580 > Change-Id: I163cfc15605c1183b79ead77df0e37d71d60b6f7 > Reviewed-on: https://chromium-review.googlesource.com/972821 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52118} TBR=yangguo@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org Change-Id: I5bcd1a1c84c6e9a6a24364390c9359d43c77120d No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6666, v8:7580 Reviewed-on: https://chromium-review.googlesource.com/973782Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52121}
-
jgruber authored
This is a reland of 9afde91b Original change's description: > [builtins] Load external references from the external-reference-table > > Off-heap code cannot embed external references. With this CL, we load > from the external reference table (reached through the root pointer) > instead. > > In a follow-up, the table could be stored within the isolate itself, > removing one more level of indirection. > > Bug: v8:6666 > Change-Id: I4c612ad3d4112ec03c3b389f5bfb9cdc3dc8a671 > Reviewed-on: https://chromium-review.googlesource.com/970468 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52073} TBR=mstarzinger@chromium.org Bug: v8:6666, v8:7580 Change-Id: I163cfc15605c1183b79ead77df0e37d71d60b6f7 Reviewed-on: https://chromium-review.googlesource.com/972821 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52118}
-
- 20 Mar, 2018 2 commits
-
-
Michael Achenbach authored
This reverts commit 9afde91b. Reason for revert: https://build.chromium.org/p/client.v8.ports/builders/V8%20Arm/builds/6616 Original change's description: > [builtins] Load external references from the external-reference-table > > Off-heap code cannot embed external references. With this CL, we load > from the external reference table (reached through the root pointer) > instead. > > In a follow-up, the table could be stored within the isolate itself, > removing one more level of indirection. > > Bug: v8:6666 > Change-Id: I4c612ad3d4112ec03c3b389f5bfb9cdc3dc8a671 > Reviewed-on: https://chromium-review.googlesource.com/970468 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52073} TBR=yangguo@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org Change-Id: Iecc2a68e54339e153f1d1e882d8972d5c9cff442 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6666 Reviewed-on: https://chromium-review.googlesource.com/971902Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#52083}
-
jgruber authored
Off-heap code cannot embed external references. With this CL, we load from the external reference table (reached through the root pointer) instead. In a follow-up, the table could be stored within the isolate itself, removing one more level of indirection. Bug: v8:6666 Change-Id: I4c612ad3d4112ec03c3b389f5bfb9cdc3dc8a671 Reviewed-on: https://chromium-review.googlesource.com/970468 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52073}
-
- 19 Mar, 2018 3 commits
-
-
Yang Guo authored
Bug: v8:7552 Change-Id: I6bee9de640bae67e005fc174ea53875d79afc1ba Reviewed-on: https://chromium-review.googlesource.com/964281 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#52037}
-
Benedikt Meurer authored
This extends the Promise#then protector to also guard the intrinsic %ObjectPrototype%, making it usable for fast-path logic in the AsyncGeneratorResolve operation, where we can skip the "then" lookup on the iteratorResult in that case. We also add a corresponding fast- path to the ResolvePromise builtin itself, which avoids the second "then" lookup on the async iterator side. This reduces execution time of the fibonacci-async-es2017-native test from 186.9ms to 171.2ms, which corresponds to an improvement of 8.4% in this case. Bug: v8:7253 Change-Id: Ia09effc81a016703780d5c308f541e3d797ccabe Reviewed-on: https://chromium-review.googlesource.com/967203Reviewed-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@{#52024}
-
jgruber authored
This is a reland of f1b1ec70 Original change's description: > [builtins] Remove off-heap builtins from the snapshot > > This CL is the final major step towards shipping off-heap-safe builtins > embedded into the binary. > > Prior to snapshot serialization, we now: > * create the embedded blob containing off-heap instruction streams, > * use that to generate embedded.cc (containing embedded binary data), > * replace off-heap-safe builtins with trampolines, > * and serialize those into the final snapshot. > > The new RelocInfo::OFF_HEAP_TARGET kind is used to fix up trampoline > targets on deserialization. > > Bug: v8:6666 > Change-Id: Ib07aea9e3bd7ecdec42291c1388b3a7453ea96ce > Reviewed-on: https://chromium-review.googlesource.com/950775 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#51960} TBR=yangguo@chromium.org,mstarzinger@chromium.org Cq-Include-Trybots: luci.v8.try:v8_mac64_dbg,v8_mac64_rel Bug: v8:6666 Change-Id: Id9954af3c8195754ff3658c4603858904fcf88c4 Reviewed-on: https://chromium-review.googlesource.com/964481 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52006}
-