Commit Graph

1982 Commits

Author SHA1 Message Date
Régis Crelier 3d756ec4ab [VM runtime] In strong mode, restrict subtyping rules of callable instances (fixes #32154).
Update kernel status files.

Change-Id: I2bf6097b5229d80cc90baed92fd8dcc750667b23
Reviewed-on: https://dart-review.googlesource.com/41482
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-14 21:48:27 +00:00
Jens Johansen 90a7599d05 [vm] Make mint constants use hash set instead of plain list.
This the second part of fixing #32077 - dealing with mints.

Example:
The runtime of a program adding 100,000 different mints to
a list and prints the last one:
Before: ~12.5 seconds
Now: ~1.2 seconds.

Change-Id: Iad6da1749886bab4e4d3941748cdbab51661c2c3
Reviewed-on: https://dart-review.googlesource.com/41161
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-02-14 11:25:42 +00:00
Jens Johansen 9fbbd2dd41 [vm] Make double constants use hash set instead of plain list.
This the first part of fixing #32077 - dealing with doubles.

Example:
The runtime of a program adding 100,000 different doubles to
a list and prints the last one:
Before: ~12 seconds
Now: ~1.3 seconds.

Change-Id: I7f64b8763fdd37dae5d32d3275f8b9c991d4e43a
Reviewed-on: https://dart-review.googlesource.com/40300
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-12 17:17:42 +00:00
Vyacheslav Egorov 400c6c19e9 [vm/kernel] Reformat uris of core-library scripts when reporting exceptions.
Currently front-end embeds absolute paths to build time locations into
Kernel binaries. Reporting those to user make stack trace unreadable and
also breaks stack trace filters that attempt to filter out implementation
frames from dart:async:

#1      _RootZone.runUnary (file:///Users/vegorov/src/dart/sdk/sdk/lib/async/zone.dart:1381:54)

same frame in legacy mode looks like this:

#1      _RootZone.runUnary (dart:async/zone.dart:1381)

This CL changes stack frame formatting so that even in Dart 2 mode result looks
closer to legacy mode result.

This is a workaround for https://github.com/dart-lang/sdk/issues/32087

Change-Id: Ic69cb039ff7d40d0e8e5340a9c1dc067427479ea
Reviewed-on: https://dart-review.googlesource.com/40522
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2018-02-12 15:42:47 +00:00
Régis Crelier e64f37614e [VM runtime] Fix TypeArguments::IsUninstantiatedIdentity() not to return true
for a still unfinalized type argument vector (fixes #31944).
Update status files.

Change-Id: Ib603cd702891dc93775a5fbd09c341bb36922ab3
Reviewed-on: https://dart-review.googlesource.com/39855
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-02-08 02:03:24 +00:00
Ryan Macnak 1451cfd741 [vm] Add Dart_NewListOfType to the embedding API.
Change-Id: I4729d9b39b0902ad5b77de2acd9f1e867134a619
Reviewed-on: https://dart-review.googlesource.com/39840
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-02-07 22:05:30 +00:00
Régis Crelier 811310f5bd [VM] Remove obsolete flag ignore_patch_signature_mismatch.
Change-Id: Ia21f868e4983e8d72050b5fe4e32d66ae2923318
Reviewed-on: https://dart-review.googlesource.com/36061
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-01-19 22:02:09 +00:00
Samir Jindel 42a639973d [kernel] Support for partial tearoff type application operator in the VM, take 3.
The original change is available in patchset 1.
The changes since then are just status file updates.

Change-Id: I0c45c4b09a187bdd60c6a38bf23f6b7a0cf80c97
Reviewed-on: https://dart-review.googlesource.com/34400
Reviewed-by: Jens Johansen <jensj@google.com>
2018-01-15 11:24:11 +00:00
Martin Kustermann 84e7bef26d Reland "[VM] Allow the inlining code to inline implicit getters even if a StaticCallInstr is used"
This also changes the implementation of Function::LookupImplicitGetterSetterField to **not** use
token positions for finding the right field, but rather the name.

Issue https://github.com/dart-lang/sdk/issues/31798

Change-Id: I418c89a1426c33b2bfa8adc00534511657af51f1
Reviewed-on: https://dart-review.googlesource.com/34141
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-01-12 17:18:29 +00:00
Jens Johansen 68c054d27f Revert "[kernel] Unrevert "Support for the partial tearoff type application operator in VM.""
This reverts commit 784ee768d8.

Reason for revert: Turns many kernel bots red.

Original change's description:
> [kernel] Unrevert "Support for the partial tearoff type application operator in VM."
> 
> The original revision is available in the first patchset.
> 
> Change-Id: I579b4b85a19ac17088eed050680a46df7ffc5c0a
> Reviewed-on: https://dart-review.googlesource.com/34102
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Martin Kustermann <kustermann@google.com>

TBR=kustermann@google.com,sjindel@google.com

Change-Id: I7262f9b578bf9991f1e79aacb88c446950c79bc7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/34340
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-01-12 08:44:05 +00:00
Samir Jindel 784ee768d8 [kernel] Unrevert "Support for the partial tearoff type application operator in VM."
The original revision is available in the first patchset.

Change-Id: I579b4b85a19ac17088eed050680a46df7ffc5c0a
Reviewed-on: https://dart-review.googlesource.com/34102
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-01-11 21:37:38 +00:00
Martin Kustermann 0ea33d4283 Revert "[kernel] Support for the partial type application operator in the VM."
This reverts commit 4f265395e0.

Reason for revert: A lot of failing precompilation builders.

Original change's description:
> [kernel] Support for the partial type application operator in the VM.
> 
> Change-Id: Ieaf5d936676a6e755dab69d70105dcce0bcbfdb6
> Reviewed-on: https://dart-review.googlesource.com/32540
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Régis Crelier <regis@google.com>
> Reviewed-by: Martin Kustermann <kustermann@google.com>

TBR=kustermann@google.com,sjindel@google.com,regis@google.com

Change-Id: Iac6a9fe7fb7467cab3818da99043d310d1981c67
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/33940
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-01-10 17:05:39 +00:00
Samir Jindel 4f265395e0 [kernel] Support for the partial type application operator in the VM.
Change-Id: Ieaf5d936676a6e755dab69d70105dcce0bcbfdb6
Reviewed-on: https://dart-review.googlesource.com/32540
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-01-10 13:57:28 +00:00
Ryan Macnak e14b3a86f0 Report errno on mprotect failure.
Bug: b/70275153
Change-Id: I81b868b25428b39835935846ba2c9f9f67b3e84d
Reviewed-on: https://dart-review.googlesource.com/33665
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-01-10 01:37:49 +00:00
Jens Johansen c48ddcb025 [kernel] Return null string as source if no source available
Fixes #31793.

Bug:
Change-Id: If3ecf67387087db6a36f736c0f259b49eb133391
Reviewed-on: https://dart-review.googlesource.com/32767
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-01-08 13:19:02 +00:00
Régis Crelier 2e3a4f8723 [VM] Ignore flag --error-on-bad-override in strong mode (fixes #31646).
Change-Id: Idabd0108a69b37a9181c6bb260a25b3ebae2ba63
Reviewed-on: https://dart-review.googlesource.com/32003
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-01-03 15:40:36 +00:00
Régis Crelier eb7454cb20 [VM runtime] Where possible, use constant cid instead of object store lookup to
recognize types.
Reorder checks for faster recognition of Future and FutureOr classes.

Change-Id: Id9e1c3a2e6c1fe274ac1d993f7a28271f207f48d
Reviewed-on: https://dart-review.googlesource.com/31282
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-12-22 20:34:45 +00:00
Régis Crelier b7b1054fda [VM runtime] Add comments and refactor code handling void as result type in
function subtype test.
No behavior change, only make code easier to read in strong vs non-strong modes.

Change-Id: I44b34ff5c9680270014db83633eb2ef1ed60491e
Reviewed-on: https://dart-review.googlesource.com/31284
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-12-22 17:11:14 +00:00
Régis Crelier 548d7dc8a3 [VM runtime] Properly treat Object and void as top types in strong mode type
tests.
Adjust status files.

Change-Id: I4360c0015cfbb97a5599882930810dbc7060d4c0
Reviewed-on: https://dart-review.googlesource.com/30701
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2017-12-20 20:55:59 +00:00
Jens Johansen 45a59597fc [kernel] Allow collection of token positions for unfinalized classes
E.g.
```
main() {
  new Foo();
}

class Foo {
  Foo() {
    print("hello from foo");
  }
}
```

debugging with --pause_isolates_on_start, the constructor (or anything else
in class Foo) would not be breakable from the Observatory interface.

This CL fixes that by collecting token positions from unfinalized classes.

Bug:
Change-Id: I93a20f3322b0a343a619625c71236b59c885cb7e
Reviewed-on: https://dart-review.googlesource.com/30441
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2017-12-20 11:59:47 +00:00
Régis Crelier 588cfcba3d [VM runtime] Shortcut type test when the type argument of FutureOr is Object,
dynamic, or void (fixes #31667).
Update status file.

Change-Id: Iaf2fe159cf9ae9be1124c68c01d05367c15a3d1b
Reviewed-on: https://dart-review.googlesource.com/30384
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-12-18 23:41:55 +00:00
Régis Crelier 8836b116f9 [VM runtime] Fix function subtyping in the optimizer (fixes #31591).
The optimizer uses the "is more specific than" relation to eliminate type tests.
In strong mode, the "is more specific than" relation is supposed to be identical
to the "is subtype of" relation. However, it is not quite true, and this is the
cause of this bug. In non-strong mode (Dart 1), the "is more specific than"
relation uses covariance for both result type and parameter types of functions.
In strong mode, we need covariance of result type and contravariance of
parameter types.
Added regression test and updated status files.

Change-Id: I6315643890db75213af6720aa99d8da7b15f99d6
Bug:
Reviewed-on: https://dart-review.googlesource.com/29900
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-12-15 23:56:33 +00:00
Samir Jindel 56ecbbde4b [kernel] Support 64-bit integer literals correctly in Fasta.
Bug:
Change-Id: Idfb037e79d247889fe6a7d9a9b475ca4f8637080
Reviewed-on: https://dart-review.googlesource.com/27800
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-12-13 20:35:19 +00:00
Ryan Macnak fda4ab3dbf [vm] Move the info_array for ObjectPool inline.
The info_array is needed to visit an ObjectPool's pointers, requiring the compactor to move the info_array's body before forwarding the ObjectPool's pointers. Moving the info_array inline remove this constraint on the compactor.

Also saves 3 words per ObjectPool modulo allocation size rounding.

Bug: https://github.com/dart-lang/sdk/issues/30978
Change-Id: I94de0e4b7356d46fb145efee7ab14abd7473eb4c
Reviewed-on: https://dart-review.googlesource.com/27480
Reviewed-by: Erik Corry <erikcorry@google.com>
2017-12-08 20:42:51 +00:00
Régis Crelier 17b5516143 [VM runtime] Fix omission in recent change 26720: Check if the tested instance
is of class Future, when test type is FutureOr.
This was missing only when testing an instance, not when testing a type or a
parameterized class.

Change-Id: I1609f6f7df80f15a8f36d18bf504df444dfbb928
Reviewed-on: https://dart-review.googlesource.com/27083
Reviewed-by: Régis Crelier <regis@google.com>
2017-12-07 03:10:29 +00:00
Régis Crelier a4bcdef9bd [VM runtime] In strong-mode, apply FutureOr subtyping rules (fixes #31377).
Change-Id: Id792eae9fbd08783443ec6341e17208f9e78e5f0
Reviewed-on: https://dart-review.googlesource.com/26720
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-12-07 00:19:27 +00:00
Régis Crelier 08b2294713 [kernel] In strong mode, change covariant parameter types to Object in the
implicit closure of a method compiled by kernel (fixes #31305).

Change-Id: Iabeee2e382bf07ff78645054e453e0bd1afd02ab
Reviewed-on: https://dart-review.googlesource.com/24362
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2017-12-01 18:00:16 +00:00
Samir Jindel f5fc335a4c [kernel] Check bounds of type arguments in strong mode.
Change-Id: I2cb230db322cc26fb62e932b40882200de38c3d4
Reviewed-on: https://dart-review.googlesource.com/24180
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-12-01 14:55:56 +00:00
Siva Chandra 702e4aecb8 Keep the line starts delta encoded in the VM heap as well - take 2
This reverts commit adf04d0ac6.

The original change used macros from stdint.h and it failed build on
the linux sdk bot:
https://uberchromegw.corp.google.com/i/client.dart/builders/dart-sdk-linux-be/builds/17348

In the newer version, constants from runtime/platform/globals.h are used
instead of the macros from stdint.h. Constants for int8 have been added as
they were not present already.

Change-Id: Ia4f27613fa5dca2cd6dbfeb37715ea70a85cec95
Reviewed-on: https://dart-review.googlesource.com/25083
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Siva Chandra <sivachandra@google.com>
2017-12-01 05:16:48 +00:00
Alexander Thomas adf04d0ac6 Revert "Keep the line starts delta encoded in the VM heap as well."
This reverts commit cd4e5ee866.

Reason for revert: This broke the 32bit Linux SDK build. 

Original change's description:
> Keep the line starts delta encoded in the VM heap as well.
> 
> The line starts in the kernel binary are delta encoded. By decoding and
> storing them as int32 values, we are unneccesarily bloating the VM heap.
> This change keeps the line starts delta encoded in the VM heap as well.
> This brings down the core snapshot size by 275KB (but will of course
> affect the debug performance.)
> 
> Bug:
> Change-Id: I77769efe7339484096d04c37180367adf96e51f4
> Reviewed-on: https://dart-review.googlesource.com/22304
> Commit-Queue: Siva Chandra <sivachandra@google.com>
> Reviewed-by: Siva Annamalai <asiva@google.com>

TBR=sivachandra@google.com,asiva@google.com

Change-Id: I6e78bd510de7033d8583c089c00b5b261fdf69c1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/24800
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2017-11-30 09:32:29 +00:00
Siva Chandra cd4e5ee866 Keep the line starts delta encoded in the VM heap as well.
The line starts in the kernel binary are delta encoded. By decoding and
storing them as int32 values, we are unneccesarily bloating the VM heap.
This change keeps the line starts delta encoded in the VM heap as well.
This brings down the core snapshot size by 275KB (but will of course
affect the debug performance.)

Bug:
Change-Id: I77769efe7339484096d04c37180367adf96e51f4
Reviewed-on: https://dart-review.googlesource.com/22304
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-11-30 08:00:52 +00:00
Erik Corry 374f31bf9c [VM] Remove assert that causes --disassemble-stubs to fail
R=mkustermann@google.com

Using the --disassemble-stubs option on Debug builds of IA32
has been broken for some time (months). This lets it run.
Manually verified that it is correctly printing "this stub"
now.
Bug:
Change-Id: Ieedc17a7141c0c4d8dc1c002882ffd92fdce251d
Reviewed-on: https://dart-review.googlesource.com/23801
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
2017-11-27 15:38:11 +00:00
Ryan Macnak d366f9619a [vm] Toward deterministic builds.
- Remove random build-id.
 - Replace build time in embedded version string with commit time.
 - Remove timestamps from Observatory tarball.
 - Zero-initialize skipped bytes in snapshot streams.
 - Fix uninitialized fields in PatchClass, Script and Library.
 - Disable (under flag) random identity hashes and concurrent GC.

Bug: https://github.com/dart-lang/sdk/issues/31427
Change-Id: I3e95de679c8372841cd27ca60df78d9b00ffbfe1
Reviewed-on: https://dart-review.googlesource.com/22901
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-11-23 00:07:56 +00:00
Ryan Macnak f77cf1c60e [vm] Verify canonical objects before taking a snapshot or shutting down.
Don't verify recursive types.

Bug: https://github.com/dart-lang/sdk/issues/31376
Bug: https://github.com/dart-lang/sdk/issues/27003
Change-Id: I783bcc45d55c78141dccb1b479c1d15234a9b363
Reviewed-on: https://dart-review.googlesource.com/21221
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2017-11-20 18:54:56 +00:00
Régis Crelier f91f67a5be [VM] Emit type checks for incoming function arguments in strong mode.
Change-Id: Icd64913f0fc6ba54a0b8517bf05ae4babfae3bdc
Reviewed-on: https://dart-review.googlesource.com/19287
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-11-18 00:31:35 +00:00
Martin Kustermann d354a28cb2 [kernel] Add kernel2kernel constant evaluation, binary format as well as vm support
The introduced "constants" transformation can evaluate constant expressions.  The
original use-sites of constant expressions are replaced by a new [ConstantExpression]
node, which points to a subclass of a new [Constant] class hierarchy.  Constant
[Field]s and [VariableDeclarations]s will be removed, since all use-sites are
re-written.

The [Constant] class hierarchy is, similarly to the [DartType] class hierarchy, not
part of the AST tree (also has no parent pointer).  The constants form a
DAG (directed acyclic graph).

There is no canonicalization requirement of the [Constant] objects referenced by the
AST (via [ConstantExpression]).  Although it is beneficial to canonicalize them during
construction, since it reduces time spent in operator==/hashCode.

This CL furthermore adds support for a constant table in the binary format.  Similarly
to [String]s, we canonicalize the constants before writing the table to the binary.
The constant table entries in the binary are written in a post-order way, to ensure
easy construction on the backend side.

The text format will be augmented with a "constants { ... }" section at the end,
which lists the constants in the same order as in the binary format.

The transformation can be used by those backends who choose to do so.  It is not
enabled by default atm.  It should therefore not affect analyzer, fasta or other
components.

Change-Id: I57cd9624fedcf537ab6870db76246149647bed21
Reviewed-on: https://dart-review.googlesource.com/14382
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2017-11-16 11:08:02 +00:00
Ryan Macnak 344a9d546b [vm] Deduplicate catch entry state maps.
Flutter gallery ARM32:
TypedData          74349 ->    22701 (-69.5%)
Total snapshot  10741228 -> 10689108 (-0.49%)

Bug: https://github.com/dart-lang/sdk/issues/31302
Change-Id: I759147e4a9cd532eb338d96558a423e675358790
Reviewed-on: https://dart-review.googlesource.com/20562
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-11-14 23:06:05 +00:00
Ryan Macnak 374c21ccb4 [vm] Improve packing of StackMaps.
Flutter gallery ARM32:
StackMaps        1248008 ->   898886 (-28.0%)
Total snapshot  11089876 -> 10741228 (-3.1%)

Bug: https://github.com/dart-lang/sdk/issues/31302
Change-Id: I61c6fbf9024648907238d1d835d13d75b17f224a
Reviewed-on: https://dart-review.googlesource.com/20480
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-11-14 20:04:14 +00:00
Siva Chandra 2b80ed8290 Make line starts field of RawScript to be a TypedData of int32_t values.
It was previously an array of Smi values. By converting to TypedData
array of int32_t values, we shave off 70+KB from the kernel based core
snapshots. While 70KB might not seem too high, it is 5% of the excess
size we have wrt to the token stream based core snapshots.

Change-Id: I5b58a1d1ac27391eca1efff179301bb04162e97b
Reviewed-on: https://dart-review.googlesource.com/19800
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-11-14 17:55:06 +00:00
Lasse R.H. Nielsen 0b58c4bd10 Change some constant declarations to lowerCase.
Retain the old values.

Reapply of https://dart-review.googlesource.com/c/sdk/+/20680 with fixes
for VM method fingerprints.

Change-Id: Ie14e7ccc3194d5561983348e6b6752728913ff4d
Reviewed-on: https://dart-review.googlesource.com/20664
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2017-11-14 12:59:14 +00:00
Ryan Macnak 074b43c863 [vm] Don't let the optimizer mislead coverage data.
Coverage uses the value of an execution counter to detect executed functions. However non-positive execution counter does not necessary mean that a function was never executed because we sometimes reset the counter.

Introduce additional bit on a function that is set whenever we reset positive execution counter and use this bit when generating coverage data.

Bug: https://github.com/dart-lang/sdk/issues/31326
Change-Id: I5357109603defad7e7c9415c433203f16bcf88f4
Reviewed-on: https://dart-review.googlesource.com/19760
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-11-10 22:35:48 +00:00
Régis Crelier f568029b5f [VM] Make flag --strong isolate specific.
Change-Id: I3416e65eeec8b92af7f35dce20188b3934674cb7
Reviewed-on: https://dart-review.googlesource.com/20221
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-11-10 20:47:10 +00:00
Alexander Markov 59cdc65dc7 [VM] Relax constraints for integer literals according to int64 spec
Handling of integer literals is corrected according to the informal spec
for the fixed-size integers:

https://github.com/dart-lang/sdk/blob/master/docs/language/informal/int64.md

This change allows unsigned 64-bit hexadecimal literals and MIN_INT64
to be used when running on the VM with --limit-ints-to-64-bits option.

Change-Id: Ied7a7688768bcf4ff40ab5b499dd71622d2c3948
Reviewed-on: https://dart-review.googlesource.com/19400
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2017-11-09 16:58:38 +00:00
Siva Chandra 9f0175059e Load class members lazily when loading from kernel.
This change brings down core snapshot size by ~750KB, and brings
down app-jit snapshot size of simple "Hello, World" dart script by
~650KB. The bot cycle times will also come down by around ~20%.

Change-Id: I2a01c98bedc7ebfa2a653983995486a71504daf3
Reviewed-on: https://dart-review.googlesource.com/16323
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2017-10-31 19:19:25 +00:00
Régis Crelier 9b14a361a8 [VM] Address more TODOs related to generic functions.
Remove parsing support for 'super' that was meant to declare lower bounds of
function type parameters, since this feature did not make it into the spec.

Change-Id: I4087d0e108c5984437083a05a065fe785888d2f7
Reviewed-on: https://dart-review.googlesource.com/17360
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-10-31 17:55:26 +00:00
Martin Kustermann b7627da50b [VM] Clone metadata from methods when copying functions into mixin application classes
This allows the normal VM metadata lookup code to find metadata attached
to members which come from mixed-in classes.

This allows e.g. putting a @AlwaysInline / @NeverInline annotation on
methods of mixin classes.

Change-Id: I70639dc78fc5bab98ac7cee107c2042f84d07888
Reviewed-on: https://dart-review.googlesource.com/17164
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2017-10-31 12:23:35 +00:00
Samir Jindel 6b64aa8943 [kernel] Always disable reified generic functions in the Kernel FE.
Currently, we have some tests that run with reified generic functions ON and
some with it OFF. However, this causes inconsistencies when running the Kernel
FE from snapshot in the VM, since the VM requires that the flag be consistent
with the snapshot. Our solution is to turn the reified generic functions flag
into a per-isolate flag, which is always disabled in the Kernel FE's isolate.

Bug:
Change-Id: Ia91e9f0ff5fc059edf4bdbd79ef14abb288b4a49
Reviewed-on: https://dart-review.googlesource.com/16020
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-10-24 15:21:28 +00:00
Vyacheslav Egorov 4985165e76 [VM] Make "Hello, World!" run in strong mode (through DFE).
Includes the following changes:

- Disable type checking in the service isolate when strong mode is 
turned on. We don't yet have strong mode clean vmservice Kernel 
binary available (Issue #31203);
- Introduce new Dart VM API to allow creating List<T> (T in {String, int}).
Current API only allows to create List<dynamic> and in strong mode 
List<dynamic> is not assignable to List<T>. For now we limit this API to 
a fixed number of core types for performance considerations (type 
arguments can be canonicalized and cache ahead of time). We will
extend the API allowing creation of arbitrary List<T> if we will
discover the need for it later;
- Use this new API to fix CreateRuntimeOptions to create List<String>
and not List<dynamic>;
- Likewise fix OneByteString_splitWithCharCode to return List<String>
and not List<dynamic>;

Additionally this CL refactors how getters and setters are created
in object_store.h removing 500 lines of largely boilerplate code.

Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: I3fdcd2d54ff3f307db0913c67a7c2f009ea9d7a7
Reviewed-on: https://dart-review.googlesource.com/15884
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-10-24 11:43:48 +00:00
Erik Corry ae2d84e51e VM: Speed up output of UTF8 for 1-byte strings.
For 1-byte strings we don't need the full power of UTF-8 conversion with
support for 3 and 4-byte sequences and reassembly of UTF-16 surrogate pairs.

This optimization was originally intended to improve the reverse-complement
benchmark.  It also seems to have a positive effect (ca. 1% on average) on
dart2js.

After implementing this it doesn't seem worth having a special case in
ToCString for ASCII strings. That special case would allocate the string twice
for all Latin1 strings, which feels unfortunate.

R=vegorov@google.com

Bug:
Change-Id: If852f3ecb4e06118da8357cfa2c843ad0df0edb9
Reviewed-on: https://dart-review.googlesource.com/8920
Commit-Queue: Erik Corry <erikcorry@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-10-23 10:43:59 +00:00
Régis Crelier 269298fa8e [VM] Remove support for deprecated tear off syntax in the VM.
Change-Id: I2359bb18783cf21eab94001fe401f66c2ce680b7
Reviewed-on: https://dart-review.googlesource.com/14721
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-10-18 01:11:00 +00:00