- 17 Nov, 2021 2 commits
-
-
Ng Zhi An authored
NONE clashes with the PropertyAttributes::NONE, which is defined in v8::internal namespace. PropertyAttributes have too many call sites and depend on using the enums as masks, making it hard to convert to an enum class. So we are changing the name instead. Bug: v8:12244 Change-Id: Iec0be12c626549cca137aceeaee0e30fafab8b05 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3284003 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#77956}
-
Michael Lippautz authored
Change-Id: I38cd955d3e41861d955c529ec56890b45effccf0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3284897 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77948}
-
- 15 Nov, 2021 2 commits
-
-
Leszek Swirski authored
Posting compile tasks from the parser has several issues: 1. We don't know how many functions there will be total, so we can't yet allocate shared_function_infos array on the Script 2. Without this array, inner function compiles can't look up their own inner functions during bytecode finalization, so we can't run that finalization before script parse completes 3. Scope analysis can't have run yet, so we can only post top-level function tasks and if we allocate SharedFunctionInfos early they are forced into a bit of a limbo state without an outer ScopeInfo. Instead, we can post compile tasks during bytecode generation. Then, the script parse is guaranteed to have completed, so we'll have a shared_function_infos array and we will have allocated ScopeInfos already. This also opens the door for posting tasks for compiling more inner functions than just top-level, as well as generating better code for functions/methods that reference same-script top-level let/const/class. Bug: chromium:1267680 Change-Id: Ie1a3a3c6f1b264c4ef28cd4763bfc6dc08f45d4d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3277884 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#77894}
-
Manos Koukoutos authored
In each wasm CallDescriptor, we store the signature of the call based on the real parameters passed to the call. This signature is more precise than the formal function signature. We use this signature in inlining to enable more optimizations. Changes: - Add wasm_sig_ field to CallDescriptor. - Construct the real signature in {DoCall} and {DoReturnCall} in graph-builder-interface, and pass it to all call-related functions in WasmGraphBuilder. - Update {ReplaceTypeInCallDescriptorWith} to use ValueType over MachineType. Construct the updated function signature. - In wasm-inlining, kill the Call node after inlining. - Add two tests. Bug: v8:11510 Change-Id: Ica711b6b4d83945ecb7201be26577eab7db3c060 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3270539Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77889}
-
- 12 Nov, 2021 2 commits
-
-
Leszek Swirski authored
Unify parse post-processing between main-thread and background-thread parsing, now that we have LocalIsolate and can Internalize on background threads. As part of this, simplify the LocalIsolate parking pattern to explicitly park during ParseOnBackground, rather than being implicitly parked when ParseOnBackground is called. This reduces the amound of scoping needed in the BackgroundCompileTask::Run method. Change-Id: Ifdb128b763129bda78bd1bae89dac1c62f872350 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3277876 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#77872}
-
Leszek Swirski authored
Due to streaming, the SFI enqueueing can happen concurrently with with main-thread finalising, so we need to add locks around accesses to the SFI->Job map. Bug: v8:12370 Change-Id: I60281a954ef10f7fcde559b9529077a6b9a82c31 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3277874 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#77869}
-
- 10 Nov, 2021 1 commit
-
-
Vasili Skurydzin authored
Change-Id: Ic868b6f9bb17bb9d6e6fe2a7203a41383aef5cf7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3272206Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Vasili Skurydzin <vasili.skurydzin@ibm.com> Cr-Commit-Position: refs/heads/main@{#77823}
-
- 09 Nov, 2021 1 commit
-
-
Michael Lippautz authored
Adds support for aborting compaction when finalizing with stack: - never_compact_with_stack: All pages are aborted; - never_compact_code_space_with_stack: Only code space pages are aborted; This flags allow simulating a worst case where a stack cannot be considered precise, or evacuation candiate is refered to from a stack slot that V8 has no info for. Bug: v8:12251 Change-Id: Ice24ac87a985b8ecf7b5cbb5c106ad4a3ae1944b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3173682 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#77792}
-
- 08 Nov, 2021 1 commit
-
-
Michael Lippautz authored
Explicit write barriers for internal fields are deprecated as they are automatically emitted by V8. Depends on: https://crrev.com/c/3263924 Bug: v8:12356 Change-Id: I171ba5b42a6570ce52e2e2ea1b7c1029d5a8a3a7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3263888Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77772}
-
- 06 Nov, 2021 1 commit
-
-
Michael Lippautz authored
Internal fields are used for implementing edges to C++ objects in Oilpan. When setting the fields on a JS API object, we should also emit a write barrier for this edge. This mechanism replaces the explicit write barrier in V8's API which is provided through `JSHeapConsistency::*`. The internal barrier should also be slightly faster as it doesn't require any API calls. Bug: v8:12356 Change-Id: I639d18141acfb910d0ded8d987d8a0916e25431d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3257709 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#77749}
-
- 05 Nov, 2021 1 commit
-
-
Leszek Swirski authored
Remove FunctionLiterals and ParseInfo from the LazyCompileDispatcher API, passing instead the SharedFunctionInfo, a character stream, and optionally some preparse data. In the future, this should allow us to pass arbitrary uncompiled SharedFunctionInfos into the LazyCompileDispatcher. Change-Id: Iff90408f3b259c7f5df0e74687d052e75959fa48 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3262131Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#77723}
-
- 04 Nov, 2021 2 commits
-
-
Michael Lippautz authored
Adjust WATCHLISTS to only send out updates to those testfiles as part of notifying oilpan-reviews+v8@. Change-Id: Ib877f0353ea2b2d1ac06c93d450145dbeb6fcc66 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3260517 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77713}
-
Leszek Swirski authored
Remove the concept of JobId from LazyCompileDispatcher, and make SFIs the canonical id for these jobs. This has several consequences: * We no longer split enqueing a job and registering a SFI with that job. We did this previously because we could not allocate SFIs in the Parser -- now with LocalHeap we can, so we do. * We remove the separate Job vector, and make the SFI IdentityMap hold pointers to Jobs directly. This requires a small amount of extra care to deallocate Jobs when removing them from the map, but it means not having to allocate new global handles for jobs. * The SFI is passed into the BackgroundCompileTask instead of the script, so our task finalization doesn't need the SFI anymore. * We no longer need to iterate ParallelTasks after compiling (to register SFIs), so we can get rid of ParallelTasks entirely and access the dispatcher directly from the parser. There are a few drive-bys since we're touching this code: * Jobs are move to have a "state" variable rather than a collection of bools, for stricter DCHECKing. * There's no longer a set of "currently running" jobs, since this was only used to check if a job is running, we can instead inspect the job's state directly. * s/LazyCompilerDispatcher/LazyCompileDispatcher/g Change-Id: I85e4bd6db108f5e8e7fe2e919c548ce45796dd50 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3259647 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#77712}
-
- 03 Nov, 2021 2 commits
-
-
Anton Bikineev authored
Currently, in the following struct struct LayoutObject : GarbageCollected<>, MixinA, MixinB {}; the subobject that corresponds to the first base GarbageCollected<> always takes up some space (one word). The empty-base-optimization doesn't happen because the second base (MixinA) has the same subobject as the first base (GarbageCollected), which is the most parent class GarbageCollectedBase. The compiler can't "merge" them because it must guarantee that distinct objects of the same type have distinct addresses. The attribute [[no_unique_address]] doesn't work for base classes, unfortunately (but is a good idea for a Standard proposal). As a solution, the CL simply removes GarbageCollectedBase. Bug: chromium:1260797 Change-Id: I415b10a5fbcebce3d6ee97b8870ea9ae90f383a8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3259654 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77693}
-
Leszek Swirski authored
This is a reland of 35a6eeec Reland fixes: * Add a SharedFunctionInfo::CopyFrom to encapsulate updating the SFI from the placeholder. This now includes copying scope_info (which wasn't included in the original CL and caused some of the issues) * Make sure that LocalHandleScope is initialised only inside of UnparkedScope (fixed TSAN issues) * Clean-up: Don't add `script_` to ParseInfo, but instead pass it separately to Parser. Eventually we'd ideally get rid of ParseInfo entirely (splitting it into input and output) so let's not add more fields to it. Reverts changing CreateScript to InitializeScript. Original change's description: > [off-thread] Allow off-thread top-level IIFE finalization > > Allow off-thread finalization for parallel compile tasks (i.e. for top- > level IIFEs). > > This allows us to merge the code paths in BackgroundCompileTask, and > re-enable the compiler dispatcher tests under the off-thread > finalization flag. Indeed, we can simplify further and get rid of that > flag entirely (it has been on-by-default for several releases now). > > Change-Id: I54f361997d651667fa813ec09790a6aab4d26774 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226780 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77615} Change-Id: If1a5b14900aa6753561e34e972a293be0be9a07d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3256692 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#77676}
-
- 02 Nov, 2021 2 commits
-
-
Michael Lippautz authored
- Fix definition and declaration of noexcept methods not matching - Disable test using deprecated APIs. Only having clang coverage is okay here. Change-Id: I412d0b0087b2858fb72b0365b94b82ebc13462de Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3256693 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77665}
-
Michael Lippautz authored
Write barriers are automatically emitted by v8::TracedReference. Bug: v8:12165 Change-Id: I6ee9b95e9d25fe9606ce1b11b21b3905d47ee8cb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3253343Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77642}
-
- 01 Nov, 2021 1 commit
-
-
Shu-yu Guo authored
This reverts commit 35a6eeec. Reason for revert: TSAN failures like https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN/39084/overview Original change's description: > [off-thread] Allow off-thread top-level IIFE finalization > > Allow off-thread finalization for parallel compile tasks (i.e. for top- > level IIFEs). > > This allows us to merge the code paths in BackgroundCompileTask, and > re-enable the compiler dispatcher tests under the off-thread > finalization flag. Indeed, we can simplify further and get rid of that > flag entirely (it has been on-by-default for several releases now). > > Change-Id: I54f361997d651667fa813ec09790a6aab4d26774 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226780 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77615} Change-Id: I6752470eebd594bad92c7cf4e58dbe5bac53598c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3255667Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Owners-Override: Shu-yu Guo <syg@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#77631}
-
- 29 Oct, 2021 3 commits
-
-
Leszek Swirski authored
Port the CompilerDispatcher to use the Jobs API, instead of its own hand-rolled worker management. This required some re-thinking of how testing is handled, since the tests want to be able to a) Defer calls to PostTask/Job, to actuall post the jobs later. This was easy enough with PostTask, since we could simply store the task in a list and no-op, but PostJob has to return a JobHandle. The tests now have a DelayedJobHandleWrapper, which defers all method calls on itself, and because of all the unique_ptrs, there's also now a SharedJobHandleWrapper. b) Wait until tasks/jobs complete. Returning from a Task meant that the task had completed, but this isn't necessarily the case with JobTasks; e.g. a job might be asked to yield. This patch hacks around this by Posting and Joining a non-owning copy of the requested JobTask, and then re-posting it once Join returns. Change-Id: If867b4122af52758ffabcfb78a6701f0f95d896d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2563664 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#77618}
-
Leszek Swirski authored
Allow off-thread finalization for parallel compile tasks (i.e. for top- level IIFEs). This allows us to merge the code paths in BackgroundCompileTask, and re-enable the compiler dispatcher tests under the off-thread finalization flag. Indeed, we can simplify further and get rid of that flag entirely (it has been on-by-default for several releases now). Change-Id: I54f361997d651667fa813ec09790a6aab4d26774 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226780Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#77615}
-
Michael Lippautz authored
Test still fails after the previous fix. No-try: true Bug: v8:11933 Change-Id: I55100631e6f168728075234bddc6f9fd558c1e89 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3251169Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77605}
-
- 28 Oct, 2021 4 commits
-
-
Michael Lippautz authored
Stack containment checks for slots should consider safe stacks when they are enabled. Bug: v8:11933, v8:12165 Change-Id: I2e2c8539c3c0a2dd795f87781ecb2942e059accc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3250642 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77601}
-
Michael Lippautz authored
Bug: v8:12165 Change-Id: I54c7b429708a2d6a3c4db89911b9b69fa4a5a41a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3250640 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77600}
-
Leszek Swirski authored
Change-Id: I17104eba48919c4608d6ab7e91cb09601a2f71d1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3250636 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#77599}
-
Michael Lippautz authored
TracedReferenceBase use (traced) global handles to implement the referencs. Provide a write barrier in the corresponding handle methods. Doing so - avoids bugs by having embedders taking care of write barrier management. - speeds up the barrier as it is better integrated in the handle methods. Drive-by: We don't need write barriers on initializating stores. Bug: v8:12165 Change-Id: Ie49cc3783aeed576fd46c957c473c61362fefbf2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3247039 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77593}
-
- 27 Oct, 2021 2 commits
-
-
Leszek Swirski authored
This reverts commit f300a01a. Reason for revert: Makes TSAN unhappy: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20stress-incremental-marking/5299/overview Original change's description: > unittests: Provide Context in TestWithHeapInternals > > Change-Id: I54e658325dfbfb425c41cab2fd7b32253b380e37 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3247038 > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Commit-Queue: Omer Katz <omerkatz@chromium.org> > Auto-Submit: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77577} Change-Id: I3806a40847d327cc86e2816e00a74c80ba7b512e No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3247633 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Owners-Override: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#77578}
-
Michael Lippautz authored
Change-Id: I54e658325dfbfb425c41cab2fd7b32253b380e37 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3247038 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77577}
-
- 26 Oct, 2021 1 commit
-
-
Michael Lippautz authored
v8_enable_v8_checks has very little coverage outside of V8 itself. Move pointer verification checks behind DEBUG so that they fire in regular debug or dcheck_always_on builds. Change-Id: Ib2803240dd996f4223e403d20e927aff2955afbc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3242006Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77534}
-
- 25 Oct, 2021 1 commit
-
-
Michael Lippautz authored
Marking verification should only process young generation objects when verifying the marking state of a young generation garbage collection. Bug: v8:12324 Change-Id: I01db261437ec5c42ddb6c79c44e31b5fe0e536d7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3231343Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77518}
-
- 20 Oct, 2021 1 commit
-
-
Igor Sheludko authored
... when the v8_enable_external_code_space build flag is enabled. Bug: v8:11880 Change-Id: I754c6229dcd25f81ef6dfbedc5885ac025c0aeff Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3164458 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#77479}
-
- 19 Oct, 2021 2 commits
-
-
Samuel Groß authored
Bug: v8:10391 Change-Id: Ia123d8034c4ade76c9843df5d947fdc4ee3d8e35 Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226337Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Samuel Groß <saelo@chromium.org> Cr-Commit-Position: refs/heads/main@{#77454}
-
Dominik Inführ authored
This is a reland of 929b83fb This version of the CL also fixes initialization of the marking_barrier_ in the LocalHeap constructor. This CL also got rebased on Victor's CL in https://crrev.com/c/3229361. It added a code_space_allocator_ in LocalHeap which needs to be initialized a bit later on the main thread as well. Original change's description: > [heap] Attach to shared isolate after setting up main thread > > Attach to the shared isolate after the main thread was set up. Otherwise > it could happen that a shared GC initiated from another isolate might > see no threads are running and performs the safepoint operation in the > middle of isolate deserialization. > > We use DisallowSafepoints to check that the isolate doesn't join a > global safepoint before deserialization is complete. DisallowSafepoints > used to prevent only invocations of Safepoint() but was updated to > also prevent Park() and Unpark() invocations. Each state change could > cause the thread to reach a safepoint, which would allow a shared GC > to run. > > We now also DCHECK that every isolate has at least one local heap and > that shared collections aren't started before deserialization is > complete. > > Bug: v8:11708 > Change-Id: Iba3fb59dd951d5ee4fc9934158062287302fc279 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3221157 > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Shu-yu Guo <syg@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77424} Bug: v8:11708 Change-Id: I7d44e4a5f76cc09092c2444cede10e9331222c1d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3229361Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#77448}
-
- 18 Oct, 2021 1 commit
-
-
Michael Lippautz authored
Change-Id: I2150c83eeb8939801aeed7e7bb0aec92f8f91733 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3227756 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77426}
-
- 14 Oct, 2021 3 commits
-
-
Bruce Dawson authored
In order to avoid namespace pollution and compilation overhead it is desirable to avoid include windows.h, and this enforces that. Bug: chromium:796644 Change-Id: I7fdcd3c182a77cee03672bc4324b9e21566896d6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3223960Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Bruce Dawson <brucedawson@chromium.org> Cr-Commit-Position: refs/heads/main@{#77404}
-
Samuel Groß authored
The virtual memory cage supports a fallback mode that attempts to obtain memory pages within a specific virtual address range by using PageAllocator hints. However, Prior to this CL, the default PageAllocator on Fuchsia would ignore hints alltogether, preventing these mechanisms from working there. Ultimately, on Fuchsia it would probably be better to manage the virtual memory cage purely through VMARs instead of actually creating pseudo mappings just to reserve virtual address space as is currently done through the PageAllocator. This will require broader changes though, so in the meantime, sticking to the current PageAllocator API is probably the best option. Bug: chromium:1218005 Change-Id: I821cfbb815d81479c3b3310296302addbb9cd8f5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3220340Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Commit-Queue: Samuel Groß <saelo@chromium.org> Cr-Commit-Position: refs/heads/main@{#77398}
-
Jakob Kummerow authored
Since we introduced `array.init` as a way to create fully initialized arrays, immutable arrays are no longer useless, and they enable certain static optimizations, so this patch allows them. Bug: v8:7748 Change-Id: I404aab60099826f4bd83cf54e5e1acbc38a3ca9b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3221151 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77397}
-
- 13 Oct, 2021 3 commits
-
-
Michael Lippautz authored
Consider in-construction keys as live during the final GC pause. Bug: chromium:1259587 Change-Id: Ia8c05923db6e5827b68b17a51561fbc8b2c4b467 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3221153 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/main@{#77386}
-
Samuel Groß authored
This is a reland of 1ea76c13 Disabled the failing test on Fuchsia until its PageAllocator respects allocation hints. Original change's description: > Implement a fake virtual memory cage mechanism > > On operating systems where reserving virtual address space is expensive, > notably Windows pre 8.1, it is not possible to create a proper virtual > memory cage. In order to still be able to reference caged objects > through offsets from the cage base on these systems, this CL introduces > a fake cage mechanism. When the fake cage is used, most of the virtual > memory for the cage is not actually reserved. Instead, the cage's page > allocator simply relies on hints to the OS to obtain pages inside the > cage. This does, however, not provide the same security benefits as a > real cage as unrelated allocations might end up inside the cage. > > Bug: chromium:1218005 > Change-Id: Ie5314be23966ed0042a017917b63595481b5e7e3 > Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3217200 > Commit-Queue: Samuel Groß <saelo@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77367} Bug: chromium:1218005 Change-Id: I2ed95d121db164679c38085115e8fa92690c057e Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3220151Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Samuel Groß <saelo@chromium.org> Cr-Commit-Position: refs/heads/main@{#77378}
-
Joyee Cheung authored
Introduces several new runtime mechanics for defining private fields, including: - Bytecode StaKeyedPropertyAsDefine - Builtins StoreOwnIC{Trampoline|Baseline|_NoFeedback} - Builtins KeyedDefineOwnIC{Trampoline|Baseline|_Megamorphic} - TurboFan IR opcode JSDefineProperty These new operations can reduce a runtime call per class field into a more traditional Store equivalent. In the microbenchmarks, this results in a substantial win over the status quo (~8x benchmark score for single fields with the changes, ~20x with multiple fields). The TurboFan JSDefineProperty op is lowered in JSNativeContextSpecialization, however this required some hacks. Because private fields are defined as DONT_ENUM when added to the object, we can't find a suitable transition using the typical data property (NONE) flags. I've added a mechanism to specify the required PropertyAttributes for the transition we want to look up. Details: New bytecodes: - StaKeyedPropertyAsDefine, which is essentially StaKeyedProperty but with a different IC builtin (KeyedDefineOwnIC). This is a bytecode rather than a flag for the existing StaKeyedProperty in order to avoid impacting typical keyed stores in any way due to additional branching and testing. New builtins: - StoreOwnIC{TTrampoline|Baseline|_NoFeedback} is now used for StaNamedOwnProperty. Unlike the regular StoreIC, this variant will no longer look up the property name in the prototype. In adddition, this CL changes an assumption that StoreNamedOwnProperty can't result in a map transition, as we can't rely on the property already being present in the Map due to an object literal boilerplate. In the context of class features, this replaces the runtime function %CreateDataProperty(). - KeyedDefineOwnIC{Trampoline|Baseline|_Megamorphic} is used by the new StaKeyedPropertyAsDefine bytecode. This is similar to an ordinary KeyedStoreIC, but will not check the prototype for setters, and for private fields, will take the slow path if the field already exists. In the context of class features, this replaces the runtime function %AddPrivateField(). TurboFan IR: - JSDefineProperty is introduced to represent a situation where we need to use "Define" semantics, in particular, it codifies that we do not consult the prototype chain, and the semantics relating to private fields are implied as well. R=leszeks@chromium.org, syg@chromium.org, rmcilroy@chromium.org Bug: v8:9888 Change-Id: Idcc947585c0e612f9e8533aa4e2e0f8f0df8875d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2795831Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Joyee Cheung <joyee@igalia.com> Cr-Commit-Position: refs/heads/main@{#77377}
-
- 12 Oct, 2021 1 commit
-
-
Deepti Gandluri authored
This reverts commit 1ea76c13. Reason for revert: The unit test added fails on the Fuchsia bot https://ci.chromium.org/p/v8/builders/ci/V8%20Fuchsia/25976? Original change's description: > Implement a fake virtual memory cage mechanism > > On operating systems where reserving virtual address space is expensive, > notably Windows pre 8.1, it is not possible to create a proper virtual > memory cage. In order to still be able to reference caged objects > through offsets from the cage base on these systems, this CL introduces > a fake cage mechanism. When the fake cage is used, most of the virtual > memory for the cage is not actually reserved. Instead, the cage's page > allocator simply relies on hints to the OS to obtain pages inside the > cage. This does, however, not provide the same security benefits as a > real cage as unrelated allocations might end up inside the cage. > > Bug: chromium:1218005 > Change-Id: Ie5314be23966ed0042a017917b63595481b5e7e3 > Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3217200 > Commit-Queue: Samuel Groß <saelo@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77367} Bug: chromium:1218005 Change-Id: I541bb9656ab2a6a080c2a30d372226fcc5c95391 Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3219086 Auto-Submit: Deepti Gandluri <gdeepti@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Owners-Override: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#77368}
-