- 28 Apr, 2017 1 commit
-
-
Jochen Eisinger authored
BUG=v8:6316 R=jbroman@chromium.org,yangguo@chromium.org Change-Id: Icfc33e3e51cdbfad246a971a5a2737a8fdfba058 Reviewed-on: https://chromium-review.googlesource.com/488941 Commit-Queue: Jochen Eisinger <jochen@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#44963}
-
- 27 Apr, 2017 3 commits
-
-
Clemens Hammacher authored
With fix for architectures where x<<32 != x. Original change's description: > [base] Introduce RoundUpToPowerOfTwo64 > > And fix RoundUpToPowerOfTwo32 to return 1 for the input 0. > 0 is no power of two. > Beside being the correct value, this also avoids a special case in the > (new) fast path using the number of leading zeros. > > R=jochen@chromium.org, ahaas@chromium.org > > Change-Id: I87173495e13b334954bcebbb55724fb666dfa809 > Reviewed-on: https://chromium-review.googlesource.com/488143 > Reviewed-by: Jochen Eisinger <jochen@chromium.org> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#44925} TBR=ahaas@chromium.org,jochen@chromium.org,clemensh@chromium.org,v8-reviews@googlegroups.com Change-Id: I7b4719d84a419bb7b38e3b5c9d6d183275087ace Reviewed-on: https://chromium-review.googlesource.com/488981 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44951}
-
Clemens Hammacher authored
This reverts commit 9ceaf212. Reason for revert: Fails on arm: http://build.chromium.org/p/client.v8.ports/builders/V8%20Arm%20-%20debug/builds/2950/steps/Check/logs/Bits.RoundUpToPowerOf.. Original change's description: > [base] Introduce RoundUpToPowerOfTwo64 > > And fix RoundUpToPowerOfTwo32 to return 1 for the input 0. > 0 is no power of two. > Beside being the correct value, this also avoids a special case in the > (new) fast path using the number of leading zeros. > > R=jochen@chromium.org, ahaas@chromium.org > > Change-Id: I87173495e13b334954bcebbb55724fb666dfa809 > Reviewed-on: https://chromium-review.googlesource.com/488143 > Reviewed-by: Jochen Eisinger <jochen@chromium.org> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#44925} TBR=ahaas@chromium.org,jochen@chromium.org,clemensh@chromium.org,v8-reviews@googlegroups.com,wasm-v8@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: Ib353ee0a944316da6f919bac3bb88d4f95d98ea0 Reviewed-on: https://chromium-review.googlesource.com/488365Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44935}
-
Clemens Hammacher authored
And fix RoundUpToPowerOfTwo32 to return 1 for the input 0. 0 is no power of two. Beside being the correct value, this also avoids a special case in the (new) fast path using the number of leading zeros. R=jochen@chromium.org, ahaas@chromium.org Change-Id: I87173495e13b334954bcebbb55724fb666dfa809 Reviewed-on: https://chromium-review.googlesource.com/488143Reviewed-by:
Jochen Eisinger <jochen@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44925}
-
- 26 Apr, 2017 2 commits
-
-
Michael Starzinger authored
This fixes the bounds checking of "unsigned" numeric literals (those that do not contains dots) by the parser. In particular this fixes a bogus truncation to 32-bit in the scanner. It also makes the scanner more robust by limiting the range of those numeric literals, hence completely avoiding rounding loss or truncation errors. R=clemensh@chromium.org TEST=unittests/AsmJsScannerTest.UnsignedNumbers BUG=v8:6298 Change-Id: Id31ab3c652e99fa8d3d6663315768e1bfaf3b773 Reviewed-on: https://chromium-review.googlesource.com/486881Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#44890}
-
Clemens Hammacher authored
The only users of the LoadStoreOpcodeOf function were a number of macros in wasm-macro-gen.h, and three test functions using it directly. This CL refactors those functions to also use the macros. In one case, this requires storing the value in a local variable first. R=ahaas@chromium.org Change-Id: Ia2fbf67a3831fafc9345e155eb240cf1bf6feb5d Reviewed-on: https://chromium-review.googlesource.com/486842Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44885}
-
- 25 Apr, 2017 3 commits
-
-
Clemens Hammacher authored
This header file is only used from tests. Also, move the LoadStoreOpcodeOf method (only used in tests) from wasm-opcodes.h to wasm-macro-gen.h. R=ahaas@chromium.org Change-Id: I8d4691be494b5c1fbe3084441329850930bad647 Reviewed-on: https://chromium-review.googlesource.com/486861 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#44845}
-
Clemens Hammacher authored
wasm-macro-gen.h is mainly used from tests, but LocalDeclEncoder is also used from various other places. This CL moves the LocalDeclEncoder to an own compilation unit. We want to later move wasm-macro-gen.h to the tests folder. It also refactors the LocalDeclEncoder to reuse the LEBHelper::write_u32v and LEBHelper::sizeof_u32v methods instead of reimplementing it. R=ahaas@chromium.org Change-Id: Ia4651436f0544578da7c1c43596d343571942e97 Reviewed-on: https://chromium-review.googlesource.com/486724Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44838}
-
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}
-
- 24 Apr, 2017 3 commits
-
-
brucedawson authored
VC++ 2017's STL doesn't suppress warnings as aggressively as prior versions did. This causes warnings on code which mixes signed and unsigned types. In this case a deque of unsigned integers was being queried to see how many signed integers it contains. This could be fixed by passing in unsigned 0, 1, and 2 to std::count but changing the deque from unsigned to int is simpler. R=adamk@chromium.org BUG=chromium:683729 Review-Url: https://codereview.chromium.org/2834293002 Cr-Commit-Position: refs/heads/master@{#44814}
-
Daniel Ehrenberg authored
- Split out code for Intl objects into src/objects/ - Rename i18n to intl (except for the name of the build flag) - Use build system more broadly to turn on/off Intl code - Delete a little bit of dead code Bug: v8:5751 Change-Id: I41bf2825a5cb0df20824922b17c24cae637984da Reviewed-on: https://chromium-review.googlesource.com/481284Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Daniel Ehrenberg <littledan@chromium.org> Cr-Commit-Position: refs/heads/master@{#44801}
-
Clemens Hammacher authored
Add missing kEnd opcode after each body. Also, avoid the macro. This fix is needed for follow-up changes to the control transfer computation. R=ahaas@chromium.org BUG=v8:5822 Change-Id: If2b4dbea831ec40939a2045701f3d13479331773 Reviewed-on: https://chromium-review.googlesource.com/485481Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44794}
-
- 21 Apr, 2017 1 commit
-
-
jkummerow authored
Review-Url: https://codereview.chromium.org/2827263004 Cr-Commit-Position: refs/heads/master@{#44783}
-
- 19 Apr, 2017 1 commit
-
-
Adam Klein authored
There's no reason to keep track, for a preparsed function itself, whether that function calls eval. All that matters is that the ancestor scopes are marked as having an inner scope which calls eval. The function will have its "calls eval" bit persisted if/when it's fully parsed. The only "behavioral" change in this patch is the removal of a DCHECK. Bug: v8:6092 Change-Id: I17e396c8a265030fe0ad941707e4a97972e6650b Reviewed-on: https://chromium-review.googlesource.com/481223 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#44732}
-
- 18 Apr, 2017 2 commits
-
-
Michael Starzinger authored
This switches the parser to use token positions (i.e. {Position}) instead of stream positions (i.e. {GetPosition}) everywhere. Access to the latter is being removed as it is unsupported when the scanner is in rewind state anyways. This prevents "skipping" a token when seeking. R=bradnelson@chromium.org BUG=v8:6127 Change-Id: I9c13dd20a981061a2bccc4fb57e5c57d2a64ac5c Reviewed-on: https://chromium-review.googlesource.com/480300Reviewed-by:
Brad Nelson <bradnelson@chromium.org> Commit-Queue: Brad Nelson <bradnelson@chromium.org> Cr-Commit-Position: refs/heads/master@{#44699}
-
Marja Hölttä authored
BUG=v8:5516 Change-Id: Ie2e41ffa82c63788e285641232a5d555155b0d13 Reviewed-on: https://chromium-review.googlesource.com/480239 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Jochen Eisinger <jochen@chromium.org> Reviewed-by:
Daniel Vogelheim <vogelheim@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#44689}
-
- 13 Apr, 2017 1 commit
-
-
bmeurer authored
When the incoming value to ChangeFloat64ToTagged is in Smi range, we represent it as Smi instead of a HeapNumber. This addresses a range of problems where TurboFan unnecessarily deoptimizes because an operation learned Smi feedback in Ignition, but was then confronted with a tagged HeapNumber in TurboFan, just because the value was also represented as unboxed double somewhere in the meantime. BUG=v8:6256 R=yangguo@chromium.org Review-Url: https://codereview.chromium.org/2815283002 Cr-Commit-Position: refs/heads/master@{#44631}
-
- 12 Apr, 2017 2 commits
-
-
kozyatinskiy authored
Usually program doesn't contain a lot of different stack frames in collected stack trace. BUG=v8:6189 R=yangguo@chromium.orr TBR=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2788413004 Cr-Commit-Position: refs/heads/master@{#44622}
-
Ross McIlroy authored
The BytecodePipeline is no longer used by any optimizers, so remove it and connect the BytecodeArrayBuilder directly to the BytecodeWriter. Also remove some functions from BytecodeNode which are no longer used. BUG=v8:6194 Change-Id: Id2ec94ff1d4db41b108a778100459283fbb2256c Reviewed-on: https://chromium-review.googlesource.com/471528Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#44619}
-
- 11 Apr, 2017 8 commits
-
-
Leszek Swirski authored
Adds a collection of call bytecodes which have an implicit undefined receiver argument, for cases such as global calls where we know that the receiver has to be undefined. This way we can skip an LdaUndefined, decrease bytecode register pressure, and set a more accurate ConvertReceiverMode on the interpreter and TurboFan call. As a side effect, the "normal" Call bytecode now becomes a rare case (only with calls and super property calls), so we get rid of its 0-2 argument special cases and modify CallProperty[N] to use the NotNullOrUndefined ConvertReceiverMode. Reland of https://chromium-review.googlesource.com/c/463287 after fixing tests in https://codereview.chromium.org/2813873002. Change-Id: I314d69c7643ceec6a5750ffdab60dad38dad09e5 Reviewed-on: https://chromium-review.googlesource.com/474752Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#44582}
-
Wiktor Garbacz authored
This a step towards using CompilerDispatcher in parallel parsing. BUG=v8:6093 Change-Id: Idee84105e342950badb5694fa2a850e05430abaa Reviewed-on: https://chromium-review.googlesource.com/473246 Commit-Queue: Wiktor Garbacz <wiktorg@google.com> Reviewed-by:
Jochen Eisinger <jochen@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#44573}
-
Wiktor Garbacz authored
This a step towards using CompilerDispatcher in parallel parsing. BUG=v8:6093 Change-Id: I7c0dc0a5f5b25652a8aa98c94b1e069c1f081a5b Reviewed-on: https://chromium-review.googlesource.com/473106Reviewed-by:
Jochen Eisinger <jochen@chromium.org> Commit-Queue: Wiktor Garbacz <wiktorg@google.com> Cr-Commit-Position: refs/heads/master@{#44570}
-
Ross McIlroy authored
Move dead bytecode elimination from a seperate bytecode pipeline optimizer into the BytecodeArrayWriter. This removes the last bytecode pipeline optimizer, which means we can remove the Bytecode pipeline which, which should increase compile speed. BUG=v8:6194 Change-Id: I47fb3c3463b2b8a92e02cf7a6b608683fcfa5261 Reviewed-on: https://chromium-review.googlesource.com/471407 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#44568}
-
Ross McIlroy authored
All the optimizations have now been moved to either the BytecodeGenerator or the BytecodeArrayWriter/Builder. BUG=v8:6194 Change-Id: Ie5c5d55e824c94ffb503af376c72bc64ad1f6f81 Reviewed-on: https://chromium-review.googlesource.com/469349 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#44564}
-
Ross McIlroy authored
Moves the logic for eliding non-effectful accumulator load elision from the peephole optimizer to the BytecodeArrayWriter. BUG=v8:6194 Change-Id: I05fbe4ee8ac340e5c355285d0b47e4a9d52fd0a8 Reviewed-on: https://chromium-review.googlesource.com/469828 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#44560}
-
Clemens Hammacher authored
According to the spec, section names must be valid UTF-8. This CL adds a check for that. Imported and exported names were already checked before. In order to use the {consume_string} function from the WasmSectionIterator, it moved it out of the ModuleDecoder into the anonymous namespace. It now also gets a name for the string to be parsed, for better error messages. R=rossberg@chromium.org Change-Id: I20b1ddb0bd1c7ada237d8303951073310fe1c714 Reviewed-on: https://chromium-review.googlesource.com/470207 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Rossberg <rossberg@chromium.org> Cr-Commit-Position: refs/heads/master@{#44550}
-
Michael Achenbach authored
This reverts commit 751e8935. Reason for revert: Breaks layout tests: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/14885 See: https://github.com/v8/v8/wiki/Blink-layout-tests Original change's description: > [ignition] Add call bytecodes for undefined receiver > > Adds a collection of call bytecodes which have an implicit undefined > receiver argument, for cases such as global calls where we know that the > receiver has to be undefined. This way we can skip an LdaUndefined, > decrease bytecode register pressure, and set a more accurate > ConvertReceiverMode on the interpreter and TurboFan call. > > As a side effect, the "normal" Call bytecode now becomes a rare case > (only with calls and super property calls), so we get rid of its 0-2 > argument special cases and modify CallProperty[N] to use the > NotNullOrUndefined ConvertReceiverMode. > > Change-Id: I9374a32fefd66fc0251b5193bae7a6b7dc31eefc > Reviewed-on: https://chromium-review.googlesource.com/463287 > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#44530} TBR=rmcilroy@chromium.org,mstarzinger@chromium.org,leszeks@chromium.org,v8-reviews@googlegroups.com,v8-mips-ports@googlegroups.com,v8-ppc-ports@googlegroups.com,v8-x87-ports@googlegroups.com,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I7629dec609d0ec938ce7105d6c1c74884e5f9272 Reviewed-on: https://chromium-review.googlesource.com/474744 Commit-Queue: Michael Achenbach <machenbach@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#44548}
-
- 10 Apr, 2017 6 commits
-
-
Leszek Swirski authored
Adds a collection of call bytecodes which have an implicit undefined receiver argument, for cases such as global calls where we know that the receiver has to be undefined. This way we can skip an LdaUndefined, decrease bytecode register pressure, and set a more accurate ConvertReceiverMode on the interpreter and TurboFan call. As a side effect, the "normal" Call bytecode now becomes a rare case (only with calls and super property calls), so we get rid of its 0-2 argument special cases and modify CallProperty[N] to use the NotNullOrUndefined ConvertReceiverMode. Change-Id: I9374a32fefd66fc0251b5193bae7a6b7dc31eefc Reviewed-on: https://chromium-review.googlesource.com/463287 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#44530}
-
Andreas Haas authored
The decoder has the assumption that it always holds that pc <= end. However, in the FunctionBodyDecoder, end was set to start to terminate the decoding loop. Thereby the assumption was violated, which caused a crash. I set end to pc now to end the decoding loop, which preserves the assumption and terminates the loop. BUG=chromium:709741 TEST=unittests/FunctionBodyDecoderTest.Regression709741 R=clemensh@chromium.org Change-Id: I5bfd61bdc4809fc16f12ca8611876c66a79aaa36 Reviewed-on: https://chromium-review.googlesource.com/472723 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44524}
-
Clemens Hammacher authored
- Store std::string instead of std::unique_ptr<char[]> for the error message. - Remove ErrorCode, which was just kSuccess and kError anyway. Error is now detected on whether error_msg_ is empty or not. - Refactor constructors for perfect forwarding; this will allow us to implement Result<std::unique_ptr<X*>>. - Refactor Decoder::toResult for perfect forwarding. - Remove output operators (operator<<) for Result; it was only used in the error case anyway. Print error message directly instead. The operator was problematic since it assumed the existence of an output operator for every T which is used in Result<T>. - Remove ModuleError and FunctionError, introduce general static Result<T>::Error method instead. R=ahaas@chromium.org Change-Id: I1e0f602a61ee9780fee2a3ed33147d431fb092ba Reviewed-on: https://chromium-review.googlesource.com/472748 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#44518}
-
Ross McIlroy authored
This relands commit d3e9aade. The original CL was reverted speculatively but didn't cause the buildbot failure. Original change's description: > [Interpreter] Move BinaryOp Smi transformation into BytecodeGenerator. > > Perform the transformation to <BinaryOp>Smi for Binary ops which take Smi > literals in the BytecodeGenerator. This enables us to perform the > transformation for literals on either side for commutative operations, and > Avoids having to do the check on every bytecode in the peephole optimizer. > > In the process, adds Smi bytecode variants for all binary operations, adding > - MulSmi > - DivSmi > - ModSmi > - BitwiseXorSmi > - ShiftRightLogical > > BUG=v8:6194 > > Change-Id: If1484252f5385c16957004b9cac8bfbb1f209219 > Reviewed-on: https://chromium-review.googlesource.com/466246 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#44477} TBR=rmcilroy@chromium.org,machenbach@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,mythria@chromium.org,v8-reviews@googlegroups.com,ishell@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. BUG=v8:6194 Change-Id: I2ccaefa1ce58d3885f5c2648755985c06f25c1d8 Reviewed-on: https://chromium-review.googlesource.com/472746Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#44511}
-
Andreas Haas authored
Instead of storing {start} and {error_pc} we now store the {error_offset}, which is anyways the only value we use. R=clemensh@chromium.org Change-Id: Ifd9791eff5c9efce2e7e2a1989bf3b5eaa464a02 Reviewed-on: https://chromium-review.googlesource.com/471527 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44510}
-
Wiktor Garbacz authored
This is inital work in order to utilize CompilerDispatcher in parallel parsing. BUG=v8:6093 Change-Id: I6aae4f32ddb2314585d09039c1c5d7e658dc896f Reviewed-on: https://chromium-review.googlesource.com/469709Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Jochen Eisinger <jochen@chromium.org> Commit-Queue: Wiktor Garbacz <wiktorg@google.com> Cr-Commit-Position: refs/heads/master@{#44509}
-
- 07 Apr, 2017 5 commits
-
-
jkummerow authored
and out of the main library. This saves about 5% of binary size (800KB on x64, 373KB on android_arm). Only the GN build is supported; the GYP build is maintained working but does not support the feature. Previously landed as 4782bc0d / r44412. BUG=v8:6055 CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_nosnap_rel; Review-Url: https://codereview.chromium.org/2760233005 Cr-Commit-Position: refs/heads/master@{#44489}
-
Michael Achenbach authored
This reverts commit d3e9aade. Reason for revert: Speculative for: https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20nosnap%20-%20debug/builds/4449 Bisect points to this CL. Original change's description: > [Interpreter] Move BinaryOp Smi transformation into BytecodeGenerator. > > Perform the transformation to <BinaryOp>Smi for Binary ops which take Smi > literals in the BytecodeGenerator. This enables us to perform the > transformation for literals on either side for commutative operations, and > Avoids having to do the check on every bytecode in the peephole optimizer. > > In the process, adds Smi bytecode variants for all binary operations, adding > - MulSmi > - DivSmi > - ModSmi > - BitwiseXorSmi > - ShiftRightLogical > > BUG=v8:6194 > > Change-Id: If1484252f5385c16957004b9cac8bfbb1f209219 > Reviewed-on: https://chromium-review.googlesource.com/466246 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#44477} TBR=rmcilroy@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,mythria@chromium.org,ishell@chromium.org,v8-reviews@googlegroups.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:6194 Change-Id: If57dbdbe40be77804bf437463b855d3167e2d473 Reviewed-on: https://chromium-review.googlesource.com/471308Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#44488}
-
Ross McIlroy authored
Rather than doing nop elision in the peephole optimizer, be smarter about emitting nops for elided register transfers in the bytecode optimizer. BUG=v8:6194 Change-Id: Ib1a7168a0d143e4f2da7c6d43080998793c30822 Reviewed-on: https://chromium-review.googlesource.com/468929 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#44479}
-
Ross McIlroy authored
Perform the transformation to <BinaryOp>Smi for Binary ops which take Smi literals in the BytecodeGenerator. This enables us to perform the transformation for literals on either side for commutative operations, and Avoids having to do the check on every bytecode in the peephole optimizer. In the process, adds Smi bytecode variants for all binary operations, adding - MulSmi - DivSmi - ModSmi - BitwiseXorSmi - ShiftRightLogical BUG=v8:6194 Change-Id: If1484252f5385c16957004b9cac8bfbb1f209219 Reviewed-on: https://chromium-review.googlesource.com/466246 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#44477}
-
jarin authored
This gives us more precise type information, so we can avoid some type guards to refine the type information back. The motivation for this is to help escape analysis by not introducing redundant type guards (which escape analysis cannot handle yet even though it could and should do). Motivating example: In the example below, the out-of-object property array for properties fld5 and fld6 gets type Any when it is created by "o.fld5 = 5" (for object literals, we store 4 properties in-objeca, the rest goes out of object). When we run load elimination for the load the out-of-object property array (to store 6 into o.fld6), load elimination inserts TypeGuard to enforce the Type::Internal() type. This makes escape analysis bail out on this object, and we do not eliminate the object creation. function f() { var o = {}; o.fld1 = 1; o.fld2 = 2; o.fld3 = 3; o.fld4 = 4; o.fld5 = 5; o.fld6 = 6; } f(); f(); %OptimizeFunctionOnNextCall(f); f(); Review-Url: https://codereview.chromium.org/2797993006 Cr-Commit-Position: refs/heads/master@{#44470}
-
- 06 Apr, 2017 2 commits
-
-
bmeurer authored
Make Ignition collect BinaryOperationFeedback on ToNumber, using the shared type feedback slot with the following Inc/Dec bytecode, and use this feedback in TurboFan to turn the ToNumber(x) operation into a SpeculativeNumberMultiply(x,1) with the feedback hint. R=jarin@chromium.org, mstarzinger@chromium.org, rmcilroy@chromium.org BUG=v8:6214,v8:5267 Review-Url: https://codereview.chromium.org/2804813003 Cr-Commit-Position: refs/heads/master@{#44440}
-
Ross McIlroy authored
Moves the ToName elision out of the peephole optimizer and into the BytecodeGenerator. BUG=v8:6194 Change-Id: Ic355adbe21f967dc5d52babdd37100a260c62c26 Reviewed-on: https://chromium-review.googlesource.com/467466 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#44427}
-