Commit Graph

140 Commits

Author SHA1 Message Date
srdjan@google.com 81d8099650 Redesign inlining interval computation.
Review URL: https://codereview.chromium.org//904763003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43622 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-09 23:11:05 +00:00
vegorov@google.com e5f3e69eeb Add --print-flow-graph-filter to allow filtering debugging output.
Extend filtering pattern with % symbol: xyz% matches names that end at "...xyz".

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43598 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-09 16:26:46 +00:00
srdjan@google.com 12c5e2bbaf Cleanup: use const reference for ParsedFunction where possible.
R=rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43226 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-28 00:41:09 +00:00
srdjan@google.com 110a74f954 Cleanups: parsed_function()->function() => function()
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43213 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-27 22:09:31 +00:00
koda@google.com 280dc6fbd4 Introduce simple Thread class to support gradual refactoring of interfaces.
This first iteration of Thread just forwards a subset of the BaseIsolate methods.

The plan is to first add Thread/Zone-based interfaces where appropriate, deprecate their Isolate-based versions, and finally remove them once all callsites have been migrated.

This CL only demonstrates a small part of this migration, for BitVector and some of the compiler classes. There are thousands of additional call-sites that will need to be updated.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43073 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-22 14:14:16 +00:00
zerny@google.com f58e325e61 Don't merge indirect entries.
R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42281 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-11 12:18:36 +00:00
srdjan@google.com bad6a61899 Cleanups.
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42069 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-02 18:48:12 +00:00
fschneider@google.com abde3a9699 Merge chains of straight-line blocks.
R=zerny@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42038 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-01 12:40:55 +00:00
srdjan@google.com 6303b10fe3 Cleanup: remove flow-graph's cached copy of num stack locals as it can become stale if variables get added after flow graph is created.
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41791 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-17 21:24:06 +00:00
vegorov@google.com e2c3ab74e2 Introduce --no-prune-dead-locals flag to disable dead locals pruning.
Disabling this optimization regresses code quality but improves debugging experience.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41423 260f80e4-7a28-3924-810f-c04153c831b5
2014-10-30 16:35:39 +00:00
fschneider@google.com 876193b31a Make CTX allocatable by the register allocator.
This change makes CTX available by not caching the current
context while in Dart code. Instead the current context
is held in a local variable (:saved_current_context_var) and
is passed as argument in CTX at calls.

This also simplifies a lot of code in the debugger: As a result,
Isolate::top_context is not needed anymore since the current context
can always be extracted from a Dart frame.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41422 260f80e4-7a28-3924-810f-c04153c831b5
2014-10-30 15:42:38 +00:00
fschneider@google.com e6ef4b16bf Fix captured parameters and optimized try-catch.
The stack slots of captured parameters must be skipped when
generating sync code in optimized try-catch. Since those parameters
are initially copied into the context, their values are not recorded
in the environment.

Store-to-load forwarding may though use the original initial value
from the stack and therefore it must not be overwritten by try-sync
code that predeeds every call inside optimized try-blocks.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41099 260f80e4-7a28-3924-810f-c04153c831b5
2014-10-14 14:48:32 +00:00
jgruber@google.com bdfcd15bd5 Iterative graph traversal in FlowGraph::DiscoverBlocks()
The motivation behind this change is that very large functions could
cause stack overflows in the (previously recursive) DiscoverBlocks
function. This commit introduces replaces recursive traversal by
iterative algorithms. Postorder traversal had to be removed from
DiscoverBlocks and is now done in a separate pass.

BUG=21109
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41016 260f80e4-7a28-3924-810f-c04153c831b5
2014-10-09 15:35:13 +00:00
vegorov@google.com e6113cc0f5 If bounds check 0 <= index < length is not redundant we attempt to
replace it with a sequence of checks that guarantee

          0 <= LowerBound(index) < UpperBound(index) < length

and hoist all of those checks out of the enclosing loop.

Upper/Lower bounds are symbolic arithmetic expressions with +, -, *
operations and are computed based on discovered simple induction variables.

Simple induction variable is a variable that follows the pattern v1 <- phi(v0, v1 + 1)

BUG=
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40969 260f80e4-7a28-3924-810f-c04153c831b5
2014-10-07 18:50:29 +00:00
srdjan@google.com b8891bf412 Pass isolate to BitVector constructor.
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40528 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-19 23:14:34 +00:00
vegorov@google.com d61a330d7c Initial steps towards cleaning up integer arithmetic IR.
Introduce base classes for binary and unary integer operations and move all shared logic (e.g. canonicalization) into these classes.

Start removing special cases dispatch from instructions patterns - it goes into Canonicalization pass.

Start removing duplication between instruction patterns where meaningful and possible.

Cleanup the notion of truncation in the operations: is_truncating implies !can_overflow, not the other way around.

BUG=
R=johnmccutchan@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40375 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-17 13:31:13 +00:00
fschneider@google.com bdd6b29fd8 Revert r40306 because of crash.
TBR=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40312 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-16 12:14:33 +00:00
fschneider@google.com cd78dbe709 Refactor generating lazy deoptimization descriptors.
Instead of having special handling for closure calls, pass
the number of input operands down so that the correct lazy
deoptimization environment is generated at calls.

There is no functional change here - this is to simplify
having calls with pushed arguments and input operands
(like closure calls).

Runtime calls still do not have a correct lazy deoptimization environment
the environment should only be used for creating stack traces
from optimized code.

Fix a bug with --trace-deoptimization-verbose printing: We
cannot call ToCString on objects when the slots have not
been filled in yet. (e.g. Closures)

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40306 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-16 10:31:47 +00:00
srdjan@google.com 2a3c2ad058 Add loop printing to block comments.
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39673 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-28 19:52:47 +00:00
fschneider@google.com f917ffe213 VM: Micro-optimization of inline array allocation code.
The loop initializing a newly allocated array now has only
one branch, instead of two per iteration.

Removed some dead code from flowgraph.cc/.h.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39092 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-11 15:59:00 +00:00
vegorov@google.com 77c26187f2 Support allocation sinking for compound objects.
- Improve escape/alias analysis:
-- Storing an object into a field of another object does not mean that this object escapes (or has aliases) as long as that object does not have any loads from the same place;
-- Places like X.f and Y.f don't alias if X and Y are two different allocation instructions even if X and Y themselves potentially have aliases;
-- Improve precision of alias analysis for indexed properties;

- Support dematerialization and rematerialization of objects that are referenced by other dematerialized objects.
-- Use fix-point algorithm to collect candidates for allocation sinking;
-- Support aborting unsuccessful allocation sinking.

R=fschneider@google.com, johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38404 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-18 18:35:08 +00:00
fschneider@google.com 55f0e1be81 Use hash map for the SSA builder constant pool.
This avoid the linear search and quadratic runtime when optimizing
e.g. functions with a large number of constant literals.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37817 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-30 12:52:42 +00:00
iposva@google.com f14e2c1842 - Cleanup FlowGraph:
Bailout is not really needed any longer after removing the optimize_try_catch flag.
  Ensure the availability of VerifyUseLists in non-DEBUG code.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37474 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-19 05:26:33 +00:00
regis@google.com 32f3e11d99 Cleanup of error and warning reporting.
R=hausner@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37468 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-18 22:30:34 +00:00
fschneider@google.com 1657f150f1 Fix our initial dead phi elimination in the presence of try-catch.
BUG=dartbug.com/19519
TEST=tests/language/try_catch_optimized4_test.dart
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37444 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-18 14:27:45 +00:00
srdjan@google.com 3480ac4a0e Fix deferred library code disabling for inlined functions.
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37107 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-06 22:14:40 +00:00
fschneider@google.com b9c3553964 Eliminate some unnecessary handle allocations in the compiler.
Eliminate duplicate code from PushArgumentInstr by using TemplateDefinition.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36626 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-26 09:53:42 +00:00
srdjan@google.com 45692c1248 More reduction of accessing TLS by caching/passing isolate value.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36598 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-23 23:26:48 +00:00
srdjan@google.com 16282635a1 Use isolate when allocation Zone objects and handles: focus on FlowGraphOptimizer, next inliner.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36587 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-23 21:15:29 +00:00
fschneider@google.com c71d29f6b6 VM: Remove unnecessary field use_kind from IL instructions.
We already store a SSA- or temp-index that indicates if a definition
is used or not. There is no need to have a separate field to store
this information.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36432 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-21 14:26:09 +00:00
fschneider@google.com 1933c126c8 VM: Explicitly load function and context before calling a closure.
Before these were implicitly loaded as part of the closure calling code sequence.

This CL makes those loads canditates for load elimination. The context is also
explictly stored before the call.

R=regis@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35595 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-30 20:14:02 +00:00
johnmccutchan@google.com 3834c9a869 Support for multiple register values
- Adds a PairLocation type (Location is still a single word but now has two tags one for constants and one for pairs).
- New representations: kPairOfTagged & kPairOfUnboxedDouble.
- Register allocator uses second SSA index for Definitions that use two registers.
- Fix LiveRange shape for kWritableRegister inputs.
- Updated MergedMathInstr that returns a kPairOfTagged or kPairOfUnboxedDouble (depending on the merged math kind).
- A new instruction (ExtractNthOutput) for extracting a single register from an instruction that has a output register pair.

Open issues that need to be addressed in a follow up CL:

- Adjust PhiInstr and handling of PhiInstr in the register allocator to work with output pairs (once unboxed mints are in GPRs).

R=fschneider@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34833 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-08 16:13:43 +00:00
fschneider@google.com 9780267a08 Generate smaller unoptimized code for certain expressions.
Code for compound assignments, pre- and post-fix ++, --, cascades in
effect contexts is now smaller by 1 push/pop instructions.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33641 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-13 09:07:40 +00:00
fschneider@google.com bfcb5174a5 Fix bug in flow-graph loop detection.
With OSR there can be multiple loops that share one common loop header.
These loops must be treated as one loop, otherwise
side effects are not correctly computed.

BUG=dartbug.com/16151
TEST=language/osr_test
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31956 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 16:02:12 +00:00
fschneider@google.com 893b25e5b4 Revert r31601 (Use constants from the frame at OSR entry...).
Because this CL also changed the way spill slots are allocated for
catch entry blocks it caused invalid code for optimized try-catch
under certain conditions.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31948 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-20 10:43:41 +00:00
fschneider@google.com c414fbf2ca Use constants from the frame at OSR entry.
The code for reserving stack slots for OSR entry values is shared with the
code for reserving stack slots for try/catch. It does not handle them
optimally (reserving slots above the desired ones and copying them down,
instead of directly reserving the desired one). This CL simplifies allocation
of spill slots for try-catch as well.

This is an rebased version of Kevin's original CL
(https://codereview.chromium.org/102173003/).
I removed an invalid assertion and removed more code that became unnecessary
with this change.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31601 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-08 11:27:10 +00:00
zra@google.com daf539e2f9 Fixes a couple problems with GC of unoptimized code.
1. Instead of making a pass before the Marking phase,
   this change does not visit code pointers in functions
   during marking. Then after marking, if the code has
   still not been marked, code pointers in functions
   are nulled out.
2. Since code pointers in functions may be nulled out,
   functions are no longer used as proxies for code in
   deoptimization info.

R=iposva@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30600 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-23 00:17:28 +00:00
regis@google.com 2a355a7bb6 Lazily format LanguageError messages (fix issue 15069).
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30308 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-15 18:54:24 +00:00
turnidge@google.com 2ad40bc29b When a value has been optimized away by the compiler, set its value to
"<optimized out>".  This will make it less confusing for people using
the debugger.

- Added constant_dead() to the flow graph.
- Added Symbols::OptimizedOut().

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28671 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-15 18:35:07 +00:00
kmillikin@google.com e375053d2f Pattern match on generated code to find edge counters.
In unoptimized code, use platform-specific pattern matching on generated
code to find edge counter arrays.  Previously we searched pointer offsets,
but that does not work on platforms that encode the edge counters as indexes
into an object pool (i.e., x64, ARM, MIPS).

BUG=
R=fschneider@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28085 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-01 10:22:47 +00:00
fschneider@google.com b7afb65a10 Clean up handling of guarded fields in the flow graph builder.
FlowGraphBuilder has a zone-allocated list of fields and passes it
on to the FlowGraph.

R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27699 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-20 12:14:06 +00:00
fschneider@google.com 1072bc1c60 Reland: Fix bug in field type tracking and polymorphic inlining.
Original CL: https://codereview.chromium.org/24096018/

This fixes the bug by changing FlowGraphBuilder to a zone object
because it is needed by the inliner later in the pipeline.

R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27695 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-20 10:35:01 +00:00
asiva@google.com 53a1ec9456 Revert
https://code.google.com/p/dart/source/detail?r=27655
as it is causing dartium build breakage.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27675 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-19 20:32:16 +00:00
fschneider@google.com 7dea1d8a2c Fix bug in field type tracking and polymorphic inlining.
When inlining implicit getters via the polymorphic inliner
(and not through the flow graph optimizer) the fields loaded
must be added to the list of guarded fields that trigger
deoptimization when a store violated the field type guard.

Also, this CL avoids adding fields to the list from inlining
candidates that do not get inlined after all. Previously, the
optimizer pass on the callee graph would add guarded fields
even if the final graph does not get inlined.

TEST=tests/language/vm/optimized_guarded_field_test.dart
R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27655 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-19 11:21:11 +00:00
fschneider@google.com ac08babf45 Polymorphic inlining of [] operations.
This CL adds the necessary parts to enable polymorphic
inlining of recognized methods. For now it handles only
[]-calls. This helps code that deals with e.g. growable
and fixed-length lists.

The basic idea is to adapt the code in the flow graph
optimizer so that it can be used from the generic inliner.
Currently this adds a bit of boilerplate code which I intend
to reduce when adding more recognized methods to be handled.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27627 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-18 15:41:45 +00:00
kmillikin@google.com 1d0cde6f24 Fix the flag --reorder-basic-blocks so it works to disable reordering.
Temporarily set the flag to false by default to avoid a bad interaction
between block reordering and empty block compaction (dartbug.com/13101).

BUG=https://code.google.com/p/dart/issues/detail?id=13101
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27292 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-09 14:54:45 +00:00
kmillikin@google.com 00f20f3ffc Collect edge count profiling data and reorder basic blocks.
In unoptimized code, collect edge counts for all edges.  Use the counts
to reorder basic blocks in optimized code.  Basic blocks are reordered
by using Pettis and Hansen's "Profile Guided Code Positioning" bottom-up
algorithm.

R=fschneider@google.com, regis@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26773 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-28 09:17:07 +00:00
jacobr@google.com 605b33c1bc fix cpp11 compile errors
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26387 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-20 20:24:11 +00:00
zra@google.com fa2ad38a31 Enables per-function far-branches for ARM and MIPS.
R=regis@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25723 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-01 20:51:46 +00:00
fschneider@google.com 8f0bff4acf Prune variables that are not live at block entry from the environment.
If a variable is not live at a block entry, replace it
with the null-constant in the environment.  This can occur
when there is a partially dead variable stores.

Fewer environment uses mean shorter live ranges and better register
allocation.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24939 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-12 08:27:35 +00:00