- 05 Dec, 2018 1 commit
-
-
Clemens Hammacher authored
We currently compute this value from the size of the external table, which we get from the Isolate. This size is isolate-independent though, so it can just be a constant. R=mstarzinger@chromium.org Bug: chromium:912043 Change-Id: If1c09a56b1a985b855f5b65818322979c194d772 Reviewed-on: https://chromium-review.googlesource.com/c/1362954Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58045}
-
- 30 Nov, 2018 1 commit
-
-
Camillo Bruni authored
- Message listener callbacks - Bootstrapper and deserialization - ObjectVerify - Invoke and InvokeApiFunction Drive-by-fix: sort RCS counters list. Change-Id: I9acec3a3b94cb126c23575aae749c60b5257549d Reviewed-on: https://chromium-review.googlesource.com/c/1356509Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#57970}
-
- 16 Nov, 2018 1 commit
-
-
Jakob Gruber authored
This pulls both classes into a dedicated file. InstructionStream may be removed in a follow-up. Tbr: mlippautz@chromium.org Bug: v8:6666 Change-Id: Ibd374eba25cebf7495390ec13f6b4aeac5e1dc01 Reviewed-on: https://chromium-review.googlesource.com/c/1337738Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#57562}
-
- 12 Nov, 2018 1 commit
-
-
Jakob Kummerow authored
Bug: v8:3770 Change-Id: I413ce57f7fa91cef2445995ca22650477f92b0df Reviewed-on: https://chromium-review.googlesource.com/c/1321892Reviewed-by:
Dan Elphick <delphick@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#57445}
-
- 09 Nov, 2018 1 commit
-
-
Camillo Bruni authored
The InnerPointerToCodeCache was masking out the Page address to get stable hashes. However, for pointers into the embedded code this still introduces a sources of randomness due to how the data is mapped in. This is fixed by using offsets relative to the start of the embedded data. Hopefully this will fix one category of flaky tests unde with v8_enable_verify_predictable enabled. Change-Id: I6bc3a1b6a03555341a9e4387e8bc058921298ef1 Reviewed-on: https://chromium-review.googlesource.com/c/1327045Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#57392}
-
- 31 Oct, 2018 1 commit
-
-
Jakob Gruber authored
Now that lazy deserialization has been removed, we can roll back all the mechanisms we introduced to support lazy single-builtin deserialization. This CL moves serialized builtin code objects (i.e. off-heap-trampolines in most cases) back into the startup snapshot. Support classes for builtin serialization and deserialization, as well as the builtins snapshot itself are removed. Templatization on the allocator class is removed as well. Tbr: delphick@chromium.org Bug: v8:6666, v8:7990 Change-Id: I2a910f8d3278b7e27b5f18ad408361ebd18871cc Reviewed-on: https://chromium-review.googlesource.com/c/1304539Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#57160}
-
- 29 Oct, 2018 1 commit
-
-
Jakob Gruber authored
Now that embedded builtins are enabled everywhere*, lazy deserialization can be turned off and removed. * Except nosnap builds, on aix and in msvc builds. Bug: v8:6666, v8:6624, v8:7990 Change-Id: Ib5fefe10e7ff35b13a1eb803fbc3736b8851b22b Reviewed-on: https://chromium-review.googlesource.com/c/1288638Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#57064}
-
- 17 Oct, 2018 1 commit
-
-
Sigurd Schneider authored
Bug: v8:6666 Change-Id: I3e89fd09e2c8de568bf5dffdad3a5d8a9ef39ff5 Reviewed-on: https://chromium-review.googlesource.com/c/1286676 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#56744}
-
- 16 Oct, 2018 1 commit
-
-
Dan Elphick authored
In preparation for sharing RO_SPACE between all Isolates within a process, this first pulls RO_SPACE out of the Startup snapshot and puts it in its own ReadOnly snapshot. The snapshot is first populated with the read-only roots. After that the StartupSerializer serializes as before but starting from the first mutable root. References to objects in the ReadOnly snapshot that aren't themselves roots are added to a new cache called ReadOnlyObjectCache which functions like the PartialSnapshotCache but lives in the ReadOnlySerializer rather than the StartupSerializer. These cache entries are referenced using a new bytecode: ReadOnlyObjectCache. (To make room for this, the ApiReference bytecode has been moved). To reduce code duplication, the StartupSerializer has been refactored to create a new base class RootSerializer, which ReadOnlySerializer also subclasses. The base class is responsible primarily for keeping track of already serialized roots and visiting the roots. Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Iff26042886130ae22eccf2e11b35f6f226f4a792 Bug: v8:8191 Reviewed-on: https://chromium-review.googlesource.com/c/1244676 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#56681}
-
- 15 Oct, 2018 1 commit
-
-
Predrag Rudic authored
Port commit 23dbb81d. Original CL message: >This CL uses pc-relative jumps and calls (B/BL) for calls from embedded >builtins to embedded builtins. To make this work, the code range size is >limited to 32MB on arm during mksnapshot, which ensures that all builtin >to builtin offsets for jumps/calls fit into the B/BL immediate. At code >generation time, we put a placeholder into the instruction offset which >we resolve to the right code object when the code is copied to the heap. >We use a new relocation mode RELATIVE_CODE_TARGET for these relative jumps. >The relocation mode RELATIVE_CODE_TARGET should never appear after >generating the snapshot. > >We modify the target_address/set_target_address methods of RelocInfo >such that they return the absolute target addresses for pc-relative B/BL >instructions. This ensures that the GC can treat RELATIVE_CODE_TARGET in >the same way as code targets. This, however, only matters during >snapshot creation time, and production code never contains >RELATIVE_CODE_TARGET relocations. > >Bug: v8:6666 >Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng >Change-Id: If7eab83ad588859ca87c654a5ddc3e37caea884c >Reviewed-on: https://chromium-review.googlesource.com/1117181 >Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> >Reviewed-by: Ulan Degenbaev <ulan@chromium.org> >Reviewed-by: Jakob Gruber <jgruber@chromium.org> >Commit-Queue: Sigurd Schneider <sigurds@chromium.org> >Cr-Commit-Position: refs/heads/master@{#54320} This CL is completed Miran's draft without MIPS64 port. (https://chromium-review.googlesource.com/c/v8/v8/+/1136640/3). Change-Id: I979378ac445548641755968d890f7f4a82dc7986 Reviewed-on: https://chromium-review.googlesource.com/c/1221313 Commit-Queue: Ivica Bogosavljevic <ibogosavljevic@wavecomp.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ivica Bogosavljevic <ibogosavljevic@wavecomp.com> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#56640}
-
- 25 Sep, 2018 3 commits
-
-
Yang Guo authored
This is a reland of bcb8d49b TBR=petermarshall@chromium.org Original change's description: > [snapshot] add checksum to startup snapshot > > We already had checksumming for code cache data. We now extend > checksumming to the startup snapshot to catch data corruption early. > > The performance impact for deserialization is a regression of 1-2%, > which should be acceptable. > > Sample output for the included test with --profile-deserialization: > > [Verifying snapshot checksum took 0.023 ms] > [Deserializing isolate (134348 bytes) took 1.891 ms] > [Verifying snapshot checksum took 0.024 ms] > [Deserializing isolate (134348 bytes) took 1.654 ms] > [Deserializing context #0 (47208 bytes) took 0.331 ms] > Deserialization will reserve: > 208168 bytes per isolate > 123368 bytes per context #0 > Snapshot blob consists of: > 134492 bytes in 6 chunks for startup > 115272 bytes for builtins > 47152 bytes in 31 chunks for context #0 > [Verifying snapshot checksum took 0.048 ms] > [Verifying snapshot checksum took 0.043 ms] > > R=peria@chromium.org, petermarshall@chromium.org > > Bug: chromium:881417 > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng > Change-Id: Ibc57520d459c86be8972f731aa35045b5e3751d7 > Reviewed-on: https://chromium-review.googlesource.com/1241874 > Reviewed-by: Peter Marshall <petermarshall@chromium.org> > Commit-Queue: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#56217} Bug: chromium:881417 Change-Id: I037f378fc2d45c3e0fa670bf538df68cbba5c53c Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1243191Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#56224}
-
Clemens Hammacher authored
This reverts commit bcb8d49b. Reason for revert: MSan compile error: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/23025 Original change's description: > [snapshot] add checksum to startup snapshot > > We already had checksumming for code cache data. We now extend > checksumming to the startup snapshot to catch data corruption early. > > The performance impact for deserialization is a regression of 1-2%, > which should be acceptable. > > Sample output for the included test with --profile-deserialization: > > [Verifying snapshot checksum took 0.023 ms] > [Deserializing isolate (134348 bytes) took 1.891 ms] > [Verifying snapshot checksum took 0.024 ms] > [Deserializing isolate (134348 bytes) took 1.654 ms] > [Deserializing context #0 (47208 bytes) took 0.331 ms] > Deserialization will reserve: > 208168 bytes per isolate > 123368 bytes per context #0 > Snapshot blob consists of: > 134492 bytes in 6 chunks for startup > 115272 bytes for builtins > 47152 bytes in 31 chunks for context #0 > [Verifying snapshot checksum took 0.048 ms] > [Verifying snapshot checksum took 0.043 ms] > > R=peria@chromium.org, petermarshall@chromium.org > > Bug: chromium:881417 > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng > Change-Id: Ibc57520d459c86be8972f731aa35045b5e3751d7 > Reviewed-on: https://chromium-review.googlesource.com/1241874 > Reviewed-by: Peter Marshall <petermarshall@chromium.org> > Commit-Queue: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#56217} TBR=peria@chromium.org,yangguo@chromium.org,petermarshall@chromium.org Change-Id: Iccb82092858ab68a5d6ae9552fa716108eda354b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:881417 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1243190Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#56221}
-
Yang Guo authored
We already had checksumming for code cache data. We now extend checksumming to the startup snapshot to catch data corruption early. The performance impact for deserialization is a regression of 1-2%, which should be acceptable. Sample output for the included test with --profile-deserialization: [Verifying snapshot checksum took 0.023 ms] [Deserializing isolate (134348 bytes) took 1.891 ms] [Verifying snapshot checksum took 0.024 ms] [Deserializing isolate (134348 bytes) took 1.654 ms] [Deserializing context #0 (47208 bytes) took 0.331 ms] Deserialization will reserve: 208168 bytes per isolate 123368 bytes per context #0 Snapshot blob consists of: 134492 bytes in 6 chunks for startup 115272 bytes for builtins 47152 bytes in 31 chunks for context #0 [Verifying snapshot checksum took 0.048 ms] [Verifying snapshot checksum took 0.043 ms] R=peria@chromium.org, petermarshall@chromium.org Bug: chromium:881417 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Ibc57520d459c86be8972f731aa35045b5e3751d7 Reviewed-on: https://chromium-review.googlesource.com/1241874Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#56217}
-
- 20 Sep, 2018 1 commit
-
-
Dan Elphick authored
This always creates the bytecode handlers as part of the builtins table regardless of the V8_EMBEDDED_BYTECODE_HANDLERS definition. Lazy deserialization of bytecode handlers is enabled for this flow by moving the three lazy bytecode deserializers from the strong roots into the builtins table (ensuring that they not marked lazy themselves). To simplify lazy deserialization, the illegal bytecode handler is made non-lazy so that GetAndMaybeDeserializeBytecodeHandler doesn't to know about it. Since the bytecode handlers are now always part of the builtins table, many bytecode specific methods are removed, including logging and in BuiltinsSerializer and BuiltinsDeserializer. Removes setup-interpreter.h, setup-interpreter-internal.cc and builtin-snapshot-utils.*. Change-Id: Ie421aa897a04f7b3bcb964c476eb7ab149388d53 Reviewed-on: https://chromium-review.googlesource.com/1220046Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#56063}
-
- 03 Sep, 2018 1 commit
-
-
Dan Elphick authored
When v8_enable_embedded_bytecode_handlers is true, initialize the bytecode dispatch table from the builtins table. Also stops creating the handlers more than once as the SetupInterpreter will now always do nothing even when not starting from a snapshot. In the short term, with the flag enabled all the bytecode handlers are eagerly deserialized. Finally, the bytecode handlers are marked as non-isolate independent to prevent them being embedded in the binary until they can be converted. Bug: v8:8068 Change-Id: I9e5ef7f1dce1b2d11c7aa26526f06b53f8939697 Reviewed-on: https://chromium-review.googlesource.com/1188477Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#55581}
-
- 22 Aug, 2018 1 commit
-
-
jgruber authored
Some builtins, so-called wasm runtime stubs, are copied off-heap to ensure reachability through near jumps. These builtins must be individually position-independent. In particular, they may not contain pc-relative calls to other builtins. Drive-by: Set hard_abort mode for all wasm runtime stubs to avoid Abort calls. Bug: v8:6666 Change-Id: Ie5bc9fc539d6a043dcf7dff66c3b4643baec69ab Reviewed-on: https://chromium-review.googlesource.com/1183236 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#55296}
-
- 21 Aug, 2018 2 commits
-
-
jgruber authored
This populates the isolate-independent builtin whitelist with initial builtins that do not access any isolate-dependent data and thus don't need the root register at all. Unlike most other platforms, we can't use a scratch register in the off-heap trampoline since there's no free register available. The trampolines on ia32 are thus implemented as pc-relative jumps (thankfully we can address the entire address space). Drive-by: Made Code::IsIsolateIndependent consistent with FinalizeEmbeddedCodeTargets. Code targets are only allowed on some platforms. Bug: v8:6666 Change-Id: I0bf02eecba8a099afa7b7c892188cd377cbda840 Reviewed-on: https://chromium-review.googlesource.com/1183224Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#55265}
-
Dan Elphick authored
This is a reland of 041ae1f8 The clashing method has been fixed. Original change's description: > [builtins] Start adding byte code handlers to builtins > > Adds a new build flag, v8_enable_embedded_bytecode_handlers, that adds > the bytecode handlers to the BUILTIN_LIST macros. > > Currently it's not connected up to the code-generation so it actually > does nothing except expand the builtins table. > > Bug: v8:8068 > Change-Id: Iaecc3982cf22d04e6c46169b86c9d694952fd091 > Reviewed-on: https://chromium-review.googlesource.com/1179887 > Commit-Queue: Dan Elphick <delphick@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55215} Bug: v8:8068 Change-Id: Ibc98929a9ad464e9d4c9fc7d43401f0fb0df9a00 Reviewed-on: https://chromium-review.googlesource.com/1181981Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#55244}
-
- 20 Aug, 2018 2 commits
-
-
Dan Elphick authored
This reverts commit 041ae1f8. Reason for revert: Causes jumbo builds to fail because of duplicate GenerateBytecodeHandler definitions. Original change's description: > [builtins] Start adding byte code handlers to builtins > > Adds a new build flag, v8_enable_embedded_bytecode_handlers, that adds > the bytecode handlers to the BUILTIN_LIST macros. > > Currently it's not connected up to the code-generation so it actually > does nothing except expand the builtins table. > > Bug: v8:8068 > Change-Id: Iaecc3982cf22d04e6c46169b86c9d694952fd091 > Reviewed-on: https://chromium-review.googlesource.com/1179887 > Commit-Queue: Dan Elphick <delphick@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55215} TBR=rmcilroy@chromium.org,jgruber@chromium.org,delphick@chromium.org Change-Id: I860b3ecf543944fd0f4fdcb8de09d21a4b784150 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8068 Reviewed-on: https://chromium-review.googlesource.com/1181301Reviewed-by:
Dan Elphick <delphick@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#55225}
-
Dan Elphick authored
Adds a new build flag, v8_enable_embedded_bytecode_handlers, that adds the bytecode handlers to the BUILTIN_LIST macros. Currently it's not connected up to the code-generation so it actually does nothing except expand the builtins table. Bug: v8:8068 Change-Id: Iaecc3982cf22d04e6c46169b86c9d694952fd091 Reviewed-on: https://chromium-review.googlesource.com/1179887 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#55215}
-
- 17 Aug, 2018 1 commit
-
-
Ulan Degenbaev authored
This moves write-barrier for writes into code to heap-write-barrier.h and adds four new functions: - WriteBarrierForCode(host, rinfo, object) - combined generational and marking write barrier. - WriteBarrierForCode(host) - combined write barrier that rescans all pointers in the host (former RecordWritesIntoCode). - GenerationalWriteBarrierForCode. - MarkingWriteBarrierForCode. Bug: v8:8054,v8:7490 Change-Id: Ib1e07cfa1d5998fca2fa44e2ad08c52305f1373f Reviewed-on: https://chromium-review.googlesource.com/1174436Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#55185}
-
- 08 Aug, 2018 1 commit
-
-
jgruber authored
This fills the padding between builtins in the embedded blob with a sequence of int3 instructions (ia32,x64). Drive-by: Unify code zapping. We can add better support for other architectures later. Bug: v8:6666 Change-Id: Ibcb120ec18a8062d7527e0c6fe5ca86869c0dad8 Reviewed-on: https://chromium-review.googlesource.com/1167050 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@{#54976}
-
- 26 Jul, 2018 1 commit
-
-
jgruber authored
This is a refactoring-only CL that packs builtin offsets and lengths into a metadata struct. The struct should make future modifications to metadata simpler. Bug: v8:6666 Change-Id: Iae8070c2aa24d7e803cd75da3dea09e437ef275e Reviewed-on: https://chromium-review.googlesource.com/1145069 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54729}
-
- 20 Jul, 2018 1 commit
-
-
Marja Hölttä authored
This reduces the build steps from touching api.h: 269 -> 156 BUG=v8:7754,v8:7490 Change-Id: I75abaeea4cc78027a47304ff9b9f6b12bdb2b75e Reviewed-on: https://chromium-review.googlesource.com/1144929Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#54583}
-
- 09 Jul, 2018 1 commit
-
-
Sigurd Schneider authored
This CL uses pc-relative jumps and calls (B/BL) for calls from embedded builtins to embedded builtins. To make this work, the code range size is limited to 32MB on arm during mksnapshot, which ensures that all builtin to builtin offsets for jumps/calls fit into the B/BL immediate. At code generation time, we put a placeholder into the instruction offset which we resolve to the right code object when the code is copied to the heap. We use a new relocation mode RELATIVE_CODE_TARGET for these relative jumps. The relocation mode RELATIVE_CODE_TARGET should never appear after generating the snapshot. We modify the target_address/set_target_address methods of RelocInfo such that they return the absolute target addresses for pc-relative B/BL instructions. This ensures that the GC can treat RELATIVE_CODE_TARGET in the same way as code targets. This, however, only matters during snapshot creation time, and production code never contains RELATIVE_CODE_TARGET relocations. Bug: v8:6666 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: If7eab83ad588859ca87c654a5ddc3e37caea884c Reviewed-on: https://chromium-review.googlesource.com/1117181Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54320}
-
- 05 Jul, 2018 2 commits
-
-
jgruber authored
This adds the option to output statistics about the embedded blob. On x64 release, the output is currently: Total size: 724064 Metadata size: 6832 Instruction size: 703427 Padding: 13805 Embedded builtin count: 852 Instruction size (50th percentile): 222 Instruction size (75th percentile): 749 Instruction size (90th percentile): 1871 Instruction size (99th percentile): 9171 Total size is added to our Memory benchmark. Drive-by: Fix startup / context regexps for Memory benchmark. Bug: v8:6666, v8:7898 Change-Id: I90d4458877939d3b48593bd9dd3a33971fe78c44 Reviewed-on: https://chromium-review.googlesource.com/1126104 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#54256}
-
Georgia Kouveli authored
This is a port of e5630ea9: "[builtins,x64] pc-relative builtin-to-builtin calls". Bug: v8:6666 Change-Id: Id53bf45c6a4fedb1c972ced72984b6673808ee96 Reviewed-on: https://chromium-review.googlesource.com/1126249Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#54243}
-
- 04 Jul, 2018 1 commit
-
-
Yang Guo authored
Bug: v8:7887 Change-Id: I3904981f06efcb1fb83e863d0be6a16ebaaf17f2 Reviewed-on: https://chromium-review.googlesource.com/1113930Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#54189}
-
- 03 Jul, 2018 1 commit
-
-
jgruber authored
This CL replaces most uses of the V8_EMBEDDED_BUILTIN define by a new read-only runtime flag called FLAG_embedded_builtins. The flag is true iff V8_EMBEDDED_BUILTINS is defined. Bug: v8:6666 Change-Id: Ifcc909dc9b028a2c967f8a0e45029df5e71072df Reviewed-on: https://chromium-review.googlesource.com/1122401 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#54156}
-
- 22 Jun, 2018 1 commit
-
-
Sigurd Schneider authored
This CL adds the BUILTIN kind specific flag is_off_heap_trampoline to Code objects. Code objects hence know whether they are off-heap trampolines, and can decide whether they need to return the off-heap instruction start or not without looking at the builtin index and/or considering the existence of an embedded blob. Bug: v8:6666 Change-Id: I0fbc540a2624ed5fa8256b807299e2fe4b907dda Reviewed-on: https://chromium-review.googlesource.com/1109691 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53956}
-
- 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}
-
- 25 May, 2018 1 commit
-
-
jgruber authored
This addresses one of the major remaining slowdowns with embedded builtins on x64. When generating code for a call to a builtin callee from a builtin caller, we'd look up the Code target object from the builtins constant list, calculate the location of the first instruction, and jump to it. Note that for embedded builtin callees, the Code object is itself only a trampoline to the off-heap code and thus an additional indirection. An example of the call sequence in pseudo-asm: // Load from the constants list. mov reg, [kRootPointer, kBuiltinsConstantListOffset] mov reg, [reg, offset_of_the_code_constant] // Calculate first instruction and call it. add reg, Code::kHeaderOffset call reg // The trampoline forwards to the off-heap area. mov kOffHeapTrampolineRegister, <off-heap instruction_start> jmp kOffHeapTrampolineRegister This CL changes calls to embedded builtin targets to use pc-relative addressing. This reduces the above instruction sequence to: call <pc-relative offset to target instruction_start> Embedded-to-embedded calls jump directly to the embedded instruction stream, bypassing the trampoline. Heap-to-embedded calls (and all calls to heap-builtins) use pc-relative addressing targeting the on-heap Code object. Other relevant platforms (arm,arm64,mips,mips64) do not use pc-relative calls. For these, we'll need a different solution, e.g. a table of embedded builtin addresses reachable from the root pointer, similar to the external reference table. Bug: v8:6666 Change-Id: Ic0317d454e2da37d74eaecebcdfcbc0d5f5041ad Reviewed-on: https://chromium-review.googlesource.com/1068732 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53349}
-
- 03 May, 2018 1 commit
-
-
jgruber authored
With the exception of the InterpreterEntryTrampoline, all builtins are now isolate-independent and can be embedded into the binary. This CL updates the corresponding list and also contains a few smallish tweaks to support having these builtins off the heap: * wasm: copy the off-heap builtin, not its trampoline. * Code::contains: support off-heap builtins. * JSFunction::is_compiled: compare builtin index instead of identity (this is relevant during mksnapshot when we transition from the on-heap builtin to its off-heap representation + the trampoline). * Remove old DCHECKs. * A few tweaks in macro-assembler ports that have snuck in recently. Bug: v8:6666 Change-Id: Iabf5b47ade3826a4da35b6b75a4e61614f0158b0 Reviewed-on: https://chromium-review.googlesource.com/1032777 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52935}
-
- 26 Apr, 2018 3 commits
-
-
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}
-
- 20 Apr, 2018 1 commit
-
-
jgruber authored
Embed a hash of the embedded blob at serialization-time, and verify it when loading the blob. Drive-by: Keep the size of the blob trimmed, and only page-align for dynamic page allocation and freeing during mksnapshot. Bug: v8:6666 Change-Id: I10b6064f4f2847d4cc400f6f1bd6961194985b8f Reviewed-on: https://chromium-review.googlesource.com/1019144 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#52707}
-
- 14 Apr, 2018 1 commit
-
-
Jakob Kummerow authored
The "Address" type is V8's general-purpose type for manipulating memory addresses. Per the C++ spec, pointer arithmetic and pointer comparisons are undefined behavior except within the same array; since we generally don't operate within a C++ array, our general-purpose type shouldn't be a pointer type. Bug: v8:3770 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779 Reviewed-on: https://chromium-review.googlesource.com/988657 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#52601}
-
- 09 Apr, 2018 1 commit
-
-
jgruber authored
Builtins::IsOffHeapSafe is unused now that embedded builtins are shipped in the snapshot. A longer explanation: there used to be a difference between IsOffHeapSafe and IsIsolateIndependent back at an earlier stage when we still copied off-heap-safe builtins off the heap on isolate startup. At that point, off-heap builtins didn't need to be isolate-independent, e.g. they could still contain embedded external references. Now that embedded builtins are shipped in the snapshot, this distinction is no longer needed. Bug: v8:6666 Change-Id: I0be6120b94b01480262f472f0904ea9037941e2a Reviewed-on: https://chromium-review.googlesource.com/1002652Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#52473}
-
- 05 Apr, 2018 1 commit
-
-
jgruber authored
In order to clarify the difference between, e.g., InstructionStart and instruction_start, rename as follows: Code::instruction_start -> raw_instruction_start Code::instruction_end -> raw_instruction_end Code::instruction_size -> raw_instruction_size The difference between the camel-case and raw_* function families is in how they handle off-heap-trampoline Code objects. For example, when called on an off-heap-trampoline: raw_instruction_start returns the trampoline's entry point, while InstructionStart returns the off-heap code's entry point (located in the .text section of the binary). Some callsites were updated to call the camel-case function family as appropriate. Bug: v8:6666 Change-Id: I4a572f47c2d161a853599d7c17879e263b0d1a87 Reviewed-on: https://chromium-review.googlesource.com/997532 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52387}
-