v8/test/mjsunit/compiler
mstarzinger@chromium.org 63defee477 First implementation of allocation elimination in Hydrogen.
This change implements a simple data-flow analysis pass over captured
objects to the existing escape analysis. It tracks the state of values
in the Hydrogen graph through CapturedObject marker instructions that
are used to construct an appropriate translation for the deoptimizer to
be able to materialize these objects again.

This can be considered a combination of scalar replacement of loads and
stores on captured objects and sinking of unused allocations.

R=titzer@chromium.org
TEST=mjsunit/compiler/escape-analysis

Review URL: https://codereview.chromium.org/21055011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-07 11:24:14 +00:00
..
alloc-number.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
alloc-object-huge.js Allow multiple lines of custom flags in javascript tests. 2012-08-10 12:26:33 +00:00
alloc-object.js Use explicit type feedback clearing in some tests. 2013-05-22 09:17:27 +00:00
array-access.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
array-length.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
assignment-deopt.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
assignment.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
binary-ops.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
call-keyed.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
compare.js Fix evaluation order of GT and LTE operators. 2011-10-17 07:43:40 +00:00
complex-for-in.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
control-flow-0.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
control-flow-1.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
control-flow-2.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
count-deopt.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
countoperation.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
dead-code2.js Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough. 2013-05-14 13:10:52 +00:00
dead-code3.js Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough. 2013-05-14 13:10:52 +00:00
dead-code4.js Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough. 2013-05-14 13:10:52 +00:00
dead-code5.js Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough. 2013-05-14 13:10:52 +00:00
dead-code6.js Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough. 2013-05-14 13:10:52 +00:00
dead-code.js Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough. 2013-05-14 13:10:52 +00:00
dead-string-add-warm.js Fix IsDeletable() for HStringAdd, HStringCharCodeAt, HStringCharFromCode. 2013-07-29 12:35:43 +00:00
dead-string-add.js Fix IsDeletable() for HStringAdd, HStringCharCodeAt, HStringCharFromCode. 2013-07-29 12:35:43 +00:00
dead-string-char-code-at2.js Fix IsDeletable() for HStringAdd, HStringCharCodeAt, HStringCharFromCode. 2013-07-29 12:35:43 +00:00
dead-string-char-code-at.js Fix IsDeletable() for HStringAdd, HStringCharCodeAt, HStringCharFromCode. 2013-07-29 12:35:43 +00:00
dead-string-char-from-code.js Fix IsDeletable() for HStringAdd, HStringCharCodeAt, HStringCharFromCode. 2013-07-29 12:35:43 +00:00
delete.js Remove variable rewrites and the unneccesary Slot class. 2011-09-07 11:02:31 +00:00
deopt-args.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
deopt-inlined-smi.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
escape-analysis.js First implementation of allocation elimination in Hydrogen. 2013-08-07 11:24:14 +00:00
eval-introduced-closure.js Allow closures to be optimized if outer contexts that call eval are all in strict mode. 2011-05-11 11:26:11 +00:00
expression-trees.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
for-stmt.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
function-call.js Support for function calls on an arbitrary expression that returns 2009-11-02 12:04:35 +00:00
global-accessors.js Added check for trailing whitespaces and corrected existing violations. 2011-09-01 11:28:10 +00:00
globals.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
inline-accessors.js Deoptimization support for accessors. 2012-08-17 10:43:32 +00:00
inline-arguments.js Fix %NeverOptimizeFunction runtime call. 2013-07-19 08:25:44 +00:00
inline-arity-mismatch.js Support inlining at call-sites with mismatched number of arguments. 2012-01-24 08:43:12 +00:00
inline-closures.js Allow inlining of multiple closures from shared function. 2013-01-25 16:55:00 +00:00
inline-compare.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
inline-conditional.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
inline-construct.js Extend constructor inlining test case. 2012-08-16 09:13:25 +00:00
inline-context-slots.js Enable inlining of functions that reference context slots. 2011-09-15 10:57:47 +00:00
inline-function-apply.js Fix f.apply() optimization when declared arguments are mutated. 2013-02-14 15:12:49 +00:00
inline-global-access.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
inline-literals.js Allow inlining of functions containing function literals. 2013-03-14 14:29:10 +00:00
inline-param.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
inline-throw.js Enable inlining functions containing throw. 2011-04-13 13:09:58 +00:00
inline-two.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
jsnatives.js Added fast compiler support for calling JS runtime functions. 2009-11-27 00:28:06 +00:00
lazy-const-lookup.js Reapply r9870 "Remove some initialization checks based on source positions.". 2011-11-08 13:28:53 +00:00
literals-assignment.js Support for object literals in fast compiler. 2009-10-26 13:21:48 +00:00
literals-optimized.js Implement fast literal support in Crankshaft. 2012-02-16 17:32:30 +00:00
literals.js Fix illegal escape-sequences to throw syntax errors. 2012-04-16 15:54:02 +00:00
logical-and.js Cleanup of mjsunit.js code and make assertEquals more strict. 2011-04-15 11:35:36 +00:00
logical-or.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
loopcount.js Fix code generation for fast smi loops to support parameters as well. 2010-03-22 11:55:12 +00:00
loops.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
math-floor-global.js Inline builtin Math functions functions in more cases. 2012-02-08 12:08:46 +00:00
math-floor-local.js Inline builtin Math functions functions in more cases. 2012-02-08 12:08:46 +00:00
minus-zero.js Fix and cleanup can_be_minus_zero computation 2013-07-08 11:15:24 +00:00
multiply-add.js Emit VMLA for multiply-add on ARM 2012-11-14 11:01:18 +00:00
multiply-sub.js Emit VMLS for multiply-subtract on ARM. 2013-02-27 10:24:40 +00:00
null-compare.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
objectliterals.js Fix bug in the fast compiler's object literal code 2009-11-26 21:13:20 +00:00
optimize-bitnot.js Optimize ~~(expr) in optimized code. 2012-04-19 13:24:15 +00:00
optimized-closures.js Share optimized code for closures. 2012-06-14 14:06:22 +00:00
optimized-for-in.js When compiling for-in pass correct context value to the increment instruction. 2012-02-27 14:37:27 +00:00
optimized-function-calls.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
osr-big.js Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), removing the need to record spilled OSR values and the need for duplicate deopt entries. 2013-06-26 08:43:27 +00:00
osr-nested.js Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), removing the need to record spilled OSR values and the need for duplicate deopt entries. 2013-06-26 08:43:27 +00:00
osr-one.js Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), removing the need to record spilled OSR values and the need for duplicate deopt entries. 2013-06-26 08:43:27 +00:00
osr-regress-max-locals.js Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), removing the need to record spilled OSR values and the need for duplicate deopt entries. 2013-06-26 08:43:27 +00:00
osr-simple.js Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), removing the need to record spilled OSR values and the need for duplicate deopt entries. 2013-06-26 08:43:27 +00:00
osr-two.js Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), removing the need to record spilled OSR values and the need for duplicate deopt entries. 2013-06-26 08:43:27 +00:00
osr-with-args.js Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), removing the need to record spilled OSR values and the need for duplicate deopt entries. 2013-06-26 08:43:27 +00:00
parallel-proto-change.js Turn on parallel recompilation for tests that assert optimization status. 2013-07-22 09:16:33 +00:00
phi-representations.js Add a test case for Phi representations 2013-07-08 13:43:43 +00:00
pic.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
property-calls.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
property-refs.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
property-simple.js Support for property access (named, keyed) in the fast compiler. 2009-10-27 16:11:12 +00:00
property-static.js Allow monomorphic loads when static type is known. 2013-01-24 17:54:30 +00:00
property-stores.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
proto-chain-constant.js Allow loading constant function from proto chain. 2013-01-22 12:03:35 +00:00
proto-chain-load.js Improve handling of property loads on the proto chain. 2012-11-05 08:53:54 +00:00
recursive-deopt.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
regress-0.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-1.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-2.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-3.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-4.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-5.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-6.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-7.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-8.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-1085.js Replace loops by OptimizeFunctionOnNextCall in regress-1085 and regress-1210. 2011-05-06 09:10:28 +00:00
regress-1394.js Fix bug in optimized compiler's switch-statement. 2011-05-18 11:06:07 +00:00
regress-96989.js Fix a bug with uninitialized const variables in the optimizing compiler. 2011-09-20 10:26:01 +00:00
regress-106351.js Fix a bug with register use in optimized Math.round. 2011-12-07 10:13:46 +00:00
regress-177883.js Fixed register allocation corner case. 2013-03-11 09:49:00 +00:00
regress-3136962.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-3185901.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-3218915.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
regress-3249650.js Speed up a regression test regress-3249650.js so it does not timeout. 2011-01-07 13:52:36 +00:00
regress-3260426.js Be more careful about exiting inlined functions in a test context. 2010-12-07 12:07:40 +00:00
regress-arguments.js Make optimized Function.prototype.apply safe for non-JSObject first arguments. 2011-02-09 16:43:23 +00:00
regress-arrayliteral.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-closures-with-eval.js Replace long running loops by OptimizeFunctionOnNextCall in some tests that are often timing out on ARM. 2011-05-03 13:53:08 +00:00
regress-const.js Fix timeout and a small bug in a regression test. 2011-05-30 12:48:35 +00:00
regress-deopt-call-as-function.js Speedup unit test to avoid timeout on slow ARM simulator. 2011-11-14 12:33:44 +00:00
regress-funarguments.js Support inlining at call-sites with mismatched number of arguments. 2012-01-24 08:43:12 +00:00
regress-funcaller.js Fix lazy deoptimization at HInvokeFunction and enable target-recording call-function stub. 2011-11-16 08:44:30 +00:00
regress-gap.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-gvn.js Speed up test/mjsunit/compiler/regress-gvn 2012-09-24 10:07:09 +00:00
regress-inline-callfunctionstub.js Fix bug in inlining call-as-function when inlining multiple levels deep. 2011-10-26 10:31:06 +00:00
regress-intoverflow.js Replace long running loops by OptimizeFunctionOnNextCall in some tests that are often timing out on ARM. 2011-05-03 13:53:08 +00:00
regress-lazy-deopt.js Fix lazy deoptimization at HInvokeFunction and enable target-recording call-function stub. 2011-11-16 08:44:30 +00:00
regress-lbranch-double.js Fixed code generation for LBranch on ARM when the operand's representation is double. 2011-08-02 15:14:12 +00:00
regress-loadfield.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
regress-loop-deopt.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-max.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
regress-or.js Speed up test/mjsunit/compiler/regress-or 2012-09-24 10:08:01 +00:00
regress-rep-change.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-serialized-slots.js Properly create variables to access outer arguments and function names. 2011-01-19 08:16:17 +00:00
regress-stacktrace-methods.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
regress-stacktrace.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
regress-toint32.js Fix a register assignment bug in typed array stores without SSE3 available. 2012-03-01 12:45:46 +00:00
regress-valueof.js Fix bug with input representation of HValueOf. 2011-02-22 12:14:53 +00:00
rotate.js Add rotate-right instruction to hydrogen and use it instead of bitwise operations 2012-11-05 13:28:10 +00:00
safepoint.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
short-circuit.js Introduce 'top-of-stack caching' to the toplevel code generator by 2010-01-18 14:04:55 +00:00
simple-bailouts.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
simple-binary-op.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
simple-deopt.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
simple-global-access.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
simple-inlining.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
strict-recompile.js Replace boolean indications of strict mode by an enum value. 2011-10-24 07:47:22 +00:00
switch-bailout.js Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. 2011-04-11 13:24:50 +00:00
this-property-refs.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
thisfunction.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
uint32.js Fix DoDeferredNumberTagU to keep the value in xmm1 instead of xmm0 on x64. 2012-08-23 16:14:01 +00:00
unary-add.js Implement unary addition in the full (non-optimizing) code generator. 2010-01-26 13:57:11 +00:00
variables.js Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00