Commit Graph

442 Commits

Author SHA1 Message Date
hausner@google.com 8e56764233 Fix registration of closure functions
Closure functions get registered in the class by the
compiler backend. The incorrect assumption was that each
closure only gets visited once. However, closures in finally
clauses are duplicated when the AST nodes of the finally
clause are inlined. This change avoids the duplicate registration.

Fixes issue 18225

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35487 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-28 17:20:09 +00:00
regis@google.com da0958c822 Expose functionality to create a stack trace to internal vm code.
Provide functionality to limit depth of printed stack trace.
Fix frame numbering in presence of invisible functions in stack trace.
Let FlowGraphBuilder know if it is building a graph to generate optimized code.
The above features will be used to warn on Javascript incompatibilities.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35319 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 17:58:12 +00:00
regis@google.com 98bcbb0dae Do not ignore side effects of a type test or type cast as expression, such
as bound errors in checked mode.
Added tests.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35284 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-22 20:48:13 +00:00
srdjan@google.com 3658a1a6de Fixes issue 18099: missed type guard dependency in implicit getters.
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34855 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-08 23:56:49 +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
srdjan@google.com 714acd1944 Recognize _TypedListBase._cid native. Use Lists.copy instead of native _setRange if list is small. Restore performance of HttpServeStrings.
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33624 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 23:10:23 +00:00
fschneider@google.com b5b1be80fa Add alias disambiguation for VM fields.
This is needed for generalizing allocation sinking to
work with instance fields and plain field offsets.

MaterializeObject now works with  a set of Field/Smi objects
Right now this should be performance-neutral, but it already
simplifies the code be removing the fake fields previously used
for type arguments, closure function/context.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33478 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-10 09:59:49 +00:00
iposva@google.com 4c07af2487 - Ensure that all names in local scopes are symbols.
- Avoid calling Equals when comparing names in local scopes.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33443 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 19:37:04 +00:00
fschneider@google.com 0382749c4c Mark compiler-internal fields of closure objects as final.
Those fields are written once at allocation time. Marking them
as final improves code generation for closure allocation.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33331 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 15:46:41 +00:00
srdjan@google.com b9ef34e38b Move StackOverflow check after context chaining at function entry so that the context is properly setup before stop at entry.
R=turnidge@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33314 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 00:10:41 +00:00
hausner@google.com 75f9f5bfa3 Fix error message when assigning to a local const variable
Remove front-end optimization that turned load local const
value into a load literal. Change backend to recognize loading
of const locals. This fixes the error message automagically.

Fix for issue 17258

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33288 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-04 18:44:53 +00:00
regis@google.com 8d5dae7798 Allocate instance closures similarly to regular closures, i.e. without a
specific stub and runtime call.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33074 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-26 18:38:47 +00:00
fschneider@google.com 53abcebbf9 VM: Replace StoreVMField with StoreInstanceField.
This simplifies a lot of code in the optimizer and avoids the confusion
and errors due to mismatch input operands when using StoreVMField.

I added a separate constructor for LoadFieldInstr to avoid having
to explicily set the associated field there.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33059 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-26 12:12:40 +00:00
fschneider@google.com c6cc16aeae VM: Eliminate a redundant store of the context at function entry.
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33058 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-26 11:44:03 +00:00
fschneider@google.com 974fdb6a9a Explicit conversions for Float32 array loads/stores.
Added two new IL instructions: DoubleToFloat and FloatToDouble.

This enables store-to-load forwarding for Float32 arrays which was
not working before because of the implicit conversions.

Loads are now translated as:

v3 <- LoadIndexed(v2, v1)
v4 <- FloatToDouble(v3)

Stores:

v5 <- DoubleToFloat(v4)
      StoreIndexed(v7, v6, v5)

There is no explicit representation for float values because
they are never used in a deoptimization environment. The only
real uses are at FloatToDouble and StoreIndexed.

For example when copying a value from one Float32 array to another
there is no intermediate conversions anymore

a[0] = b[0] before:

  movss xmm1,[ebx+0x7]
  cvtss2sd xmm1,xmm1
  cvtsd2ss xmm2,xmm1
  movss [edx+0x7],xmm2

after:

  movss xmm1,[ebx+0x7]
  movss [edx+0x7],xmm1

Also in this change:
  Eliminate GuardField based on cid information of list factories.
  GC unused symbols

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32891 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-21 12:12:29 +00:00
fschneider@google.com 13f2d115ef Simplify generated code for object allocation with type arguments.
The motivation for the change is to make allocation sinking more
general when type arguments are in play. As a result I cleaned up the code
dealing with constructor type arguments as follows:

* Remove ExtractConstructorTypeArguments and ExtractConstructorInstantiator
from the intermediate language.

* The allocation stub takes now 1 argument (instead of 2) for parameterized
classes.

* The allocation stub always get an instantiated type arguments object
as input. It does not need to do a lookup in the instantiations array anymore.

* The code for looking up cached instantiated type arguments is moved
to the InstantiateTypeArguments instruction. This instruction is now also
used for object allocation. I'm not sure how relevant the cache lookup is
performance-wise. dart2js compilation did not show any regression without it.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32697 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-14 13:03:35 +00:00
regis@google.com 7830430adf Implement eager instantiation and canonicalization of type arguments at run
time using a cache in uninstantiated type arguments.
Remove InstantiatedTypeArguments class.
Fix a bug in optimized code: do not update unused type test cache for Smi.
Fix a bug in optimized code on ARM and MIPS in type test cache lookup.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32447 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-07 19:54:33 +00:00
fschneider@google.com bb4869e3bb Inline recognized List factory in the flow graph optimizer.
The call to the native List factory is lowered into IL instructions if
the length is known to be a valid smi.

This is mostly performance neutral. The acutal allocation now takes place
in the array allocation stub instead of the intrinsic code (and the runtime
List_allocate in case the fast case path fails).

This is a preparation for enabling allocation sinking for arrays and will
be extended to handle type list allocation as well. This way the allocation
site is explicitly represented as a CreateArrayInstr, instead of just being
a static call.

Another benefit is that this allows to simplify the special handling of
recognized factory calls in the optimizer once all array types are handled
this way.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32194 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-31 13:26:48 +00:00
fschneider@google.com 6ffa061fdf Fix stack height assertion code and free up a bit in the Function tag bits.
The bit has_finally was only used to skip the checking of the stack height
at return statements: There was an unused value floating on top of the
expression stack in unoptimized code if the finally block preceded a normal
return statement. Normallyi, that does not cause harm. Optimized code is not
affected since it has a fixed stack size for expression evaluation.

This CL fixes the stack height for functions with try-finally by introducing
a temporary local where the return value is saved before an inlined
finally-block.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32157 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-30 12:12:31 +00:00
srdjan@google.com 9c16a399ca Cleanups.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32000 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-24 22:00:04 +00:00
hausner@google.com 0c434b3073 Rename kDummyTokenIndex to kNoSourcePos
Addresses comment to previous change list.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31969 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 23:46:26 +00:00
hausner@google.com baf16bac5e Make safe points in generated code invisible to the debugger
- remove some PC descriptors that are part of implicit, synthesized
  code, e.g. generated null checks in == methods, implicit constructors,
  implicitly generated code in user constructors, etc.
- ignore single step callbacks on PC descriptors that are part of
  synthesized code.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31966 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 21:49:42 +00:00
hausner@google.com 363105d880 Add debugger steps in local variable assignments
This allows the debugger to single step and break on local
variable assignments in unoptimized code. Checks are only added if
the right hand side of the assignment has no safepoints where
the debugger would stop anyway.

Interestingly, generated code size is only 0.1% bigger, so the
cost is negligible.

Addresses issue 10403.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31575 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-07 21:10:47 +00:00
hausner@google.com c571528323 Make return statements single steppable
Replace the code smashing breakpoints at function returns with a call
to a runtime stub that checks whether the debugger is single stepping.
The call to the stub is only emitted in unoptimized code.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31435 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-02 23:31:52 +00:00
asiva@google.com 64a261fbbd Changes to interpret the optimizable bit based on whether the function
is native or not.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31207 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 22:07:41 +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
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
kmillikin@google.com a56dba2628 Use the VM's graph builder nesting stack for loop depth and context level.
Use the code's nesting to maintain the context level rather than explicitly
tracking it in the graph builder.  Nested blocks know their scope and the
nesting stack can be searched to find the current context level.

Nested loops now increment and decrement the graph builder's loop depth
while they are on the nesting stack, though the loop depth state is still
kept in the graph builder itself.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30397 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-19 11:37:11 +00:00
regis@google.com db2cec593d Distinguish between malformed and malbounded types more efficiently using the
recently introduced LanguageError 'kind' field.

R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30383 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-18 23:31:12 +00:00
kmillikin@google.com 98b5d17d9d Introduce a nesting stack to the flow graph builder.
Statically track nested blocks, loops, and switches while constructing
the flow graph.  Use the nesting stack as a mapping from source labels
(class SourceLabel) to their flow-graph targets (class JoinEntryInstr).

This removes the indirect dependence of the AST on the intermediate
language and the mutable compiler state from the AST.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30336 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-18 11:39:14 +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
kmillikin@google.com 2a87b7eb94 Simplify the desugaring of catch clauses.
Rather than if/then/continue (where the continue does not match the
semantics of Dart's continue), use if/then/else.  This removes the
unnecessary goto and label as a step toward streamlining support for
jumping in the compiler backend.

R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30227 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-13 14:08:11 +00:00
srdjan@google.com b97c8e894c Inline integer modulo operation.
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30075 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-07 21:50:26 +00:00
fschneider@google.com e7ae5c16f6 Avoid redundant assertion code in equality comparisons in checked mode.
The result of an equality operation only needs to be checked if it is
negated.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29964 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-06 11:02:34 +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
kmillikin@google.com a8f542c306 Restore 0-based temporary index numbering in the VM compiler.
Compiler temporary indexes (used for printing) were inadvertently changed to
1-based numbering.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29815 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-04 16:05:08 +00:00
kmillikin@google.com 216b18202b Fix VM compilation.
Compilation was broken by an unclean merge.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29802 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-04 11:58:14 +00:00
kmillikin@google.com 28e4e52a7c Move temp_index from the graph visitors to the graph builder.
This is the only bit of state that besides the current instruction
that is threaded through the visitors.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29801 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-04 11:48:45 +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
fschneider@google.com 91ca330ac8 VM: Fix initialization of statics in presence of exceptions.
In a static- or top-level variable v

var v = expr
static v = expr

If the initializer expression expr throws, the VM throws a
CyclicInitializationError when loading v afterwards, even though
this has nothing to do with cyclic initialization.

I'm changing the way implicit static getters and static initializers are
compiled. Static initializers are invoked from static getters.

They look as follows:

get:v {
  if (field.value === transition_sentinel) {
    field.value = null;
    throw new CyclicInitializationError();
  }
  if (field.value === sentinel) {
    field.value = transition_sentinel;
    init:v();
  }
  return field.value;
}


init:v {
  try {
    field.value = expr;
  } catch {
    if (field.value === transition_sentinel) {
      field.value = null;
    }
    rethrow;
  }
}

BUG=http://dartbug.com/5802
TEST=language/lazy_static3_test,
language/throwing_lazy_variable_test,
co19/Language/12_Expressions/30_Identifier_Reference_A08_t02

R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29797 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-04 10:08:47 +00:00
asiva@google.com 545bec0843 Cleanup StaticResolveType, it does not seem to be used anywhere.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29696 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-31 20:41:59 +00:00
fschneider@google.com ce9573722c VM: Fix checked mode crash (issue 13831).
The AST for static getters differs between parsing the first time, and
subsequent parsings. This leads to a mismatch in deoptimization-ids
between the optimized and the unoptimized code.

This CL avoids creating different ASTs for the same static getters. To allow
better inlining of these getters, the initialization expression is wrapped in a
hidden static initializer-function. As a result the size of such getters is
constant and does not depend on the initializer expression.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29680 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-31 16:49:55 +00:00
kmillikin@google.com 9758a584e8 Fix a bug in typecasts in the VM.
When a typecast is evaluated solely for its side effects and the check
is eliminated in the flow graph builder, the subexpression is not
evaluated.  This is wrong.  Fix by evaluating the subexpression.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29674 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-31 14:39:17 +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
regis@google.com 9ec07853c5 Report correct error message in case of super invocation (fix issue 8208).
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29042 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-22 22:12:07 +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
regis@google.com 2d59eb0cb1 Throw a dynamic type error instead of a CastError in a type cast with a
malbounded type (fix issue 14123).
Regression test is not checked in yet (see https://codereview.chromium.org/27378002/)

R=rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28698 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-16 00:38:55 +00:00
regis@google.com 2f900dab13 Cache number of type arguments in class object instead of recalculating it.
Reduce size of num_native_fields field in class object.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28670 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-15 18:31:31 +00:00
srdjan@google.com 2f0a906dbf Cleanups, refactoring in anticipation of new string interpolation nodes. Removed unnecessary code.
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28619 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-14 23:21:52 +00:00