v8/test/unittests/compiler
svenpanne 4b122b7504 Detect simple tail calls
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}
2015-04-30 09:10:28 +00:00
..
arm [turbofan] Add new Float32Abs and Float64Abs operators. 2015-04-08 11:55:04 +00:00
arm64 [turbofan] Add new Float32Abs and Float64Abs operators. 2015-04-08 11:55:04 +00:00
ia32 [x86] Introduce vandps/vandpd/vxorps/vxorpd. 2015-04-11 00:58:38 +00:00
mips MIPS: [turbofan] Add new Float32Abs and Float64Abs operators. 2015-04-08 19:30:11 +00:00
mips64 MIPS: [turbofan] Add new Float32Abs and Float64Abs operators. 2015-04-08 19:30:11 +00:00
ppc Added Donald Stence to PPC owners. 2015-04-15 07:00:11 +00:00
x64 [x86] Introduce vandps/vandpd/vxorps/vxorpd. 2015-04-11 00:58:38 +00:00
change-lowering-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
common-operator-reducer-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
common-operator-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
compiler-test-utils.h Move unit tests to test/unittests. 2014-10-01 08:34:25 +00:00
control-equivalence-unittest.cc [turbofan] Clean up TRACE macros and use variadic macros. 2015-03-17 18:51:19 +00:00
control-flow-optimizer-unittest.cc [turbofan] Unify frame state inputs. 2015-04-23 09:04:19 +00:00
control-reducer-unittest.cc [turbofan] Match selects in control reducer (configurable). 2015-04-08 11:13:49 +00:00
diamond-unittest.cc Introduce Diamond, a helper for building diamond-shaped control patterns. 2014-11-04 14:37:44 +00:00
graph-reducer-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
graph-unittest.cc [turbofan] Cleanup the NodeProperties. 2015-01-29 09:18:09 +00:00
graph-unittest.h Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
instruction-selector-unittest.cc Detect simple tail calls 2015-04-30 09:10:28 +00:00
instruction-selector-unittest.h Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
instruction-sequence-unittest.cc [turbofan] support small immediates 2015-04-09 14:06:24 +00:00
instruction-sequence-unittest.h [turbofan] remove dependence of InstructionBlock on BasicBlock 2015-02-25 16:37:58 +00:00
js-builtin-reducer-unittest.cc [turbofan] Add language mode to JSCallFunction operator. 2015-04-27 10:44:30 +00:00
js-intrinsic-lowering-unittest.cc [turbofan] Introduce explicit JSCreateLiteral[Array|Object]. 2015-04-27 09:57:22 +00:00
js-operator-unittest.cc [turbofan] Sanitize language mode for JSStoreProperty operator. 2015-04-27 09:33:38 +00:00
js-type-feedback-unittest.cc [turbofan] Reland: Optimize loads from the global object in JSTypeFeedbackSpecializer. 2015-04-27 12:15:06 +00:00
js-typed-lowering-unittest.cc [strong] Disallow implicit conversions for bitwise ops, shifts 2015-04-28 11:19:49 +00:00
liveness-analyzer-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
load-elimination-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
loop-peeling-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
machine-operator-reducer-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
machine-operator-unittest.cc [turbofan] Add new Float32Abs and Float64Abs operators. 2015-04-08 11:55:04 +00:00
move-optimizer-unittest.cc Reland: [turbofan] add MachineType to AllocatedOperand 2015-04-29 19:36:25 +00:00
node-cache-unittest.cc [test] Turn compiler/test-node-cache into a unit test. 2015-04-29 14:40:05 +00:00
node-matchers-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
node-properties-unittest.cc [turbofan] Remove last_use_ field from Node. 2015-03-19 15:44:35 +00:00
node-test-utils.cc [turbofan] Unify frame state inputs. 2015-04-23 09:04:19 +00:00
node-test-utils.h [turbofan] Unify frame state inputs. 2015-04-23 09:04:19 +00:00
node-unittest.cc [turbofan] Remove last_use_ field from Node. 2015-03-19 15:44:35 +00:00
opcodes-unittest.cc [turbofan] Strength reduction for inline comparisons. 2015-02-24 12:26:29 +00:00
register-allocator-unittest.cc [turbofan] add non fixed slot constraint to register allocator 2015-03-23 16:03:21 +00:00
schedule-unittest.cc Model exceptional edges from call nodes in TurboFan. 2015-02-20 09:55:00 +00:00
scheduler-unittest.cc [strong] Disallow implicit conversions for binary arithmetic operations 2015-04-24 12:32:41 +00:00
select-lowering-unittest.cc Reland "[turbofan] Fix select lowering" with fix. 2014-11-10 11:55:47 +00:00
simplified-operator-reducer-unittest.cc Replace OVERRIDE->override and FINAL->final since we now require C++11. 2015-04-20 13:08:14 +00:00
simplified-operator-unittest.cc [turbofan] Remove indirection in JSToBoolean/JSUnaryNot lowering. 2015-03-19 10:13:12 +00:00
state-values-utils-unittest.cc [turbofan] Remember types for deoptimization during simplified lowering. 2015-03-19 14:00:33 +00:00
typer-unittest.cc [strong] Disallow implicit conversions for binary arithmetic operations 2015-04-24 12:32:41 +00:00
value-numbering-reducer-unittest.cc Mark some common operator with Property::kNoThrow. 2015-02-11 15:02:41 +00:00
zone-pool-unittest.cc Fix invalid use of int in Zone. 2015-02-12 12:47:18 +00:00