- 12 Dec, 2017 30 commits
-
-
Clemens Hammacher authored
This is a reland of fa18e78d. Mips compile error is fixed. Original change's description: > [wasm] [cleanup] Only pass information really needed > > Instead of always passing the MachineType, we can often just pass the > accessed memory size or the MachineRepresentation, which is less > information to pass and will simplify the upcoming refactoring for > memory operations in Liftoff. > > R=titzer@chromium.org > > Bug: v8:6600 > Change-Id: I8748f8e00dcfdbc4082893143fe88bdafde99053 > Reviewed-on: https://chromium-review.googlesource.com/822194 > Reviewed-by: Ben Titzer <titzer@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#50041} TBR=titzer@chromium.org Bug: v8:6600 Change-Id: Ia2c47464277a7c7a70099e7f7d6e32003e34d87e Reviewed-on: https://chromium-review.googlesource.com/822342Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50047}
-
Ben L. Titzer authored
This operation was used to implement asm.js stores, but is obsolete with asm.js stores now being lowered to normal graph nodes. R=mstarzinger@chromium.org CC=jarin@chromium.org Bug: Change-Id: Iea90b1a62be2e273c0562058642adc5b63ae2cf8 Reviewed-on: https://chromium-review.googlesource.com/822570 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#50046}
-
Georg Neis authored
This is a reland of c3bd741e Original change's description: > Fix "this" value in lazily-parsed module functions. > > When preparsing top-level functions in a module, we didn't track > unresolved variables. Consequently, "this" ended up referencing > the global "this", which has the wrong value (in a module "this" > is supposed to be the undefined value). > > This patch fixes that. This also lets us stop forcing context > allocation of all variables in module scopes, which the patch > takes care of as well. > > Bug: chromium:791334 > Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf > Reviewed-on: https://chromium-review.googlesource.com/808938 > Reviewed-by: Marja Hölttä <marja@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Commit-Queue: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#50025} TBR=adamk@chromium.org TBR=kozyatinskiy@chromium.org Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Bug: chromium:791334 Change-Id: I57acc7b84a345565b36cbb55924fa2ff9b449eec Reviewed-on: https://chromium-review.googlesource.com/822341 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#50045}
-
Ben L. Titzer authored
The CheckedLoad and CheckedStore machine operators are a form of macro node used in the backend of TurboFan. They express bounds-checked accesses to typed arrays in the asm.js style. While their semantics can be expressed as normal machine operations and branches in the graph, they were originally used to save compile time when graphs were very big. ASM->WASM->TF graphs are smaller. This CL implements asm.js bounds checks for stores using normal branch nodes and removes the need for CheckedStore, improving maintainability at some small cost to compilation time. R=mstarzinger@chromium.org CC=bradnelson@chromium.org Bug: Change-Id: I928689cfe33acac5a422f32cb014850ba09196f1 Reviewed-on: https://chromium-review.googlesource.com/822471 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#50044}
-
Michael Achenbach authored
This reverts commit fa18e78d. Reason for revert: https://build.chromium.org/p/client.v8.ports/builders/V8%20Mips%20-%20builder/builds/14055 Original change's description: > [wasm] [cleanup] Only pass information really needed > > Instead of always passing the MachineType, we can often just pass the > accessed memory size or the MachineRepresentation, which is less > information to pass and will simplify the upcoming refactoring for > memory operations in Liftoff. > > R=titzer@chromium.org > > Bug: v8:6600 > Change-Id: I8748f8e00dcfdbc4082893143fe88bdafde99053 > Reviewed-on: https://chromium-review.googlesource.com/822194 > Reviewed-by: Ben Titzer <titzer@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#50041} TBR=titzer@chromium.org,clemensh@chromium.org Change-Id: I3c85e3bc9b37c97b373b5e51a094be9561767f86 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6600 Reviewed-on: https://chromium-review.googlesource.com/822850Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50043}
-
Junliang Yan authored
Port 7a159da1 R=ishell@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: I669b665d7ef00dc6dcc80936d460e12c80bc1eb6 Reviewed-on: https://chromium-review.googlesource.com/818123Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#50042}
-
Clemens Hammacher authored
Instead of always passing the MachineType, we can often just pass the accessed memory size or the MachineRepresentation, which is less information to pass and will simplify the upcoming refactoring for memory operations in Liftoff. R=titzer@chromium.org Bug: v8:6600 Change-Id: I8748f8e00dcfdbc4082893143fe88bdafde99053 Reviewed-on: https://chromium-review.googlesource.com/822194Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50041}
-
Ulan Degenbaev authored
Currently Page::ShrinkToHighWaterMark checks that there is only one filler in the to-be-freed area at the end of the page. This does not hold if an allocation observer is active. We should instead check that the to-be-freed area does not contain allocated objects and will not contain allocated objects: 1) Following chain of fillers we arrive at the end of the page. 2) The free list of the page is empty. This patch also changes PagedSpace::ResetFreeList to evict free list entries of each page, instead of just reseting the global free list. It also removes invalidation of free list categories. Now FreeList::EvictFreeListItems simply evicts free list entries without invalidating free list categories. Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I6051578ec2c91c9614d14c7a6ce188d2db5ace3b Reviewed-on: https://chromium-review.googlesource.com/822571 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#50040}
-
Clemens Hammacher authored
Instead of specializing {DecodeLoadMem} and {DecodeStoreMem} for prefixed opcodes, just pass the offset as parameter. R=titzer@chromium.org Change-Id: I0581f6e9cb562885709aaa0317bb550b175ad160 Reviewed-on: https://chromium-review.googlesource.com/822391Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#50039}
-
Mike Stanton authored
Trampoline ICs differ from normal ICs only in that they load the feedback vector from the stack instead of accepting it as an argument. We created them for FullCodeGen, where you always have the feedback vector on the stack, and can reduce the amount of code required to invoke an ICs by hiding the stack load down in the trampoline IC. Now the concept isn't really necessary, and we can achieve a nice cleanup of our idea-space by removing it. The first step is to remove their usage in TurboFan. Bug: v8:7199 Change-Id: I08aefa5de199b1f19adea261b7086a84338c0805 Reviewed-on: https://chromium-review.googlesource.com/822193Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#50038}
-
Mircea Trofin authored
Corrected mips code generation for WASM_CALL and JS_TO_WASM_CALL. The logic for fetching raw call sites needed changing, too, in light of mips' 2-instruction calls, where using target_address_address is incorrect. The CL adds platform-specific accessors. Bug: chromium:793292 chromium:793282 Change-Id: I879ea6bffdad60791d88a6f5ea15087cdcd3f2e9 Reviewed-on: https://chromium-review.googlesource.com/818460Reviewed-by: Ben Titzer <titzer@chromium.org> Reviewed-by: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com> Commit-Queue: Mircea Trofin <mtrofin@chromium.org> Cr-Commit-Position: refs/heads/master@{#50037}
-
Michael Achenbach authored
This reverts commit c3bd741e. Reason for revert: Breaks layout tests: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/20384 Original change's description: > Fix "this" value in lazily-parsed module functions. > > When preparsing top-level functions in a module, we didn't track > unresolved variables. Consequently, "this" ended up referencing > the global "this", which has the wrong value (in a module "this" > is supposed to be the undefined value). > > This patch fixes that. This also lets us stop forcing context > allocation of all variables in module scopes, which the patch > takes care of as well. > > Bug: chromium:791334 > Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf > Reviewed-on: https://chromium-review.googlesource.com/808938 > Reviewed-by: Marja Hölttä <marja@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Commit-Queue: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#50025} TBR=adamk@chromium.org,marja@chromium.org,neis@chromium.org,kozyatinskiy@chromium.org Change-Id: I81f69334ed2ce104c00e6205d50001e4bdf07d15 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:791334 Reviewed-on: https://chromium-review.googlesource.com/822258Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50036}
-
Georg Neis authored
This makes the code dealing with type feedback more concise and uniform (at the cost of a few redundant comparisons). Bug: Change-Id: If6b98bd1f0dddd392d7b00d65b600127bd30ff7e Reviewed-on: https://chromium-review.googlesource.com/818984 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#50035}
-
Georg Neis authored
R=jkummerow@chromium.org Bug: v8:6791 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I2b04e4d5c2f8dd8c7e57662c81778a3a77376cb5 Reviewed-on: https://chromium-review.googlesource.com/819271 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#50034}
-
Michal Majewski authored
Bug: v8:6917 Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: I12d62e28b8e22820d4358d0166fa5db5e09b8bc3 Reviewed-on: https://chromium-review.googlesource.com/819630 Commit-Queue: Michał Majewski <majeski@google.com> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50033}
-
Michal Majewski authored
NOTRY=true Bug: v8:6917 Change-Id: I5f1edec76f3e67909b7d910187ab2d0bc774d10b Reviewed-on: https://chromium-review.googlesource.com/822490 Commit-Queue: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50032}
-
Andreas Haas authored
The original CL introduced a test which uses a random number generator. I disable the test for now, which is okay because this CL adds to a work-in-progress feature anyways, and I will fix the problem in another CL. Original description: Add the ability to return (multiple) return values on the stack: - Extend stack frames with a new buffer region for return slots. This region is located at the end of a caller's frame such that its slots can be indexed as caller frame slots in a callee (located beyond its parameters) and assigned return values. - Adjust stack frame constructon and deconstruction accordingly. - Extend linkage computation to support register plus stack returns. - Reserve return slots in caller frame when respective calls occur. - Introduce and generate architecture instructions ('peek') for reading back results from return slots in the caller. - Aggressive tests. - Some minor clean-up. So far, only ia32 and x64 are implemented. Change-Id: I8b03fc4e53946daaa0e14a34603f4824a04fad7e Reviewed-on: https://chromium-review.googlesource.com/819557Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50031}
-
Benjamin authored
'else' was missing in coverage range, resulting in odd looking reports R=jgruber@chromium.org Bug: v8:7179 Change-Id: I377cc557d51075256da27febdc8ab5442ea04d27 Reviewed-on: https://chromium-review.googlesource.com/816736Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#50030}
-
Sergiy Byelozyorov authored
TBR=sergiyb@chromium.org Bug: Change-Id: I5dbbb9ace1a232b9441b81a897c28a997d549dec Reviewed-on: https://chromium-review.googlesource.com/821070 Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Cr-Commit-Position: refs/heads/master@{#50029}
-
Jaroslav Sevcik authored
Bug: chromium:793863 Change-Id: I68860924c3252184f63dbea8561e5c4fe6bfa4ca Reviewed-on: https://chromium-review.googlesource.com/822071Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#50028}
-
Michael Achenbach authored
TBR=majeski@google.com NOTRY=true Bug: v8:6972 Change-Id: I80f392c97e4120dc81745346b36f9c505da13461 Reviewed-on: https://chromium-review.googlesource.com/822410Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50027}
-
Andreas Haas authored
I tested it with 30000 tests in the wasm spec test suite, and they all pass. Change-Id: Ice0fb64f56685f67521431213e3fc8fbc263750e Reviewed-on: https://chromium-review.googlesource.com/822111Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#50026}
-
Georg Neis authored
When preparsing top-level functions in a module, we didn't track unresolved variables. Consequently, "this" ended up referencing the global "this", which has the wrong value (in a module "this" is supposed to be the undefined value). This patch fixes that. This also lets us stop forcing context allocation of all variables in module scopes, which the patch takes care of as well. Bug: chromium:791334 Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf Reviewed-on: https://chromium-review.googlesource.com/808938Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#50025}
-
Michal Majewski authored
Bug: v8:6917 Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: Iad6b429cfd855c435528468396c880f7733776d9 Reviewed-on: https://chromium-review.googlesource.com/819551 Commit-Queue: Michał Majewski <majeski@google.com> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50024}
-
Ulan Degenbaev authored
Use large zone segments for CSA builin generation when serializer is active. Turbofan backend uses pointer comparison of zone allocated objects. Large zone segments ensure determistic order of objects. Bug: v8:7188 Change-Id: I18e1e18fa79cded561563de1329bc3d9a8c364fb Reviewed-on: https://chromium-review.googlesource.com/817601Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#50023}
-
Georg Neis authored
R=jkummerow@chromium.org Bug: v8:6791 Change-Id: I6664ce5b9d208f2cb1e8320c9cc9a67a682316a7 Reviewed-on: https://chromium-review.googlesource.com/817316 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#50022}
-
Michael Achenbach authored
NOTRY=true Bug: chromium:718739 Change-Id: Iccc658504dac065e986e1f9af2af5f7d2da581bc Reviewed-on: https://chromium-review.googlesource.com/822092Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50021}
-
Michal Majewski authored
Some refactor moved from https://chromium-review.googlesource.com/c/v8/v8/+/798331. Bug: v8:6917 Change-Id: I8cae6cfca7a0d7d8e234052c0ab0bfe252355e60 Reviewed-on: https://chromium-review.googlesource.com/819550 Commit-Queue: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50020}
-
Alexey Kozyatinskiy authored
If we have several scripts with the same url (see many <script> tags in one page), then we try to set breakpoint only in script with given lineNumber inside and ignore all other scripts. We should follow the same logic when we capture hint for later breakpoint restore. R=yangguo@chromium.org Bug: none Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Change-Id: I44a332ac64f62ec9a0d24d5fe4688f8ced125e39 Reviewed-on: https://chromium-review.googlesource.com/821053 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#50019}
-
Junliang Yan authored
Port 52ff3ae4 Original Commit Message: - Implement RunMicrotasks in CSA to prevent a potentially large number of jumps between C++ and JS code while consuming te queue. Appears to provide a ~60% speedup in microtask-heavy code, which from limited testing appears to scale linearly. The code-stub microtask pump bails out to the old C++ microtask pump if it encounters a CallHandlerInfo microtask, and remains in C++ for the remainder of the queue (returning to the JS/stub implementation after the bailed out queue is exhausted). - Add a variation of JSEntryStub which enters the new RunMicrotasks code stub. - Add a new RunMicrotasks helper to Execution, which uses the RunMicrotasks entry stub. R=caitp@igalia.com, joransiu@ca.ibm.com, jbarboza@ca.ibm.com BUG= LOG=N Change-Id: Ifa15ca19312bb92758e82d19c3e3fc0a8b908d82 Reviewed-on: https://chromium-review.googlesource.com/820197Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#50018}
-
- 11 Dec, 2017 10 commits
-
-
Sergiy Byelozyorov authored
TBR=sergiyb@chromium.org Bug: chromium:747960 Change-Id: I3767d335907f2b953b633c4ae20c5c9b2dc5d65b Reviewed-on: https://chromium-review.googlesource.com/820910 Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Cr-Commit-Position: refs/heads/master@{#50017}
-
Junliang Yan authored
Port 663b55aa R=gdeepti@chromium.org, joransiu@ca.ibm.com, jbarboza@ca.ibm.com BUG= LOG=N Change-Id: Ia8cfa8c0927915c4afa07ceac85140231c415a9b Reviewed-on: https://chromium-review.googlesource.com/820196Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#50016}
-
Sergiy Byelozyorov authored
TBR=machenbach@google.com No-Try: true Bug: chromium:747960 Change-Id: I3ec105f0ddc2856c95b2314c4e2dd285e040b330 Reviewed-on: https://chromium-review.googlesource.com/820830 Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Cr-Commit-Position: refs/heads/master@{#50015}
-
Deepti Gandluri authored
This patch implements the following F32x4 Ops: F32x4Splat, F32x4ExtractLane, F32x4ReplaceLane F32x4RecipApprox, F32x4RecipSqrtApprox F32x4Add, F32x4Sub, F32x4Mul, F32x4Min, F32x4Max, F32x4Eq, F32x4Ne, F32x4Gt, F32x4Ge BUG=V8:6020 Change-Id: I8267734d336f4bae6fed008d7b1f5faa428574df Reviewed-on: https://chromium-review.googlesource.com/816734Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Mircea Trofin <mtrofin@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#50014}
-
Deepti Gandluri authored
The haddps instruction is needed to implement wasm SIMD F32x4 horizontal add. BUG=V8:6020 Change-Id: Ifff78f6c697b46e621f0fd6b7bb1b0e7824a3088 Reviewed-on: https://chromium-review.googlesource.com/820098Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#50013}
-
Justin Ridgewell authored
This is a separation of the DFA Unicode Decoder from https://chromium-review.googlesource.com/c/v8/v8/+/789560 I attempted to make the DFA's table a bit more explicit in this CL. Still, the linter prevents me from letting me present the array as a "table" in source code. For a better representation, please refer to https://docs.google.com/spreadsheets/d/1L9STtkmWs-A7HdK5ZmZ-wPZ_VBjQ3-Jj_xN9c6_hLKA - - - - - Now for a big copy-paste from 789560: Essentially, reworks a standard FSM (imagine an array of structs) and flattens it out into a single-dimension array. Using Table 3-7 of the Unicode 10.0.0 standard (page 126 of http://www.unicode.org/versions/Unicode10.0.0/ch03.pdf), we can nicely map all bytes into one of 12 character classes: 00. 0x00-0x7F 01. 0x80-0x8F (split from general continuation because this range is not valid after a 0xF0 leading byte) 02. 0x90-0x9F (split from general continuation because this range is not valid after a 0xE0 nor a 0xF4 leading byte) 03. 0xA0-0xBF (the rest of the continuation range) 04. 0xC0-0xC1, 0xF5-0xFF (the joined range of invalid bytes, notice this includes 255 which we use as a known bad byte during hex-to-int decoding) 05. 0xC2-0xDF (leading bytes which require any continuation byte afterwards) 06. 0xE0 (leading byte which requires a 0xA0-0xBF afterwards then any continuation byte after that) 07. 0xE1-0xEC, 0xEE-0xEF (leading bytes which requires any continuation afterwards then any continuation byte after that) 08. 0xED (leading byte which requires a 0x80-0x9F afterwards then any continuation byte after that) 09. 0xF1-F3 (leading bytes which requires any continuation byte afterwards then any continuation byte then any continuation byte) 10. 0xF0 (leading bytes which requires a 0x90-0xBF afterwards then any continuation byte then any continuation byte) 11. 0xF4 (leading bytes which requires a 0x80-0x8F afterwards then any continuation byte then any continuation byte) Note that 0xF0 and 0xF1-0xF3 were swapped so that fewer bytes were needed to represent the transition state ("9, 10, 10, 10" vs. "10, 9, 9, 9"). Using these 12 classes as "transitions", we can map from one state to the next. Each state is defined as some multiple of 12, so that we're always starting at the 0th column of each row of the FSM. From each state, we add the transition and get a index of the new row the FSM is entering. If at any point we encounter a bad byte, the state + bad-byte-transition is guaranteed to map us into the first row of the FSM (which contains no valid exiting transitions). The key differences from Björn's original (or his self-modified) DFA is the "bad" state is now mapped to 0 (or the first row of the FSM) instead of 12 (the second row). This saves ~50 bytes when gzipping, and also speeds up determining if a string is properly encoded (see his sample code at http://bjoern.hoehrmann.de/utf-8/decoder/dfa/#performance). Finally, I've replace his ternary check with an array access, to make the algorithm branchless. This places a requirement on the caller to 0 out the code point between successful decodings, which it could always have done because it's already branching. R=marja@google.com Bug: Change-Id: I574f208a84dc5d06caba17127b0d41f7ce1a3395 Reviewed-on: https://chromium-review.googlesource.com/805357 Commit-Queue: Justin Ridgewell <jridgewell@google.com> Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#50012}
-
Michal Majewski authored
Since we have only unittests that are under GoogleTestSuite there is no need to keep it as a default suite and we can make it specific for unittests. Bug: v8:6917 Change-Id: Ie2d57342773f228dea72184ab0f2abfc9d2daa70 Reviewed-on: https://chromium-review.googlesource.com/819253 Commit-Queue: Michał Majewski <majeski@google.com> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#50011}
-
Daniel Ehrenberg authored
Includes drive-by fix of a small BigInt bug, as caught by test262/built-ins/BigInt/constructor-from-string-syntax-errors Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: Ic3b78310912f84bbf904a1fcb7ddf2d7eb2df013 Reviewed-on: https://chromium-review.googlesource.com/817775Reviewed-by: Sathya Gunasekaran (ooo until 12/12) <gsathya@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Daniel Ehrenberg <littledan@chromium.org> Cr-Commit-Position: refs/heads/master@{#50010}
-
Mathias Bynens authored
The use counter was originally added in https://chromium.googlesource.com/v8/v8/+/d3c9812143f14fa616ebe2581f8b0a14f725d92e (https://chromium-review.googlesource.com/c/v8/v8/+/693155). The CL that removes the plumbing in Chromium is here: https://chromium-review.googlesource.com/c/chromium/src/+/819632 BUG=v8:6827 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Ie5f861fe2a64454e682d8cd0618c948642a32886 Reviewed-on: https://chromium-review.googlesource.com/819553 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#50009}
-
Adam Klein authored
Bug: v8:7069 Change-Id: I878ea42207013a76de859c96f3cb5e2d93aa7927 Reviewed-on: https://chromium-review.googlesource.com/803908Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Sathya Gunasekaran (ooo until 12/12) <gsathya@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#50008}
-