- 29 May, 2018 37 commits
-
-
Daniel Bratell authored
builtins_util.h declares a macro named CHECK_RECEIVER and in some extreme jumbo build configurations, that macro will end up in the same translation unit as runtime-dataview.cc Bug: v8:7792 Change-Id: I6db865b6061afd6bf1c74b3a172485d68c749929 Reviewed-on: https://chromium-review.googlesource.com/1075052 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#53430}
-
Anna Henningsen authored
Document what pieces of data the global `FutexEmulation::mutex_` mutex protects from concurrent access, and reduce the scope in which said mutex is locked during `FutexEmulation::Wait()` to match that description more closely. Change-Id: I0764efabac06814d83ed5c4af4eb7da34af47cab Reviewed-on: https://chromium-review.googlesource.com/1074689 Commit-Queue: Ben Smith <binji@chromium.org> Reviewed-by: Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#53429}
-
Andreas Haas authored
This CL fixes a bad interleaving that can happen between the CompilationState and streaming compilation. In that particular interleaving, streaming compilation tries to restart compilation tasks after compilation failed already, which fails with a check in the CancelableTaskManager. The problem is the following: The CompilationState notifies the streaming decoder of compilation errors. After receiving the notification, the streaming decoder ignores all subsequent incoming bytes. However, the CompilationState does not notify the streaming decoder directly, it posts a task which will notify the streaming decoder. This means that between the failing of compilation and the notification of the streaming decoder there is a time window in which compilation already failed but the streaming decoder can still restart compilation tasks. The crash happened when this time window was hit. With this CL we check that compilation did not fail before we restart compilation tasks. I was never able to reproduce this crash, so I don't really know if this particular issue caused the crash. R=titzer@chromium.org Bug: chromium:840713 Change-Id: Ic522b1c21a7d7749c1e7f6097aa450a09fb271cc Reviewed-on: https://chromium-review.googlesource.com/1075787Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#53428}
-
Junliang Yan authored
Port 75763183 Original Commit Message: The code slot of internal frames seems to be basically unused. As always, there are exceptions: 1. In elements.cc we check whether the current code object is the apply builtin. We can use a heap lookup through the frame's pc instead. 2. In isolate.cc we store a reference to the frame's code object to try and pack it into the minidump. This can safely be skipped. Remaining use-sites in frames.cc all skip INTERNAL frames by using the JavaScriptFrameIterator. R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: I3612b206f25b9e53645d2e1bc726a5e318a1f4be Reviewed-on: https://chromium-review.googlesource.com/1076505Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#53427}
-
Junliang Yan authored
Port b2abe2cf Original Commit Message: This makes the WasmCompileLazy builtin push a new WASM_COMPILE_LAZY frame type. We can thereby remove the workaround to return a relocated instance from the underlying runtime function. It also removes the last remaining embedded code objects from {WasmCode} objects. R=mstarzinger@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: Icdc1ee06a1fade4bb805ae0fadf8219316731cd7 Reviewed-on: https://chromium-review.googlesource.com/1076529Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#53426}
-
Eric Holk authored
This is no longer needed now that Wasm is more aggressive about collecting old memories. It also causes problems with the upcoming trap handler fallback path. Change-Id: I4b8513c28e0c0d7c6b232d399c1d97b645499ef1 Reviewed-on: https://chromium-review.googlesource.com/1043277Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Eric Holk <eholk@chromium.org> Cr-Commit-Position: refs/heads/master@{#53425}
-
Vincent Belliard authored
Bug: v8:6600 Change-Id: I8662ac3589a6244565402c748624ea03d3e31960 Reviewed-on: https://chromium-review.googlesource.com/1071719Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Vincent Belliard <vincent.belliard@arm.com> Cr-Commit-Position: refs/heads/master@{#53424}
-
Junliang Yan authored
Port 0a373f8a Original Commit Message: This is the initial step towards moving all array constructor stubs to builtins. R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: I3b46a3bd91780c2be938f710ceb18a7a8cd1824e Reviewed-on: https://chromium-review.googlesource.com/1076595Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#53423}
-
Andreas Haas authored
This CL switches to the new taskrunner API in the MemoryReducer. We want to remove the old API eventually so that there is only one API for task posting. R=ulan@chromium.org CC=gab@chromium.org Change-Id: I1dd16e42dc0fca013a97c76dfce9c6479b97521b Reviewed-on: https://chromium-review.googlesource.com/1061531Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#53422}
-
Simon Zünd authored
This CL creates the "tools/torque" directory. It moves the existing two scripts (making the parser and formatting Torque code) into that director. The extension lives in "tools/torque/vscode-torque" and currently only provides basic syntax highlighting support. The easiest way to install the extension is to simply create a symlink into your local vscode extension directory (see README.md). R=jgruber@chromium.org, tebbi@chromium.org Change-Id: Ifc22b615341ed18f91c9b046090f569fcc083ab6 Reviewed-on: https://chromium-review.googlesource.com/1076548 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53421}
-
Simon Zünd authored
The regression test 2185-2 measured the Array.p.sort time for various pre-sorted data configurations. This CL adds the various data configurations to the ArraySortPreSorted benchmark and removes the regression test altogether. R=cbruni@chromium.org, jgruber@chromium.org Change-Id: I6e2eb235e4a7578f4a107229bfc6a9e89a3aa5e3 Reviewed-on: https://chromium-review.googlesource.com/1076188 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#53420}
-
🎉 Mathias Bynens authoredIntent to ship: https://groups.google.com/d/msg/v8-users/15GL4-UHEcE/OEKOou3bBgAJ Bug: v8:7220 Change-Id: Ib1efde29e27b956db3d8ebf12ff7a3f163db7c22 Reviewed-on: https://chromium-review.googlesource.com/1076335Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#53419}
-
Camillo Bruni authored
Change-Id: I7bf0144bacd0572a42b98d0a0f19df3daf63128b Bug: chromium:840785 Reviewed-on: https://chromium-review.googlesource.com/1051240 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#53418}
-
Junliang Yan authored
Port c52b7af5 R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: I75ec0305f618336ce63fb664ae356dfcf48948c4 Reviewed-on: https://chromium-review.googlesource.com/1075468Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#53417}
-
Simon Zünd authored
This CL is a proposal to add "checked" casts (CAST in CSA) to the Torque language. The CL adds the "unsafe_cast<>" operator that emits a "CAST". Example: let n: Number = ...; ... if (TaggedIsSmi(n)) { let m: Smi = unsafe_cast<Smi>(n); ... } The cast wont incur a runtime overhead now. R=tebbi@chromium.org Change-Id: I9fca90d1d11e61617ba0270e5022fd66200e2195 Reviewed-on: https://chromium-review.googlesource.com/1070151 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53416}
-
Anna Henningsen authored
This adds a convenience overload for `EscapableHandleScope::Escape()` which moves `MaybeLocal<T>`s into the outer scope, like a regular `Local<T>`. This basically moves the syntactic clutter of having to write `maybe_local.FromMaybe(Local<Foo>())` instead of just `maybe_local` to a central location. Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I1d87d75c6564b10e8ec34957bdd3eac46ffea917 Reviewed-on: https://chromium-review.googlesource.com/1056529Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#53415}
-
Tobias Nießen authored
This change fixes the usage message of arm, mips, mips64, ppc and s390 simulators. Change-Id: Ib00d3049cb1c81c2653ee8b66d21eabde8f16f76 Reviewed-on: https://chromium-review.googlesource.com/1059623Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#53414}
-
Sebastien Marchand authored
see crbug.com/841460 , we recently hit some build issues when using Goma + jumbo builds because of a conflict on the definition of CONST, v8 defines it in globals.h and including windows.h also defines it. It should be possible to fix this by adding a bunch of #undef CONST but it seems a little bit hacky and might not always work (this could only fix the problem temporary if the jumbo merge limit changes and cause some include files to get included in a different order). Renaming the v8 definition of CONST to kConst, this follows the style guide guidelines: "there is no reason to change old code to use constant-style names, unless the old names are actually causing a compile-time problem" (https://google.github.io/styleguide/cppguide.html#Enumerator_Names) I also had to turn the PropertyConstness enum into an enum class to avoid some conflicts (both PropertyConstness and VariableMode define kConst). Bug: chromium:841460 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I2b70b9095374e88a5ae364cc557b39f20a3ab60f Reviewed-on: https://chromium-review.googlesource.com/1064197Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sébastien Marchand <sebmarchand@chromium.org> Cr-Commit-Position: refs/heads/master@{#53413}
-
Mathias Bynens authored
Proposal repo: https://tc39.github.io/proposal-flatMap/ Bug: v8:7220 Change-Id: I79022fe26c609225dce21c0b45e8bedff12cc7b5 Reviewed-on: https://chromium-review.googlesource.com/1076427Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#53412}
-
Tobias Tebbi authored
This adds support for union types to Torque. There is a new type expression A | B to form the union of the type expressions A and B. This is only possible if A and B have a common supertype, to prevent nonsensical unions of types with different representations. Union types are normalized: A | B == B | A A | (B | C) == (A | B) | C A | A == A The subtyping rules are defined recursively: (A | B) <: C if A <: C and B <: C A <: (B | C) if A <: B or A <: C This allows to define Object as a union type: type Tagged generates 'TNode<Object>'; type Smi extends Tagged generates 'TNode<Smi>'; type HeapObject extends Tagged generates 'TNode<HeapObject>'; type Object = Smi | HeapObject; The type {Tagged} is introduced to have a common supertype of all tagged values, but we should not use it directly, because {Object} contains the additional information that there is nothing but {Smi} and {HeapObject} values. When mapping union types to CSA types, we select the most specific common supertype. For Number and Numeric, we already use union types on the CSA side. Since it is not possible to map to CSA union types in general, we special-case these two union types to map them to the CSA union types we already use. Bug: v8:7793 Change-Id: I7a4e466436f55d04012f29ef17acfdb957653908 Reviewed-on: https://chromium-review.googlesource.com/1076132Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53411}
-
Marja Hölttä authored
WeakFixedArray::Shrink is fragile when not used properly (might invalidate GC bookeeping (location of weak slots)). BUG=v8:7308 Change-Id: Id84329e2a78907f5f0bfafae32fc2a71b77edbe7 Reviewed-on: https://chromium-review.googlesource.com/1076236Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#53410}
-
jgruber authored
The code slot of internal frames seems to be basically unused. As always, there are exceptions: 1. In elements.cc we check whether the current code object is the apply builtin. We can use a heap lookup through the frame's pc instead. 2. In isolate.cc we store a reference to the frame's code object to try and pack it into the minidump. This can safely be skipped. Remaining use-sites in frames.cc all skip INTERNAL frames by using the JavaScriptFrameIterator. Bug: v8:6666 Change-Id: I93c5035812838bbae5109415450915db12497b9c Reviewed-on: https://chromium-review.googlesource.com/1075047 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#53409}
-
Michael Starzinger authored
This removes the last embedded objects from {WasmCode} objects. We still embedded the {undefined} value into Wasm-to-JS wrappers, those are now loaded from the instance object similar to {null} values. The relocation information for {WasmCode} now no longer contains {EMBEDDED_OBJECT} as entries anywhere. Another step towards making code Isolate independent. R=titzer@chromium.org BUG=v8:7424 Change-Id: I720cd0230948f2063770595ceded373d9bb1e87d Reviewed-on: https://chromium-review.googlesource.com/1075268 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53408}
-
Michael Starzinger authored
R=titzer@chromium.org Change-Id: I228518b1db0f83cb5928a14bc65722d2329b0c53 Reviewed-on: https://chromium-review.googlesource.com/1076228Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53407}
-
Ben L. Titzer authored
This CL further optimizes the decoding fastpath by moving feature checks off the critical path. For prototype opcodes that are enabled by feature flags, they are handled in a switch case off the main path. R=mstarzinger@chromium.org Change-Id: If40fedbaadb9c611c78bc2b7df035ced056cb39a Reviewed-on: https://chromium-review.googlesource.com/1076187Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53406}
-
Michael Starzinger authored
This makes the WasmCompileLazy builtin push a new WASM_COMPILE_LAZY frame type. We can thereby remove the workaround to return a relocated instance from the underlying runtime function. It also removes the last remaining embedded code objects from {WasmCode} objects. R=titzer@chromium.org Change-Id: Ic9c3f59339e8d7bed53ea0ed70ef50dfe640f1c6 Reviewed-on: https://chromium-review.googlesource.com/1073455 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53405}
-
Sigurd Schneider authored
Bug: v8:7779 Change-Id: I97d7a46039d9063e4169fa215f7f6857c80eb3b9 Reviewed-on: https://chromium-review.googlesource.com/1076087Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#53404}
-
Ben L. Titzer authored
A previous CL (https://chromium-review.googlesource.com/c/v8/v8/+/1075056) introduced an optimization the spill slot where the WASM instance is stored using the "secondary parameter location" mechanism used for JS functions and contexts. However the optimization checked the full machine type of the parameter, which was too narrow. As a result, the optimization never activated. This CL fixes that by only checking the machine representation. R=mstarzinger@chromium.org Change-Id: I60813935c8d119d2ddf794c797dad314b99ea867 Reviewed-on: https://chromium-review.googlesource.com/1076008Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53403}
-
Michael Starzinger authored
R=titzer@chromium.org TEST=mjsunit/regress/wasm/regress-799952 BUG=chromium:799952 Change-Id: Idb4a1938cc04f2f5b1ea33ba390c5917fea2c0c1 Reviewed-on: https://chromium-review.googlesource.com/1075967Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#53402}
-
Hannes Payer authored
Bug: chromium:842083 Change-Id: Ie09b02bfe3fbc4f9ad2486843349d0f896b87b39 Reviewed-on: https://chromium-review.googlesource.com/1075532 Commit-Queue: Hannes Payer <hpayer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#53401}
-
Sigurd Schneider authored
Change-Id: I2be450c6498ce863d5e36acf02db643788e6c8bf Reviewed-on: https://chromium-review.googlesource.com/1068045 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53400}
-
jgruber authored
Calls from embedded builtins to stubs are expensive due to the indirection through the builtins constants table. This moves all remaining Array constructor stubs to builtins. Bug: v8:6666 Change-Id: I5989a7480697a506a1bae1929ddd2e3f1d655048 Reviewed-on: https://chromium-review.googlesource.com/1074759 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#53399}
-
Tobias Tebbi authored
Bug: v8:7754 Change-Id: I8548d0e07fabc23bb5f65b1f91683c756195ae1b Reviewed-on: https://chromium-review.googlesource.com/1071654Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53398}
-
Tobias Tebbi authored
This fixes the bug that cast<A>(...) could be interpreted as cast<B>(...) if B is a subtype of A. Bug: v8:7793 Change-Id: Ia03ce832f8c14ced09114d41c935be06d4629d99 Reviewed-on: https://chromium-review.googlesource.com/1075890 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#53397}
-
jgruber authored
This is the initial step towards moving all array constructor stubs to builtins. Bug: v8:6666 Change-Id: I49b86e43ab4ee3d0889853a2624e189ff7d2e705 Reviewed-on: https://chromium-review.googlesource.com/1073417Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53396}
-
Michael Lippautz authored
This reverts commit e839484e. Reason for revert: https://ci.chromium.org/buildbot/client.v8/V8%20Linux64%20-%20debug/22300 Original change's description: > [infra] Add gc_stats variant to Linux64 debug bot > > No-try: true > Bug: v8:7760 > Change-Id: I2a4e91b58de4387a4bfa5b79681db25880af8954 > Reviewed-on: https://chromium-review.googlesource.com/1068643 > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Michael Achenbach <machenbach@chromium.org> > Cr-Commit-Position: refs/heads/master@{#53394} TBR=machenbach@chromium.org,mlippautz@chromium.org Change-Id: I7342341fb63742de4e51c0df65e8323f2a6dbd7a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7760 Reviewed-on: https://chromium-review.googlesource.com/1075927Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#53395}
-
Michael Lippautz authored
No-try: true Bug: v8:7760 Change-Id: I2a4e91b58de4387a4bfa5b79681db25880af8954 Reviewed-on: https://chromium-review.googlesource.com/1068643 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#53394}
-
- 28 May, 2018 3 commits
-
-
Junliang Yan authored
Port a55d8632 Original Commit Message: Its contents are now inlined into the one remaining call site. R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: If0ba82784c0b9b095301e88141e1ff5b1fd507be Reviewed-on: https://chromium-review.googlesource.com/1075607Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#53393}
-
Hannes Payer authored
Change-Id: I4cb2e72fdc008ee855014d703af33d2e937bada3 Reviewed-on: https://chromium-review.googlesource.com/1070148 Commit-Queue: Hannes Payer <hpayer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#53392}
-
Ben L. Titzer authored
This CL improves the parsing and validation speed of WASM bytecode by eliminating a call to get the "simple opcode signature" on the fast path. It introduces a byte-indexed array that points directly to a FunctionSig*. By declaring the array in the wasm-opcodes.h header file and initializing (constexpr) in the wasm-opcodes.cc file, the decoder can use this array directly in its first test. (Note that constexpr obviates the need for LazyInitialize in previous iterations of this mechanism). There are two more calls on this fast path that can be simplified, WasmOpcodes::IsSignExtensionOpcode() and WasmOpcodes::IsAnyRefOpcode(). These calls are needed to check for a feature flag and can be implemented differently in a followup CL. R=mstarzinger@chromium.org Change-Id: Ibb4adb1134932c7e0b6a35facec4d8dd8c998c56 Reviewed-on: https://chromium-review.googlesource.com/1075276Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53391}
-