- 11 Jun, 2021 1 commit
-
-
Clemens Backes authored
Functions defined inside a class declarations are inline by default. Thus remove the 'inline' annotation from all such definitions. Drive-by: Move the 'inline' annotation of {WasmFunctionBuilder::signature} from the definition to the declaration. R=jkummerow@chromium.org Bug: v8:11384 Change-Id: I18be0b7d83c2414b3237e2f834e470c613143d7f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2953320Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#75096}
-
- 16 Mar, 2021 1 commit
-
-
Clemens Backes authored
This will make accidental includes much easier to see and fix. Without this, you might get compiler or linker errors instead. R=jkummerow@chromium.org Bug: v8:11238 Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel Change-Id: I235d779f9c1ed3af5d736f1554ded427935ddc9b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2756531 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#73422}
-
- 12 Feb, 2021 1 commit
-
-
Deepti Gandluri authored
- Add a no-simd-sse flag to skip SIMD tests on bots with no hardware support. Change-Id: I4efdbb5ee39c2e10ea8776a1f1e536ac96823efe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2629465 Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Zhi An Ng <zhin@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#72682}
-
- 02 Dec, 2020 1 commit
-
-
Manos Koukoutos authored
read_heap_type did not have knowledge of the module for which the heap type was being decoded. As a result, callers of read_heap_type (or read_value_type, which in turn calls read_heap_type) had to check after the fact that a decoded indexed type (ref, ref null, or rtt) references a type index within the module's bounds. This was not done consistently, and was missing (at least) in DecodeLocals. To avoid such problems in the future, this CL refactors read_heap_type to accept a module and check the decoded index against it. Changes: - Add WasmModule argument to read_heap_type. Do so accordingly to all its transitive callers (read_value_type, immediate arguments, DecodeLocalDecls, DecodeValue/HeapType in unittests). - Add index check to read_heap_type and emit an error for an out-of-bounds index. - Remove all other now-redundant index validations. Replace them with decoder->ok() if needed (since read_heap_type will now emit an error). - Fix error message in Validate for BlockTypeImmediate. - In DecodeLocalDecls in unittests, pass an empty module to DecodeLocalDecls in the main code. - Add a unit test with an invalid index in local type declarations. Bug: v8:9495 Change-Id: I4ed1204847db80f78b6ae85fa40d300cd2456295 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569757Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#71572}
-
- 20 Nov, 2020 1 commit
-
-
Manos Koukoutos authored
Changes: - Move enhancement of locals_count by 1 inside AnalyzeLoopAssignment. - Update documentation of AnalyzeLoopAssignment. - Factor out invocation to OpcodeLength(); - Use uint32_t for locals count consistently in related testing functions. Change-Id: I5bb5a324c4f4ed1aafc37849f3762d7a9630da51 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2549966Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#71312}
-
- 30 Sep, 2020 1 commit
-
-
Clemens Backes authored
As a preparation to add a "boolean validation" mode, rename the existing flags. This removes many unrelated changes from the follow-up change and makes it easier to review. R=thibaudm@chromium.org Bug: v8:10969 Change-Id: I5f71405b525a7caa91be46c035e31d4d960e4e4c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440036Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#70224}
-
- 21 Jul, 2020 1 commit
-
-
Ng Zhi An authored
Prototype in TurboFan x64 and interpreter, bailout in Liftoff. Suggested in https://github.com/WebAssembly/simd/pull/237. Bug: v8:10713 Change-Id: I5346c351fb2ec5240b74013e62aef07c46d5d9b6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2300924Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#68973}
-
- 23 Jun, 2020 1 commit
-
-
Clemens Backes authored
The interpreter is not used in production code any more, hence move it from src/wasm to test/common/wasm. It's still used in unit tests, cctests, and in fuzzers. Because of this move, a few more methods had to be exported via V8_EXPORT_PRIVATE. R=ahaas@chromium.org, yangguo@chromium.org Bug: v8:10389 Change-Id: If626b940a721146c596fd7df4faaea633e710272 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2257226 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#68480}
-
- 20 May, 2020 1 commit
-
-
Ng Zhi An authored
This is a reland of dd19a400 Original change's description: > [wasm-simd][liftoff][x64][ia32] Implement load extend > > The operations are implemented: > > - i16x8.load8x8_s > - i16x8.load8x8_u > - i32x4.load16x4_s > - i32x4.load16x4_u > - i64x2.load32x2_s > - i64x2.load32x2_u > > on x64 and i32. The rest of the arch currently bail out, and will be > implemented in subsequent patches. > > The liftoff-compiler.cc code looks very similar to the one for LoadMem, > the only difference is special handling of kSplat v.s. kExtend. kExtend > always loads 8 bytes, so the bounds check and tracing is different. > Compared to LoadMem there is less need for pinning, since the result is > always going to be in a SIMD/FP register, which is different from the > index/addr register. > > The enum LoadTransformationKind was moved from > function-body-decoder-impl.h to function-body-decoder.h so that no > unncessary header file inclusions were needed to liftoff, and also it's > a better place for it to live. > > Bug: v8:9909 > Change-Id: I926bcc01c0c3c860223e8c08f91bc4ab3b75c399 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2203730 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67914} Bug: v8:9909 Change-Id: Ic1d8dcc00d9c5af0d51100a947161eaa315b7659 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2209268Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#67930}
-
- 19 May, 2020 2 commits
-
-
Zhi An Ng authored
This reverts commit dd19a400. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20debug/30448? Original change's description: > [wasm-simd][liftoff][x64][ia32] Implement load extend > > The operations are implemented: > > - i16x8.load8x8_s > - i16x8.load8x8_u > - i32x4.load16x4_s > - i32x4.load16x4_u > - i64x2.load32x2_s > - i64x2.load32x2_u > > on x64 and i32. The rest of the arch currently bail out, and will be > implemented in subsequent patches. > > The liftoff-compiler.cc code looks very similar to the one for LoadMem, > the only difference is special handling of kSplat v.s. kExtend. kExtend > always loads 8 bytes, so the bounds check and tracing is different. > Compared to LoadMem there is less need for pinning, since the result is > always going to be in a SIMD/FP register, which is different from the > index/addr register. > > The enum LoadTransformationKind was moved from > function-body-decoder-impl.h to function-body-decoder.h so that no > unncessary header file inclusions were needed to liftoff, and also it's > a better place for it to live. > > Bug: v8:9909 > Change-Id: I926bcc01c0c3c860223e8c08f91bc4ab3b75c399 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2203730 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67914} TBR=clemensb@chromium.org,zhin@chromium.org Change-Id: I2af6dfe6cd163d0dbc9f3a5ad4bfc5e622e76b63 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9909 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2207665Reviewed-by: Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#67915}
-
Ng Zhi An authored
The operations are implemented: - i16x8.load8x8_s - i16x8.load8x8_u - i32x4.load16x4_s - i32x4.load16x4_u - i64x2.load32x2_s - i64x2.load32x2_u on x64 and i32. The rest of the arch currently bail out, and will be implemented in subsequent patches. The liftoff-compiler.cc code looks very similar to the one for LoadMem, the only difference is special handling of kSplat v.s. kExtend. kExtend always loads 8 bytes, so the bounds check and tracing is different. Compared to LoadMem there is less need for pinning, since the result is always going to be in a SIMD/FP register, which is different from the index/addr register. The enum LoadTransformationKind was moved from function-body-decoder-impl.h to function-body-decoder.h so that no unncessary header file inclusions were needed to liftoff, and also it's a better place for it to live. Bug: v8:9909 Change-Id: I926bcc01c0c3c860223e8c08f91bc4ab3b75c399 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2203730 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67914}
-
- 16 Apr, 2020 1 commit
-
-
Ng Zhi An authored
SIMD opcodes consist of the prefix byte, then an LEB128 encoded int. We were decoding this incorrectly as a fixed uint8. This fixes the decoder to properly handle multi bytes. In some cases, the multi byte logic is applied to all prefixed opcodes. This is not a problem, since for values < 0x80, the LEB encoding is a single byte, and decodes to the same int. If the prefix opcode has instructions with index >= 0x80, it would be required to be LEB128 encoded anyway. There are a bunch of trivial changes to test-run-wasm-simd, to change the macro from BUILD to BUILD_V, the former only works for single byte opcodes, the latter is a new template-based macro that correct handles multi-byte opcodes. The only unchanged test is the shuffle fuzzer test, which builds its own sequence of bytes without using the BUILD macro. Bug: v8:10258 Change-Id: Ie7377e899a7eab97ecf28176fd908babc08d0f19 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2118476 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#67186}
-
- 27 Feb, 2020 1 commit
-
-
Clemens Backes authored
Most function signatures are created once and never changed. Hence pass them as const pointer. This makes it clear in function signatures that these parameters will not be modified. This also avoids a few ugly const_casts where we were passing pointers to constexpr FunctionSigs via non-const pointers. R=jkummerow@chromium.org Bug: v8:10155 Change-Id: Ieb658ab5582bff276f76babdaf7ddb8f72bd4790 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2072739Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66478}
-
- 26 Nov, 2019 1 commit
-
-
Clemens Backes authored
Make WasmFeatures a proper class which uses an EnumSet under the hood. This way, it inherits all behaviour of EnumSet like comparison, merge, etc. Accesses change from being simple field access into the struct to actually bit tests in the EnumSet. R=mstarzinger@chromium.org Bug: v8:10019 Change-Id: I768f92b90ac0294156f4482defba5ce00bc70165 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1934334 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#65184}
-
- 08 Jul, 2019 2 commits
-
-
Clemens Hammacher authored
R=ahaas@chromium.org Bug: v8:9429, v8:9396 Change-Id: I79e5d707f6c3970c96eb2186604d8b26fda787e5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687897Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#62556}
-
Clemens Hammacher authored
Cpplint usually checks for non-const reference arguments. They are forbidden in the style guide, and v8 does not explicitly make an exception here. This CL re-enables that warning, and fixes all current violations by adding an explicit "NOLINT(runtime/references)" comment. In follow-up CLs, we should aim to remove as many of them as possible. TBR=mlippautz@chromium.org Bug: v8:9429 Change-Id: If7054d0b366138b731972ed5d4e304b5ac8423bb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687891Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#62551}
-
- 24 May, 2019 1 commit
-
-
Yang Guo authored
TBR=mvstanton@chromium.org,neis@chromium.org,ahaas@chromium.org Bug: v8:9247 Change-Id: I5433c863a54f3412d73df0d38aba3fdbcfac7ebe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627973 Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Yang Guo <yangguo@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61830}
-
- 12 Oct, 2018 1 commit
-
-
Clemens Hammacher authored
This class was defined in function-body-decoder.cc, but it's not an implementation of function body decoding, but rather the interface between the decoder and the WasmGraphBuilder. Hence move it out to its own file. R=titzer@chromium.org, mstarzinger@chromium.org Bug: v8:8238 Change-Id: Ib9bf47e90a3683f578b30b6de74d01da81b2be93 Reviewed-on: https://chromium-review.googlesource.com/c/1278391 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#56602}
-
- 11 Oct, 2018 1 commit
-
-
Clemens Hammacher authored
It's rarely used, so just using {compiler::WasmGraphBuilder} directly is easier to understand and does not add much to the code length. R=titzer@chromium.org Bug: v8:8238 Change-Id: I8eafaac59295047a8540ebe256f00dff61ddae82 Reviewed-on: https://chromium-review.googlesource.com/c/1276426Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#56571}
-
- 09 Aug, 2018 1 commit
-
-
Ben L. Titzer authored
This CL introduces a set of configuration options implemented as a struct of booleans that together comprise the set of enabled or detected features. The configuration options replace command-line flags that were checked deep in the implementation. As such, it is necessary to plumb them through multiple levels of abstraction. R=ahaas@chromium.org CC=mstarzinger@chromium.org BUG=chromium:868844 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I1b82f5826e4fd263f68e8cafcd923bac5818a637 Reviewed-on: https://chromium-review.googlesource.com/1163670Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55018}
-
- 01 Aug, 2018 1 commit
-
-
Ben L. Titzer authored
This removes the need to pass Counters into the function body decoder by making timing happen in the callers. R=mstarzinger@chromium.org Change-Id: I05c8d2c85b1c315150cbf9e9b3f68efa03114b75 Reviewed-on: https://chromium-review.googlesource.com/1156700 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54842}
-
- 04 Jun, 2018 1 commit
-
-
Stephan Herhut authored
This adds a decorator to add the wasm bytecode offset as origin for graph nodes and emits a little table that maps lines in the generated wasm assembly listing to the corresponding bytecode offset. Change-Id: Ibc0431a122e543f95173ffc3b1b4ca461e372f28 Reviewed-on: https://chromium-review.googlesource.com/1071290Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Stephan Herhut <herhut@chromium.org> Cr-Commit-Position: refs/heads/master@{#53484}
-
- 25 May, 2018 1 commit
-
-
Ben L. Titzer authored
R=mstarzinger@chromium.org Change-Id: I0976bfa57b9ec48fae2b912e78bacfee4f8eeafb Reviewed-on: https://chromium-review.googlesource.com/1072654 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53368}
-
- 24 May, 2018 1 commit
-
-
Stephan Herhut authored
This adds basic support to emit wasm disassembly to the json files digested by turbolizer. Change-Id: Icd8fc92e9539dc336879ef6da76e31890b95e40e Reviewed-on: https://chromium-review.googlesource.com/1069275 Commit-Queue: Stephan Herhut <herhut@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#53323}
-
- 07 May, 2018 1 commit
-
-
Ben L. Titzer authored
R=clemensh@chromium.org Change-Id: Ib1a0105e3347a5ccafdb72dadd9aa144ab77732c Reviewed-on: https://chromium-review.googlesource.com/1046970Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53035}
-
- 08 Jan, 2018 2 commits
-
-
Clemens Hammacher authored
Test case generation produced unusable output if the module contains more than one function. Also, it was unnecessarily scattered around several places in the code. This CL consolidates test case generation in one method in the fuzzer, and supports multiple functions with different signatures. R=ahaas@chromium.org Change-Id: I8bea71b0d69bb69d8bbe50002c6c7616a0a1941b Reviewed-on: https://chromium-review.googlesource.com/847515 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50400}
-
Clemens Hammacher authored
Also, remove {FunctionBodyForTesting}, which is only being used once. Use the constructor directly instead. R=ahaas@chromium.org Change-Id: Ieceac41bf62ec2accf1bb39d8334563557c0dbbd Reviewed-on: https://chromium-review.googlesource.com/847514 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50397}
-
- 16 Oct, 2017 1 commit
-
-
Andreas Haas authored
Calls like read_leb<int32_t, true, true, true>(...) can be hard to read and understand. This CL replaces the three boolean template parameters with enums so that the call is read_leb<int32_t, kChecked, kAdvancePC, kTrace>(...) now. R=clemensh@chromium.org Bug: v8:6921 Change-Id: Id876a727d5e17df721444e7e5a117ad5395071aa Reviewed-on: https://chromium-review.googlesource.com/718204 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48607}
-
- 05 Oct, 2017 1 commit
-
-
Deepti Gandluri authored
Fix disassembly of atomic operations for the inspector. BUG=v8:6842,v8:6532 Change-Id: I3701b55c28b10561d1726e2c0b9fe2e1b2c76b8e Reviewed-on: https://chromium-review.googlesource.com/703468 Commit-Queue: Brad Nelson <bradnelson@chromium.org> Reviewed-by: Brad Nelson <bradnelson@chromium.org> Reviewed-by: Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#48324}
-
- 15 Sep, 2017 1 commit
-
-
Andreas Haas authored
In this CL I implement streaming compilation for WebAssembly, as described in the design doc I have sent out already. In this implementation the decoding of sections other than the code section is done immediately on the foreground thread. Eventually all decoding should happen in the background. I think it is acceptable to do the decoding on the foreground thread for now because I have finished it already, and decoding in the background would add even more complexity to this CL. Bug:v8:6785 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I285e1e5e1a5a243113c92571b25ee9bae551d0ed Reviewed-on: https://chromium-review.googlesource.com/631721Reviewed-by: Mircea Trofin <mtrofin@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#48022}
-
- 03 Aug, 2017 1 commit
-
-
Karl Schimpf authored
This fixes the collection of function sizes (see comment #1 of v8:6361). This was done by adding a wrapper function around VerifyWasmCode() that updates UMA stats for function size (as well as decode time when validating). Bug: v8:6361 Change-Id: Ia2597db22cbed5b0429d9c8514e96cdea5d7323a Reviewed-on: https://chromium-review.googlesource.com/600530 Commit-Queue: Karl Schimpf <kschimpf@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#47147}
-
- 23 Jun, 2017 1 commit
-
-
Andreas Haas authored
For correct error positions, the FunctionBody struct stored a {base} pointer to the beginning of the wasm module bytes, in addition to the {start} and {end} pointer of the function body within the module bytes. For streaming compilation, we do not have all module bytes in a single chunk of memory. Therefore this CL changes the FunctionBody such that it does not store the base pointer but the offset of the function body within the module. I did the same change already some time ago for the {Decoder}. R=clemensh@chromium.org, mtrofin@chromium.org Change-Id: I5138fbe270d0f5166a7dcc5cb8f3fe78a298bff6 Reviewed-on: https://chromium-review.googlesource.com/544863Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#46170}
-
- 19 Jun, 2017 1 commit
-
-
Loo Rong Jie authored
Bug: v8:6494 Change-Id: Ie6f91c3bad38e467dd047f4d2848473cc4085c2a Reviewed-on: https://chromium-review.googlesource.com/536397 Commit-Queue: Loo Rong Jie <loorongjie@gmail.com> Reviewed-by: Jochen Eisinger <jochen@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#46004}
-
- 22 May, 2017 1 commit
-
-
Clemens Hammacher authored
It was used before as a placeholder in Result<DecodeStruct*> to communicate that no value was returned. We actually only created a Results holding {nullptr} when returning such values. Thus, the whole struct is not needed, and we return Result<nullptr_t> instead, which clearly communicates that this result does not hold any value. An alternative would be to use Result<void>, but this would require partial specialization of the Result template, which would be overkill here. R=ahaas@chromium.org Change-Id: Ib07d2c4fe716c735839675d11146c47f97997d40 Reviewed-on: https://chromium-review.googlesource.com/509551Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#45464}
-
- 25 Apr, 2017 1 commit
-
-
Clemens Hammacher authored
Instead of dynamically tracking the block nesting, precompute the information statically. The interpreter was already using a side table to store the pc diff for each break, conditional break and others. The information needed to adjust the stack was tracked dynamically, however. This CL also precomputes this information, as it is statically known. Instead of just storing the pc diff in the side table, we now store the pc diff, the stack height diff and the arity of the target block. Local measurements show speedups of 5-6% on average, sometimes >10%. R=ahaas@chromium.org BUG=v8:5822 Change-Id: I986cfa989aabe1488f2ff79ddbfbb28aeffe1452 Reviewed-on: https://chromium-review.googlesource.com/485482Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44837}
-
- 05 Apr, 2017 2 commits
-
-
Clemens Hammacher authored
In the C++ wasm interpreter, we decode LEB encoded immediates each time we execute the respective instruction. The whole instruction sequence was validated before, thus we know that all integers are valid. This CL refactors several Decoder methods to allow for either checked or unchecked decoding. In the checked case, an error is set if a check fails, in the unchecked case, a DCHECK will fail. This improves performance of the interpreter by 20.5%. R=ahaas@chromium.org BUG=v8:5822 Change-Id: If69efd4f6fbe19d84bfc2f4aa000f429a8e22bf5 Reviewed-on: https://chromium-review.googlesource.com/468786 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#44406}
-
Clemens Hammacher authored
Both methods decoded a LEB128 encoded integer, but only consume_leb incremented the pc pointer accordingly. This CL implements consume_leb by using checked_read_leb. It also refactors a few things: 1) It removes error_pt, which was only avaible in checked_read_leb. 2) It renames the error method to errorf, since it receives a format string. This also avoids a name clash. 3) It implements sign extension directly in checked_read_leb instead of doing this in the caller. R=ahaas@chromium.org BUG=v8:5822 Change-Id: I8058f57418493861e5df26d4949041f6766d5138 Reviewed-on: https://chromium-review.googlesource.com/467150 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#44405}
-
- 10 Feb, 2017 1 commit
-
-
titzer authored
R=bradnelson@chromium.org,clemensh@chromium.org BUG= Review-Url: https://codereview.chromium.org/2682943007 Cr-Commit-Position: refs/heads/master@{#43077}
-
- 25 Jan, 2017 1 commit
-
-
ahaas authored
R=titzer@chromium.org, clemensh@chromium.org Review-Url: https://codereview.chromium.org/2657443003 Cr-Commit-Position: refs/heads/master@{#42658}
-
- 20 Jan, 2017 1 commit
-
-
ahaas authored
On ia32 return statements in C++ automatically convert signalling NaNs to quiet NaNs, even when bit_cast is used. This CL removes all uses of bit_cast<float> and bit_cast<double> in the wasm compiler and wasm interpreter. R=titzer@chromium.org, clemensh@chromium.org Review-Url: https://codereview.chromium.org/2639353002 Cr-Original-Commit-Position: refs/heads/master@{#42512} Committed: https://chromium.googlesource.com/v8/v8/+/7739affa5b57e0d28674d476f63de60d71728fb6 Review-Url: https://codereview.chromium.org/2639353002 Cr-Commit-Position: refs/heads/master@{#42545}
-