Commit Graph

2960 Commits

Author SHA1 Message Date
zra@google.com 573b9d859a Fixes a bug in the mips Random_nextState intrinsic.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24549 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 20:46:28 +00:00
regis@google.com 3711825476 Fix Random_nextState intrinsic on ARM.
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24548 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 20:16:53 +00:00
zra@google.com 55d97a6d56 Adds missing case in mips double comparison.
Also, adds mips and simmips to runtime benchmark script,
and fixes up a status file.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24541 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 19:03:04 +00:00
iposva@google.com 50fc824be9 - Remove arguments definition test from the VM.
- Update tests still referring to it.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24539 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 18:37:53 +00:00
iposva@google.com 7c6573258b - Protect against icount_ overflow in the delay slot and only
stop if a stop_sim_at value has been set.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24537 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 17:40:35 +00:00
zra@google.com 60392c70fd Implements external array access for mips.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24524 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 16:42:39 +00:00
srdjan@google.com f415b31685 Add --deoptimization_counter_inlining_threshold=10 that stops inlining in a method that has reached it.
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24519 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 15:26:16 +00:00
fschneider@google.com fd3f443181 Fix a bug in allocation sinking and load elimination.
1. Aliasing information was not computed for allocations that
are never used in a LoadField instruction.

2. CanBeAliased was not correct in the case of a StoreVMField.

BUG=https://code.google.com/p/dart/issues/detail?id=11538
TEST=runtime/vm/flow_graph_optimizer.cc
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24515 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 13:26:23 +00:00
regis@google.com 0c93466054 Hide parent function name in name of closurized function to user (issue 5436).
Hide implicit parameter of closure to user.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24504 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 00:49:49 +00:00
srdjan@google.com f791281f91 Add two-byte string support in codeunitAt intrinsic.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24500 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 00:05:10 +00:00
regis@google.com 169bc2f989 Fix code for store buffer update on ARM and MIPS (link register was trashed).
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24493 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 22:14:42 +00:00
asiva@google.com e16291b973 Convert implementation in mirrors.cc to use Dart_GetType instead of Dart_GetClass.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24491 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 21:30:18 +00:00
regis@google.com 5ffa56b798 Fix and simplify invocation of noSuchMethod on all platforms after the wrong
number (or bad name) of arguments is passed.
The frame of the wrong method (the one invoked with the wrong number or name of
arguments) is not left on the stack and therefore not visible in the stack trace
anymore, which is much cleaner, especially since the leftover frame was not
fully initialized.
This change was already done on ARM.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24485 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 19:58:49 +00:00
zra@google.com ce82a777e5 Fixes integer negate intrinsic for arm and mips.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24481 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 17:43:48 +00:00
regis@google.com 70043d1f94 Fix and simplify invocation of noSuchMethod on ARM after the wrong number of
arguments is passed.
The frame of the wrong method (the one invoked with the wrong number of
arguments) is not left on the stack and therefore not visible in the stack trace
anymore, which is much cleaner, especially since the leftover frame was not
fully initialized.
Note: We should simplify this on other platforms as well.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24475 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 16:31:53 +00:00
zra@google.com 364c5406b8 Fixes floating point bug in ARM simulator.
Adjusts status files to match.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24473 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 15:48:22 +00:00
kmillikin@google.com 56c4a4a5e2 Remove an unused field in the AST.
The try_index of catch clauses was set but never read.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24465 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 12:36:44 +00:00
fschneider@google.com 7e71783df6 Support type arguments for allocation sinking in certain conditions.
The type arguments are treated like a normal field that is initialized
with the type arguments passed to the allocation stub. This CL restricts
the optimization to the case where no instantiator is passed
(instantiator == kNoInstantiator). In this case the type arguments are
either a constant or loaded from a field.

Also: improve variable liveness analysis by pruning partially dead
variables from the environment. At the beginning of each block, all 
variables that are _not_ in live-in are replaced with null.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24459 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 09:20:46 +00:00
fschneider@google.com b76b3bbbf4 Correctly deal with method invocation of a getter.
If getter lookup succeeds, but getter invocation throws
an exception, the result is the thrown exception and
not as previously noSuchMethod invocation.

BUG=https://code.google.com/p/dart/issues/detail?id=11512
TEST=tests/language/method_invocation_test.dart
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24457 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 08:44:00 +00:00
iposva@google.com 11632110c6 - Revert r24441 until issues found have been addressed.
Review URL: https://codereview.chromium.org//17769004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24443 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 23:38:45 +00:00
iposva@google.com ddc3e13f8a - Trial balloon for removal of argument definition test.
This change removes the support for the ? operator.

R=asiva@google.com, hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24441 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 23:04:19 +00:00
srdjan@google.com f21ae73ae9 Fix bot redness: max_calls can be zero if no call was actually executed.
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24438 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 22:53:45 +00:00
srdjan@google.com 7defd2255c Use call counts to determine which static calls to inline.
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24436 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 22:12:49 +00:00
srdjan@google.com 7d945c593a Remove skip_static_calls_ as it uses an obsolete way to check for uncalled static calls. Will be replaced by ICData tracking.
Add two different PCDescriptors to differentiate between optimized and unoptimized static calls (the former loads args. descr, the later loads ICData before calling).
Populate static call's ic_data field when optimizing.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24433 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 21:31:37 +00:00
zra@google.com 5bf5a92064 Fixes bugs in arm and mips intrinsifier.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24427 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 18:58:47 +00:00
vegorov@google.com 370a99eda4 Refactor load forwarding pass to use a Place abstraction.
Place describes a location that code can load from or store to.

Start forwarding loads through phis.

Previously load forwarding operated directly on load instructions which complicated certain things e.g. implementation of a hash map had to allow looking up a load instruction by store instruction, forwarding through phis might have required introducing synthetic load instructions to be put into the map.

R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24426 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 18:50:26 +00:00
asiva@google.com 010c23dc7c Fix Dart_GetType to get the correct number of type arguments.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24422 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 17:25:35 +00:00
fschneider@google.com b8db2f0aba Inline object constructor already in the method recognizer.
The call is replaced with "return null". This allows us to always
inline calls to "Object." without extra overhead in the generic
flow graph inliner.

R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24391 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-25 10:56:44 +00:00
rmacnak@google.com ed4fbd6255 Removed dead code: ConsumeIdentChar
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24377 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 23:47:00 +00:00
johnmccutchan@google.com db9f4d4ef7 Remove --disable_privacy
BUG=https://code.google.com/p/dart/issues/detail?id=11493
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24374 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 22:45:12 +00:00
asiva@google.com 8e27430ddd - Create isolate specific resuable handles and use them in the hot lookup paths.
- Create a ResuableHandleScope class which ensures that we do not end up
  recursively reusing handles leading to corruption.

This change shows Dart2JSCompileAll runtime change from 739931 to about
645035 on my local machine.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24373 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 22:41:01 +00:00
johnmccutchan@google.com 83230d2acc Preallocate objects in Dart::InitializeIsolate not in Api::CheckIsolateState
BUG=https://code.google.com/p/dart/issues/detail?id=11396
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24371 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 22:12:53 +00:00
zra@google.com 8edda78ccc Enables more tests for SIMMIPS.
. Fixes register allocation bugs
. Implements float <-> double conversion in assembler and simulator.
. Fixes floating point argument passing for simarm and simmips,
  and floating point return for simarm, and adjusts tests to match.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24365 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 20:16:16 +00:00
zra@google.com 6ea08a30af Allows exception object to be null in simarm and simmips.
Also, updates status files.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24361 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 18:38:46 +00:00
fschneider@google.com 0bf7251d1a Reland: Optimizing noSuchMethod invocation with no arguments.
This is the same CL as https://codereview.chromium.org/17315008/ with
one bug fixed:

If a method is invoked with a mismatching number of arguments, we don't
add a no-such-method-dispatcher function since the dispatcher currently
can only invoke noSuchMethod and would not work if the method
is invoked with correct arguments at a later point.

I extended the test to cover that case.

TEST=tests/language/no_such_method_dispatcher_test.dart
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24351 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 17:18:51 +00:00
vegorov@google.com 35ce4d245f Ensure that allocation sinking candidates are classified as not-aliased before final load forwarding.
R=fschneider@google.com
BUG=dart:11436

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24325 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 12:16:10 +00:00
srdjan@google.com fa7817bf79 Change static calls in unoptimized code to always call via a stub. Using ICData, the call count of static calls is collected as well.
TODO: Use call frequency to guide inlining.

R=asiva@google.com, hausner@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24307 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-21 23:35:10 +00:00
zra@google.com 06abf98b1f In FiftyThreeBitOverflow, stores overflowing value as a string.
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24295 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-21 16:43:43 +00:00
fschneider@google.com 48555c83ac Back out r24266 to investigate dartium test failure.
TBR=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24284 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-21 11:56:32 +00:00
fschneider@google.com ab1981b421 Optimizing noSuchMethod invocation with no arguments.
On each call that triggers a noSuchMethod invocation we 
attach a custom dispatch function that allocates the 
invocation object and invokes noSuchMethod. This dispatcher
is compiled and optimized like a normal Dart function.

Similar to method-extractors, these implicit dispatchers
do not show up as normal functions.

As a first step this CL only handles invocations of getters
and methods with no like o.foo or o.foo().  This CL gives
a >25x speedup of such noSuchMethod invocations. Calls with
multiple arguments still go through the slow path.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24266 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-21 07:31:51 +00:00
lrn@google.com 0c90061029 Move FiftythreeBitOverflowError to VM-only patch file.
The class is not meaningful in the core library, and should go away once
dart2js has integers.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24265 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-21 07:31:48 +00:00
johnmccutchan@google.com b7003f166b Stop unwanted class finalization when using dart:io HttpClient from builtin.dart
BUG=11232
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24252 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-20 20:51:14 +00:00
asiva@google.com 16c945cb88 Minor cleanups to use null_array(), null_object() and null_string() handles.
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24247 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-20 19:49:30 +00:00
srdjan@google.com 47de186e76 Store arguments descriptor in ICData. Remove loading of arguments descriptor at unoptimized call site (the ones using ICData).
R=asiva@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24239 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-20 16:29:39 +00:00
kmillikin@google.com 632ac9f2c9 Fix a bug in graph construction for for loops.
A refactoring in SVN r24088 introduced a bug in for loops.  Loops with
continue in the body and an empty update expression list will lose the
edge from the continue to the loop entry.

R=fschneider@google.com
BUG=11375

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24214 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-20 10:17:34 +00:00
zra@google.com 4c0268f31e Removes references to LIB_DIR from gyp files.
This eliminates the cirular dependency warnings from make.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24206 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-19 22:33:57 +00:00
asiva@google.com 106b0847fd Fix for issue 11262.
- Add Dart_InstanceGetType
- Wire Dart_New, Dart_Invoke and Dart_[G|S]etField to use types

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24195 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-19 18:20:55 +00:00
regis@google.com 68041e2d0d Fix more register allocation bugs in optimized code on ARM.
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24191 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-19 16:21:27 +00:00
vsm@google.com 9ddec8e9a1 Add Dart_Allocate to the C++ API
This change allows us to allocate Dart objects from C++ without
invoking a constructor.  In turn, it allows us to declare Dartium DOM
types with no public generative constructor.

Note, the current constructor has to be public as dart:html Element is
subclassed by dart:svg SvgElement (and eventually by user defined
custom elements as well).  This leads to unfortunate holes such as: https://code.google.com/p/dart/issues/detail?id=11277

This should also give a modest boost in DOM perf as the existing
constructor does absolutely nothing.

BUG=11277
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24189 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-19 15:48:23 +00:00
kmillikin@google.com 0104b48892 Fix a small bug in trace printing for discovered loops.
Loop blocks were printed with their preorder number, which is hard to
correlate to the graph.  Use the block id instead.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24184 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-19 13:56:48 +00:00