Commit Graph

6762 Commits

Author SHA1 Message Date
turnidge@google.com afb008d480 Edits to protocol.md.
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39433 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 22:09:58 +00:00
johnmccutchan@google.com fbb31fb54d Tweaks to perf jitdump support
BUG=
R=asiva@google.com, vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39427 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 20:43:54 +00:00
turnidge@google.com 23bed26ecb Initial commit of service/protocol.md
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39425 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 20:12:18 +00:00
turnidge@google.com c48496b873 Refactor isolate startup code in preparation for making isolate spawning more truly non-blocking.
Instead of passing a startup message to the new isolate, pass all
necessary information in to _startIsolate directly.  The new isolate
sends its control port and capabilities back to the parent.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39423 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 19:57:09 +00:00
iposva@google.com 03e8b14ed9 - Address review comments from https://codereview.chromium.org/474913004/
- Clearly mark overrides of ThreadPool::Task::Run as virtual.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39418 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 18:37:29 +00:00
zra@google.com 77157f09eb Moves SingleStepHandler runtime calls
to match the NArgsCheckInlineCache stub.

Gives a small improvement in unoptimized code.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39417 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 18:21:47 +00:00
koda@google.com 015211b474 Track per-class promotion stats.
This will be useful for allocation policy and heap growth policy.

Also include these stats in the VM service.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39415 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 17:57:12 +00:00
iposva@google.com 9cc85d0ca2 - Address code review comment from https://codereview.chromium.org/488943002/
Review URL: https://codereview.chromium.org//468913011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39406 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 14:11:00 +00:00
iposva@google.com 131a381020 - Stop-the-world sweep uses pre-locked free list access.
Review URL: https://codereview.chromium.org//488943002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39399 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 07:11:17 +00:00
iposva@google.com 4835041da9 - Account for number of pending tasks in old-space collections.
- Protect access to the free lists.
- MutexLocker/MonitorLocker do not need to be StackResources.

R=koda@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39396 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 03:54:14 +00:00
hausner@google.com 549f9d467c Detect compile errors when setting breakpoint
When the VM is started with the —-debug option, it compiles the main
function eagerly to set a one-shot breakpoint. So far we silently
dropped errors during the compilation, which is wrong. This change
propagates the error to the caller.

Fixes issue https://code.google.com/p/dart/issues/detail?id=20558

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39390 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 22:34:07 +00:00
hausner@google.com 0bbf6c5b16 Runtime support for evaluation of static field initializer expressions
Eliminates the generation of field initializer functions by the parser.
Adds a runtime call that creates a one-shot function to evaluate the
initializer of a static field. The runtime function gets called from
the implicit static getter function for the field.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39387 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 21:53:44 +00:00
johnmccutchan@google.com c1a7a9b1d2 Update to latest jitdump file format
BUG=
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39384 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 21:28:40 +00:00
koda@google.com c22d3cf74a Avoid UTF-8 decoding in num.toString.
4-7% speedup on SplayHarder.

Introduce _Num class to make Dart and VM hierarchies match and enable sharing code between integers and doubles.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39383 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 21:15:39 +00:00
mlippautz@google.com 661ed0608f Fix leftovers from await CL.
* Regenerating snapshot and commiting using SVN
* int -> int32_t (format %d stays, as similar examplces in object.cc/.h exist)



git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39351 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 20:31:26 +00:00
mlippautz@google.com 8cba29ad18 Fix broken build due to integer formatting.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39346 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 18:53:08 +00:00
mlippautz@google.com 5f02ceed86 Introduce await.
This CL adds basic infrastructure needed for awaitable expressions. Implementation of continuations is not part of this CL.

Expressions containing ``await'' are transformed into a series of operations on intermediates, effectively getting rid
of the temporary expression stack. Currently only expressions evaluating to an actual value (read: non-future) are supported.

Also, not all kinds of statements support awaitable expressions yet.

Missing:
 * Capturing all (needed) variables
 * Continuations (connecting a preamble with await statements; re-adding the closure to the run queue)

BUG=
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39345 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 18:41:12 +00:00
fschneider@google.com 87ef61e055 Fix polymorphic inlining of non-native recognized methods.
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39335 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 15:58:54 +00:00
koda@google.com 5d5deec4e6 Optional binary payloads in VM service events.
Allow an event to send a binary blob in addition to its JSON message.
For testing, add _Echo event type that is triggered by an _echo/event request.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39332 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 15:35:03 +00:00
vegorov@google.com a8e81404e7 Don't check for reaching type in the RangeAnalysis::GetRange.
Canonicalizer rewrites

v1 = _Int32Array._new(v0)
v2 = v1.length
use(v2)

as

v1 = _Int32Array._new(v0)
use(v0)

without changing reaching type of v0 to Smi at the use.

This means right now we can't expect that uses at Smi operations have propagated smi type.

BUG=
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39331 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 15:04:46 +00:00
vegorov@google.com 336dbd4cbf Reland r39293.
Switch to a fix-point based range analysis to improve its precision.

Dominator based algorithm was very imprecise for loop phis.

Use widening to ensure fast convergence and narrowing to improve precision.

Fixed compared to r39293:

Type propagation is more sophisticated now compared to the time
when range analysis was originally implemented and is able to derive Smi-ness
from more than just CheckSmi instruction (e.g. GuardFieldClass). This creates
situations when use's reaching type is Smi but definition itself is not a Smi
and thus will never have range assigned to it.

It is incorrect to treat ranges of such uses as unknown (_|_), because unknown
means "not yet computed". Instead we must use the widest possible approximation:
full smi range.

InferRange methods were rewritten to use a newly introduced GetRange helper
instead of accessing value()->definition()->range() directly.

As a side-effect we no longer need to insert artificial constraints after CheckSmi instructions.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39327 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 11:06:27 +00:00
johnmccutchan@google.com 3299ed4a81 - Add VMMetric and some sample metrics
- Per isolate:

* heap.old.used
* heap.old.capacity
* heap.old.external
* heap.new.used
* heap.new.capacity
* heap.new.external

- VM:

* vm.isolate.count

- New metrics service namespace: /metrics/vm/...

R=koda@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39305 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-15 17:35:00 +00:00
vegorov@google.com f2c3859068 Revert "Switch to a fix-point based range analysis to improve its precision."
This reverts r39293.

The dart2js part of the tree is on fire.

TBR=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39296 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-15 15:44:31 +00:00
vegorov@google.com 2b42387699 Switch to a fix-point based range analysis to improve its precision.
Dominator based algorithm was very imprecise for loop phis.

Use widening to ensure fast convergence and narrowing to improve precision.

BUG=
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39293 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-15 15:29:31 +00:00
fschneider@google.com b0a1da2971 Fix bugs from my last CL in intrinsics code.
x64 and ARM64: No PP register is set up in intrinsics code (use kNoPP instead)

x64: Can't use near jump for slow-path jump because of code size.

Removed duplicate call to update allocation stats on all platforms.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39289 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-15 14:06:04 +00:00
fschneider@google.com 6fe6eb46be VM: Small cleanup in optimizer and intrinsics code.
1. Use macro-assembler instructions for allocation in intrinsics.

2. Refactor two helpers in the optimizer that are almost identical.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39287 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-15 12:52:51 +00:00
rmacnak@google.com ccf8156e82 Fix clang compilation error in jscre.
../../dart/runtime/third_party/jscre/pcre_internal.h:412:5: error: implicit conversion of NULL constant to 'int' [-Werror,-Wnull-conversion]
    ASSERT(isBracketStartOpcode(*opcodePtr) || *opcodePtr == OP_ALT);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../dart/runtime/third_party/jscre/pcre_internal.h:86:72: note: expanded from macro 'ASSERT'
#define ASSERT(x) if (!(x)) *(reinterpret_cast<volatile int*>(NULL)) = NULL

BUG=http://dartbug.com/19324
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39276 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 23:19:05 +00:00
johnmccutchan@google.com 1fdd5af122 Update path to Observatory in HACKING.txt
BUG=
R=koda@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39273 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 22:42:52 +00:00
asiva@google.com bf9906cf51 Revert r39246 which reverted r39101
R=koda@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39272 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 22:06:54 +00:00
asiva@google.com 98c5d02664 Ensure that hash for a symbol is not set to 0 when it is made external.
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39268 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 21:17:40 +00:00
regis@google.com 1d9986e5f5 Use class id directly in snapshot reader and avoid object store access.
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39265 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 20:54:16 +00:00
johnmccutchan@google.com e182b3b5a9 Fix build by adding missing methods for MIPS
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39261 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 18:35:24 +00:00
johnmccutchan@google.com 342e5c8e35 Inline Int32x4 constructor
(avoids a runtime call for every websocket message in dart:io)

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39255 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 17:27:49 +00:00
zra@google.com 5d3f4708ec Fixes to support ARMv5 lego mindstorm.
1. Deopts on division when neither vfp nor idiv are present.
   In a subsequent CL, I can add a leaf runtime call for this.

2. Uses a different PC read offset in STR and STM instructions.
   On ARMv5 and earlier, the PC read offset is 8 except in STR
   and STM instructions, where it is implementation defined. On
   lego mindstorm it is 12. This requires changing
   kEntryPointToPcMarkerOffset to be a function.

3. Uses a dummy struct to compute the size of a compressed
   pc descriptor to avoid alignment issues. sizeof(PcDescriptorRec)
   is 16 on ia32 and arm. Subtracting sizeof(int16_t) gives 14,
   which creates alignment problems on ARM, i.e. poor performance on
   ARMv6 and later, and wrong results on ARMv5 and earlier.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39250 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 15:42:00 +00:00
ricow@google.com c92b022598 Revert revision 39101 "Avoid linear search for function lookup."
This is causing breakage of the pop pop win sample.

For details see issue 20517

This revert had a minor merge conflict for a todo comment

R=kasperl@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39246 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 12:39:07 +00:00
iposva@google.com 2a15350ce5 - Fix Windows standalone build again.
Review URL: https://codereview.chromium.org//473783002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39239 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 05:13:55 +00:00
iposva@google.com e57e60c300 Fix Windows Dartium build:
- Cannot access dart::bin::* from Dartium build.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39238 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 05:00:37 +00:00
iposva@google.com 44acd04e33 - Make sure static in bin/ is initialized.
Review URL: https://codereview.chromium.org//469993002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39234 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 00:23:42 +00:00
iposva@google.com 5a383e7add - Make sure that the threads for dart::bin are in the correct namespace.
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39233 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 00:06:04 +00:00
regis@google.com 861f4a57d9 Add support for TypedData in full snapshot.
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39232 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 23:21:50 +00:00
koda@google.com cc2b9ab0c4 Use function names as service IDs, rather than indices.
This gives more descriptive ids and removes dependency on implementation details of Class.

Special kinds of functions still use indices and oddballs still fall back to the object ring.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39217 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 19:59:15 +00:00
zra@google.com f82d4e2b7f Fixes typo in mips causing test failures.
Review URL: https://codereview.chromium.org//475503002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39216 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 19:36:18 +00:00
zra@google.com 88ca926b7e Adds pthread.h include to fix Android build.
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39212 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 18:18:47 +00:00
koda@google.com 13f2772897 Remove unintentionally added symlink.
BUG=dart:20489

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39209 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 17:40:24 +00:00
mlippautz@google.com 8285db5d29 Fix call to completer for async closures.
Addressing comments from https://codereview.chromium.org/460763002/

BUG=
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39207 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 17:14:44 +00:00
srdjan@google.com 5d27559bd4 Fix issue 20476: creating multiple LocalVariables with same name (finally_ret_val35), confuses the compiler. token_pos is not enough to guarantee unique name for inlined finally-s. Instead of uniques names per inlined return node, use one function level local.
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39206 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 17:03:49 +00:00
koda@google.com 5ca1d8a984 Skip Observatory tests on dart2dart.
BUG=dart:20487
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39205 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 16:57:04 +00:00
fschneider@google.com 36c848d1d7 VM: Optimized context allocation on all platforms.
This change generate inline code for context allocation and makes
the stores to initialize the parent pointer and the context variables
explicit in the optimized flow graph. This allows dead store elimination
to eliminate those stores.

Before, we only had inlined context allocation for ia32.

Furthermore:
* Added an assertion that the exit label of slow-path code
is bound when emitting deferred code. This used to cause random crashes
if forgotten.

* Fixed a bug in allocation stats on ARM.

BUG=dartbug.com/17238
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39202 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 15:49:01 +00:00
fschneider@google.com 881060b433 Fix type propagation for signature classes.
After I enabled nullability tracking for checked mode type assertions,
we need to fix type propagation for signature classes: We can't use
the asserted type to infer a cid for those since it may cause unnecessary
deoptimizations.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39197 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 13:45:01 +00:00
fschneider@google.com 54a7410866 Fix bug with CHA dependencies by recording a set of classes for registering code.
CHA is not only used with the receiver class, but also with other classes
when doing type propagation. The optimized code has to be registered with
all classes that are affected by CHA so that deoptimization occurs whenever
the set of subclasses changes for these classes.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39194 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 12:43:03 +00:00