srdjan@google.com
cd92319223
Optimize string length one comparisons by comparing char codes only. Implemented for one byte strings only at the moment. Will add other string types/mixed compares later.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org//105143011
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31347 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 20:11:38 +00:00
fschneider@google.com
e994d8b697
Revert r31326.
...
TBR=johnmccutchan@google.com ,
Review URL: https://codereview.chromium.org//118133004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31332 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 12:21:09 +00:00
fschneider@google.com
fe726e1971
Use parallel move resolver for optimized try-catch.
...
This CL has no change in functionality and is purely clean up and
refactoring. Instead of manually generating the moves at throwing
instructions in try-catch, construct a parallel move and use the resolver
to emit the native code. This eliminates a lot of duplicated code
from all platforms.
It will also allow to re-use stack space that is currently allocated
separately for each individual try-catch in a function.
I added a few more unrelated minor changes in various parts of the VM
* Simpilify guard code generation
* Resolve refactoring TODO in deoptimization
* Improve names
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//119213002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31326 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 09:41:42 +00:00
fschneider@google.com
16098ce25a
Fix invalid aliasing in type propagation of AssertAssignable.
...
We have to create a copy when computing the initial type for AssertAssignable
instead of using the CompileType of the input operand. Aliasing can cause
invalid elimination of checks after strengthening of asserts.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//102283004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31227 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-18 15:30:07 +00:00
iposva@google.com
f39a3dc75f
- Use named constant kNullable instead of true.
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//105403008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31198 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 17:42:26 +00:00
fschneider@google.com
6abd6e326e
Add mutable double boxes for fields.
...
This allows the optimizing compiler to generate unboxed loads/stores
to fields containing double values. The double value is stored
in a reusable double object.
Unboxed loads/stores are generated for optimized code. Unoptimized code
allocates a new double on loads. To avoid performance regressions
for fields that are only written few times (e.g. only in the constructor)
I put a heuristic in place that
compares the usage count of setters and getters. Unboxed operations
are only generated if the setter is invoked a significant amount of
times (threshold is 10% of getter invocations).
The CL is so big because it changes the way LocationSummmary
is allocated: We now have a bit to generate different summaries
for optimized and unoptimized code.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//99573005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31164 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 15:11:31 +00:00
srdjan@google.com
98a1355ef9
Restoring the remaining CL 104893003. For instance call representing numerical comparisons and binary operations (double and Smi supported for now) that were never visited before optimization occurs, we guess the cids if one of the argument cids is known, e.g. ‘a == 1’ we guess that a is also going to be 1 thus avoiding emitting an IC-call in optimized code and propagating the type accordingly.
...
Remove AssertAssignableInstr::RecomputeType as it may cause incorrect behavior: it changes the type of its value based on input, the graph below will then incorrectly remove CheckSmi.
v27 <- BinaryMintOp:14(..
v28 <- AssertAssignable(v27)
CheckSmi(v28)
v17 <- BinarySmiOp:86(+, v28, v12)
R=fschneider@google.com
Review URL: https://codereview.chromium.org//114543004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31137 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-13 17:15:05 +00:00
srdjan@google.com
a8f549dbc3
Merge sin(a), cos(a) into one instruction. On IA32 use x87 fsincos operation, on x64 call runtime routine whihc merges sin/cos intos sincos.
...
TODO: Implement for ARM and MIPS.
R=fschneider@google.com
Review URL: https://codereview.chromium.org//92433002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30827 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-03 22:00:27 +00:00
srdjan@google.com
cf53988cf6
Use range information to omit checks in TRUNCDIV/MOD operations.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org//81623003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30673 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-26 18:18:24 +00:00
fschneider@google.com
8b0b3fde4d
Generalize if-conversion to arbitrary smi comparisons.
...
Until now only == and != comparisons were supported.
Further changes are:
Remove flag FLAG_new_identity_spec: It is not needed anymore.
Invoke Canonicalize another time before branch optimizations.
Fixes support for TestSmiInstr with the branch-simplifier pass.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//78733002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30622 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-25 12:57:21 +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
srdjan@google.com
3165e204e3
Merge TRUNCDIV and MOD into one instruction. Icorporated feedback from CL https://codereview.chromium.org/68663003
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org//79653002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30536 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-21 17:56:54 +00:00
srdjan@google.com
f981bda8bd
Better printing of MathUnaryInstr.
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//68643009
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30430 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-19 23:43:40 +00:00
fschneider@google.com
b562230228
Move and clean up some class declarations in intermediate_language.h.
...
This way definitions of inline methods in BranchInstr can reside inside
the class declarations.
Review URL: https://codereview.chromium.org//59873010
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30414 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-19 13:50:55 +00:00
fschneider@google.com
05b8012333
Remove dead code from IfThenElse and StrictCompare in the compiler.
...
The code for these cases is either completely unused or can only be hit with
canonicalization and constant propagation turned off. Since this is not tested,
and does not bring any performance benefit for the default configuration it is
best to just remove it.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//62203018
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30393 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-19 10:38:37 +00:00
fschneider@google.com
7286df6f68
Fix bug with deoptimization targets.
...
In the second pass of inserting representation conversions (SelectRepresentations)
we may insert sequences of Unbox/Box instructions that are eliminated
by canonicalization later. However, inserting conversions requires a deoptimization id as
deoptimization target. Return kNoDeoptId for Box-instructions since they don't need a real
deoptimization target.
BUG=dartbug.com/14808
R=srdjan@google.com
Review URL: https://codereview.chromium.org//71373005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30234 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-13 16:22:58 +00:00
fschneider@google.com
b15bd6fe04
Cleanup of branch code generation (no change in functionality).
...
This CL is the first step in refactoring the way branches and comparisons
are generated.
1. Move helper functions from flow_graph_compiler_xyz.cc to
intermediate_language_xyz.cc.
2. Remove IL class ControlInstruction. It was only implemented by BranchInstr.
All functions provided are moved to BranchInstr.
3. When generating branch code for comparisons, pass the successor labels explicitly
instead of getting them from the branch. This will allow us to provide different labels
when materialize a bool value of a comparison.
4. Move some common code for IfThenElseInstr from the platform-specific files
into intermediate_language.cc and simplify it.
The goal is to enable if-conversion of arbitrary comparisons. Right now,
the code for == is hard-coded in IfThenElseInstr (and duplicated, too). This
means that e.g. "a < b ? 0 : 1" cannot be optimized.
As a result, IfThenElseInstr can be used to materialize the boolean value of
a comparison. This way the complication of having ComparisonInstr both as a
normal instruction and as wrapped inside a BranchInstr can be simplified.
Comparisons would no longer appear as plain instructions in the IL, but only
wrapped inside either a Branch or an IfThenElse(true, false).
R=zra@google.com
Review URL: https://codereview.chromium.org//62133002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30042 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-07 11:47:04 +00:00
fschneider@google.com
aa789a7b27
Merge (x & y) == 0 pattern to emit a single test instruction.
...
This is based on a previous uncommitted CL by vegorov@
(https://codereview.chromium.org/14251023/ ).
It is rebased and fixes a bug in the MIPS implementation: BranchOnCondition
requires the comparison result in fixed registers CMPRES1/CMPRES2.
Remove register alias TMP1 (=TMP) and CMPRES (=CMPRES1). It is confusing to
have them around and easy to forget that they are actually the same.
R=srdjan@google.com , zra@google.com
Review URL: https://codereview.chromium.org//59613005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29966 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-06 12:13:29 +00:00
zra@google.com
ca82c461a0
Impelments IfThenElse instruction for ARM and MIPS.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org//58003003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29933 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-05 20:45:25 +00:00
srdjan@google.com
2b9fad92c7
In preparation of inlining remainder and modulo binary Smi operations:
...
- Add REM token
- Fix checking of function fingerprints.
- Remove unused intrinsic for remainder (the function gets inlined and intrinsic is not generated)
R=hausner@google.com
Review URL: https://codereview.chromium.org//59933004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29929 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-05 19:27:46 +00:00
johnmccutchan@google.com
29c01044bc
This is the final breaking change in dart:typed_data needed for Dart 1.0. We need this change because the ECMAScript SIMD specification only includes Int32x4 and Int32x4List and our types must match.
...
R=srdjan@google.com
Review URL: https://codereview.chromium.org//56023004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29849 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-04 21:56:59 +00:00
fschneider@google.com
9031c80c88
Change == into an instance call to allow polymorphic inlining of ==.
...
In unoptimized code equality is now just another instance call.
The optimizer replaces it with a specialized implementation based on static
type information and type feedback.
Many of the manual optimizations of == in the optimizer are now just handled
by the generic inliner, plus polymorphic inlining of == calls is now possible.
This also eliminates the need for a lot of duplicated code in the backend.
I adapted the inlining heuristics to compensate for the slightly larger
inital flow graph size.
Review URL: https://codereview.chromium.org//27307005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29800 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-04 11:32:52 +00:00
johnmccutchan@google.com
5f63715d47
SIMD shuffle API changes
...
R=srdjan@google.com , zra@google.com
Review URL: https://codereview.chromium.org//51373004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29723 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-01 07:09:54 +00:00
zra@google.com
413cc1a24d
Fixing fingerprint.
...
R=srdjan@google.com
Review URL: https://codereview.chromium.org//51113015
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29683 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-31 17:32:06 +00:00
johnmccutchan@google.com
8a0fd8ce4d
Add Uint32x4List to typed_data
...
R=asiva@google.com , srdjan@google.com , vsm@google.com
Review URL: https://codereview.chromium.org//51333005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29639 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-31 04:57:38 +00:00
srdjan@google.com
a81288c8ca
Improve string library performance. String concat and indexOf.
...
Rename String concatAll to concatRange. Optimize concatRange for OneByteStrings (avoids natives), optimize indexOf for one character onByteStrings.
R=iposva@google.com
Review URL: https://codereview.chromium.org//42443002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29472 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-29 18:18:40 +00:00
kmillikin@google.com
253fc69ecc
Record a correct deoptimization environment for slow-path code.
...
Slow-path code is not marked as a call, so the deoptimization environment
built by the register allocator can contain unspilled registers. However,
all registers are spilled before the call. Compute the spill slot for all
registers and change the ones in the deoptimization environment to be
spilled.
BUG=https://code.google.com/p/dart/issues/detail?id=13995
R=fschneider@google.com
Review URL: https://codereview.chromium.org//26823006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29239 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-25 10:17:10 +00:00
srdjan@google.com
8e7c6a5fae
Move Stringinterpolation constant folding from constant propagator to canonicalizer. StrinIterpolateInstr cannot directlly refer to interpolation arguments but only to the array that holds them, therefore constant propagation cannot be applied.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org//34523007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29118 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-23 20:37:18 +00:00
fschneider@google.com
4ecceeebb6
Use enums for the index of IL operands.
...
Addressing comments from a previous CL (https://codereview.chromium.org/28633003/ ).
R=srdjan@google.com
Review URL: https://codereview.chromium.org//35893012
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29087 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-23 15:27:09 +00:00
johnmccutchan@google.com
4ebeadba11
This CL enables the polymorphic inliner to inline loads on typed array views.
...
It also contains a small cleanup so that the signatures of BuildByteArrayViewLoad and BuildByteArrayViewStore match.
R=fschneider@google.com
Review URL: https://codereview.chromium.org//26191002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29066 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-23 09:18:52 +00:00
fschneider@google.com
8779bc8d7f
Optimize identical-comparisons based on propagated type information.
...
If the propagated type allows, eliminate the check for numbers at
identical operations in optimized code.
The previous optimizaton was done before full type propagation was run
and was therefore not very effective.
* Made flow-graph printing having no side-effects: calling Type() lazily
initializes the type_ and reaching_type_ fields of Value and Definition.
Access fields directly when printing instead.
Also, fixed two random spelling mistakes.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//27727002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28851 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-18 11:13:59 +00:00
fschneider@google.com
ee2678893c
Improve canonicalization of strict comparisons and bool negation.
...
This CL generalizes the existing optimization to handle all combinations
expr === true
expr !== true
expr === false
expr !== false
including lhs and rhs swapped. It also adds canonicalization of boolean
negation.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//27705003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28802 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-17 14:01:04 +00:00
srdjan@google.com
b83bda9e0e
Add new style of string interpolation optimization: new nodes, working constant folding.
...
TODO: partial constant fold of incoming arguments.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//27192005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28741 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-16 18:12:08 +00:00
fschneider@google.com
b5465cf7ef
VM: Fix bug in canonicalization of identical in the optimizing compiler.
...
Make sure that BranchInstr::Canonicalize does not mutate it's input before
all conditions for the optimzations to take place are met. Otherwise, bailing out
leaves the affected comparison instruction in an invalid state.
BUG=https://code.google.com/p/dart/issues/detail?id=14109
R=srdjan@google.com
Review URL: https://codereview.chromium.org//26451006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28646 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-15 15:15:47 +00:00
fschneider@google.com
2cff01970b
Polymorphic inlining for []= operators.
...
This CL allows the inliner to do polymorphic inlining of recognized
[]= operators. Before, only monomorphic calls were handled in the
optimizer.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//25411004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28202 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-03 09:43:50 +00:00
iposva@google.com
e7e2e4bf03
- Rename arrays to lists:
...
_ObjectArray -> _List
_GrowableObjectArray -> _GrowableList
_ImmutableArray -> _ImmutableList
R=srdjan@google.com
Review URL: https://codereview.chromium.org//25813002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28189 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-03 00:15:14 +00:00
srdjan@google.com
008229fa11
Optimize string interpolation by running it at compile time if all inputs are constant. This is done during constant propagation, however, the argument construction instructions must be removed manually. It is unclear how safe it is to modify graph during constant propagation.
...
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//24837002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28175 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-02 17:49:14 +00:00
fschneider@google.com
e9f0b93eb1
Revert r28050 due to crashes with --optimization-counter-threshold=5.
...
TBR=kmillikin@google.com
Review URL: https://codereview.chromium.org//25277002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28052 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-30 14:29:44 +00:00
fschneider@google.com
acb389dbf9
Optimize conditional branches that have same true/false targets.
...
Branches that have the same true/false target, or where both
target blocks reach the same common join block via empty blocks
can be replaced by a goto to the common join block.
In code like this
var a = unknown();
var b = null;
if (a == null || b == null) {
...
}
it eliminates the test (a == null) if b is known to be null. Until now,
the compiler could only eliminate the test for b, if a was known.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//23549020
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28050 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-30 12:41:28 +00:00
srdjan@google.com
db2516d7c2
Add a is_recognized bit to function kind field. Improves performance of method recognizer and thus the compilation speed.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//25050004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28026 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-27 21:00:59 +00:00
sra@google.com
c068a949fe
Revert "Revert "Reinstate type checks in Math.min and Math.max""
...
Review URL: https://codereview.chromium.org//24918003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27983 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-27 02:01:43 +00:00
sra@google.com
053eaeb868
Revert "Reinstate type checks in Math.min and Math.max"
...
Review URL: https://codereview.chromium.org//24911003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27981 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-27 01:15:58 +00:00
sra@google.com
b1e55c556c
Reinstate type checks in Math.min and Math.max
...
See Issue 11906 for discussion.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//23658055
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27980 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-27 00:45:08 +00:00
johnmccutchan@google.com
dcda2adb90
Cleanup bit casting methods between SIMD types
...
R=zra@google.com
Review URL: https://codereview.chromium.org//24240020
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27827 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-24 16:23:46 +00:00
mlippautz@google.com
4fa46b7148
Introduce newline tokens into the token stream.
...
CL only introduces the tokens into the compressed token stream. We do not
use the newline tokens (yet).
Overhead:
snapshot: 6.4% (860k/808k)
compressed token stream (gen_snapshot): 21% (314312/259907)
BUG=
R=asiva@google.com , hausner@google.com
Review URL: https://codereview.chromium.org//23452043
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27677 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-19 21:46:50 +00:00
hausner@google.com
21620841e6
More fingerprint fixes, and fixing the FP verification option
...
Review URL: https://codereview.chromium.org//24249004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27671 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-19 18:08:26 +00:00
hausner@google.com
d8a903fdd5
Change more fingerprints
...
Review URL: https://codereview.chromium.org//23976007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27669 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-19 17:52:48 +00:00
hausner@google.com
f3baeeb6a5
Implement symbol literals in the VM compiler
...
Issue 12171
R=iposva@google.com
Review URL: https://codereview.chromium.org//24240010
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27668 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-19 17:39:16 +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
hausner@google.com
bbcf74a569
Make "as" a built-in identifier aka pseudo keyword
...
Fixes issues 12551, 13021
R=regis@google.com
Review URL: https://codereview.chromium.org//23542041
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27461 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-12 23:45:41 +00:00