Commit Graph

13143 Commits

Author SHA1 Message Date
srdjan@google.com 04fc29c7e1 Optimize function at its entry instead of at exit.
The code can be patched if it should not be executed any longer.
The code can be now patched at other location than at entry, the requirement is still that patching code does not overwrite an inlined object.
Intrinsic methods that do not have a fall through cannot be patched.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16897 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-10 00:28:57 +00:00
vegorov@google.com f115552d29 Constant propagator should revisit phis when it visits predecessor block.
Phi's value depends both on its inputs and reachability of join's predecessors. Thus it is essential to revisit phi when predecessor becomes reachable.

R=kmillikin@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16847 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-09 12:27:46 +00:00
floitsch@google.com b89f3c09c9 Enable "part of" for the async library.
Review URL: https://codereview.chromium.org//11820024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16846 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-09 11:23:54 +00:00
hausner@google.com e8a293c05a Allow optimized code when debugger is active
The debugger allows the VM to optimize code unless there is a breakpoint inside the
function. Whenever a new breakpoint is set (explicitly or implicitly by stepping)
all optimized code is discarded.
Review URL: https://codereview.chromium.org//11780005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16815 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-08 18:57:19 +00:00
fschneider@google.com 87a3a4b479 Support immediate and memory operands for PushArgumentInstr in optimized code.
If a value is a constant or stored on the stack this change avoids loading it into a
new register before pushing it.
Review URL: https://codereview.chromium.org//11791051

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16806 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-08 16:51:57 +00:00
vegorov@google.com 34f1a0795a Delay canonicalization of 1.0 * N until after representation selection.
This allows to avoid Unbox(Box(N)) pair if N is an unboxed double phi:

var N = 0.0;
while (X) N += 1.0 * N;

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16799 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-08 14:27:09 +00:00
vegorov@google.com 05078902d1 Canonicalize away simple arithmetic equivalences.
R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16795 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-08 13:32:23 +00:00
cshapiro@google.com 16427fe901 Fix confusion over on-disk object id sizes during instance serialization.
To avoid confusion in the future the WritePointer methods have been
renamed to the more descriptive WriteObjectId.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16782 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-08 02:53:14 +00:00
srdjan@google.com 8c35ce1852 Bug fix and improvements to clamped arrays.
Review URL: https://codereview.chromium.org//11794038

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16774 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-08 00:58:58 +00:00
cshapiro@google.com b8a784591f Restore the bytes promoted counter.
Review URL: https://codereview.chromium.org//11783015

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16764 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 23:16:44 +00:00
regis@google.com 34df344e36 Fix context chaining to prevent memory leak (issue 7681).
Review URL: https://codereview.chromium.org//11806003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16757 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 22:24:11 +00:00
srdjan@google.com 020b5893db Cleanups.
Review URL: https://codereview.chromium.org//11801023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16756 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 22:13:47 +00:00
iposva@google.com dbb7d249fb - Preallocate non-named ArgumentsDescriptors with a small amount of parameters.
Review URL: https://codereview.chromium.org//11773008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16734 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 18:36:39 +00:00
vegorov@google.com 114fd4280c Do ComputeUseLists after ApplyClassIds.
Applying class ids invalidates use lists.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16731 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 17:06:50 +00:00
vegorov@google.com 96812c4cff Recognize List.fixedLength factory constructor.
R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16717 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 15:44:23 +00:00
fschneider@google.com d5f2305515 Support scalar lists in array bounds check elimination.
This allows to eliminate bounds checks for scalar lists in loops like:

for (var i=0; i < a.length; i++) {
  a[i]
}
Review URL: https://codereview.chromium.org//11665005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16716 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 15:43:35 +00:00
vegorov@google.com 774187fb8c Ensure that LowerBound and UpperBound return overflow marker when overflow occurs.
R=fschneider@google.com
BUG=dart:7617

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16711 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 15:33:36 +00:00
vegorov@google.com 75190542c3 Fix Intrinsifier and MethodRecognizer to correctly match private getters and setters.
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16701 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 14:51:24 +00:00
floitsch@google.com 4a7dfd2da3 Big merge from experimental to bleeding edge.
Review URL: https://codereview.chromium.org//11783009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16687 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 11:23:16 +00:00
kmillikin@google.com 309fcb1ba3 Fix incorrect desugaring of cascades.
Make use of the attractive and powerful way that the LoadLocal expression is
really a pair of an arbitrary statement and a local variable load.

BUG=dart:7494

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16684 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 10:03:17 +00:00
asiva@google.com 0a825a9ed7 Cleanup handles more efficiently, ensures we don't have to iterate over them
while visiting objects during GC.
- Add handle scopes during class finialization
- Add handle scopes to different stages of the compiler
- Ensure that we iterate only to the top of scoped handles while visiting objects
Review URL: https://codereview.chromium.org//11778013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16683 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-07 05:44:20 +00:00
srdjan@google.com 0af16251b5 Intrinsify Uint8ClampedArray's store and load indexed, inline load indexed.
Review URL: https://codereview.chromium.org//11783006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16666 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-05 01:07:32 +00:00
hausner@google.com 016b84310a Handle optimized code blocks in debugger stack trace
Removed an old restriction that debugger activation frames
are expected to be non-optimized code. Fixes bug 5944.
Review URL: https://codereview.chromium.org//11776007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16665 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-05 00:46:23 +00:00
regis@google.com 47e08870ca Support Null type in Class::TypeTest and simplify Instance::IsInstanceOf.
Review URL: https://codereview.chromium.org//11785006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16664 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-05 00:45:52 +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
asiva@google.com 92dee42dcc Do not emit pointer information for embedded singleton VM Isolate objects while generating code. These embedded objects do not need to be visited during GC.
Review URL: https://codereview.chromium.org//11722026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16645 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-04 18:38:00 +00:00
iposva@google.com 3e367a12d8 - Consolidate verbose-gc output to be a single line which can be imported easily into spreadsheets.
Review URL: https://codereview.chromium.org//11734028

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16624 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-04 02:15:36 +00:00
asiva@google.com 4c069867e4 - Make Boolean 'true' and 'false' singleton VM isolate objects.
- Change all uses of it
Review URL: https://codereview.chromium.org//11745022

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16623 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-04 01:52:05 +00:00
meh@google.com 121c85b7ca Fix pprof VM flag description
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16593 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-03 02:11:03 +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
iposva@google.com e988dec7e7 - Mark huge methods are not-optimizable.
Review URL: https://codereview.chromium.org//11722006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16588 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-02 22:09:28 +00:00
asiva@google.com 7022b39e35 Convert all symbol accessors to return read only handles so that it is not necessary to create a new handle in the code that uses it.
Added a few more strings to the symbols list.
Review URL: https://codereview.chromium.org//11667012

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16584 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-02 19:31:59 +00:00
regis@google.com cb27634842 Remove NoSuchMethodErrorImplementation class and use NoSuchMethodError from core
lib instead.
Review URL: https://codereview.chromium.org//11712002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16583 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-02 18:52:28 +00:00
hausner@google.com a2d682d1d8 Improve line info accuracy in debugging
Review URL: https://codereview.chromium.org//11696005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16550 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-28 18:51:58 +00:00
srdjan@google.com 818cd3bdc9 Fix instance of test for classes that implement call.
Review URL: https://codereview.chromium.org//11698002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16541 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-28 16:16:49 +00:00
antonm@google.com b395961a8d Fix a warning.
Most probably description needs some love too.

TBR=meh@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16538 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-28 10:00:26 +00:00
tball@google.com 18e748d0b3 Implemented class literals in the VM.
Review URL: https://codereview.chromium.org//11633054

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16530 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-27 23:45:40 +00:00
iposva@google.com 5b3aa7efab - Fix comments and formatting.
Review URL: https://codereview.chromium.org//11646006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16528 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-27 23:25:43 +00:00
srdjan@google.com 97a49b6099 Small code cleanup in instanceof test.
Review URL: https://codereview.chromium.org//11674011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16519 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-27 19:23:09 +00:00
srdjan@google.com 84d5fb4614 Sort checks by counts before emitting test-and-call polymorphic instance calls.
Review URL: https://codereview.chromium.org//11602014

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16517 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-27 18:24:03 +00:00
hausner@google.com 6b51661ec2 Fix bug 5944
Ensure both closureized and regular function are deoptimized when
setting a breakpoint. 
Review URL: https://codereview.chromium.org//11669017

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16464 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-22 01:09:44 +00:00
regis@google.com d273efd45f Turn compile time errors related to missing getters and setters into invocation
of noSuchMethod or into throwing of NoSuchMethodError according to spec.
Return result of InvocationMirror.invokeOn to caller.
Fix various tests.
Review URL: https://codereview.chromium.org//11669015

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16463 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-22 00:40:46 +00:00
meh@google.com 432978367e Clean up CodeObservers
Move CodeObserver registration to the OS abstraction.
Move Pprof logic to the OS abstraction.
Remove pprof from VM tests because now pprof logic is in the VM itself.
Add DISALLOW and AllStatic to Code Observers where appropriate.

Previous review: https://codereview.chromium.org/11572032/

BUG=7321

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16462 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-22 00:23:25 +00:00
meh@google.com 2c7dfbf982 Implement a native identical function in the VM.
Returns true if objects are the same instance.
Adds an identical closure test (disabled for dart2js pending https://chromiumcodereview.appspot.com/11612022/).

BUG=7378

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16461 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-22 00:12:35 +00:00
meh@google.com 2e1ecb18fe Revert "Implement a native identical function in the VM."
This reverts commit 88a0845aedeed15106dcfc8c658ebed37e7e85dd.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16460 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 23:58:48 +00:00
hausner@google.com 2d02548fb0 Ignore nested breakpoints
Fixes issue 5945.

When stepping into core library code, it is possible to hit a breakpoint
recursively when the debugger executes dart code to evaluate values.

This change ignores nested breakpoint and exception events.
Review URL: https://codereview.chromium.org//11644085

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16458 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 23:37:26 +00:00
meh@google.com 225d9a724b Implement a native identical function in the VM.
Returns true if objects are the same instance.

BUG=7378

Committed: https://code.google.com/p/dart/source/detail?r=16453

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16456 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 22:42:21 +00:00
meh@google.com 51dc889ad7 Revert "Implement a native identical function in the VM."
This reverts commit 93e88749af841a1b381db6351a7196d35edd554e.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16454 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 21:22:43 +00:00
meh@google.com 5e068fec8f Implement a native identical function in the VM.
Returns true if objects are the same instance.

BUG=7378

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16453 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 20:34:42 +00:00
meh@google.com a1bb3a9e51 Revert "Implement a native identical function in the VM."
This reverts commit c876c29bf4caa810bfc03c8b8908588168d634fe.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16451 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 20:08:59 +00:00