- 28 May, 2015 1 commit
-
-
mstarzinger authored
This introduces a conservative prediction for each exception handler whether it will locally catch an exception or re-throw it to outside the code bondaries. It will allow for a more intuitive prediction of whether an exception is considered "caught" or "uncaught". R=bmeurer@chromium.org,yangguo@chromium.org BUG=chromium:492522 LOG=N Review URL: https://codereview.chromium.org/1158563008 Cr-Commit-Position: refs/heads/master@{#28681}
-
- 21 May, 2015 2 commits
-
-
svenpanne authored
Currently the stub simply calls out to the runtime, this will be improved in a later CLs. The current state at least avoids bit-rot and later merging horror. Fixes frame construction logic for stubs, too, and contains quite a few tiny cleanups in stub-land. Review URL: https://codereview.chromium.org/1150673002 Cr-Commit-Position: refs/heads/master@{#28555}
-
titzer authored
BUG= Review URL: https://codereview.chromium.org/1149563004 Cr-Commit-Position: refs/heads/master@{#28540}
-
- 20 May, 2015 1 commit
-
-
jacob.bramley authored
`mvn xd, xn` is an architectural alias for `orn xd, xzr, xm`, so this doesn't change code generation at all, but it's tidier and it addresses a TODO. BUG= Review URL: https://codereview.chromium.org/1151483002 Cr-Commit-Position: refs/heads/master@{#28507}
-
- 15 May, 2015 1 commit
-
-
martyn.capewell authored
Enable clang's shorten-64-to-32 warning flag on ARM64, and fix the warnings that arise. BUG= Review URL: https://codereview.chromium.org/1131573006 Cr-Commit-Position: refs/heads/master@{#28412}
-
- 08 May, 2015 2 commits
-
-
martyn.capewell authored
Select sbfx for ((x << k) >> k) in ARM64 instruction selector, and similarly for ubfx. This is a more generic version of the previous sxtb/h selector. BUG= Review URL: https://codereview.chromium.org/1135543002 Cr-Commit-Position: refs/heads/master@{#28318}
-
bmeurer authored
The Float32Abs and Float64Abs operators are supported by all TurboFan backends, so we no longer need the flags for them. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1132033002 Cr-Commit-Position: refs/heads/master@{#28310}
-
- 05 May, 2015 1 commit
-
-
bmeurer authored
Tail calls are matched on the graph, with a dedicated tail call optimization that is actually testable. The instruction selection can still fall back to a regular if the platform constraints don't allow to emit a tail call (i.e. the return locations of caller and callee differ or the callee takes non-register parameters, which is a restriction that will be removed in the future). Also explicitly limit tail call optimization to stubs for now and drop the global flag. BUG=v8:4076 LOG=n Review URL: https://codereview.chromium.org/1114163005 Cr-Commit-Position: refs/heads/master@{#28219}
-
- 30 Apr, 2015 1 commit
-
-
svenpanne authored
This CL contains the first steps towards tail call optimization: * Structurally detect tail calls during instruction selection, looking for special return/call combinations. * Added new architecture-specific instructions for tail calls which jump instead of call and take care of frame adjustment. * Moved some code around. Currently we restrict tail calls to callees which only use registers for arguments/return value and to call sites which are explicitly marked as being OK for tail calls. This excludes, among other things, call sites in sloppy JS functions and our IC machinery (both need in general to be able to access the caller's frame). All this is behind a flag --turbo-tail-calls, which is currently off by default, so it can easily be toggled. Review URL: https://codereview.chromium.org/1108563002 Cr-Commit-Position: refs/heads/master@{#28150}
-
- 20 Apr, 2015 1 commit
-
-
Ross McIlroy authored
R=jochen@chromium.org Review URL: https://codereview.chromium.org/1088993003 Cr-Commit-Position: refs/heads/master@{#27937}
-
- 14 Apr, 2015 1 commit
-
-
bmeurer authored
It's cheaper to materialize heap constants by loading from the roots array instead of embedding the constant into the instruction stream, at least on x64, arm and arm64. Drive-by-fix: Also cleanup the materialize constant from frame optimization. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/1088913002 Cr-Commit-Position: refs/heads/master@{#27818}
-
- 09 Apr, 2015 2 commits
-
-
dcarney authored
- ConstantOperand was using a too-small field too store its virtual register - drop ConvertTo, replace it with simple copy - split AllocatedOperand off from Immediate and Constant to make assignment clearer, also paving the way for small Immediates - put zone first in *Operand::New - driveby: drop delayed ssa deconstruction experiment R=titzer@chromium.org BUG= Review URL: https://codereview.chromium.org/1050803002 Cr-Commit-Position: refs/heads/master@{#27692}
-
bmeurer authored
This reduces the overhead of recursive calls when context specialization is enabled. Based on this it might be possible to further reduce the overhead by also specializing the call itself. As a drive-by-fix, port the fast context materialization optimization to arm and arm64, that was previously only supported on x64 and ia32. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1072743002 Cr-Commit-Position: refs/heads/master@{#27686}
-
- 08 Apr, 2015 1 commit
-
-
Benedikt Meurer authored
These operators compute the absolute floating point value of some arbitrary input, and are implemented without any branches (i.e. using vabs on arm, and andps/andpd on x86). R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1066393002 Cr-Commit-Position: refs/heads/master@{#27662}
-
- 07 Apr, 2015 2 commits
-
-
martyn.capewell authored
Support sxtb and sxth extend operators on add and subtract, as we've done for ubtx/h. This is similar to ARM support for sxtab/h. BUG= Review URL: https://codereview.chromium.org/1064813003 Cr-Commit-Position: refs/heads/master@{#27624}
-
baptiste.afsa authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1056543002 Cr-Commit-Position: refs/heads/master@{#27612}
-
- 30 Mar, 2015 2 commits
-
-
baptiste.afsa authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1040053002 Cr-Commit-Position: refs/heads/master@{#27516}
-
bmeurer authored
This adds the basics necessary to support float32 operations in TurboFan. The actual functionality required to detect safe float32 operations will be added based on this later. Therefore this does not affect production code except for some cleanup/refactoring. In detail, this patchset contains the following features: - Add support for float32 operations to arm, arm64, ia32 and x64 backends. - Add float32 machine operators. - Add support for float32 constants to simplified lowering. - Handle float32 representation for phis in simplified lowering. In addition, contains the following (related) cleanups: - Fix/unify naming of backend instructions. - Use AVX comparisons when available. - Extend ArchOpcodeField to 9 bits (required for arm64). - Refactor some code duplication in instruction selectors. BUG=v8:3589 LOG=n R=dcarney@chromium.org Review URL: https://codereview.chromium.org/1044793002 Cr-Commit-Position: refs/heads/master@{#27509}
-
- 27 Mar, 2015 3 commits
-
-
baptiste.afsa authored
This avoid to depend on MiscField to be big enough to hold the offset/size. This patch also remove the Arm64PokePair which is no longer used. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1039753002 Cr-Commit-Position: refs/heads/master@{#27505}
-
yangguo authored
Revert of [turbofan][arm64] Match fneg for -0.0 - x pattern. (patchset #1 id:1 of https://codereview.chromium.org/1013743006/) Reason for revert: Revert due to crash. Original issue's description: > [turbofan][arm64] Match fneg for -0.0 - x pattern. > > Note that this patch add an extra bit to the ArchOpcodeField. > > R=bmeurer@chromium.org > > Committed: https://crrev.com/fe7441225100660d01e66ce3bcaefe368f62df81 > Cr-Commit-Position: refs/heads/master@{#27494} TBR=bmeurer@chromium.org,baptiste.afsa@arm.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1041633002 Cr-Commit-Position: refs/heads/master@{#27495}
-
baptiste.afsa authored
Note that this patch add an extra bit to the ArchOpcodeField. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1013743006 Cr-Commit-Position: refs/heads/master@{#27494}
-
- 26 Mar, 2015 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1019803005 Cr-Commit-Position: refs/heads/master@{#27468}
-
- 25 Mar, 2015 1 commit
-
-
titzer authored
R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1026023004 Cr-Commit-Position: refs/heads/master@{#27454}
-
- 24 Mar, 2015 1 commit
-
-
titzer authored
R=dcarney@chromium.org BUG= Review URL: https://codereview.chromium.org/1031803004 Cr-Commit-Position: refs/heads/master@{#27409}
-
- 23 Mar, 2015 1 commit
-
-
jacob.bramley authored
ARM64 support for Float64Min and Float64Max machine operators (https://codereview.chromium.org/998283002/) using fmin and fmax. BUG= Review URL: https://codereview.chromium.org/1024093002 Cr-Commit-Position: refs/heads/master@{#27361}
-
- 20 Mar, 2015 2 commits
-
-
bmeurer authored
BUG=chromium:469089 LOG=n R=jarin@chromium.org Review URL: https://codereview.chromium.org/1026683002 Cr-Commit-Position: refs/heads/master@{#27333}
-
Benedikt Meurer authored
R=dcarney@chromium.org, yangguo@chromium.org BUG=v8:3952 LOG=n Review URL: https://codereview.chromium.org/1021183002 Cr-Commit-Position: refs/heads/master@{#27329}
-
- 19 Mar, 2015 1 commit
-
-
jacob.bramley authored
Add support for appending extend modes uxtb or uxth to add and subtract instructions, and using them in the instruction selector. BUG= Review URL: https://codereview.chromium.org/1021533002 Cr-Commit-Position: refs/heads/master@{#27303}
-
- 16 Mar, 2015 1 commit
-
-
jacob.bramley authored
Improve the code generated for construction of a 64-bit floating point number from two 32-bit integers. Previously, this moved FP->core, inserted, then moved core->FP for each half. Now, we construct the double in an X register and move core->FP. Typically, the temporary register aliases the input register, so the sequence improves from six to two instructions. Patch from Martyn Capewell <m.m.capewell@googlemail.com>. BUG= Review URL: https://codereview.chromium.org/1008003004 Cr-Commit-Position: refs/heads/master@{#27227}
-
- 12 Mar, 2015 1 commit
-
-
bmeurer authored
Basically recognize certain x < y ? x : y constructs and turn that into Float64Min/Float64Max operations, if the target machine supports that. On x86 we lower to (v)minsd/(v)maxsd. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/998283002 Cr-Commit-Position: refs/heads/master@{#27160}
-
- 10 Mar, 2015 1 commit
-
-
bmeurer authored
Provide an intrinsic %MathFloor / %_MathFloor that is used to optimize both Math.ceil and Math.floor, and use the JS inlining mechanism to inline Math.ceil into TurboFan code. Although we need to touch code outside of TurboFan to make this work, this does not affect the way we handle Math.ceil and/or Math.floor in CrankShaft, because for CrankShaft the old-style builtin function id based inlining still kicks in first. Once this solution is stabilized, we can use it for Math.floor as well. And once that is settled, we can establish it as the unified way to inline builtins, and get rid of the specialized builtin function id based inlining at some point. Note that "builtin" applies to basically every piece of internal JavaScript/intrinsics based code, so this also applies to the yet to be defined JavaScript based code stubs and handlers. BUG=v8:3953 LOG=n R=yangguo@chromium.org,svenpanne@chromium.org Review URL: https://codereview.chromium.org/990963003 Cr-Commit-Position: refs/heads/master@{#27086}
-
- 05 Mar, 2015 1 commit
-
-
bmeurer authored
This adds support for the double bits intrinsics to TurboFan, and is a first step towards fast Math functions inlined into TurboFan code or even compiled by themselves with TurboFan. Review URL: https://codereview.chromium.org/974313002 Cr-Commit-Position: refs/heads/master@{#27006}
-
- 04 Mar, 2015 1 commit
-
-
jarin authored
BUG= Review URL: https://codereview.chromium.org/961973002 Cr-Commit-Position: refs/heads/master@{#26993}
-
- 26 Feb, 2015 1 commit
-
-
bmeurer authored
Review URL: https://codereview.chromium.org/960783002 Cr-Commit-Position: refs/heads/master@{#26870}
-
- 25 Feb, 2015 1 commit
-
-
dcarney authored
BUG= Review URL: https://codereview.chromium.org/951553005 Cr-Commit-Position: refs/heads/master@{#26859}
-
- 23 Feb, 2015 1 commit
-
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/946553002 Cr-Commit-Position: refs/heads/master@{#26789}
-
- 20 Feb, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/943503003 Cr-Commit-Position: refs/heads/master@{#26783}
-
- 17 Feb, 2015 1 commit
-
-
bmeurer authored
This adds a new ControlFlowOptimizer that - for now - recognizes chains of Branches generated by the SwitchBuilder for a subset of javascript switches into Switch nodes. Those Switch nodes are then lowered to either table or lookup switches. Also rename Case to IfValue (and introduce IfDefault) for consistency. BUG=v8:3872 LOG=n Review URL: https://codereview.chromium.org/931623002 Cr-Commit-Position: refs/heads/master@{#26691}
-
- 16 Feb, 2015 1 commit
-
-
svenpanne authored
The heuristic is quite naive at the moment (build a frame iff the register allocator needed spill slots), we can improve that later. Review URL: https://codereview.chromium.org/933603002 Cr-Commit-Position: refs/heads/master@{#26664}
-
- 09 Feb, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=presubmit Review URL: https://codereview.chromium.org/905293002 Cr-Commit-Position: refs/heads/master@{#26525}
-