- 19 Oct, 2016 1 commit
-
-
ahaas authored
The scheduler expects a trimmed graph, so we have to trim the graph before scheduling. R=titzer@chromium.org, bmeurer@chromium.org TEST=cctest/test-run-wasm/RunWasmCompiled_GraphTrimming Review-Url: https://chromiumcodereview.appspot.com/2428443002 Cr-Commit-Position: refs/heads/master@{#40446}
-
- 17 Oct, 2016 1 commit
-
-
danno authored
Utilize all opportunities to turn leas into adds. Review-Url: https://codereview.chromium.org/2418803002 Cr-Commit-Position: refs/heads/master@{#40341}
-
- 28 Sep, 2016 1 commit
-
-
baptiste.afsa authored
R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2376963002 Cr-Commit-Position: refs/heads/master@{#39819}
-
- 26 Sep, 2016 1 commit
-
-
tebbi authored
R=bmeurer@chromium.org,jarin@chromium.org BUG= Review-Url: https://codereview.chromium.org/2366993002 Cr-Commit-Position: refs/heads/master@{#39733}
-
- 21 Sep, 2016 1 commit
-
-
mstarzinger authored
This removes an optimization from the code generator that tries to materialize certain constants (i.e. context and closure) from the stackframe when possible. This does not work with Harmony tail calls which are split into several instructions. There have already been numerous bugs in this optimization, it is too fragile in its current form. R=bmeurer@chromium.org TEST=mjsunit/regress/regress-crbug-648539 BUG=chromium:648539 Review-Url: https://codereview.chromium.org/2357583003 Cr-Commit-Position: refs/heads/master@{#39583}
-
- 09 Sep, 2016 1 commit
-
-
eholk authored
This CL introduces a ProtectedLoad instruction with is needed for out of bounds trap handling. ProtectedLoad behaves like a regular load, but it takes a context and source position parameter as well. These are used by an out of line code fragment to generate code to throw a JS exception for an out of bounds memory reference in Wasm. These changes a cleaned up subset of https://codereview.chromium.org/2148743004/ The rest of this feature will follow in future CLs. This includes a table mapping memory instructions to landing pads as well as the actual signal handler. BUG= https://bugs.chromium.org/p/v8/issues/detail?id=5277 Review-Url: https://codereview.chromium.org/2301833004 Cr-Commit-Position: refs/heads/master@{#39318}
-
- 31 Aug, 2016 1 commit
-
-
marja authored
This way, many files which only need CompilationInfo but not compiler.h and its dependencies can include just compilation-info.h. BUG= Review-Url: https://codereview.chromium.org/2284313003 Cr-Commit-Position: refs/heads/master@{#39038}
-
- 29 Aug, 2016 1 commit
-
-
mvstanton authored
Introduced MachineType::TaggedSigned() and TaggedPointer(). The idea is to quit using the representational dimension of Type, and instead encode this information in the MachineRepresentation (itself lightly wrapped in MachineType, along with MachineSemantic). There are three parts to the whole change: 1) Places that set the machine representation - constant nodes, loads nad stores, global object and native context specialization. 2) Places that propagate type/representation - this is representation inference (aka simplified lowering). At the end of this process we expect to have a MachineRepresentation for every node. An interesting part of this is phi merging. 3) Places that examine representation - WriteBarrier elimination does this. Currently it's looking at the Type representation dimension, but as a part of this change (or in a soon-to-follow change) it can simply examine the MachineRepresentation. BUG= Review-Url: https://codereview.chromium.org/2258073002 Cr-Commit-Position: refs/heads/master@{#38978}
-
- 25 Aug, 2016 3 commits
-
-
jarin authored
This reverts commit a55fdb1e, relands https://codereview.chromium.org/2266823002/. BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2277283002 Cr-Commit-Position: refs/heads/master@{#38917}
-
bmeurer authored
Revert of [turbofan] Insert dummy values when changing from None type. (patchset #5 id:80001 of https://codereview.chromium.org/2266823002/ ) Reason for revert: Octane/Mandreel aborts with an exception now: TypeError: __FUNCTION_TABLE__[(r2 >> 2)] is not a function Original issue's description: > [turbofan] Insert dummy values when changing from None type. > > Currently we choose the MachineRepresentation::kNone representation for > values of Type::None, and when converting values from the kNone representation > we use "impossible" conversions that will crash at runtime. This > assumes that the impossible conversions should never be hit (the only > way to produce the impossible values is to perform an always-failing > runtime check on a value, such as Smi-checking a string). Note that > this assumes that the runtime check is executed before the impossible > convesrion. > > Introducing BitwiseOr type feedback broke this in two ways: > > - we always pick Word32 representation for bitwise-or, so the > impossible conversion does not trigger (it only triggers with > None representation), and we could end up with unsupported > conversions from Word32. > > - even if we inserted impossible conversions, they are pure conversions. > Since untagging, bitwise-or operations are also pure, we could hoist > all these before the smi check of the inputs and we could hit the > impossible conversions before we get to the smi check. > > This CL addresses this by just providing dummy values for conversions > from the Type::None type. It also removes the impossible-to-* conversions. > > BUG=chromium:638132 > > Committed: https://crrev.com/c83b21ab755f1420b6da85b3ff43d7e96ead9bbe > Cr-Commit-Position: refs/heads/master@{#38883} TBR=mstarzinger@chromium.org,jarin@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2280613002 Cr-Commit-Position: refs/heads/master@{#38893}
-
jarin authored
Currently we choose the MachineRepresentation::kNone representation for values of Type::None, and when converting values from the kNone representation we use "impossible" conversions that will crash at runtime. This assumes that the impossible conversions should never be hit (the only way to produce the impossible values is to perform an always-failing runtime check on a value, such as Smi-checking a string). Note that this assumes that the runtime check is executed before the impossible convesrion. Introducing BitwiseOr type feedback broke this in two ways: - we always pick Word32 representation for bitwise-or, so the impossible conversion does not trigger (it only triggers with None representation), and we could end up with unsupported conversions from Word32. - even if we inserted impossible conversions, they are pure conversions. Since untagging, bitwise-or operations are also pure, we could hoist all these before the smi check of the inputs and we could hit the impossible conversions before we get to the smi check. This CL addresses this by just providing dummy values for conversions from the Type::None type. It also removes the impossible-to-* conversions. BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2266823002 Cr-Commit-Position: refs/heads/master@{#38883}
-
- 22 Aug, 2016 1 commit
-
-
ahaas authored
The new operators are implemented similar to the Float64(Max|Min) which already exist. The purpose of the new operators is the implementation of the F32Max and F32Min instructions in WebAssembly. R=titzer@chromium.org, v8-arm-ports@googlegroups.com, v8-mips-ports@googlegroups.com Review-Url: https://codereview.chromium.org/2252863003 Cr-Commit-Position: refs/heads/master@{#38784}
-
- 16 Aug, 2016 1 commit
-
-
mvstanton authored
These new representations aren't used yet. BUG= Review-Url: https://codereview.chromium.org/2216383002 Cr-Commit-Position: refs/heads/master@{#38657}
-
- 15 Aug, 2016 1 commit
-
-
jyan authored
Add an extra paramter to disable scale on BaseWithIndexAndDisplacementMatcher. R=bmeurer@chromium.org, epertoso@chromium.org, jarin@chromium.org, mstarzinger@chromium.org, mtrofin@chromium.org, titzer@chromium.org BUG= Review-Url: https://codereview.chromium.org/2239813002 Cr-Commit-Position: refs/heads/master@{#38635}
-
- 08 Aug, 2016 2 commits
-
-
ahaas authored
This CL changes the semantics of FloatXXSub to match the semantics of the semantics of FloatXXSubPreserveNan. Therefore there is no need anymore for the FloatXXSubPreserveNan operators. The optimizations in VisitFloatXXSub which are removed in this CL have already been moved to machine-operator-reducer.cc in https://codereview.chromium.org/2226663002 R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2220973002 Cr-Commit-Position: refs/heads/master@{#38437}
-
ahaas authored
I had to adjust Float64Max/Min on x64 slightly to return the default wasm NaN (0x7FF0000000000000) instead of the all-ones NaN (0xFFFFFFFFFFFFFFFF). R=titzer@chromium.org, bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2204963002 Cr-Commit-Position: refs/heads/master@{#38410}
-
- 05 Aug, 2016 2 commits
-
-
ahaas authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2215403002 Cr-Commit-Position: refs/heads/master@{#38399}
-
ahaas authored
Benedikt, do you think we could also provide these operators on mips, maybe by expanding them to "-0.0 -x"? If mips can provide these operators, then we could make Float64Neg and Float32Neg real operators and not just OptionalOperators. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2218023002 Cr-Commit-Position: refs/heads/master@{#38383}
-
- 02 Aug, 2016 1 commit
-
-
bmeurer authored
When we narrow a signed32 comparison to uint8 or uint16 representation, we also need to change the condition to unsigned comparisons otherwise the comparison will be done on int16/int8 which interprets the narrowed bits wrong. R=epertoso@chromium.org BUG=v8:5254 Review-Url: https://codereview.chromium.org/2202803003 Cr-Commit-Position: refs/heads/master@{#38231}
-
- 29 Jul, 2016 1 commit
-
-
jyan authored
This commit fixes wasm little-endian load issue on big-endian platform by introducing reverse byte operation immediately after a load. R=bmeurer@chromium.org, titzer@chromium.org BUG= Review-Url: https://codereview.chromium.org/2045943002 Cr-Commit-Position: refs/heads/master@{#38183}
-
- 25 Jul, 2016 1 commit
-
-
jarin authored
BUG=chromium:630611 Review-Url: https://codereview.chromium.org/2177483002 Cr-Commit-Position: refs/heads/master@{#37994}
-
- 22 Jul, 2016 2 commits
-
-
ivica.bogosavljevic authored
Implement UnalignedLoad and UnalignedStore optional turbofan operators and use them in WasmCompiler for unaligned memory access. BUG= Review-Url: https://codereview.chromium.org/2122853002 Cr-Commit-Position: refs/heads/master@{#37988}
-
bmeurer authored
So far we don't have a useful way to inline Math.max or Math.min in TurboFan optimized code. This adds new operators NumberMax and NumberMin and changes the Float64Max/Float64Min operators to have JavaScript semantics instead of the C++ semantics that it had previously. This also removes support for recognizing the tenary case in the CommonOperatorReducer, since that doesn't seem to have any positive impact (and actually doesn't show up in regular JavaScript, where people use Math.max/Math.min instead). Drive-by-fix: Also nuke the unused Float32Max/Float32Min operators. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2170343002 Cr-Commit-Position: refs/heads/master@{#37971}
-
- 18 Jul, 2016 1 commit
-
-
bmeurer authored
So far TurboFan wasn't adding the deoptimization reasons for eager/soft deoptimization exits that can be used by either the DevTools profiler or the --trace-deopt flag. This adds basic support for deopt reasons on Deoptimize, DeoptimizeIf and DeoptimizeUnless nodes and threads through the reasons to the code generation. Also moves the DeoptReason to it's own file (to resolve include cycles) and drops unused reasons. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2161543002 Cr-Commit-Position: refs/heads/master@{#37823}
-
- 14 Jul, 2016 1 commit
-
-
mvstanton authored
BUG= Review-Url: https://codereview.chromium.org/2101123005 Cr-Commit-Position: refs/heads/master@{#37748}
-
- 13 Jul, 2016 2 commits
-
-
bbudge authored
- Adds move/swap handling for 4 and 16 bytes to ia32. - Register allocator now only requests 4 bytes for floats on ia32 and arm. - We probably need similar support in mips. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2027043002 Cr-Commit-Position: refs/heads/master@{#37714}
-
danno authored
Previously, the following schedule fragment: 1: Parameter[0](0) 2: Parameter[1](0) 7: Int32Constant[1] 8: Int32Sub(2, 7) 9: Load[kRepTagged|kTypeAny](1, 8) would generate the following code (on ia32): mov eax,[ebp+0x8] mov ecx,[ebp+0xc] sub eax,0x1 mov eax,[eax+ecx*1] Now it generates: mov eax,[ebp+0x8] mov ecx,[ebp+0xc] mov eax,[eax+ecx*1-1] Similar pattern matching also now works on x64. BUG=v8:5192 LOG=N Review-Url: https://codereview.chromium.org/2137323003 Cr-Commit-Position: refs/heads/master@{#37701}
-
- 11 Jul, 2016 1 commit
-
-
danno authored
By adding MachineType to LinkageLocation, it is possible not only to reason about the location of a LinkageLocation on the stack, but also about it's size. This will be useful in follow-on CLs that attempt to merge some of the parameter passing logic of tail calls and normal (non-tail) calls. As a nice side-effect, it is no longer necessary to separately keep a MachineSignature in a CallDescriptor, because the MachineTypes contianed in LinkageLocation for all of the Descriptor's parameters and return types are sufficient. This CL therefore removes the MachineSignature from the CallDescriptor and adjusts all the calling code accordingly, simplifying and de-duplicating code in a bunch of places. R=titzer@chromium.org, bmeurer@chromium.org LOG=N Review-Url: https://codereview.chromium.org/2124023003 Cr-Commit-Position: refs/heads/master@{#37633}
-
- 01 Jul, 2016 2 commits
-
-
danno authored
This optimizes the passing of stack parameters in function calls. For some architectures (ia32/x64), using pushes when possible instead of bumping the stack and then storing parameters generates much smaller code, and in some cases is faster (e.g. when a push of a memory location can implement a memory-to-memory copy and thus elide an intermediate load. On others (e.g. ARM), the benefit is smaller, where it's only possible to elide direct stack pointer adjustment in certain cases or combine multiple register stores into a single instruction in other limited situations. On yet other platforms (ARM64, MIPS), there are no push instructions, and this optimization isn't used at all. Ideally, this mechanism would be used for both tail calls and normal calls, but "normal" calls are currently pretty efficient, and tail calls are very inefficient, so this CL sets the bar low for building a new mechanism to handle parameter pushing that only needs to raise the bar on tail calls for now. The key aspect of this change is that adjustment to the stack pointer for tail calls (and perhaps later real calls) is an explicit step separate from instruction selection and gap resolution, but aware of both, making it possible to safely recognize gap moves that are actually pushes. Review-Url: https://codereview.chromium.org/2082263002 Cr-Commit-Position: refs/heads/master@{#37477}
-
bmeurer authored
Import fdlibm versions of acos, acosh, asin and asinh, which are more precise and produce the same result across platforms (we were using libm versions for asin and acos so far, where both speed and precision depended on the operating system so far). Introduce appropriate TurboFan operators for these functions and use them both for inlining and for the generic builtin. Also migrate the Math.imul and Math.fround builtins to TurboFan builtins to ensure that their behavior is always exactly the same as the inlined TurboFan version (i.e. C++ truncation semantics for double to float don't necessarily meet the JavaScript semantics). For completeness, also migrate Math.sign, which can even get some nice love in TurboFan. Drive-by-fix: Some alpha-sorting on the Math related functions, and cleanup the list of Math intrinsics that we have to export via the native context currently. BUG=v8:3266,v8:3496,v8:3509,v8:3952,v8:5169,v8:5170,v8:5171,v8:5172 TBR=rossberg@chromium.org R=franzih@chromium.org Review-Url: https://codereview.chromium.org/2116753002 Cr-Commit-Position: refs/heads/master@{#37476}
-
- 30 Jun, 2016 1 commit
-
-
mvstanton authored
BUG=v8:5086 Review-Url: https://codereview.chromium.org/2083573002 Cr-Commit-Position: refs/heads/master@{#37424}
-
- 28 Jun, 2016 1 commit
-
-
bmeurer authored
Introduce a new machine operator Float64Pow that for now is backed by the existing MathPowStub to start the unification of Math.pow, and at the same time address the main performance issue that TurboFan still has with the imaging-darkroom benchmark in Kraken. Also migrate the Math.pow builtin itself to a TurboFan builtin and remove a few hundred lines of hand-written platform code for special handling of the fullcodegen Math.pow version. BUG=v8:3599,v8:5086,v8:5157 Review-Url: https://codereview.chromium.org/2103733003 Cr-Commit-Position: refs/heads/master@{#37323}
-
- 20 Jun, 2016 1 commit
-
-
bmeurer authored
Import base::ieee754::tan() from fdlibm and introduce Float64Tan TurboFan operator based on that, similar to what we do for Float64Cos and Float64Sin. Rewrite Math.tan() as TurboFan builtin and use those operators to also inline Math.tan() into optimized TurboFan functions. Drive-by-fix: Kill the %_ConstructDouble intrinsics, and provide only the %ConstructDouble runtime entry for writing tests. BUG=v8:5086,v8:5126 R=yangguo@chromium.org Review-Url: https://codereview.chromium.org/2083453002 Cr-Commit-Position: refs/heads/master@{#37087}
-
- 17 Jun, 2016 3 commits
-
-
bmeurer authored
Import base::ieee754::cos() and base::ieee754::sin() from fdlibm and introduce Float64Cos and Float64Sin TurboFan operator based on that, similar to what we do for Float64Log. Rewrite Math.cos() and Math.sin() as TurboFan builtins and use those operators to also inline Math.cos() and Math.sin() into optimized TurboFan functions. CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel R=mvstanton@chromium.org BUG=v8:5086,v8:5118 Review-Url: https://codereview.chromium.org/2073123002 Cr-Commit-Position: refs/heads/master@{#37072}
-
mvstanton authored
BUG=v8:5103 Review-Url: https://codereview.chromium.org/2068743002 Cr-Commit-Position: refs/heads/master@{#37058}
-
bmeurer authored
Import base::ieee754::exp() from FreeBSD msun and introduce a Float64Exp TurboFan operator based on that, similar to what we do for Float64Log. Rewrite Math.exp() as TurboFan builtin and use that operator to also inline Math.exp() into optimized TurboFan functions. CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108,chromium:620786 R=mvstanton@chromium.org Committed: https://crrev.com/93e26314afc9da9b5b8bd998688262444ed73260 Review-Url: https://codereview.chromium.org/2077533002 Cr-Original-Commit-Position: refs/heads/master@{#37037} Cr-Commit-Position: refs/heads/master@{#37047}
-
- 16 Jun, 2016 3 commits
-
-
machenbach authored
Revert of [builtins] Introduce proper Float64Exp operator. (patchset #5 id:80001 of https://codereview.chromium.org/2077533002/ ) Reason for revert: [Sheriff] Leads to some different rounding as it seems in some audio layout tests. Please rebase upstream first if intended: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/7508 Original issue's description: > [builtins] Introduce proper Float64Exp operator. > > Import base::ieee754::exp() from FreeBSD msun and introduce a Float64Exp > TurboFan operator based on that, similar to what we do for Float64Log. > Rewrite Math.exp() as TurboFan builtin and use that operator to also > inline Math.exp() into optimized TurboFan functions. > > BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108 > R=mvstanton@chromium.org > > Committed: https://crrev.com/93e26314afc9da9b5b8bd998688262444ed73260 > Cr-Commit-Position: refs/heads/master@{#37037} TBR=mvstanton@chromium.org,ahaas@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108 Review-Url: https://codereview.chromium.org/2070813002 Cr-Commit-Position: refs/heads/master@{#37039}
-
bmeurer authored
Import base::ieee754::exp() from FreeBSD msun and introduce a Float64Exp TurboFan operator based on that, similar to what we do for Float64Log. Rewrite Math.exp() as TurboFan builtin and use that operator to also inline Math.exp() into optimized TurboFan functions. BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108 R=mvstanton@chromium.org Review-Url: https://codereview.chromium.org/2077533002 Cr-Commit-Position: refs/heads/master@{#37037}
-
mvstanton authored
BUG=v8:5095 Review-Url: https://codereview.chromium.org/2063693002 Cr-Commit-Position: refs/heads/master@{#37035}
-
- 14 Jun, 2016 1 commit
-
-
mtrofin authored
Support for relocatable globals, to facilitate compilation before instantiation. BUG=v8:5072 Review-Url: https://codereview.chromium.org/2062003002 Cr-Commit-Position: refs/heads/master@{#36978}
-