- 24 Oct, 2017 9 commits
-
-
Benedikt Meurer authored
When lowering a monomorphic load/store, where multiple receiver maps have been recorded, but the action to be performed is the same (i.e. yielding undefined because the property is not found), TurboFan used to ignore the Smi case, leading to a pretty terrible deoptimization loop, as the LOAD_IC/STORE_IC properly recorded that state and thus didn't change it's state. Fixing this issue gives a 18-20% boost on the prettier test of the web-tooling-benchmark, which was suffering a lot from this problem. Bug: v8:6936, v8:6991 Change-Id: Id208ec7129a7f6b190d989bda31f936040393226 Reviewed-on: https://chromium-review.googlesource.com/735342Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48865}
-
Georg Neis authored
R=jkummerow@chromium.org Bug: v8:6791 Change-Id: I2e9876577103d72cd5e2412e958b4bd832373899 Reviewed-on: https://chromium-review.googlesource.com/733132 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#48864}
-
Georg Neis authored
Bug: v8:6791 Change-Id: Ieb53b68e062e94e2d98a65db7b8bc6f61708b05f Reviewed-on: https://chromium-review.googlesource.com/733098 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#48863}
-
Daniel Clifford authored
Change-Id: I8f2dc21534562810e129f3830945bf68a181691f Reviewed-on: https://chromium-review.googlesource.com/735379 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48862}
-
Mike Stanton authored
Ensure that effect outputs from nodes are used if they have an effect output. This helps us avoid an easy-to-make error where we fail to update the effect chain with the result of effectful operations. Bug: v8:6929 Change-Id: I585dc627b3c330006ec04717ff9b2f5060dbad6a Reviewed-on: https://chromium-review.googlesource.com/718107 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48861}
-
Georg Neis authored
R=jkummerow@chromium.org Bug: v8:6791 Change-Id: Ia46694ef236abd2fa037491a017eb825aa25162a Reviewed-on: https://chromium-review.googlesource.com/732981Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#48856}
-
Benedikt Meurer authored
The (KEYED_)LOAD/STORE_ICs didn't properly leave the UNINITIALIZED as long as the receiver was always null/undefined. This leads to deoptimization loops in TurboFan, because the compiler always put in a SOFT deoptimization at this point. Bug: v8:6989 Change-Id: I1a32bfb722f121f8b593e8972e657290d7b0531d Reviewed-on: https://chromium-review.googlesource.com/735319Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48854}
-
Daniel Clifford authored
Previously, V8's slice was implemented in a combination of C++ and a Javascript fallback. The disadvantage of this approach was that the fast-path required a call through the CEntryStub, which introduced considerable overhead for small arrays with fast elements kinds. Now the implementation primarily uses the CSA to generate both the full spec-complaint implementation as well as fast paths for argument objects and arrays with fast elements kinds. The CSA implementation uses a C++ implementation fallback in select situations where the the complexity of a CSA implementation would be too great and the CEntryStub overhead is not decisive (e.g. slices of dictionary elements arrays). Performance results on semi-random arrays with small number of elements (old vs. new): smi copy: 48.7 ms vs. 12 ms smi slice: 43.5 ms 14.8 ms object copy: 35.5 ms 7.7 ms object slice: 38.7 ms 8.8 ms dictionary slice: 2398.3 ms vs. 5.4 ms fast sloppy arguments slice: 9.6 ms vs. 7.2 ms slow sloppy arguments slice: 28.9 ms vs. 8.5 ms As a bonus, the new implementation is fully spec-compliant and fixes at least one existing bug. The design document for Array.prototype builtin rework can be found at https://goo.gl/wFHe2n Bug: v8:1956,v8:6601,v8:6710,v8:6978 Change-Id: Ia0155bedcf39b4577605ff754f416c2af938efb7 Reviewed-on: https://chromium-review.googlesource.com/574710 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48853}
-
Camillo Bruni authored
Change-Id: Ia7b30b3f9d19ac1a6da978a0bd884e8f6f38841b Reviewed-on: https://chromium-review.googlesource.com/730570 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#48850}
-
- 23 Oct, 2017 19 commits
-
-
Mike Stanton authored
Support inlining of Array.prototype.filter in TurboFan. Bug: v8:1956 Change-Id: If50e230d14461063d378c0591dc27dea43371afa Reviewed-on: https://chromium-review.googlesource.com/733089 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#48846}
-
Jakob Kummerow authored
The tests are generated randomly, using Python's arbitrary-precision integers as the source of truth. The generator script is landed as part of this CL. It also supports a "stress test" mode for on-demand intensive test coverage. Bug: v8:6791 Change-Id: Idc7a2e90fd8a0a8176283614b33ecd4c3597b1d1 Reviewed-on: https://chromium-review.googlesource.com/731464 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#48844}
-
Benedikt Meurer authored
When TurboFan sees a call to Reflect.get with exactly two parameters, we can lower that to a direct call to the GetPropertyStub, which is certainly faster than the general C++ builtin. This gives a nice 7-8% improvement on the chai test in the web-tooling-benchmark. The micro-benchmark on the issue goes from reflectGetPresent: 461 ms. reflectGetAbsent: 470 ms. to reflectGetPresent: 141 ms. reflectGetAbsent: 245 ms. which is an up to 3.2x improvement. Bug: v8:5996, v8:6936, v8:6937 Change-Id: Ic439fccb13f1a2f84386bf9fc31b4283d101afc4 Reviewed-on: https://chromium-review.googlesource.com/732988 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48841}
-
Alexey Kozyatinskiy authored
Currently we incorrectly show global object as arrow function receiver. With this CL: - if this is used inside of function we show correct this value, - if this is unused and V8 optimizes it out - we show undefined. Second is known issue which we should address separately. R=dgozman@chromium.org,yangguo@chromium.org Bug: chromium:552753 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Change-Id: Iac88a07fe622eb9b2f8af7ecbc4a32a56c8cdfaa Reviewed-on: https://chromium-review.googlesource.com/723840 Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#48839}
-
Deepti Gandluri authored
If the buffer associated with WebAssembly.Memory is used as memory for asm.js modules, throw a range error on Memory.Grow. Bug: chromium:776677 Change-Id: Iebcd7797fa7724002dd8073d1dbaeb98f080d316 Reviewed-on: https://chromium-review.googlesource.com/731844 Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Brad Nelson <bradnelson@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48837}
-
Ben L. Titzer authored
R=clemensh@chromium.org Bug: v8:6959 Change-Id: I27164598dddf58da7f3040b7139c4ae99c52800f Reviewed-on: https://chromium-review.googlesource.com/733097Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48836}
-
Sathya Gunasekaran authored
This patch implements the runtime semantics of static public class fields. Adds a new InitializeClassFieldsStatement AST node that contains all the static class fields and their initializers. ClassLiteral is now desugared to be included in a do-exp that calls an initializer function which contains this new AST node. Bug: v8:5367 Change-Id: I3574e4c685f1c039de42521c122e24f8d28e5d6c Reviewed-on: https://chromium-review.googlesource.com/714817Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#48835}
-
Ben L. Titzer authored
R=rossberg@chromium.org Bug: chromium:772636 Change-Id: I885f8657eb755953be17d7bf32aef2629092b9c2 Reviewed-on: https://chromium-review.googlesource.com/733086Reviewed-by:
Andreas Rossberg <rossberg@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48830}
-
Marja Hölttä authored
This reverts commit 97ead433. Reason for revert: makes the PreParserScopeAnalysis test much slower. Original change's description: > [parser] Skipping inner funcs: Use less memory for variables. > > - Make it possible to store quarter-bytes instead of full bytes. > > - Don't store is_used; it can be recovered correctly based on the actual full > parse (when a lazy function is eventually called) and > has_forced_scope_allocation. > > - With the is_used change, the old testing approach (which compared a scope for > which we didn't do scope allocation to the baseline) no longer made > sense. Replaced it with a new testing approach, which is also closer to the > actual usage. > > BUG=v8:5516 > > Change-Id: I02bac24e482126689dcdbabe8b3a04977be29b0c > Reviewed-on: https://chromium-review.googlesource.com/725422 > Commit-Queue: Marja Hölttä <marja@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48828} TBR=marja@chromium.org,verwaest@chromium.org Change-Id: I8cb87bcd55462b1cef4444dabb5cbfa2ecb24c7c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:5516 Reviewed-on: https://chromium-review.googlesource.com/732878Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#48829}
-
Marja Hölttä authored
- Make it possible to store quarter-bytes instead of full bytes. - Don't store is_used; it can be recovered correctly based on the actual full parse (when a lazy function is eventually called) and has_forced_scope_allocation. - With the is_used change, the old testing approach (which compared a scope for which we didn't do scope allocation to the baseline) no longer made sense. Replaced it with a new testing approach, which is also closer to the actual usage. BUG=v8:5516 Change-Id: I02bac24e482126689dcdbabe8b3a04977be29b0c Reviewed-on: https://chromium-review.googlesource.com/725422 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#48828}
-
Ross McIlroy authored
Also removes can_execute_on_background_thread() since all compilation jobs can now do that. Part of the work towards enabling off-thread bytecode compilation. BUG=v8:5203 Change-Id: I6a52c26d599ce74482b5fb49926603cb326f1e31 Reviewed-on: https://chromium-review.googlesource.com/731285Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#48826}
-
jgruber authored
Fixes the implementation of step 9 in the Proxy's internal [[Get]] method: Let targetDesc be ? target.[[GetOwnProperty]](P) If P is an accessor, this should not result in a call to the getter. Likewise in [[Set]] and [[Has]]. https://tc39.github.io/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver Bug: chromium:776338 Change-Id: I2652ffab2b3e4c38de00a82b8419192fdc768951 Reviewed-on: https://chromium-review.googlesource.com/732897Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#48825}
-
Michael Starzinger authored
R=gsathya@chromium.org BUG=v8:6792 Change-Id: I68a5f9e7e52dbc9512e6919fce2064d748a3e7c4 Reviewed-on: https://chromium-review.googlesource.com/730726 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#48824}
-
Choongwoo Han authored
- Fix a wrong type casting triggered when a given array's length is zero - Add a regression test case Bug: chromium:777182, chromium:768775 Change-Id: I615b73e9d7bad657c872c96c7a204efe355d8289 Reviewed-on: https://chromium-review.googlesource.com/732865Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#48821}
-
Benedikt Meurer authored
This adds a new InstanceOfIC where the TestInstanceOf bytecode collects constant feedback about the right-hand side of instanceof operators, including both JSFunction and JSBoundFunction instances. TurboFan then uses the feedback to optimize instanceof in places where the right-hand side is not a known constant (known to TurboFan). This addresses the odd performance cliff that we see with instanceof in functions with multiple closures. It was discovered as one of the main bottlenecks on the uglify-es test in the web-tooling-benchmark. The uglify-es test (run in separation) is ~18% faster with this change. On the micro-benchmark in the tracking bug we go from instanceofSingleClosure_Const: 69 ms. instanceofSingleClosure_Class: 246 ms. instanceofMultiClosure: 246 ms. instanceofParameter: 246 ms. to instanceofSingleClosure_Const: 70 ms. instanceofSingleClosure_Class: 75 ms. instanceofMultiClosure: 76 ms. instanceofParameter: 73 ms. boosting performance by roughly 3.6x and thus effectively removing the performance cliff around instanceof. Bug: v8:6936, v8:6971 Change-Id: Ib88dbb9eaef9cafa4a0e260fbbde73427a54046e Reviewed-on: https://chromium-review.googlesource.com/730686 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48820}
-
Clemens Hammacher authored
There are wasm operations which operate on floats or double, but they need to preserve the exact bit pattern. Thus they cannot be stored and passed as float or double, since that might flip the signaling NaN bit. This CL extends WasmValue to store floats and doubles as bit pattern, and adds accessors to extract them as Float32 or Float64. The interpreter is changed to execute certain operations (i32.abs, i32.neg, i64.abs, i64.neg, f32.reinterpret/i32, f64.reinterpret/i64) on boxed floats. R=titzer@chromium.org Bug: v8:6954 Change-Id: I0251d1a67b6caf593194d4eb292a325cdd3f20cf Reviewed-on: https://chromium-review.googlesource.com/730716 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48819}
-
Clemens Hammacher authored
Even static constant fields need to have definitions outside of the class scope if a reference to them is passed. This CL fixes link errors which occured on an independent CL (https://crrev.com/c/730716). Drive-by: Make the fields constexpr. R=mstarzinger@chromium.org Change-Id: Iff5dd1f3d41ddfba0c20531dbecd63c1d4c670e8 Reviewed-on: https://chromium-review.googlesource.com/732114Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48816}
-
Jakob Gruber authored
This reverts commit 14165a47. Reason for revert: Fix is incomplete, will reland soon. Original change's description: > [proxy] Fix invalid call to getter in [[Get/Set]] > > Fixes the implementation of step 9 in the Proxy's internal [[Get]] > method: > > Let targetDesc be ? target.[[GetOwnProperty]](P) > > If P is an accessor, this should not result in a call to the getter. > Likewise in [[Set]]. > > https://tc39.github.io/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver > > Bug: chromium:776338 > Change-Id: Ic06b7eeac6a1ef9606ddda6fa9d6d58b709702fb > Reviewed-on: https://chromium-review.googlesource.com/731123 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48813} TBR=neis@chromium.org,jgruber@chromium.org Change-Id: I92a11791b3c6a73ada1f72fe4193c25e7a054746 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:776338 Reviewed-on: https://chromium-review.googlesource.com/732877Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#48815}
-
jgruber authored
Fixes the implementation of step 9 in the Proxy's internal [[Get]] method: Let targetDesc be ? target.[[GetOwnProperty]](P) If P is an accessor, this should not result in a call to the getter. Likewise in [[Set]]. https://tc39.github.io/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver Bug: chromium:776338 Change-Id: Ic06b7eeac6a1ef9606ddda6fa9d6d58b709702fb Reviewed-on: https://chromium-review.googlesource.com/731123Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#48813}
-
- 22 Oct, 2017 1 commit
-
-
Georg Neis authored
The information that such functions must be parsed in module mode didn't get properly propagated. Also refactor some related code to make it more robust. In particular, set parsing_module_ at parser construction time only. Bug: v8:1569, v8:6919 Change-Id: Id136fb15c240373cad07c82025b778d0c0c43148 Reviewed-on: https://chromium-review.googlesource.com/716478 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48811}
-
- 20 Oct, 2017 11 commits
-
-
Camillo Bruni authored
Implicitly escape all output that is passed to Log::MessageBuilder. We escape non-printable characters and the log field separator ',' using the \x00 and \u0000 escape sequences. Example: Before: event-foo,"space: ","comma: ,","double quotes: """ After: event-foo,space: ,comma: \x2C,double quotes: " This might slightly impact human readability of the log files in extreme cases. However, most strings do not contain any escaped characters. Bug: Change-Id: Ic78f6d9932367d02f9f3c3f70b41b5c283bdf880 Reviewed-on: https://chromium-review.googlesource.com/728332 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48805}
-
Camillo Bruni authored
This is a reland of 06ff9e97 Original change's description: > [logging] Use OFStream for log events > > This simplifies a few operations and removes the size limitations > implied by the message buffer used. > > Change-Id: I8b873a0ffa399a037ff5c2501ba4b68158810968 > Reviewed-on: https://chromium-review.googlesource.com/724285 > Commit-Queue: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48766} Change-Id: Iafda1c88d9180d188d6b8bd7d03d6d27100538d8 Reviewed-on: https://chromium-review.googlesource.com/731107 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48804}
-
Jan Krems authored
Use an intrinsic for GetImportMetaObject and generate bytecode for the case where import.meta has been initialized already. This way the runtime method will only be called once per module. Bug: v8:6693 Change-Id: If661e88e6accfb1c5795e37a80582d04f6dd87dd Reviewed-on: https://chromium-review.googlesource.com/716536Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#48801}
-
Mathias Bynens authored
The spec got rid of `CheckObjectCoercible` a while back, and so should we. This change is not observable in most of the affected cases since `ToObject` is up near the top of most Array method algorithms. An example of an observable effect of this change occurs for the following input: Array.prototype.sort.call(null, 1); Behavior before applying the patch (incorrect message): TypeError: Array.prototype.sort called on null or undefined Expected behavior: TypeError: The comparison function must be either a function or undefined This patch removes `CheckObjectCoercible` and adds tests to ensure the few observable cases are addressed correctly. The patch also adds a missing `ToObject(this)` to `Array.prototype.lastIndexOf` which would otherwise become observable as a result of `CheckObjectCoercible` being removed. BUG=v8:3577,v8:6921 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ia086095076c4bf4d8d58dab26bc28df02994ed01 Reviewed-on: https://chromium-review.googlesource.com/718577Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#48800}
-
Jakob Kummerow authored
Whitespace-only strings count as empty too. This behavior is different from BigInt.parseInt(""), which throws a SyntaxError. Bug: v8:6791, v8:6957 Change-Id: I6671c803f3ba83e23c3e0cad81d3af29dba61c9f Reviewed-on: https://chromium-review.googlesource.com/727301Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#48797}
-
Tobias Tebbi authored
- Introduce the new union type UnionType<T1,T2>, used for Number and Numeric. Similarly, PairType<T1,T2> is used for a Turbofan operation with two results. Further details in the design doc: https://docs.google.com/document/d/10foP3m7SDWyFfbda96iEJ_XYOLQdd32AeoP8SD1cTcs/edit#heading=h.bghdno28mr7u - Allow to derive the MachineType from a static type. This allows to select the right MachineType when performing a load/store. - Disallow casts (UncheckedCast() or CAST()) when the target and origin type have no overlap. New cast ReinterpretCast() is an UncheckedCast without this check. - Caveat of this CL: Checked casts (CAST()) are not possible for UnionType<T1,T2> with the exception of Number (due to the existence of Number in OBJECT_TYPE_LIST and the existence of an IsNumber() function in the runtime). Bug: v8:6949 Change-Id: I21a683d1341f69cebd8a347f545b454b463c52ad Reviewed-on: https://chromium-review.googlesource.com/723320 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#48796}
-
Ben L. Titzer authored
[wasm] Fix signature canonicalization for error case. The decoder should not attempt to insert null signatures into the SignatureMap. R=ahaas@chromium.org Bug: chromium:775366 Change-Id: I0fbc0547dbf00fd25d37271a03b6756481a4c6a1 Reviewed-on: https://chromium-review.googlesource.com/730752Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48793}
-
Mike Stanton authored
If the input array is a JSArray with fast elements, it makes sense to create an output array of the same ElementsKind when possible. Bug: v8:1956 Change-Id: Ie9c937cf1751ccbbbe7cc76f40e1e1a0328ed37c Reviewed-on: https://chromium-review.googlesource.com/730748 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48789}
-
Mostyn Bramley-Moore authored
Bug: chromium:770684 Change-Id: I4e4efc10dad1d3bb438fddc74098b36a6b9e1054 Reviewed-on: https://chromium-review.googlesource.com/730203Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Mostyn Bramley-Moore <mostynb@vewd.com> Cr-Commit-Position: refs/heads/master@{#48787}
-
Mike Stanton authored
JSClassOf may lower to a call to a builtin, and needs to be modeled in a way that the effect chain can be maintained. Bug: v8:6929 Change-Id: Ida332e6d85e2eb8b33fcad810d195ef3e897ccb0 Reviewed-on: https://chromium-review.googlesource.com/727204Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#48786}
-
Benedikt Meurer authored
In the special case of KeyedLoadIC, where the key that is passed in is a Name that is always the same we only checked for identity in both the stub and the TurboFan case, which works fine for symbols and internalized strings, but doesn't really work with non-internalized strings, where the identity check will fail, the runtime will internalize the string, and the IC will then see the original internalized string again and not progress in the feedback lattice. This leads to tricky deoptimization loops in TurboFan and constantly missing ICs. This adds fixes the stub to always try to internalize strings first when the identity check fails and then doing the check again. If the name is not found in the string table we miss, since in that case the string cannot match the previously recorded feedback name (which is always a unique name). In TurboFan we represent this checks with new CheckEqualsSymbol and CheckEqualsInternalizedString operators, which validate the previously recorded feedback, and the CheckEqualsInternalizedString operator does the attempt to internalize the input. Bug: v8:6936, v8:6948, v8:6969 Change-Id: I3f3b4a587c67f00f7c4b60d239eb98a9626fe04a Reviewed-on: https://chromium-review.googlesource.com/730224Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48784}
-