Commit Graph

80 Commits

Author SHA1 Message Date
vegorov@google.com baa0347253 Reapply r18377 it was reverted due to the unrelated bug it surfaced.
Remove SminessPropagator and FlowGraphTypePropagator and all associated infrastructure and fields.

Replace multiple fields (result_cid_, propagated_cid_, propagated_type_, reaching_cid_) with a single field of type CompileType which represents an element of type analysis lattice and incorporates information about: value's nullability, concrete class id and abstract super type. This ensures that propagated cid and type are always in sync and complement each other

Implement a new FlowGraphPropagator that propagates types over the CompileType-lattice.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18456 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-13 17:16:35 +00:00
vegorov@google.com 487c73e01f Revert "Remove SminessPropagator and FlowGraphTypePropagator and all associated infrastructure and fields."
This reverts commit r12365.

Reason: failure on vm-mac-debug (debug_ia32 standalone/io/file_fuzz_test).

TBR=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18378 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-12 12:36:21 +00:00
vegorov@google.com f8d9a90b2c Remove SminessPropagator and FlowGraphTypePropagator and all associated infrastructure and fields.
Replace multiple fields (result_cid_, propagated_cid_, propagated_type_, reaching_cid_) with a single field of type CompileType which represents an element of type analysis lattice and incorporates information about: value's nullability, concrete class id and abstract super type. This ensures that propagated cid and type are always in sync and complement each other

Implement a new FlowGraphPropagator that propagates types over the CompileType-lattice.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18377 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-12 12:06:47 +00:00
fschneider@google.com 7fc8f72c25 Inline getters of byte array view in the optimized flow graph.
This CL provides inline IL code for the getters _getInt8, _getInt16, etc.
to speed up [] and byte array views.

The code uses the existing LoadIndexed instructions by passing a index
scale factor explicitly: For normal arrays loads, the scale factor is equal
to the element size. For byte array access, the scale factor is always 1.

I'm adding inlined setters in a separate CL.
Review URL: https://codereview.chromium.org//12218008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18173 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-06 15:18:57 +00:00
kmillikin@google.com a518a0a36f Add a use list iterator that allows mutation of current.
Add Value::Iterator that supports removing the current use from the
underlying use list, including deleting it or moving it to another use
list.  Use it in range analysis and representation selection.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18055 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-04 17:04:02 +00:00
vegorov@google.com 932a05420a Reland r17365.
Introduce InvokeMathCFunction that can be used to directly invoke mathematical
function provided by runtime.

Use it to unconditionally inline _Double.pow.

Use it to inline floor, ceil, round, truncate, round when SSE4.1 is not
available.

Perform representation selection phase after constant propagation to minimize
boxing.

Add support for enter instruction in the x64 disassembler.

Add test for optimized pow and fix compilation on windows.

R=fschneider@google.com
BUG=dart:8002

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17393 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-22 12:18:31 +00:00
vegorov@google.com ab91977173 Revert "Introduce InvokeMathCFunction that can be used to directly invoke mathematical function provided by runtime."
This reverts commit r17365.

TBR=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17367 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-21 17:16:16 +00:00
vegorov@google.com a20c8d28b8 Introduce InvokeMathCFunction that can be used to directly invoke mathematical function provided by runtime.
Use it to unconditionally inline _Double.pow.

Use it to inline floor, ceil, round, truncate, round when SSE4.1 is not available.

Perform representation selection phase after constant propagation to minimize boxing.

Add support for enter instruction in the x64 disassembler.

R=fschneider@google.com
BUG=dart:8002

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17365 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-21 16:59:37 +00:00
fschneider@google.com 657c4944c3 Remove StringCharCodeAtInstr and handle it as part of LoadIndexed.
Review URL: https://codereview.chromium.org//11970038

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17274 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-18 14:03:40 +00:00
vegorov@google.com a77fc9701c When requested to extract a method M from class C inject a method extractor (consisting of a single AST node CreateClosure) as a getter get:M into C.
This allows to cache and optimize method extraction requests as normal method invocations and at hot method extraction sites that significantly decreases overhead of method extraction which previously required two trips into runtime system and was not cached at all.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17261 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-18 11:54:45 +00:00
vegorov@google.com d11d988998 Set statically known ResultCid for AllocateObject.
Specialize PolymorphicInstanceCall in ApplyClassIds if receiver cid
was infered: filter out all but one target for attached ICData and drop
checks.

Canonicalize away CheckClass if reciever cid matches at least one in the list of checked.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17079 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-15 15:51:24 +00:00
fschneider@google.com 15432b2fee Add canonicalize optimization for branches.
Comparisons where the result is only used in a branch on true
can be folded into the branch instruction.

Patterns like this can occur after inlining and constant propagation.
In normal code, we merge branches and comparisons already at graph
building time.

v3 <- (v1 == v2)
Branch if (v3 === true)

is optimized to

Branch if (v1 == v2)

Also: Remove outdated TODOs and rename the canonicalization pass to a 
better name.
Review URL: https://codereview.chromium.org//11819031

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16919 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-10 13:18:31 +00:00
srdjan@google.com 5915aff811 Optimize instanceof: if all results are true and tests can be done using class only replace instanceof with a Boolean constant.
Review URL: https://codereview.chromium.org//11746024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16648 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-04 21:29:05 +00:00
srdjan@google.com 29e06db609 In unoptimized code use call for instanceof instead of inlined checks. This allows us to collect type feedback and to reduce the code size of unoptimized code. Next will be work on type tests as well.
Review URL: https://codereview.chromium.org//11694003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16589 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-02 22:22:39 +00:00
asiva@google.com 7ea520f10f Create read only handles for empty_array and sentinel objects
(trying out a basic framework and will extend it to others once this
works).
Review URL: https://codereview.chromium.org//11648006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16416 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 02:33:05 +00:00
vegorov@google.com 9a45691c76 When replacing one value with another ensure that replacement has SSA index assigned.
R=srdjan@google.com
BUG=dart:7513

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16352 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 00:16:42 +00:00
fschneider@google.com 3a38233a6f Inline ByteArrayBase.length in the flow graph optimizer.
Review URL: https://codereview.chromium.org//11628011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16311 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-19 10:43:13 +00:00
srdjan@google.com 85cf9af6ab Fix for issue 6678: Result of identical(a, b) with a and b doubles not consistent.
Implement proposed new identity spec (flag --new_identity_spec). It will be enabled/committed once the new spec been confirmed.

The new spec says that identity of numbers is computed on their values instead of on the object reference. This provides deterministic behavior without having to disable optimizations in the VM. In some cases 'identical' is now slower than 'equality' as more checks need to be done. The VM compiler can optimize 'identical' in the future.

My benchmarks do not show any slow down.
Review URL: https://codereview.chromium.org//11414136

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@15332 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-26 18:35:45 +00:00
fschneider@google.com 2693c71850 Inline [] operator on one-byte strings.
str[i] is translated into

temp = str.charCodeAt(i)
result = StringFromCharCode(temp);

The existing code for charCodeAt is reused and contains
the necessary range class id and range check.
Review URL: https://codereview.chromium.org//11416129

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@15246 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-22 12:06:52 +00:00
srdjan@google.com 251169951b Do not recompute unary_checks repeatedly. Add special (and quicker) way to check for method overrides using CHA.
Review URL: https://codereview.chromium.org//11275110

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14434 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-01 21:06:36 +00:00
vegorov@google.com 55c9c6c444 Allow bound check elimination to eliminate checks when both array length and index boundaries are expressed through the same symbol.
For example:

var list = new List(n);
for (var i = 0; i < n; i++) list[i];

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14293 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-30 16:26:46 +00:00
vegorov@google.com 06dded663f Simple array bounds check elimination on top of range analysis framework.
Currenly eliminates only bounds checks when there is an implicit constraint bounding index's range with array length.

Does not eliminate redundancy in expressions like a[i + 1], a[i].

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14141 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-26 16:04:55 +00:00
floitsch@google.com 09f6d09d88 Make isEmpty a getter.
Review URL: https://codereview.chromium.org//11238035

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14022 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-24 15:04:32 +00:00
fschneider@google.com 89cab1577b Enable redundancy elimination for array loads.
This CL also adds a second round of CSE if necessary to make use
 of secondary effects for more optimization opportunities.
Review URL: https://codereview.chromium.org//11234002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13859 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-22 10:40:19 +00:00
srdjan@google.com 03a61f332c Apply optimization after class-id propagation: instance calls without ICData are optimized by using input argument class-ids to create fake ICData. This reduces the number of deoptimizations.
Review URL: https://codereview.chromium.org//11187046

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13798 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-18 20:41:58 +00:00
srdjan@google.com fc6afec8de Inline indexed load and store of typed array float64.
NavierStokes time improves from 34,775us to 12,000us (v8 runs NavierStokes in 16000 us).
Review URL: https://codereview.chromium.org//11092090

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13682 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-16 15:40:54 +00:00
fschneider@google.com 54ea76dc6b Remove support for optimized dart leaf functions.
This optimization does not bring any benefit since all functions
have at least a call in the slow-path of the stack-overflow check.

I'm suggesting to remove support for this optimization since it
does not get triggered currently, therefore is also not tested.
Plus we have inlining now, which already makes calls to (small 
enough) leaf functions fast.
Review URL: https://codereview.chromium.org//11086044

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13555 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-11 16:35:47 +00:00
fschneider@google.com 5f2bdb2f7d Fix bug with missing unboxed mint-to-double conversion.
In case of a mixed integer/double operation that has a mint
input, the corresponding conversion from unboxed mint to unboxed
double was missing.

This CL converts a unboxed mint to a double by first boxing,
and then unboxing. Currently, we deoptimize in case the result
does not fit into a smi because we can only optimize mixed
smi/double operations and not yet mint/double operations.

BUG=dart:5721
TEST=tests/language/mint_arithmetic.dart
Review URL: https://codereview.chromium.org//11017017

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13372 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-08 20:20:53 +00:00
srdjan@google.com a5e9100c46 Inline String isEmpty, refactor inlining of intrinsics.
Review URL: https://codereview.chromium.org//10993023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13032 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 17:40:29 +00:00
vegorov@google.com 17907d32de Implement range analysis for smi values.
And use it to eliminate overflow checks on + and - operations.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12733 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-21 20:06:31 +00:00
vegorov@google.com adf926862d Turn definitions that do not produce results (e.g. Checks) into instructions.
This allows more uniform iteration of IR for example when we are looking for all Smi values.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12563 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 14:38:31 +00:00
kmillikin@google.com be0492a8a8 Reapply "Initial implementation of sparse conditional constant propagation."
With a fix for compilation on Mac.  GrowableArray is DISALLOW_COPY_AND_ASSIGN,
so we can't create a temporary one to be ignored and have to pass one in to be
ignored.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12561 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 14:10:14 +00:00
kmillikin@google.com 5e449aea52 Revert "Initial implementation of sparse conditional constant propagation."
Revert due to compilation failures on Mac.

TBR=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12552 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 11:04:36 +00:00
kmillikin@google.com ae9efbfab0 Initial implementation of sparse conditional constant propagation.
Use the results of SCC to eliminate unreachable code.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12549 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 10:34:14 +00:00
fschneider@google.com 7b70f56dfd Simple redundant load elimination.
This analysis uses bit vectors to track side effects. Currently, there is
only one type of side effect which affects all mutable load-field instructions.
The elimination pass is a dominator tree preorder traversal like the existing
CSE pass. Instead of a hash-map it keeps an array with the current dominating
occurrence for each load expression.
Review URL: https://codereview.chromium.org//10914314

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12437 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-17 14:27:45 +00:00
srdjan@google.com dd86d4dbf3 Fix issues 5137: instance of test on constant value should return true or false, not the value itself.
Review URL: https://codereview.chromium.org//10909200

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12319 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-13 12:09:44 +00:00
vegorov@google.com 12bc91b043 Mark phi as producing a smi value if it is dominated by SmiChecks over its operands.
R=fschneider@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10915234

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12273 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-12 17:38:23 +00:00
srdjan@google.com 3add440c5c Inline GrowableObjectArray capacity getter, use CHA to eliminate load/store fields class checks.
Review URL: https://chromiumcodereview.appspot.com//10918164

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12161 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-11 07:03:07 +00:00
vegorov@google.com 061ddf0051 Optimistically hoist SmiCheck through phi when the only value of unknown type coming into the phi is an operand corresponding to the loop's pre-header.
R=fschneider@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10916155

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12022 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-07 12:23:01 +00:00
fschneider@google.com 725fe7b2d8 Implement loop invariant code motion for check instructions.
This CL adds a new optimization pass that hoist loop invariant
instructions upwards out of loops.

I'm adding a deoptimzation point at every Goto so that we
can move deoptimizing instructions like checks out of loops.
As a result there may be multiple deoptimization descriptors
with the same PC. The corresponding assert are removed.
Review URL: https://chromiumcodereview.appspot.com//10909094

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11946 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-06 13:21:20 +00:00
kmillikin@google.com 0750c472dc Reapply "Remove classes Computation and BindInstr."
Reapply svn revision 11868 with a bugfix.

Original code review at http://codereview.chromium.org/10908091/

R=fschneider@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10912094

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11890 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-05 17:04:49 +00:00
kmillikin@google.com 7e36720fa8 Revert "Remove classes Computation and BindInstr."
This reverts svn revision 11868.

TBR=fschneider@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10917085

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11869 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-05 11:20:14 +00:00
kmillikin@google.com bd84c7ee22 Remove classes Computation and BindInstr.
The former Computation classes are folded into the Instruction class
hierarchy.

R=fschneider@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10908091

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11868 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-05 11:15:34 +00:00
fschneider@google.com cc2901fc05 Add explicit smi-checks to smi comparisons.
This change works around some difficulties that come from
the distiction between Instruction and Computation in our IL.

We have now two instructions that can wrap a computation and
that makes visiting and replacing in the flow graph optimizer
harder. I added some helpers to work around this for now.

Also fix register constraints for double comparisons: xmm1
 is used, but was not reserved as temp.
Review URL: https://chromiumcodereview.appspot.com//10914008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11758 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-03 11:37:37 +00:00
vegorov@google.com a573d2dec8 Unbox phis that were proven to be of type Double.
Eliminate Boxing/Unboxing pairs.

Allow boxing, unboxing and double binary operations to participate in CSE.

Allow double comparisons to operate on unboxed inputs.

Support XMM registers and double spill slots in deoptimization.

Save XMM registers when calling to runtime from WriteBarrier stub.

R=srdjan@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10919008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11652 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-30 20:39:48 +00:00
fschneider@google.com a347dd7f82 Refactor branch instructions to enable further optimizations.
This CL simplifies the code generation for branches: Each BranchInstr
wraps a comparison computation and we can reuse the code between the two
in many cases. Similar to BindInstr, most accessors forward to the wrapped
computation. One exception is the location summary, which is modified for
branches: The result location is removed since branches don't produce a result.

This way, it is easier to replace a comparison branch
with a specialized version and eliminate redundante checks before branches.
Review URL: https://chromiumcodereview.appspot.com//10887009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11500 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-29 09:07:11 +00:00
fschneider@google.com bc54c438a0 Separate branch on strict compare into a new IL instruction.
This avoid unnecessary environment uses since the strict compare
can not deoptimize.

This is a first step in refactoring branch instructions so that we
can easily do explicit checks for specialized comparisons (smi, double).
Review URL: https://chromiumcodereview.appspot.com//10867050

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11373 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-27 09:30:20 +00:00
vegorov@google.com 264c4f6d1a Add support for XMM registers in SSA code generation pipeline.
Split BinaryDoubleOp into several instructions that manipulate unboxed doubles.

R=fschneider@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10875030

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11313 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-24 14:45:42 +00:00
fschneider@google.com 323e06222e Reland "Add a simple dominator based redundancy elimination" and fix a register allocation bug.
Original CL: http://codereview.chromium.org/10872035/

It enables elimination of redundant expressions across
basic blocks.

Currently used for smi checks and class checks, but will
be extended to other expressions in a separate CL.


Additionally, this fixes a bug in the register allocator where
a blocked register was illegally assigned to an unallocated live range.

It also fixes a Mac compiler issue with the constructor of
DirectChainedHashMap.
Review URL: https://chromiumcodereview.appspot.com//10871060

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11302 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-24 11:10:36 +00:00
fschneider@google.com 212c5a4994 Revert my last change r11227.
TBR=kmillikin@google.com
Review URL: https://chromiumcodereview.appspot.com//10871040

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11229 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-23 13:39:24 +00:00